-
Bug
-
Resolution: Fixed
-
P4
-
9
-
b153
-
Verified
The following program crashes javac 9-ea+149:
===
import java.util.List;
import java.util.function.Function;
import java.util.function.Supplier;
abstract class Test {
abstract <A> void f(List<A> t);
abstract <B, C> C g(C u, Function<B, C> v);
abstract <D> D g(Supplier<D> w);
public void test() {
f(g((String) null, task -> g(new NoSuch() {})));
}
}
===
java.lang.NullPointerException
at jdk.compiler/com.sun.tools.javac.comp.Check.clearLocalClassNameIndexes(Check.java:440)
at jdk.compiler/com.sun.tools.javac.comp.DeferredAttr$UnenterScanner.visitClassDef(DeferredAttr.java:483)
at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:774)
at jdk.compiler/com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
at jdk.compiler/com.sun.tools.javac.tree.TreeScanner.visitNewClass(TreeScanner.java:246)
at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCNewClass.accept(JCTree.java:1683)
at jdk.compiler/com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
at jdk.compiler/com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:57)
at jdk.compiler/com.sun.tools.javac.tree.TreeScanner.visitApply(TreeScanner.java:238)
at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCMethodInvocation.accept(JCTree.java:1628)
at jdk.compiler/com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
at jdk.compiler/com.sun.tools.javac.tree.TreeScanner.visitLambda(TreeScanner.java:259)
at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCLambda.accept(JCTree.java:1801)
at jdk.compiler/com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
at jdk.compiler/com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:57)
at jdk.compiler/com.sun.tools.javac.tree.TreeScanner.visitApply(TreeScanner.java:238)
at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCMethodInvocation.accept(JCTree.java:1628)
at jdk.compiler/com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
at jdk.compiler/com.sun.tools.javac.comp.DeferredAttr.attribSpeculative(DeferredAttr.java:461)
at jdk.compiler/com.sun.tools.javac.comp.DeferredAttr.attribSpeculative(DeferredAttr.java:447)
at jdk.compiler/com.sun.tools.javac.comp.DeferredAttr$4.complete(DeferredAttr.java:335)
at jdk.compiler/com.sun.tools.javac.comp.ArgumentAttr$ArgumentType.complete(ArgumentAttr.java:354)
at jdk.compiler/com.sun.tools.javac.comp.DeferredAttr$DeferredType.check(DeferredAttr.java:301)
at jdk.compiler/com.sun.tools.javac.comp.DeferredAttr$DeferredType.check(DeferredAttr.java:287)
at jdk.compiler/com.sun.tools.javac.comp.DeferredAttr$RecoveryDeferredTypeMap.recover(DeferredAttr.java:992)
at jdk.compiler/com.sun.tools.javac.comp.DeferredAttr$RecoveryDeferredTypeMap.typeOf(DeferredAttr.java:981)
at jdk.compiler/com.sun.tools.javac.comp.Resolve$ResolveDeferredRecoveryMap.typeOf(Resolve.java:2384)
at jdk.compiler/com.sun.tools.javac.comp.DeferredAttr$DeferredTypeMap.visitType(DeferredAttr.java:948)
at jdk.compiler/com.sun.tools.javac.comp.DeferredAttr$RecoveryDeferredTypeMap.visitType(DeferredAttr.java:971)
at jdk.compiler/com.sun.tools.javac.comp.DeferredAttr$DeferredTypeMap.visitType(DeferredAttr.java:934)
at jdk.compiler/com.sun.tools.javac.code.Type.accept(Type.java:214)
at jdk.compiler/com.sun.tools.javac.code.Types$MapVisitor.visit(Types.java:4706)
at jdk.compiler/com.sun.tools.javac.code.Type$TypeMapping.apply(Type.java:231)
at jdk.compiler/com.sun.tools.javac.code.Type$TypeMapping.apply(Type.java:227)
at jdk.compiler/com.sun.tools.javac.util.List.map(List.java:425)
at jdk.compiler/com.sun.tools.javac.comp.Resolve$7.getArgumentTypes(Resolve.java:2372)
at jdk.compiler/com.sun.tools.javac.comp.Resolve.accessInternal(Resolve.java:2293)
at jdk.compiler/com.sun.tools.javac.comp.Resolve.accessMethod(Resolve.java:2313)
at jdk.compiler/com.sun.tools.javac.comp.Resolve$BasicLookupHelper.access(Resolve.java:3102)
at jdk.compiler/com.sun.tools.javac.comp.Resolve.lookupMethod(Resolve.java:3343)
at jdk.compiler/com.sun.tools.javac.comp.Resolve.lookupMethod(Resolve.java:3323)
at jdk.compiler/com.sun.tools.javac.comp.Resolve.resolveMethod(Resolve.java:2438)
at jdk.compiler/com.sun.tools.javac.comp.Attr.visitIdent(Attr.java:3311)
at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCIdent.accept(JCTree.java:2223)
at jdk.compiler/com.sun.tools.javac.comp.Attr$ResultInfo.attr(Attr.java:501)
at jdk.compiler/com.sun.tools.javac.comp.Attr.attribTree(Attr.java:639)
===
import java.util.List;
import java.util.function.Function;
import java.util.function.Supplier;
abstract class Test {
abstract <A> void f(List<A> t);
abstract <B, C> C g(C u, Function<B, C> v);
abstract <D> D g(Supplier<D> w);
public void test() {
f(g((String) null, task -> g(new NoSuch() {})));
}
}
===
java.lang.NullPointerException
at jdk.compiler/com.sun.tools.javac.comp.Check.clearLocalClassNameIndexes(Check.java:440)
at jdk.compiler/com.sun.tools.javac.comp.DeferredAttr$UnenterScanner.visitClassDef(DeferredAttr.java:483)
at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:774)
at jdk.compiler/com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
at jdk.compiler/com.sun.tools.javac.tree.TreeScanner.visitNewClass(TreeScanner.java:246)
at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCNewClass.accept(JCTree.java:1683)
at jdk.compiler/com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
at jdk.compiler/com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:57)
at jdk.compiler/com.sun.tools.javac.tree.TreeScanner.visitApply(TreeScanner.java:238)
at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCMethodInvocation.accept(JCTree.java:1628)
at jdk.compiler/com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
at jdk.compiler/com.sun.tools.javac.tree.TreeScanner.visitLambda(TreeScanner.java:259)
at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCLambda.accept(JCTree.java:1801)
at jdk.compiler/com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
at jdk.compiler/com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:57)
at jdk.compiler/com.sun.tools.javac.tree.TreeScanner.visitApply(TreeScanner.java:238)
at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCMethodInvocation.accept(JCTree.java:1628)
at jdk.compiler/com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
at jdk.compiler/com.sun.tools.javac.comp.DeferredAttr.attribSpeculative(DeferredAttr.java:461)
at jdk.compiler/com.sun.tools.javac.comp.DeferredAttr.attribSpeculative(DeferredAttr.java:447)
at jdk.compiler/com.sun.tools.javac.comp.DeferredAttr$4.complete(DeferredAttr.java:335)
at jdk.compiler/com.sun.tools.javac.comp.ArgumentAttr$ArgumentType.complete(ArgumentAttr.java:354)
at jdk.compiler/com.sun.tools.javac.comp.DeferredAttr$DeferredType.check(DeferredAttr.java:301)
at jdk.compiler/com.sun.tools.javac.comp.DeferredAttr$DeferredType.check(DeferredAttr.java:287)
at jdk.compiler/com.sun.tools.javac.comp.DeferredAttr$RecoveryDeferredTypeMap.recover(DeferredAttr.java:992)
at jdk.compiler/com.sun.tools.javac.comp.DeferredAttr$RecoveryDeferredTypeMap.typeOf(DeferredAttr.java:981)
at jdk.compiler/com.sun.tools.javac.comp.Resolve$ResolveDeferredRecoveryMap.typeOf(Resolve.java:2384)
at jdk.compiler/com.sun.tools.javac.comp.DeferredAttr$DeferredTypeMap.visitType(DeferredAttr.java:948)
at jdk.compiler/com.sun.tools.javac.comp.DeferredAttr$RecoveryDeferredTypeMap.visitType(DeferredAttr.java:971)
at jdk.compiler/com.sun.tools.javac.comp.DeferredAttr$DeferredTypeMap.visitType(DeferredAttr.java:934)
at jdk.compiler/com.sun.tools.javac.code.Type.accept(Type.java:214)
at jdk.compiler/com.sun.tools.javac.code.Types$MapVisitor.visit(Types.java:4706)
at jdk.compiler/com.sun.tools.javac.code.Type$TypeMapping.apply(Type.java:231)
at jdk.compiler/com.sun.tools.javac.code.Type$TypeMapping.apply(Type.java:227)
at jdk.compiler/com.sun.tools.javac.util.List.map(List.java:425)
at jdk.compiler/com.sun.tools.javac.comp.Resolve$7.getArgumentTypes(Resolve.java:2372)
at jdk.compiler/com.sun.tools.javac.comp.Resolve.accessInternal(Resolve.java:2293)
at jdk.compiler/com.sun.tools.javac.comp.Resolve.accessMethod(Resolve.java:2313)
at jdk.compiler/com.sun.tools.javac.comp.Resolve$BasicLookupHelper.access(Resolve.java:3102)
at jdk.compiler/com.sun.tools.javac.comp.Resolve.lookupMethod(Resolve.java:3343)
at jdk.compiler/com.sun.tools.javac.comp.Resolve.lookupMethod(Resolve.java:3323)
at jdk.compiler/com.sun.tools.javac.comp.Resolve.resolveMethod(Resolve.java:2438)
at jdk.compiler/com.sun.tools.javac.comp.Attr.visitIdent(Attr.java:3311)
at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCIdent.accept(JCTree.java:2223)
at jdk.compiler/com.sun.tools.javac.comp.Attr$ResultInfo.attr(Attr.java:501)
at jdk.compiler/com.sun.tools.javac.comp.Attr.attribTree(Attr.java:639)