Skip to content

Commit e15ba6b

Browse files
committed
fix for UnsupportedOperationException
at org.eclipse.jdt.groovy.core.util.IntersectionType.putNodeMetaData(IntersectionType.java:155) at org.eclipse.jdt.groovy.core.util.GroovyUtils.implementsTrait(GroovyUtils.java:456) at org.eclipse.jdt.groovy.search.SimpleTypeLookup.findDeclaration(SimpleTypeLookup.java:753) at org.eclipse.jdt.groovy.search.SimpleTypeLookup.findTypeForNameWithKnownObjectExpression(SimpleTypeLookup.java:361) at org.eclipse.jdt.groovy.search.SimpleTypeLookup.findType(SimpleTypeLookup.java:244) at org.eclipse.jdt.groovy.search.SimpleTypeLookup.lookupType(SimpleTypeLookup.java:98) at org.eclipse.jdt.groovy.search.TypeInferencingVisitorWithRequestor.lookupExpressionType(TypeInferencingVisitorWithRequestor.java:2992) at org.eclipse.jdt.groovy.search.TypeInferencingVisitorWithRequestor.handleSimpleExpression(TypeInferencingVisitorWithRequestor.java:2177) at org.eclipse.jdt.groovy.search.TypeInferencingVisitorWithRequestor.handleSimpleExpression(TypeInferencingVisitorWithRequestor.java:2182) at org.eclipse.jdt.groovy.search.TypeInferencingVisitorWithRequestor.visitConstantExpression(TypeInferencingVisitorWithRequestor.java:1096) at org.codehaus.groovy.ast.expr.ConstantExpression.visit(ConstantExpression.java:88)
1 parent a37bcab commit e15ba6b

2 files changed

Lines changed: 5 additions & 1 deletion

File tree

  • base-test/org.eclipse.jdt.groovy.core.tests.builder/src/org/eclipse/jdt/core/groovy/tests/search
  • base/org.eclipse.jdt.groovy.core/src/org/eclipse/jdt/groovy/core/util

base-test/org.eclipse.jdt.groovy.core.tests.builder/src/org/eclipse/jdt/core/groovy/tests/search/InferencingTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4206,7 +4206,7 @@ public void testInstanceOf10() {
42064206
String contents =
42074207
"def val = new Object()\n" +
42084208
"if (val instanceof Number || val instanceof CharSequence) {\n" +
4209-
" println val\n" +
4209+
" println val.size()\n" +
42104210
"}\n" +
42114211
"val";
42124212

base/org.eclipse.jdt.groovy.core/src/org/eclipse/jdt/groovy/core/util/GroovyUtils.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -441,6 +441,10 @@ public static Expression getTraitFieldExpression(MethodCallExpression call) {
441441
}
442442

443443
public static boolean implementsTrait(ClassNode concreteType) {
444+
if (concreteType instanceof IntersectionType it) {
445+
return it.types.stream().allMatch(GroovyUtils::implementsTrait);
446+
}
447+
444448
Boolean it = concreteType.getNodeMetaData(Traits.class);
445449
if (it != null) return it.booleanValue();
446450

0 commit comments

Comments
 (0)