You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
PMD does not properly handle code that combines values from 2 enums which share the same interface.
Exception Stacktrace:
org.apache.commons.lang3.exception.ContextedRuntimeException: java.lang.IllegalArgumentException: Bad intersection, unrelated class types java.lang.constant.Constable[] and java.lang.Enum[] in [java.lang.Enum[], java.lang.constant.Constable[], BadIntersection$Animal[]]
Exception Context:
[1:Resolving type of=!debug only! [MethodCall:22:12]Stream.of(
Bird.values(),
Fish.values()
)]
[2:Rule applied on node=!debug only! [MethodCall:22:12]Stream.of(
Bird.values(),
Fish.values()
)
.flatMap(Arrays::stream)]
---------------------------------
at net.sourceforge.pmd.util.AssertionUtil.contexted(AssertionUtil.java:232)
at net.sourceforge.pmd.lang.java.ast.AbstractJavaTypeNode.getTypeMirror(AbstractJavaTypeNode.java:54)
at net.sourceforge.pmd.lang.java.ast.ASTMethodCall.getTypeMirror(ASTMethodCall.java:22)
at net.sourceforge.pmd.lang.java.ast.AbstractJavaTypeNode.getTypeMirror(AbstractJavaTypeNode.java:39)
at net.sourceforge.pmd.lang.java.ast.ASTMethodCall.getTypeMirror(ASTMethodCall.java:22)
at net.sourceforge.pmd.lang.java.types.TypeTestUtil.isA(TypeTestUtil.java:65)
at net.sourceforge.pmd.lang.java.rule.bestpractices.UseCollectionIsEmptyRule.visit(UseCollectionIsEmptyRule.java:29)
at net.sourceforge.pmd.lang.java.ast.ASTMethodCall.acceptVisitor(ASTMethodCall.java:75)
at net.sourceforge.pmd.lang.java.ast.AbstractJavaNode.acceptVisitor(AbstractJavaNode.java:38)
at net.sourceforge.pmd.lang.java.rule.AbstractJavaRule.apply(AbstractJavaRule.java:30)
at net.sourceforge.pmd.lang.rule.RuleReference.apply(RuleReference.java:415)
at net.sourceforge.pmd.lang.rule.internal.RuleApplicator.applyOnIndex(RuleApplicator.java:77)
at net.sourceforge.pmd.lang.rule.internal.RuleApplicator.apply(RuleApplicator.java:57)
at net.sourceforge.pmd.lang.rule.internal.RuleSets.apply(RuleSets.java:155)
at net.sourceforge.pmd.lang.impl.PmdRunnable.processSource(PmdRunnable.java:140)
at net.sourceforge.pmd.lang.impl.PmdRunnable.run(PmdRunnable.java:80)
at java.base@17.0.10/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
at java.base@17.0.10/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base@17.0.10/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base@17.0.10/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base@17.0.10/java.lang.Thread.run(Thread.java:840)
Caused by: java.lang.IllegalArgumentException: Bad intersection, unrelated class types java.lang.constant.Constable[] and java.lang.Enum[] in [java.lang.Enum[], java.lang.constant.Constable[], BadIntersection$Animal[]]
at net.sourceforge.pmd.lang.java.types.Lub.glb(Lub.java:337)
at net.sourceforge.pmd.lang.java.types.TypeSystem.glb(TypeSystem.java:715)
at net.sourceforge.pmd.lang.java.types.Lub$LubJudge.lub(Lub.java:164)
at net.sourceforge.pmd.lang.java.types.Lub.lub(Lub.java:35)
at net.sourceforge.pmd.lang.java.types.TypeSystem.lub(TypeSystem.java:680)
at net.sourceforge.pmd.lang.java.types.internal.infer.ReductionStep$2.solve(ReductionStep.java:41)
at net.sourceforge.pmd.lang.java.types.internal.infer.InferenceContext.solveBatchProgressed(InferenceContext.java:444)
at net.sourceforge.pmd.lang.java.types.internal.infer.InferenceContext.solve(InferenceContext.java:424)
at net.sourceforge.pmd.lang.java.types.internal.infer.InferenceContext.solve(InferenceContext.java:400)
at net.sourceforge.pmd.lang.java.types.internal.infer.Infer.instantiateImpl(Infer.java:576)
at net.sourceforge.pmd.lang.java.types.internal.infer.Infer.instantiateMaybeNoInfer(Infer.java:541)
at net.sourceforge.pmd.lang.java.types.internal.infer.Infer.instantiateMethod(Infer.java:385)
at net.sourceforge.pmd.lang.java.types.internal.infer.Infer.instantiateMethodOrCtor(Infer.java:365)
at net.sourceforge.pmd.lang.java.types.internal.infer.Infer.logInference(Infer.java:348)
at net.sourceforge.pmd.lang.java.types.internal.infer.Infer.computeCompileTimeDecl(Infer.java:288)
at net.sourceforge.pmd.lang.java.types.internal.infer.Infer.getCompileTimeDecl(Infer.java:250)
at net.sourceforge.pmd.lang.java.types.internal.infer.Infer.goToInvocationWithFallback(Infer.java:183)
at net.sourceforge.pmd.lang.java.types.internal.infer.Infer.inferInvocationRecursively(Infer.java:172)
at net.sourceforge.pmd.lang.java.types.ast.internal.PolyResolution.inferInvocation(PolyResolution.java:254)
at net.sourceforge.pmd.lang.java.types.ast.internal.PolyResolution.polyTypeOtherCtx(PolyResolution.java:126)
at net.sourceforge.pmd.lang.java.types.ast.internal.PolyResolution.computePolyType(PolyResolution.java:116)
at net.sourceforge.pmd.lang.java.types.ast.internal.LazyTypeResolver.handlePoly(LazyTypeResolver.java:267)
at net.sourceforge.pmd.lang.java.types.ast.internal.LazyTypeResolver.visit(LazyTypeResolver.java:272)
at net.sourceforge.pmd.lang.java.types.ast.internal.LazyTypeResolver.visit(LazyTypeResolver.java:95)
at net.sourceforge.pmd.lang.java.ast.ASTMethodCall.acceptVisitor(ASTMethodCall.java:75)
at net.sourceforge.pmd.lang.java.ast.AbstractJavaTypeNode.getTypeMirror(AbstractJavaTypeNode.java:51)
... 19 more
Exception occurred on node !debug only! [MethodCall:22:12]Stream.of(
Bird.values(),
Fish.values()
)
.flatMap(Arrays::stream)
Affects PMD Version:
7.0.0
Description:
PMD does not properly handle code that combines values from 2 enums which share the same interface.
Exception Stacktrace:
Code Sample demonstrating the issue:
Steps to reproduce:
./gradlew pmdMain
Running PMD through: Gradle
Happens on OpenJDK versions 11, 17, and 21.
The text was updated successfully, but these errors were encountered: