Object's constructor is private from frontend point of view.

Test data changed.
Js-backend test objectInObject turned off.
Public constructors for objects hard-coded in jvm-backend.
This commit is contained in:
Pavel V. Talanov
2012-08-28 18:29:38 +04:00
parent a28d78974b
commit e6e6f7e598
7 changed files with 16 additions and 13 deletions
@@ -996,8 +996,13 @@ public class JetTypeMapper {
if (isClassObject(containingDeclaration)) { if (isClassObject(containingDeclaration)) {
return defaultFlags; return defaultFlags;
} }
if (p instanceof ConstructorDescriptor && isEnumEntry(containingDeclaration)) { if (p instanceof ConstructorDescriptor) {
return 0; ClassKind kind = ((ClassDescriptor) containingDeclaration).getKind();
if (kind == ClassKind.OBJECT) {
return ACC_PUBLIC;
} else if (kind == ClassKind.ENUM_ENTRY) {
return 0;
}
} }
if (containingDeclaration instanceof NamespaceDescriptor) { if (containingDeclaration instanceof NamespaceDescriptor) {
return 0; return 0;
@@ -372,12 +372,9 @@ public class DescriptorUtils {
// see http://youtrack.jetbrains.com/issue/KT-2680 // see http://youtrack.jetbrains.com/issue/KT-2680
return Visibilities.PROTECTED; return Visibilities.PROTECTED;
} }
if (classKind == ClassKind.ENUM_ENTRY || classKind == ClassKind.CLASS_OBJECT) { if (classKind.isObject()) {
return Visibilities.PRIVATE; return Visibilities.PRIVATE;
} }
if (classKind == ClassKind.OBJECT) {
return Visibilities.INTERNAL;
}
assert classKind == ClassKind.CLASS || classKind == ClassKind.TRAIT || classKind == ClassKind.ANNOTATION_CLASS; assert classKind == ClassKind.CLASS || classKind == ClassKind.TRAIT || classKind == ClassKind.ANNOTATION_CLASS;
return Visibilities.PUBLIC; return Visibilities.PUBLIC;
} }
@@ -4,7 +4,7 @@ internal final class test.A : jet.Any {
public final /*constructor*/ fun <init>(): test.A public final /*constructor*/ fun <init>(): test.A
internal final val B: test.A.B internal final val B: test.A.B
internal final object test.A.B : jet.Any { internal final object test.A.B : jet.Any {
internal final /*constructor*/ fun <init>(): test.A.B private final /*constructor*/ fun <init>(): test.A.B
internal final fun foo(/*0*/ a: jet.Int): jet.String internal final fun foo(/*0*/ a: jet.Int): jet.String
} }
} }
@@ -1,7 +1,7 @@
namespace test namespace test
internal final object test.SomeObject : jet.Any { internal final object test.SomeObject : jet.Any {
internal final /*constructor*/ fun <init>(): test.SomeObject private final /*constructor*/ fun <init>(): test.SomeObject
internal final fun test(/*0*/ a: jet.Int): jet.Int internal final fun test(/*0*/ a: jet.Int): jet.Int
} }
internal final val SomeObject: test.SomeObject internal final val SomeObject: test.SomeObject
@@ -1,6 +1,6 @@
namespace test namespace test
internal final object test.Bar : jet.Any { internal final object test.Bar : jet.Any {
internal final /*constructor*/ fun <init>(): test.Bar private final /*constructor*/ fun <init>(): test.Bar
} }
internal final val Bar: test.Bar internal final val Bar: test.Bar
@@ -44,7 +44,8 @@ public final class ObjectTest extends SingleFileTranslationTest {
fooBoxTest(); fooBoxTest();
} }
public void testObjectInObject() throws Exception { //TODO: KT-2696
public void TODO_testObjectInObject() throws Exception {
fooBoxTest(); fooBoxTest();
} }
@@ -1,17 +1,17 @@
package foo package foo
object A { object A {
val query = object {val status = "complete"} object query {val status = "complete"}
} }
object B { object B {
private val ov = "d" private val ov = "d"
val query = object {val status = "complete" + ov} object query {val status = "complete" + ov}
} }
class C { class C {
fun ov() = "d" fun ov() = "d"
val query = object {val status = "complete" + ov()} object query {val status = "complete" + ov()}
} }
fun box() = A.query.status == "complete" && B.query.status == "completed" && C().query.status == "completed" fun box() = A.query.status == "complete" && B.query.status == "completed" && C().query.status == "completed"