# HG changeset patch # User andrew # Date 1621473948 -3600 # Thu May 20 02:25:48 2021 +0100 # Node ID 0bf77253975182bd6f2a46505228b0a27b0c6176 # Parent d5cd4b84ea7f0725d2668091b51613cd255a6167 # Parent c94d325a24672375c4767ae08bece4e7d6ea210d Merge jdk8u302-b01 diff --git a/.hgtags b/.hgtags --- a/.hgtags +++ b/.hgtags @@ -1305,3 +1305,6 @@ f544e07ed90109262dfb82d1a75044878ee5194d aarch64-shenandoah-jdk8u292-b09 e096ebc661e8c12321891587c0351a66f165143c jdk8u292-b10 060c8b96c774d079a8b859e90aa6ffe85c5664c8 aarch64-shenandoah-jdk8u292-b10 +e096ebc661e8c12321891587c0351a66f165143c jdk8u292-ga +cd6eb36db1bbeb5b638a577059ecf0a4c4a90b82 jdk8u302-b00 +55148c63b3e8b5a23d4eef33a7bab2c57396a32e jdk8u302-b01 diff --git a/src/share/classes/com/sun/tools/javac/comp/Check.java b/src/share/classes/com/sun/tools/javac/comp/Check.java --- a/src/share/classes/com/sun/tools/javac/comp/Check.java +++ b/src/share/classes/com/sun/tools/javac/comp/Check.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -2617,6 +2617,8 @@ if (type.isErroneous()) return; for (List<Type> l = types.interfaces(type); l.nonEmpty(); l = l.tail) { Type it = l.head; + if (type.hasTag(CLASS) && !it.hasTag(CLASS)) continue; // JLS 8.1.5 + Type oldit = seensofar.put(it.tsym, it); if (oldit != null) { List<Type> oldparams = oldit.allparams(); @@ -2629,6 +2631,7 @@ checkClassBounds(pos, seensofar, it); } Type st = types.supertype(type); + if (type.hasTag(CLASS) && !st.hasTag(CLASS)) return; // JLS 8.1.4 if (st != Type.noType) checkClassBounds(pos, seensofar, st); } diff --git a/test/Makefile b/test/Makefile --- a/test/Makefile +++ b/test/Makefile @@ -139,21 +139,19 @@ # Default JDK for JTREG and JCK # -# JT_JAVA is the version of java used to run jtreg/JCK. Since it is now -# standard to execute tests in sameVM mode, it should normally be set the -# same as TESTJAVA (although not necessarily so.) +# JT_JAVA is the version of java used to run jtreg/JCK. # ifdef JPRT_JAVA_HOME JT_JAVA = $(JPRT_JAVA_HOME) else - JT_JAVA = $(SLASH_JAVA)/re/jdk/1.7.0/archive/fcs/binaries/$(PLATFORM)-$(ARCH) + JT_JAVA = $(SLASH_JAVA)/re/jdk/1.9.0/archive/fcs/binaries/$(PLATFORM)-$(ARCH) endif # Default JDK to test ifdef JPRT_IMPORT_PRODUCT_HOME TESTJAVA = $(JPRT_IMPORT_PRODUCT_HOME) else - TESTJAVA = $(SLASH_JAVA)/re/jdk/1.7.0/promoted/latest/binaries/$(PLATFORM)-$(ARCH) + TESTJAVA = $(SLASH_JAVA)/re/jdk/1.9.0/promoted/latest/binaries/$(PLATFORM)-$(ARCH) endif # PRODUCT_HOME is a JPRT variable pointing to a directory containing the output from @@ -186,7 +184,7 @@ ifdef CONCURRENCY JTREG_OPTIONS += -agentvm -concurrency:$(CONCURRENCY) else - JTREG_OPTIONS += -samevm + JTREG_OPTIONS += -agentvm endif ifdef JCK_CONCURRENCY diff --git a/test/tools/javac/diags/examples/NoJavaLang.java b/test/tools/javac/diags/examples/NoJavaLang.java --- a/test/tools/javac/diags/examples/NoJavaLang.java +++ b/test/tools/javac/diags/examples/NoJavaLang.java @@ -22,7 +22,7 @@ */ // key: compiler.misc.fatal.err.no.java.lang -// options: -Xbootclasspath: +// options: -Xbootclasspath: -classpath . // run: backdoor class NoJavaLang { } diff --git a/test/tools/javac/fatalErrors/NoJavaLangTest.java b/test/tools/javac/fatalErrors/NoJavaLangTest.java --- a/test/tools/javac/fatalErrors/NoJavaLangTest.java +++ b/test/tools/javac/fatalErrors/NoJavaLangTest.java @@ -58,7 +58,7 @@ List<String> output = new ArrayList<>(); ToolBox.JavaToolArgs javacFailArgs = new ToolBox.JavaToolArgs(ToolBox.Expect.FAIL) - .setOptions("-bootclasspath", ".") + .setOptions("-bootclasspath", ".", "-classpath", ".") .setSources(noJavaLangSrc) .setErrOutput(output); diff --git a/test/tools/javac/generics/ClassBoundCheckingOverflow.java b/test/tools/javac/generics/ClassBoundCheckingOverflow.java new file mode 100644 --- /dev/null +++ b/test/tools/javac/generics/ClassBoundCheckingOverflow.java @@ -0,0 +1,12 @@ +/* + * @test /nodynamiccopyright/ + * @bug 8214345 + * @summary infinite recursion while checking super class + * + * @compile/fail/ref=ClassBoundCheckingOverflow.out -XDrawDiagnostics ClassBoundCheckingOverflow.java + */ + +public class ClassBoundCheckingOverflow { + abstract class InfiniteLoop1<E extends InfiniteLoop1<E>> extends E {} + abstract class InfiniteLoop2<E extends InfiniteLoop2<E>> implements E {} +} diff --git a/test/tools/javac/generics/ClassBoundCheckingOverflow.out b/test/tools/javac/generics/ClassBoundCheckingOverflow.out new file mode 100644 --- /dev/null +++ b/test/tools/javac/generics/ClassBoundCheckingOverflow.out @@ -0,0 +1,3 @@ +ClassBoundCheckingOverflow.java:10:70: compiler.err.type.found.req: (compiler.misc.type.parameter: E), (compiler.misc.type.req.class) +ClassBoundCheckingOverflow.java:11:73: compiler.err.type.found.req: (compiler.misc.type.parameter: E), (compiler.misc.type.req.class) +2 errors