mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-08 15:09:39 +07:00
assertion (14269)
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
class A {
|
||||
public void test() {
|
||||
String str = "sintellijidearulezzzs";
|
||||
String s = "intellijidearulezzz" + str + "sintellijidearulezzz";
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
class A {
|
||||
public void test() {
|
||||
String s = "intellijidearulezzz<selection>sintellijidearulezzzs</selection>sintellijidearulezzz";
|
||||
}
|
||||
}
|
||||
@@ -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"));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user