assertion (14269)

This commit is contained in:
anna
2009-12-02 22:24:55 +03:00
parent de155f40c6
commit 7108c0437d
4 changed files with 23 additions and 5 deletions

View File

@@ -334,11 +334,12 @@ public abstract class IntroduceVariableBase extends IntroduceHandlerBase impleme
tempExpr.putUserData(ElementToWorkOn.PARENT, parent);
final String fakeInitializer = "intellijidearulezzz";
final PsiExpression toBeExpression = createReplacement(fakeInitializer, project, prefix, suffix, parent, rangeMarker);
final int[] refIdx = new int[1];
final PsiExpression toBeExpression = createReplacement(fakeInitializer, project, prefix, suffix, parent, rangeMarker, refIdx);
toBeExpression.accept(errorsVisitor);
if (hasErrors[0]) return null;
final PsiReferenceExpression refExpr = PsiTreeUtil.getParentOfType(toBeExpression.findElementAt(toBeExpression.getText().indexOf(fakeInitializer)), PsiReferenceExpression.class);
final PsiReferenceExpression refExpr = PsiTreeUtil.getParentOfType(toBeExpression.findElementAt(refIdx[0]), PsiReferenceExpression.class);
assert refExpr != null;
if (ReplaceExpressionUtil.isNeedParenthesis(refExpr.getNode(), tempExpr.getNode())) {
return null;
@@ -602,14 +603,14 @@ public abstract class IntroduceVariableBase extends IntroduceHandlerBase impleme
final PsiElement parent = expr1.getUserData(ElementToWorkOn.PARENT);
final RangeMarker rangeMarker = expr1.getUserData(ElementToWorkOn.TEXT_RANGE);
return parent.replace(createReplacement(ref.getText(), project, prefix, suffix, parent, rangeMarker));
return parent.replace(createReplacement(ref.getText(), project, prefix, suffix, parent, rangeMarker, new int[1]));
}
}
private static PsiExpression createReplacement(final String refText, final Project project,
final String prefix,
final String suffix,
final PsiElement parent, final RangeMarker rangeMarker) {
final PsiElement parent, final RangeMarker rangeMarker, int[] refIdx) {
final String allText = parent.getContainingFile().getText();
final TextRange parentRange = parent.getTextRange();
@@ -619,7 +620,9 @@ public abstract class IntroduceVariableBase extends IntroduceHandlerBase impleme
String end = allText.substring(rangeMarker.getEndOffset(), parentRange.getEndOffset());
if (StringUtil.stripQuotesAroundValue(end).trim().length() == 0 && suffix == null) end = "";
final String text = beg + (prefix != null ? prefix : "") + refText + (suffix != null ? suffix : "") + end;
final String start = beg + (prefix != null ? prefix : "");
refIdx[0] = start.length();
final String text = start + refText + (suffix != null ? suffix : "") + end;
return JavaPsiFacade.getInstance(project).getElementFactory().createExpressionFromText(text, parent);
}

View File

@@ -0,0 +1,6 @@
class A {
public void test() {
String str = "sintellijidearulezzzs";
String s = "intellijidearulezzz" + str + "sintellijidearulezzz";
}
}

View File

@@ -0,0 +1,5 @@
class A {
public void test() {
String s = "intellijidearulezzz<selection>sintellijidearulezzzs</selection>sintellijidearulezzz";
}
}

View File

@@ -174,6 +174,10 @@ public class IntroduceVariableTest extends LightCodeInsightTestCase {
doTest(new MockIntroduceVariableHandler("str", false, false, false, "java.lang.String"));
}
public void testSubExpressionFromIntellijidearulezzz() throws Exception {
doTest(new MockIntroduceVariableHandler("str", false, false, false, "java.lang.String"));
}
public void testSubPrimitiveLiteral() throws Exception {
doTest(new MockIntroduceVariableHandler("str", false, false, false, "boolean"));
}