Report CLASS_OBJECT_NOT_ALLOWED for local classes
This commit is contained in:
@@ -524,7 +524,7 @@ public class TypeHierarchyResolver {
|
|||||||
createClassDescriptorForSingleton(objectDeclaration, getClassObjectName(container.getName()), ClassKind.CLASS_OBJECT);
|
createClassDescriptorForSingleton(objectDeclaration, getClassObjectName(container.getName()), ClassKind.CLASS_OBJECT);
|
||||||
|
|
||||||
PackageLikeBuilder.ClassObjectStatus status =
|
PackageLikeBuilder.ClassObjectStatus status =
|
||||||
isEnumEntry(container) || isObject(container) ?
|
isEnumEntry(container) || isObject(container) || c.getTopDownAnalysisParameters().isDeclaredLocally() ?
|
||||||
PackageLikeBuilder.ClassObjectStatus.NOT_ALLOWED :
|
PackageLikeBuilder.ClassObjectStatus.NOT_ALLOWED :
|
||||||
owner.setClassObjectDescriptor(classObjectDescriptor);
|
owner.setClassObjectDescriptor(classObjectDescriptor);
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,9 @@
|
|||||||
|
fun test() {
|
||||||
|
class A {
|
||||||
|
<!CLASS_OBJECT_NOT_ALLOWED!>class object {}<!>
|
||||||
|
}
|
||||||
|
|
||||||
|
object {
|
||||||
|
<!CLASS_OBJECT_NOT_ALLOWED!>class object {}<!>
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1439,6 +1439,11 @@ public class JetDiagnosticsTestGenerated extends AbstractJetDiagnosticsTest {
|
|||||||
doTest("compiler/testData/diagnostics/tests/classObjects/ClassObjectCannotAccessClassFields.kt");
|
doTest("compiler/testData/diagnostics/tests/classObjects/ClassObjectCannotAccessClassFields.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("classObjectInLocalClass.kt")
|
||||||
|
public void testClassObjectInLocalClass() throws Exception {
|
||||||
|
doTest("compiler/testData/diagnostics/tests/classObjects/classObjectInLocalClass.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("ClassObjectVisibility.kt")
|
@TestMetadata("ClassObjectVisibility.kt")
|
||||||
public void testClassObjectVisibility() throws Exception {
|
public void testClassObjectVisibility() throws Exception {
|
||||||
doTest("compiler/testData/diagnostics/tests/classObjects/ClassObjectVisibility.kt");
|
doTest("compiler/testData/diagnostics/tests/classObjects/ClassObjectVisibility.kt");
|
||||||
|
|||||||
Reference in New Issue
Block a user