mirror of
https://github.com/openjdk/jdk.git
synced 2026-06-06 10:42:45 +00:00
8384229: Previously accepted code is rejected after JDK-8378102
Reviewed-by: vromero
This commit is contained in:
parent
11619700ca
commit
e50c413bb7
@ -2358,8 +2358,9 @@ public class Resolve {
|
||||
bestSoFar != sym) {
|
||||
return new AmbiguityError(bestSoFar, sym);
|
||||
} else if (env.toplevel.namedImportScope == scope &&
|
||||
(sym == typeNotFound || (sym.kind == ERR && s.kind == ERR))) {
|
||||
bestSoFar = bestOf(bestSoFar, new UnresolvableGobalSymbolError(s));
|
||||
((sym == typeNotFound && s.kind.matches(KindSelector.TYP)) ||
|
||||
(sym.kind == ERR && s.kind == ERR))) {
|
||||
bestSoFar = bestOf(bestSoFar, new UnresolvableGlobalSymbolError(s));
|
||||
} else
|
||||
bestSoFar = bestOf(bestSoFar, sym);
|
||||
}
|
||||
@ -4157,9 +4158,9 @@ public class Resolve {
|
||||
List<Type> typeargtypes);
|
||||
}
|
||||
|
||||
class UnresolvableGobalSymbolError extends InvalidSymbolError {
|
||||
class UnresolvableGlobalSymbolError extends InvalidSymbolError {
|
||||
|
||||
UnresolvableGobalSymbolError(Symbol sym) {
|
||||
UnresolvableGlobalSymbolError(Symbol sym) {
|
||||
super(HIDDEN, sym, "unresolvable class error");
|
||||
this.name = sym.name;
|
||||
}
|
||||
|
||||
@ -23,7 +23,7 @@
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @bug 8301580 8322159 8333107 8332230 8338678 8351260 8366196 8372336 8373094
|
||||
* @bug 8301580 8322159 8333107 8332230 8338678 8351260 8366196 8372336 8373094 8384229
|
||||
* @summary Verify error recovery w.r.t. Attr
|
||||
* @library /tools/lib
|
||||
* @modules jdk.compiler/com.sun.tools.javac.api
|
||||
@ -800,6 +800,66 @@ public class AttrRecovery {
|
||||
assertEquals(expected, actual);
|
||||
}
|
||||
|
||||
@Test //JDK-8384229
|
||||
public void testStaticFieldTypeLookup() throws Exception {
|
||||
Path out = base.resolve("out");
|
||||
|
||||
Files.createDirectories(out);
|
||||
|
||||
new JavacTask(tb)
|
||||
.options("-XDrawDiagnostics",
|
||||
"-XDdev")
|
||||
.sources("""
|
||||
package test;
|
||||
import static test.A.Object;
|
||||
enum A {
|
||||
Object;
|
||||
}
|
||||
class Test {
|
||||
void foo() {
|
||||
Object f = "";
|
||||
}
|
||||
}
|
||||
""")
|
||||
.outdir(out)
|
||||
.run()
|
||||
.writeAll();
|
||||
|
||||
new JavacTask(tb)
|
||||
.options("-XDrawDiagnostics",
|
||||
"-XDdev")
|
||||
.sources("""
|
||||
package test;
|
||||
import static test.A.Object;
|
||||
enum A {
|
||||
Object;
|
||||
}
|
||||
class Test {
|
||||
private static final Object f = "";
|
||||
}
|
||||
""")
|
||||
.outdir(out)
|
||||
.run()
|
||||
.writeAll();
|
||||
|
||||
new JavacTask(tb)
|
||||
.options("-XDrawDiagnostics",
|
||||
"-XDdev")
|
||||
.sources("""
|
||||
package test;
|
||||
import static test.A.Object;
|
||||
class A {
|
||||
public static java.lang.Object Object() { return null; }
|
||||
}
|
||||
class Test {
|
||||
private static final Object f = Object();
|
||||
}
|
||||
""")
|
||||
.outdir(out)
|
||||
.run()
|
||||
.writeAll();
|
||||
}
|
||||
|
||||
@BeforeEach
|
||||
public void setUp(TestInfo info) throws IOException {
|
||||
base = Path.of(info.getTestMethod().orElseThrow().getName());
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user