diff --git a/java/java-impl/src/com/intellij/codeInsight/CodeInsightUtil.java b/java/java-impl/src/com/intellij/codeInsight/CodeInsightUtil.java index 90c28c4cd3ca..e88236809d97 100644 --- a/java/java-impl/src/com/intellij/codeInsight/CodeInsightUtil.java +++ b/java/java-impl/src/com/intellij/codeInsight/CodeInsightUtil.java @@ -42,7 +42,7 @@ public class CodeInsightUtil { if (element2 instanceof PsiJavaToken) { final PsiJavaToken token = (PsiJavaToken)element2; final IElementType tokenType = token.getTokenType(); - if (tokenType.equals(JavaTokenType.SEMICOLON)) { + if (tokenType.equals(JavaTokenType.SEMICOLON) || element2.getParent() instanceof PsiErrorElement) { expression = findElementInRange(file, startOffset, element2.getTextRange().getStartOffset(), PsiExpression.class); } } diff --git a/java/java-tests/testData/refactoring/introduceVariable/SkipErroneousParen.after.java b/java/java-tests/testData/refactoring/introduceVariable/SkipErroneousParen.after.java new file mode 100644 index 000000000000..feb74c938952 --- /dev/null +++ b/java/java-tests/testData/refactoring/introduceVariable/SkipErroneousParen.after.java @@ -0,0 +1,5 @@ +class Test { + void foo(String s) { + String x = s.trim();) + } +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/introduceVariable/SkipErroneousParen.java b/java/java-tests/testData/refactoring/introduceVariable/SkipErroneousParen.java new file mode 100644 index 000000000000..b9430c12606f --- /dev/null +++ b/java/java-tests/testData/refactoring/introduceVariable/SkipErroneousParen.java @@ -0,0 +1,5 @@ +class Test { + void foo(String s) { + s.trim()) + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/java/refactoring/IntroduceVariableTest.java b/java/java-tests/testSrc/com/intellij/java/refactoring/IntroduceVariableTest.java index 8d8753c6f7c4..020c24d553c3 100644 --- a/java/java-tests/testSrc/com/intellij/java/refactoring/IntroduceVariableTest.java +++ b/java/java-tests/testSrc/com/intellij/java/refactoring/IntroduceVariableTest.java @@ -190,6 +190,10 @@ public class IntroduceVariableTest extends LightJavaCodeInsightTestCase { doTest(new MockIntroduceVariableHandler("mi5", false, false, false, "int")); } + public void testSkipErroneousParen() { + doTest(new MockIntroduceVariableHandler("x", false, false, false, CommonClassNames.JAVA_LANG_STRING)); + } + public void testInsideIf() { doTest(new MockIntroduceVariableHandler("s1", false, false, false, CommonClassNames.JAVA_LANG_STRING)); }