Skip to content

Commit 3bf39d8

Browse files
committed
GROOVY-9892
1 parent ed49333 commit 3bf39d8

6 files changed

Lines changed: 1829 additions & 3 deletions

File tree

base-test/org.eclipse.jdt.groovy.core.tests.compiler/src/org/eclipse/jdt/groovy/core/tests/xform/StaticCompilationTests.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5480,4 +5480,30 @@ public void testCompileStatic9883() {
54805480
"Cannot assign java.util.function.Supplier <java.util.UUID> to: java.util.function.Supplier <String>\n" +
54815481
"----------\n");
54825482
}
5483+
5484+
@Test
5485+
public void testCompileStatic9892() {
5486+
//@formatter:off
5487+
String[] sources = {
5488+
"Main.groovy",
5489+
"@groovy.transform.CompileStatic\n" +
5490+
"class C {\n" +
5491+
" int prefix\n" +
5492+
" int postfix\n" +
5493+
" def test() {\n" +
5494+
" { ->\n" +
5495+
" print \"X${++prefix}Y${postfix++}\"\n" +
5496+
" }.call()\n" +
5497+
" true\n" +
5498+
" }\n" +
5499+
"}\n" +
5500+
"def c = new C()\n" +
5501+
"assert c.test()\n" +
5502+
"assert c.prefix == 1\n" +
5503+
"assert c.postfix == 1\n",
5504+
};
5505+
//@formatter:on
5506+
5507+
runConformTest(sources, "X1Y0");
5508+
}
54835509
}

base/org.codehaus.groovy25/src/org/codehaus/groovy/classgen/asm/sc/StaticTypesCallSiteWriter.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -874,7 +874,7 @@ private void writeNumberNumberCall(final Expression receiver, final String messa
874874

875875
@Override
876876
public void fallbackAttributeOrPropertySite(PropertyExpression expression, Expression objectExpression, String name, MethodCallerMultiAdapter adapter) {
877-
/* GRECLIPSE edit -- GROOVY-7304
877+
/* GRECLIPSE edit -- GROOVY-7304, GROOVY-9892
878878
if (name!=null &&
879879
(adapter == AsmClassGenerator.setField || adapter == AsmClassGenerator.setGroovyObjectField)
880880
) {
@@ -913,6 +913,7 @@ public void fallbackAttributeOrPropertySite(PropertyExpression expression, Expre
913913
call.visit(controller.getAcg());
914914

915915
controller.getCompileStack().removeVar(i);
916+
controller.getOperandStack().pop();
916917
return;
917918
}
918919
}

base/org.codehaus.groovy30/.checkstyle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@
5050
<file-match-pattern match-pattern="groovy/classgen/asm/StatementWriter.java" include-pattern="false" />
5151
<file-match-pattern match-pattern="groovy/classgen/asm/sc/StaticInvocationWriter.java" include-pattern="false" />
5252
<file-match-pattern match-pattern="groovy/classgen/asm/sc/StaticPropertyAccessHelper.java" include-pattern="false" />
53-
<file-match-pattern match-pattern="groovy/classgen/asm/sc/StaticTypesMethodReferenceExpressionWriter.java" include-pattern="false" />
53+
<file-match-pattern match-pattern="groovy/classgen/asm/sc/StaticTypes(CallSite|MethodReferenceExpression)Writer.java" include-pattern="false" />
5454
<file-match-pattern match-pattern="groovy/control/CompilationUnit.java" include-pattern="false" />
5555
<file-match-pattern match-pattern="groovy/control/CompilerConfiguration.java" include-pattern="false" />
5656
<file-match-pattern match-pattern="groovy/control/ErrorCollector.java" include-pattern="false" />

0 commit comments

Comments
 (0)