diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/surroundWith/surrounders/GroovyManyStatementsSurrounder.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/surroundWith/surrounders/GroovyManyStatementsSurrounder.java index cb0a911267ab..1cea4960723c 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/surroundWith/surrounders/GroovyManyStatementsSurrounder.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/surroundWith/surrounders/GroovyManyStatementsSurrounder.java @@ -79,18 +79,16 @@ public abstract class GroovyManyStatementsSurrounder implements Surrounder { if (parentNode != element.getParent().getNode()) return null; final int endOffset = element.getTextRange().getEndOffset(); - final PsiElement semicolon = PsiTreeUtil.findElementOfClassAtRange(element.getContainingFile(), endOffset, endOffset + 1, PsiElement.class); + final PsiElement semicolon = PsiTreeUtil.findElementOfClassAtOffset(element.getContainingFile(), endOffset, PsiElement.class, false); if (semicolon != null && ";".equals(semicolon.getText())) { assert parentNode == semicolon.getParent().getNode(); parentNode.removeChild(semicolon.getNode()); } - if (i < elements.length - 1) { - final PsiElement newLine = PsiTreeUtil.findElementOfClassAtRange(element.getContainingFile(), endOffset, elements[i + 1].getTextRange().getStartOffset(), PsiElement.class); - if (newLine != null && GroovyElementTypes.mNLS.equals(newLine.getNode().getElementType())) { - assert parentNode == newLine.getParent().getNode(); - parentNode.removeChild(newLine.getNode()); - } + final PsiElement newLine = PsiTreeUtil.findElementOfClassAtOffset(element.getContainingFile(), endOffset, PsiElement.class, false); + if (newLine != null && GroovyElementTypes.mNLS.equals(newLine.getNode().getElementType())) { + assert parentNode == newLine.getParent().getNode(); + parentNode.removeChild(newLine.getNode()); } parentNode.removeChild(element.getNode()); diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/surroundWith/surrounders/surroundersImpl/expressions/GroovyWithTypeCastSurrounder.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/surroundWith/surrounders/surroundersImpl/expressions/GroovyWithTypeCastSurrounder.java index a4f063e069e7..27825d5635b5 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/surroundWith/surrounders/surroundersImpl/expressions/GroovyWithTypeCastSurrounder.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/surroundWith/surrounders/surroundersImpl/expressions/GroovyWithTypeCastSurrounder.java @@ -32,7 +32,7 @@ public class GroovyWithTypeCastSurrounder extends GroovyExpressionSurrounder { GrTypeCastExpression typeCast = (GrTypeCastExpression) parenthesized.getOperand(); replaceToOldExpression(typeCast.getOperand(), expression); GrTypeElement typeElement = typeCast.getCastTypeElement(); - int endOffset = typeElement.getTextRange().getStartOffset(); + int endOffset = typeElement.getTextRange().getStartOffset() + expression.getTextRange().getStartOffset(); parenthesized = (GrParenthesizedExpression) expression.replaceWithExpression(parenthesized, false); final GrTypeCastExpression newTypeCast = (GrTypeCastExpression)parenthesized.getOperand(); diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/surroundWith/SurroundExpressionTest.java b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/surroundWith/SurroundExpressionTest.java index 310e1e26420d..2672dc9fae60 100644 --- a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/surroundWith/SurroundExpressionTest.java +++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/surroundWith/SurroundExpressionTest.java @@ -18,6 +18,7 @@ public class SurroundExpressionTest extends SurroundTestCase { public void testIf1() throws Exception { doTest(new GroovyWithIfExprSurrounder()); } public void testIf_else1() throws Exception { doTest(new GroovyWithIfElseExprSurrounder()); } public void testType_cast1() throws Exception { doTest(new GroovyWithTypeCastSurrounder()); } + public void testType_cast2() throws Exception { doTest(new GroovyWithTypeCastSurrounder()); } public void testWhile1() throws Exception { doTest(new GroovyWithWhileExprSurrounder()); } public void testWith2() throws Exception { doTest(new GroovyWithWithExprSurrounder()); } diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/surroundWith/SurroundTestCase.java b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/surroundWith/SurroundTestCase.java index c00ff3ab27d3..3f3ca85c3365 100644 --- a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/surroundWith/SurroundTestCase.java +++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/surroundWith/SurroundTestCase.java @@ -25,6 +25,6 @@ public abstract class SurroundTestCase extends LightGroovyTestCase { } }); - assertEquals(data.get(1), myFixture.getFile().getText().trim()); + myFixture.checkResult(data.get(1)); } } diff --git a/plugins/groovy/testdata/groovy/surround/expr/type_cast2.test b/plugins/groovy/testdata/groovy/surround/expr/type_cast2.test new file mode 100644 index 000000000000..cbdc6f2396c5 --- /dev/null +++ b/plugins/groovy/testdata/groovy/surround/expr/type_cast2.test @@ -0,0 +1,7 @@ +println foo + +expr +----- +println foo + +(() expr) diff --git a/plugins/groovy/testdata/groovy/surround/statements/shouldFailWithType.test b/plugins/groovy/testdata/groovy/surround/statements/shouldFailWithType.test index 5a6441dd55f2..188fd16a15ec 100644 --- a/plugins/groovy/testdata/groovy/surround/statements/shouldFailWithType.test +++ b/plugins/groovy/testdata/groovy/surround/statements/shouldFailWithType.test @@ -1,7 +1,9 @@ a - b a - b +println foo ----- shouldFail() { a - b a - b -} \ No newline at end of file +} +println foo \ No newline at end of file diff --git a/plugins/groovy/testdata/groovy/surround/statements/with2.test b/plugins/groovy/testdata/groovy/surround/statements/with2.test index 525acb435a82..26876f53e417 100644 --- a/plugins/groovy/testdata/groovy/surround/statements/with2.test +++ b/plugins/groovy/testdata/groovy/surround/statements/with2.test @@ -1,7 +1,9 @@ a - b a - b +println foo ----- with() { a - b a - b -} \ No newline at end of file +} +println foo \ No newline at end of file