-
Bug
-
Resolution: Fixed
-
P3
-
8-pool, 9
-
b75
-
x86_64
-
windows_7
-
Verified
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8136271 | emb-9 | Maurizio Cimadamore | P3 | Resolved | Fixed | team |
JDK-8156451 | 8u111 | Maurizio Cimadamore | P3 | Resolved | Fixed | b01 |
JDK-8148152 | 8u102 | Maurizio Cimadamore | P3 | Resolved | Fixed | b01 |
JDK-8162327 | emb-8u111 | Maurizio Cimadamore | P3 | Resolved | Fixed | b01 |
java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b15)
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)
ADDITIONAL OS VERSION INFORMATION :
Microsoft Windows [Version 6.1.7601]
A DESCRIPTION OF THE PROBLEM :
com.sun.tools.javac.comp.Infer$GraphStrategy$NodeNotFoundException occurs when compiling the attached executable test case.
REGRESSION. Last worked in version 7u80
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
javac VerfuegbareTarifkalender.java
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
no errors: javac exits with code 0
ACTUAL -
javac exits with code 4
ERROR MESSAGES/STACK TRACES THAT OCCUR :
An exception has occurred in the compiler (1.8.0_45). Please file a bug at the Java Developer Connection (http://java.sun.com/webapps/bugreport) after checking the Bug Parade for duplicates. Include your program and the following diagnostic in your report. Thank you.
com.sun.tools.javac.comp.Infer$GraphStrategy$NodeNotFoundException
at com.sun.tools.javac.comp.Infer$LeafSolver.pickNode(Infer.java:1217)
at com.sun.tools.javac.comp.Infer$GraphSolver.solve(Infer.java:1585)
at com.sun.tools.javac.comp.Infer$InferenceContext.solve(Infer.java:2204)
at com.sun.tools.javac.comp.Infer$InferenceContext.solve(Infer.java:2196)
at com.sun.tools.javac.comp.Infer$InferenceContext.solve(Infer.java:2211)
at com.sun.tools.javac.comp.Infer.instantiateMethod(Infer.java:186)
at com.sun.tools.javac.comp.Resolve.rawInstantiate(Resolve.java:567)
at com.sun.tools.javac.comp.Resolve.selectBest(Resolve.java:1441)
at com.sun.tools.javac.comp.Resolve.findMethodInScope(Resolve.java:1628)
at com.sun.tools.javac.comp.Resolve.findMethod(Resolve.java:1699)
at com.sun.tools.javac.comp.Resolve.findMethod(Resolve.java:1672)
at com.sun.tools.javac.comp.Resolve.findFun(Resolve.java:1832)
at com.sun.tools.javac.comp.Resolve$8.doLookup(Resolve.java:2393)
at com.sun.tools.javac.comp.Resolve$BasicLookupHelper.lookup(Resolve.java:3084)
at com.sun.tools.javac.comp.Resolve.lookupMethod(Resolve.java:3335)
at com.sun.tools.javac.comp.Resolve.lookupMethod(Resolve.java:3320)
at com.sun.tools.javac.comp.Resolve.resolveMethod(Resolve.java:2389)
at com.sun.tools.javac.comp.Attr.visitIdent(Attr.java:3134)
at com.sun.tools.javac.tree.JCTree$JCIdent.accept(JCTree.java:2011)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:566)
at com.sun.tools.javac.comp.Attr.visitApply(Attr.java:1806)
at com.sun.tools.javac.tree.JCTree$JCMethodInvocation.accept(JCTree.java:1465)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:566)
at com.sun.tools.javac.comp.DeferredAttr.attribSpeculative(DeferredAttr.java:386)
at com.sun.tools.javac.comp.DeferredAttr$2.complete(DeferredAttr.java:279)
at com.sun.tools.javac.comp.DeferredAttr$DeferredType.check(DeferredAttr.java:245)
at com.sun.tools.javac.comp.DeferredAttr$DeferredType.check(DeferredAttr.java:232)
at com.sun.tools.javac.comp.Resolve$MethodResultInfo.check(Resolve.java:1003)
at com.sun.tools.javac.comp.Resolve$4.checkArg(Resolve.java:829)
at com.sun.tools.javac.comp.Resolve$AbstractMethodCheck.argumentsAcceptable(Resolve.java:734)
at com.sun.tools.javac.comp.Resolve$4.argumentsAcceptable(Resolve.java:838)
at com.sun.tools.javac.comp.Infer.instantiateMethod(Infer.java:162)
at com.sun.tools.javac.comp.Resolve.rawInstantiate(Resolve.java:567)
at com.sun.tools.javac.comp.Resolve.selectBest(Resolve.java:1441)
at com.sun.tools.javac.comp.Resolve.findMethodInScope(Resolve.java:1628)
at com.sun.tools.javac.comp.Resolve.findMethod(Resolve.java:1699)
at com.sun.tools.javac.comp.Resolve.findMethod(Resolve.java:1672)
at com.sun.tools.javac.comp.Resolve.findFun(Resolve.java:1832)
at com.sun.tools.javac.comp.Resolve$8.doLookup(Resolve.java:2393)
at com.sun.tools.javac.comp.Resolve$BasicLookupHelper.lookup(Resolve.java:3084)
at com.sun.tools.javac.comp.Resolve.lookupMethod(Resolve.java:3335)
at com.sun.tools.javac.comp.Resolve.lookupMethod(Resolve.java:3320)
at com.sun.tools.javac.comp.Resolve.resolveMethod(Resolve.java:2389)
at com.sun.tools.javac.comp.Attr.visitIdent(Attr.java:3134)
at com.sun.tools.javac.tree.JCTree$JCIdent.accept(JCTree.java:2011)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:566)
at com.sun.tools.javac.comp.Attr.visitApply(Attr.java:1806)
at com.sun.tools.javac.tree.JCTree$JCMethodInvocation.accept(JCTree.java:1465)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:566)
at com.sun.tools.javac.comp.DeferredAttr.attribSpeculative(DeferredAttr.java:386)
at com.sun.tools.javac.comp.DeferredAttr$2.complete(DeferredAttr.java:279)
at com.sun.tools.javac.comp.DeferredAttr$DeferredType.check(DeferredAttr.java:245)
at com.sun.tools.javac.comp.DeferredAttr$DeferredType.check(DeferredAttr.java:232)
at com.sun.tools.javac.comp.Resolve$MethodResultInfo.check(Resolve.java:1003)
at com.sun.tools.javac.comp.Resolve$4.checkArg(Resolve.java:829)
at com.sun.tools.javac.comp.Resolve$AbstractMethodCheck.argumentsAcceptable(Resolve.java:734)
at com.sun.tools.javac.comp.Resolve$4.argumentsAcceptable(Resolve.java:838)
at com.sun.tools.javac.comp.Infer.instantiateMethod(Infer.java:162)
at com.sun.tools.javac.comp.Resolve.rawInstantiate(Resolve.java:567)
at com.sun.tools.javac.comp.Resolve.selectBest(Resolve.java:1441)
at com.sun.tools.javac.comp.Resolve.findMethodInScope(Resolve.java:1628)
at com.sun.tools.javac.comp.Resolve.findMethod(Resolve.java:1699)
at com.sun.tools.javac.comp.Resolve.findMethod(Resolve.java:1672)
at com.sun.tools.javac.comp.Resolve.findFun(Resolve.java:1832)
at com.sun.tools.javac.comp.Resolve$8.doLookup(Resolve.java:2393)
at com.sun.tools.javac.comp.Resolve$BasicLookupHelper.lookup(Resolve.java:3084)
at com.sun.tools.javac.comp.Resolve.lookupMethod(Resolve.java:3335)
at com.sun.tools.javac.comp.Resolve.lookupMethod(Resolve.java:3320)
at com.sun.tools.javac.comp.Resolve.resolveMethod(Resolve.java:2389)
at com.sun.tools.javac.comp.Attr.visitIdent(Attr.java:3134)
at com.sun.tools.javac.tree.JCTree$JCIdent.accept(JCTree.java:2011)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:566)
at com.sun.tools.javac.comp.Attr.visitApply(Attr.java:1806)
at com.sun.tools.javac.tree.JCTree$JCMethodInvocation.accept(JCTree.java:1465)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:566)
at com.sun.tools.javac.comp.DeferredAttr.attribSpeculative(DeferredAttr.java:386)
at com.sun.tools.javac.comp.DeferredAttr$2.complete(DeferredAttr.java:279)
at com.sun.tools.javac.comp.DeferredAttr$DeferredType.check(DeferredAttr.java:245)
at com.sun.tools.javac.comp.DeferredAttr$DeferredType.check(DeferredAttr.java:232)
at com.sun.tools.javac.comp.Resolve$MethodResultInfo.check(Resolve.java:1003)
at com.sun.tools.javac.comp.Resolve$4.checkArg(Resolve.java:829)
at com.sun.tools.javac.comp.Resolve$AbstractMethodCheck.argumentsAcceptable(Resolve.java:734)
at com.sun.tools.javac.comp.Resolve$4.argumentsAcceptable(Resolve.java:838)
at com.sun.tools.javac.comp.Infer.instantiateMethod(Infer.java:162)
at com.sun.tools.javac.comp.Resolve.rawInstantiate(Resolve.java:567)
at com.sun.tools.javac.comp.Resolve.selectBest(Resolve.java:1441)
at com.sun.tools.javac.comp.Resolve.findMethodInScope(Resolve.java:1628)
at com.sun.tools.javac.comp.Resolve.findMethod(Resolve.java:1699)
at com.sun.tools.javac.comp.Resolve.findMethod(Resolve.java:1672)
at com.sun.tools.javac.comp.Resolve.findFun(Resolve.java:1832)
at com.sun.tools.javac.comp.Resolve$8.doLookup(Resolve.java:2393)
at com.sun.tools.javac.comp.Resolve$BasicLookupHelper.lookup(Resolve.java:3084)
at com.sun.tools.javac.comp.Resolve.lookupMethod(Resolve.java:3335)
at com.sun.tools.javac.comp.Resolve.lookupMethod(Resolve.java:3320)
at com.sun.tools.javac.comp.Resolve.resolveMethod(Resolve.java:2389)
at com.sun.tools.javac.comp.Attr.visitIdent(Attr.java:3134)
at com.sun.tools.javac.tree.JCTree$JCIdent.accept(JCTree.java:2011)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:566)
at com.sun.tools.javac.comp.Attr.visitApply(Attr.java:1806)
at com.sun.tools.javac.tree.JCTree$JCMethodInvocation.accept(JCTree.java:1465)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:566)
at com.sun.tools.javac.comp.Attr.visitReturn(Attr.java:1667)
at com.sun.tools.javac.tree.JCTree$JCReturn.accept(JCTree.java:1384)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:566)
at com.sun.tools.javac.comp.Attr.attribStat(Attr.java:635)
at com.sun.tools.javac.comp.Attr.attribStats(Attr.java:651)
at com.sun.tools.javac.comp.Attr.visitBlock(Attr.java:1105)
at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:909)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:566)
at com.sun.tools.javac.comp.Attr.attribStat(Attr.java:635)
at com.sun.tools.javac.comp.Attr.visitMethodDef(Attr.java:994)
at com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:778)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:566)
at com.sun.tools.javac.comp.Attr.attribStat(Attr.java:635)
at com.sun.tools.javac.comp.Attr.attribClassBody(Attr.java:4330)
at com.sun.tools.javac.comp.Attr.attribClass(Attr.java:4240)
at com.sun.tools.javac.comp.Attr.attribClass(Attr.java:4169)
at com.sun.tools.javac.comp.Attr.attrib(Attr.java:4144)
at com.sun.tools.javac.main.JavaCompiler.attribute(JavaCompiler.java:1248)
at com.sun.tools.javac.main.JavaCompiler.compile2(JavaCompiler.java:901)
at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:860)
at com.sun.tools.javac.main.Main.compile(Main.java:523)
at com.sun.tools.javac.main.Main.compile(Main.java:381)
at com.sun.tools.javac.main.Main.compile(Main.java:370)
at com.sun.tools.javac.main.Main.compile(Main.java:361)
at com.sun.tools.javac.Main.compile(Main.java:56)
at com.sun.tools.javac.Main.main(Main.java:42)
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
class VerfuegbareTarifkalender {
private Donor kalenderSommerWinter() {
return a(
with(null, listOf(
a(
with(null, null),
with(null, listOf(
a(
with(null, null),
with(null, null),
with(null, null),
with(null, null),
with(null, null)
),
a(
with(null, null),
with(null, null),
with(null, null),
with(null, null),
with(null, null),
with(null, null),
with(null, null),
with(null, null)
),
a(
with(null, null),
with(null, null),
with(null, null),
with(null, null),
with(null, null),
with(null, null),
with(null, null),
with(null, null)
),
a(
with(null, null),
with(null, null),
with(null, null),
with(null, null),
with(null, null),
with(null, null),
with(null, null),
with(null, null)
)
))
)
))
);
}
interface List<T> {}
interface Donor<T> {}
class PropertyValue<T, V> {}
static <T> Donor<T> a(PropertyValue<T, ?>... propertyProviders) {
return null;
}
static <T,V,W extends V> PropertyValue<T,V> with(Object property, Donor<W> valueDonor) {
return null;
}
static <T> Donor<List<T>> listOf(Donor<? extends T>... donors) {
return null;
}
}
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
- either use 1.7 source language level
or
- change signature of the with() method:
remove type parameters from return type:
static <T,V,W extends V> PropertyValue with(Object property, Donor<W> valueDonor) {
return null;
}
SUPPORT :
YES
- backported by
-
JDK-8136271 Inference: NodeNotFoundException thrown with deep generic method call chain
-
- Resolved
-
-
JDK-8148152 Inference: NodeNotFoundException thrown with deep generic method call chain
-
- Resolved
-
-
JDK-8156451 Inference: NodeNotFoundException thrown with deep generic method call chain
-
- Resolved
-
-
JDK-8162327 Inference: NodeNotFoundException thrown with deep generic method call chain
-
- Resolved
-
- relates to
-
JDK-8054660 Compiler Error com.sun.tools.javac.comp.Infer$GraphStrategy$NodeNotFoundExcep
-
- Closed
-
-
JDK-8078300 javac error: com.sun.tools.javac.comp.Infer$GraphStrategy$NodeNotFoundException
-
- Closed
-