Report CLASS_OBJECT_NOT_ALLOWED for local classes

This commit is contained in:
Andrey Breslav
2014-02-26 19:38:56 +04:00
parent 71bbc62414
commit a7135fee06
3 changed files with 15 additions and 1 deletions
@@ -524,7 +524,7 @@ public class TypeHierarchyResolver {
createClassDescriptorForSingleton(objectDeclaration, getClassObjectName(container.getName()), ClassKind.CLASS_OBJECT);
PackageLikeBuilder.ClassObjectStatus status =
isEnumEntry(container) || isObject(container) ?
isEnumEntry(container) || isObject(container) || c.getTopDownAnalysisParameters().isDeclaredLocally() ?
PackageLikeBuilder.ClassObjectStatus.NOT_ALLOWED :
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");
}
@TestMetadata("classObjectInLocalClass.kt")
public void testClassObjectInLocalClass() throws Exception {
doTest("compiler/testData/diagnostics/tests/classObjects/classObjectInLocalClass.kt");
}
@TestMetadata("ClassObjectVisibility.kt")
public void testClassObjectVisibility() throws Exception {
doTest("compiler/testData/diagnostics/tests/classObjects/ClassObjectVisibility.kt");