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