Skip to content

Commit 116dc80

Browse files
committed
GROOVY-9771
1 parent 632e2bd commit 116dc80

File tree

4 files changed

+440
-3
lines changed

4 files changed

+440
-3
lines changed

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

+24
Original file line numberDiff line numberDiff line change
@@ -5142,4 +5142,28 @@ public void testCompileStatic9762() {
51425142

51435143
runConformTest(sources, "[123]");
51445144
}
5145+
5146+
@Test
5147+
public void testCompileStatic9771() {
5148+
//@formatter:off
5149+
String[] sources = {
5150+
"Main.groovy",
5151+
"@groovy.transform.CompileStatic\n" +
5152+
"class Main {\n" +
5153+
" private final Map<String, Boolean> map = [:]\n" +
5154+
" void test() {\n" +
5155+
" { ->\n" +
5156+
" map['key'] = true\n" +
5157+
" }.call()\n" +
5158+
" print map\n" +
5159+
" }\n" +
5160+
" static main(args) {\n" +
5161+
" newInstance().test()\n" +
5162+
" }\n" +
5163+
"}\n",
5164+
};
5165+
//@formatter:on
5166+
5167+
runConformTest(sources, "[key:true]");
5168+
}
51455169
}

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

+4-3
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@
5252
import org.codehaus.groovy.syntax.Token;
5353
import org.codehaus.groovy.syntax.TokenUtil;
5454
import org.codehaus.groovy.transform.sc.StaticCompilationMetadataKeys;
55+
import org.codehaus.groovy.transform.sc.StaticCompilationVisitor;
5556
import org.codehaus.groovy.transform.stc.StaticTypeCheckingVisitor;
5657
import org.codehaus.groovy.transform.stc.StaticTypesMarker;
5758
import groovyjarjarasm.asm.Label;
@@ -405,9 +406,7 @@ protected void assignToArray(Expression parent, Expression receiver, Expression
405406
*******/
406407

407408
WriterController controller = getController();
408-
/* GRECLIPSE edit -- GROOVY-9699
409409
StaticTypeCheckingVisitor visitor = new StaticCompilationVisitor(controller.getSourceUnit(), controller.getClassNode());
410-
*/
411410
// let's replace this assignment to a subscript operator with a
412411
// method call
413412
// e.g. x[5] = 10
@@ -425,9 +424,11 @@ protected void assignToArray(Expression parent, Expression receiver, Expression
425424
ae
426425
);
427426
mce.setSourcePosition(parent);
428-
/* GRECLIPSE edit -- GROOVY-9699
427+
/* GRECLIPSE edit -- GROOVY-9699, GROOVY-9771
429428
visitor.visitMethodCallExpression(mce);
430429
*/
430+
receiver.visit(visitor);
431+
// GRECLIPSE end
431432
OperandStack operandStack = controller.getOperandStack();
432433
int height = operandStack.getStackLength();
433434
mce.visit(controller.getAcg());

base/org.codehaus.groovy30/.checkstyle

+1
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
<file-match-pattern match-pattern="groovy/classgen/Verifier.java" include-pattern="false" />
4747
<file-match-pattern match-pattern="groovy/classgen/asm/sc/StaticInvocationWriter.java" include-pattern="false" />
4848
<file-match-pattern match-pattern="groovy/classgen/asm/sc/StaticPropertyAccessHelper.java" include-pattern="false" />
49+
<file-match-pattern match-pattern="groovy/classgen/asm/sc/StaticTypesBinaryExpressionMultiTypeDispatcher.java" include-pattern="false" />
4950
<file-match-pattern match-pattern="groovy/classgen/asm/sc/StaticTypesMethodReferenceExpressionWriter.java" include-pattern="false" />
5051
<file-match-pattern match-pattern="groovy/control/CompilationUnit.java" include-pattern="false" />
5152
<file-match-pattern match-pattern="groovy/control/CompilerConfiguration.java" include-pattern="false" />

0 commit comments

Comments
 (0)