Skip to content

Commit 248b14e

Browse files
committed
GROOVY-10197
1 parent 0db55ae commit 248b14e

File tree

7 files changed

+759
-1
lines changed

7 files changed

+759
-1
lines changed

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

+21
Original file line numberDiff line numberDiff line change
@@ -6327,4 +6327,25 @@ public void testCompileStatic10089() {
63276327

63286328
runConformTest(sources, "[[id:x, name:null, count:1]]");
63296329
}
6330+
6331+
@Test
6332+
public void testCompileStatic10197() {
6333+
for (String override : new String[]{"int getBaz() {1}", "final int baz = 1"}) {
6334+
//@formatter:off
6335+
String[] sources = {
6336+
"Main.groovy",
6337+
"@groovy.transform.CompileStatic\n" +
6338+
"enum Foo {\n" +
6339+
" BAR {\n" +
6340+
" " + override + "\n" +
6341+
" }\n" +
6342+
" int getBaz() { -1 }\n" +
6343+
"}\n" +
6344+
"print Foo.BAR.baz\n",
6345+
};
6346+
//@formatter:on
6347+
6348+
runConformTest(sources, "1");
6349+
}
6350+
}
63306351
}

base/org.codehaus.groovy25/.checkstyle

+1
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@
7979
<file-match-pattern match-pattern="groovy/transform/LazyASTTransformation.java" include-pattern="false" />
8080
<file-match-pattern match-pattern="groovy/transform/LogASTTransformation.java" include-pattern="false" />
8181
<file-match-pattern match-pattern="groovy/transform/NewifyASTTransformation.java" include-pattern="false" />
82+
<file-match-pattern match-pattern="groovy/transform/TupleConstructorASTTransformation.java" include-pattern="false" />
8283
<file-match-pattern match-pattern="groovy/transform/sc/StaticCompilationVisitor.java" include-pattern="false" />
8384
<file-match-pattern match-pattern="groovy/transform/sc/transformers/(Binary|MethodCall|Variable)ExpressionTransformer.java" include-pattern="false" />
8485
<file-match-pattern match-pattern="groovy/transform/sc/transformers/ConstructorCallTransformer.java" include-pattern="false" />

base/org.codehaus.groovy25/src/org/codehaus/groovy/transform/TupleConstructorASTTransformation.java

+360
Large diffs are not rendered by default.

base/org.codehaus.groovy30/.checkstyle

+1
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@
6666
<file-match-pattern match-pattern="groovy/transform/DelegateASTTransformation.java" include-pattern="false" />
6767
<file-match-pattern match-pattern="groovy/transform/FieldASTTransformation.java" include-pattern="false" />
6868
<file-match-pattern match-pattern="groovy/transform/LogASTTransformation.java" include-pattern="false" />
69+
<file-match-pattern match-pattern="groovy/transform/TupleConstructorASTTransformation.java" include-pattern="false" />
6970
<file-match-pattern match-pattern="groovy/transform/sc/StaticCompilationVisitor.java" include-pattern="false" />
7071
<file-match-pattern match-pattern="groovy/transform/sc/transformers/(Binary|MethodCall)ExpressionTransformer.java" include-pattern="false" />
7172
<file-match-pattern match-pattern="groovy/transform/stc/AbstractExtensionMethodCache.java" include-pattern="false" />

base/org.codehaus.groovy30/src/org/codehaus/groovy/transform/TupleConstructorASTTransformation.java

+349
Large diffs are not rendered by default.

base/org.eclipse.jdt.groovy.core/src/org/eclipse/jdt/groovy/search/TypeInferencingVisitorWithRequestor.java

+6
Original file line numberDiff line numberDiff line change
@@ -631,6 +631,12 @@ private void visitEnumConstBody(final ClassNode node) {
631631
visitMethodInternal(method);
632632
}
633633
}
634+
for (FieldNode field : node.getFields()) {
635+
if (field.getEnd() > 0) {
636+
enclosingElement = ((IType) enumConstant.getChildren()[0]).getField(field.getName());
637+
visitFieldInternal(field);
638+
}
639+
}
634640
} catch (JavaModelException e) {
635641
log(e, "Error visiting children of %s", enclosingDeclarationNode);
636642
} finally {

ide-test/org.codehaus.groovy.eclipse.tests/src/org/codehaus/groovy/eclipse/test/ui/SemanticHighlightingTests.groovy

+21-1
Original file line numberDiff line numberDiff line change
@@ -1773,7 +1773,7 @@ final class SemanticHighlightingTests extends GroovyEclipseTestSuite {
17731773
}
17741774

17751775
@Test
1776-
void testEnumInner() {
1776+
void testEnumInner1() {
17771777
String contents = '''\
17781778
|import groovy.transform.*
17791779
|@CompileStatic
@@ -1806,6 +1806,26 @@ final class SemanticHighlightingTests extends GroovyEclipseTestSuite {
18061806
new HighlightedTypedPosition(contents.lastIndexOf('meth'), 4, METHOD))
18071807
}
18081808

1809+
@Test
1810+
void testEnumInner2() {
1811+
String contents = '''\
1812+
|enum X {
1813+
| WHY {
1814+
| final int value = 1
1815+
| }
1816+
| def getValue() { -1 }
1817+
|}
1818+
|'''.stripMargin()
1819+
1820+
assertHighlighting(contents,
1821+
new HighlightedTypedPosition(contents.indexOf('X'), 1, ENUMERATION),
1822+
new HighlightedTypedPosition(contents.indexOf('WHY'), 3, STATIC_VALUE),
1823+
new HighlightedTypedPosition(contents.indexOf('value'), 5, FIELD),
1824+
new HighlightedTypedPosition(contents.indexOf('1'), 1, NUMBER),
1825+
new HighlightedTypedPosition(contents.indexOf('getValue'), 8, METHOD),
1826+
new HighlightedTypedPosition(contents.indexOf('-1'), 2, NUMBER))
1827+
}
1828+
18091829
@Test // https://github.com/groovy/groovy-eclipse/issues/1004
18101830
void testEnumMethod() {
18111831
String contents = '''\

0 commit comments

Comments
 (0)