mirror of
https://github.com/darlinghq/darling-openjdk.git
synced 2024-11-23 04:19:43 +00:00
8235778: No compilation error reported when a record is declared in a local class
Reviewed-by: mcimadamore
This commit is contained in:
parent
8c33bba226
commit
c2e69df562
@ -1207,6 +1207,9 @@ public class Check {
|
||||
mask = (flags & RECORD) != 0 ? LocalRecordFlags : LocalClassFlags;
|
||||
if ((flags & RECORD) != 0) {
|
||||
implicit = STATIC;
|
||||
if (sym.owner.kind == TYP) {
|
||||
log.error(pos, Errors.RecordDeclarationNotAllowedInInnerClasses);
|
||||
}
|
||||
}
|
||||
if ((sym.owner.flags_field & STATIC) == 0 &&
|
||||
(flags & ENUM) != 0) {
|
||||
|
@ -417,6 +417,14 @@ public class RecordCompilationTests extends CompilationTestCase {
|
||||
" record RR(int x) { public int x() { return z; }};\n" +
|
||||
" }\n" +
|
||||
"}");
|
||||
// can be contained inside a lambda
|
||||
assertOK("""
|
||||
class Outer {
|
||||
Runnable run = () -> {
|
||||
record TestRecord(int i) {}
|
||||
};
|
||||
}
|
||||
""");
|
||||
|
||||
// Can't self-shadow
|
||||
assertFail("compiler.err.already.defined",
|
||||
@ -488,6 +496,35 @@ public class RecordCompilationTests extends CompilationTestCase {
|
||||
" record R(int a) {}\n" +
|
||||
" }\n" +
|
||||
"}");
|
||||
assertFail("compiler.err.record.declaration.not.allowed.in.inner.classes",
|
||||
"""
|
||||
class Outer {
|
||||
public void test() {
|
||||
class Inner extends Outer {
|
||||
record R(int i) {}
|
||||
}
|
||||
}
|
||||
}
|
||||
""");
|
||||
assertFail("compiler.err.record.declaration.not.allowed.in.inner.classes",
|
||||
"""
|
||||
class Outer {
|
||||
Runnable run = new Runnable() {
|
||||
record TestRecord(int i) {}
|
||||
public void run() {}
|
||||
};
|
||||
}
|
||||
""");
|
||||
assertFail("compiler.err.record.declaration.not.allowed.in.inner.classes",
|
||||
"""
|
||||
class Outer {
|
||||
void m() {
|
||||
record A() {
|
||||
record B() { }
|
||||
}
|
||||
}
|
||||
}
|
||||
""");
|
||||
}
|
||||
|
||||
public void testReceiverParameter() {
|
||||
|
Loading…
Reference in New Issue
Block a user