Skip to content

Commit b8b8cbe

Browse files
committed
GROOVY-10033 (pt.3)
1 parent 47fc4ae commit b8b8cbe

File tree

3 files changed

+44
-3
lines changed

3 files changed

+44
-3
lines changed

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

+26-1
Original file line numberDiff line numberDiff line change
@@ -6108,7 +6108,7 @@ public void testCompileStatic10033() {
61086108
"Main.groovy",
61096109
"@groovy.transform.CompileStatic\n" +
61106110
"class Main {\n" +
6111-
" Main(java.util.function.Function<Main,String> f) {" +
6111+
" Main(java.util.function.Function<Main,String> f) {\n" +
61126112
" print f.apply(this)\n" +
61136113
" }\n" +
61146114
" String m() { 'works' }\n" +
@@ -6122,6 +6122,31 @@ public void testCompileStatic10033() {
61226122
runConformTest(sources, "works");
61236123
}
61246124

6125+
@Test
6126+
public void testCompileStatic10033a() {
6127+
assumeTrue(isParrotParser());
6128+
6129+
//@formatter:off
6130+
String[] sources = {
6131+
"Main.groovy",
6132+
"@groovy.transform.CompileStatic\n" +
6133+
"class Main {\n" +
6134+
" Main() {\n" +
6135+
" print 'works'\n" +
6136+
" }\n" +
6137+
" static main(args) {\n" +
6138+
" test(Main::new)\n" +
6139+
" }\n" +
6140+
" static test(java.util.function.Supplier<Main> f) {\n" +
6141+
" f.get()\n" +
6142+
" }\n" +
6143+
"}\n",
6144+
};
6145+
//@formatter:on
6146+
6147+
runConformTest(sources, "works");
6148+
}
6149+
61256150
@Test
61266151
public void testCompileStatic10047() {
61276152
assumeTrue(isParrotParser());

base/org.codehaus.groovy30/src/org/codehaus/groovy/classgen/asm/sc/StaticTypesMethodReferenceExpressionWriter.java

+9-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020

2121
import groovy.lang.Tuple;
2222
import groovy.lang.Tuple2;
23-
import groovy.transform.CompileStatic;
2423
import groovy.transform.Generated;
2524
import org.codehaus.groovy.ast.ASTNode;
2625
import org.codehaus.groovy.ast.AnnotationNode;
@@ -40,6 +39,7 @@
4039
import org.codehaus.groovy.classgen.asm.WriterController;
4140
import org.codehaus.groovy.runtime.ArrayTypeUtils;
4241
import org.codehaus.groovy.syntax.RuntimeParserException;
42+
import org.codehaus.groovy.transform.sc.StaticCompilationMetadataKeys;
4343
import org.codehaus.groovy.transform.stc.ExtensionMethodNode;
4444
import groovyjarjarasm.asm.Opcodes;
4545

@@ -68,7 +68,9 @@
6868
public class StaticTypesMethodReferenceExpressionWriter extends MethodReferenceExpressionWriter implements AbstractFunctionalInterfaceWriter {
6969
private static final String METHODREF_EXPR_INSTANCE = "__METHODREF_EXPR_INSTANCE";
7070
private static final ClassNode GENERATED_TYPE = ClassHelper.make(Generated.class);
71+
/* GRECLIPSE edit -- GROOVY-10033
7172
private static final ClassNode COMPILE_STATIC_TYPE = ClassHelper.make(CompileStatic.class);
73+
*/
7274

7375
public StaticTypesMethodReferenceExpressionWriter(final WriterController controller) {
7476
super(controller);
@@ -194,7 +196,9 @@ private MethodNode addSyntheticMethodForDGSM(final MethodNode mn) {
194196
);
195197

196198
syntheticMethodNode.addAnnotation(new AnnotationNode(GENERATED_TYPE));
199+
/* GRECLIPSE edit -- GROOVY-10033
197200
syntheticMethodNode.addAnnotation(new AnnotationNode(COMPILE_STATIC_TYPE));
201+
*/
198202

199203
return syntheticMethodNode;
200204
}
@@ -224,7 +228,11 @@ private MethodNode addSyntheticMethodForConstructorReference(final String synthe
224228
);
225229

226230
syntheticMethodNode.addAnnotation(new AnnotationNode(GENERATED_TYPE));
231+
/* GRECLIPSE edit -- GROOVY-10033
227232
syntheticMethodNode.addAnnotation(new AnnotationNode(COMPILE_STATIC_TYPE));
233+
*/
234+
syntheticMethodNode.putNodeMetaData(StaticCompilationMetadataKeys.STATIC_COMPILE_NODE, Boolean.FALSE);
235+
// GRECLIPSE end
228236

229237
return syntheticMethodNode;
230238
}

base/org.codehaus.groovy40/src/org/codehaus/groovy/classgen/asm/sc/StaticTypesMethodReferenceExpressionWriter.java

+9-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020

2121
import groovy.lang.Tuple;
2222
import groovy.lang.Tuple2;
23-
import groovy.transform.CompileStatic;
2423
import groovy.transform.Generated;
2524
import org.codehaus.groovy.ast.ASTNode;
2625
import org.codehaus.groovy.ast.AnnotationNode;
@@ -40,6 +39,7 @@
4039
import org.codehaus.groovy.classgen.asm.WriterController;
4140
import org.codehaus.groovy.runtime.ArrayTypeUtils;
4241
import org.codehaus.groovy.syntax.RuntimeParserException;
42+
import org.codehaus.groovy.transform.sc.StaticCompilationMetadataKeys;
4343
import org.codehaus.groovy.transform.stc.ExtensionMethodNode;
4444
import groovyjarjarasm.asm.Opcodes;
4545

@@ -68,7 +68,9 @@
6868
public class StaticTypesMethodReferenceExpressionWriter extends MethodReferenceExpressionWriter implements AbstractFunctionalInterfaceWriter {
6969
private static final String METHODREF_EXPR_INSTANCE = "__METHODREF_EXPR_INSTANCE";
7070
private static final ClassNode GENERATED_TYPE = ClassHelper.make(Generated.class);
71+
/* GRECLIPSE edit -- GROOVY-10033
7172
private static final ClassNode COMPILE_STATIC_TYPE = ClassHelper.make(CompileStatic.class);
73+
*/
7274

7375
public StaticTypesMethodReferenceExpressionWriter(final WriterController controller) {
7476
super(controller);
@@ -194,7 +196,9 @@ private MethodNode addSyntheticMethodForDGSM(final MethodNode mn) {
194196
);
195197

196198
syntheticMethodNode.addAnnotation(new AnnotationNode(GENERATED_TYPE));
199+
/* GRECLIPSE edit -- GROOVY-10033
197200
syntheticMethodNode.addAnnotation(new AnnotationNode(COMPILE_STATIC_TYPE));
201+
*/
198202

199203
return syntheticMethodNode;
200204
}
@@ -224,7 +228,11 @@ private MethodNode addSyntheticMethodForConstructorReference(final String synthe
224228
);
225229

226230
syntheticMethodNode.addAnnotation(new AnnotationNode(GENERATED_TYPE));
231+
/* GRECLIPSE edit -- GROOVY-10033
227232
syntheticMethodNode.addAnnotation(new AnnotationNode(COMPILE_STATIC_TYPE));
233+
*/
234+
syntheticMethodNode.putNodeMetaData(StaticCompilationMetadataKeys.STATIC_COMPILE_NODE, Boolean.FALSE);
235+
// GRECLIPSE end
228236

229237
return syntheticMethodNode;
230238
}

0 commit comments

Comments
 (0)