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)) {
return defaultFlags;
}
if (p instanceof ConstructorDescriptor && isEnumEntry(containingDeclaration)) {
return 0;
if (p instanceof ConstructorDescriptor) {
ClassKind kind = ((ClassDescriptor) containingDeclaration).getKind();
if (kind == ClassKind.OBJECT) {
return ACC_PUBLIC;
} else if (kind == ClassKind.ENUM_ENTRY) {
return 0;
}
}
if (containingDeclaration instanceof NamespaceDescriptor) {
return 0;
@@ -372,12 +372,9 @@ public class DescriptorUtils {
// see http://youtrack.jetbrains.com/issue/KT-2680
return Visibilities.PROTECTED;
}
if (classKind == ClassKind.ENUM_ENTRY || classKind == ClassKind.CLASS_OBJECT) {
if (classKind.isObject()) {
return Visibilities.PRIVATE;
}
if (classKind == ClassKind.OBJECT) {
return Visibilities.INTERNAL;
}
assert classKind == ClassKind.CLASS || classKind == ClassKind.TRAIT || classKind == ClassKind.ANNOTATION_CLASS;
return Visibilities.PUBLIC;
}
@@ -4,7 +4,7 @@ internal final class test.A : jet.Any {
public final /*constructor*/ fun <init>(): test.A
internal final val B: test.A.B
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
}
}
@@ -1,7 +1,7 @@
namespace test
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 val SomeObject: test.SomeObject
@@ -1,6 +1,6 @@
namespace test
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
@@ -44,7 +44,8 @@ public final class ObjectTest extends SingleFileTranslationTest {
fooBoxTest();
}
public void testObjectInObject() throws Exception {
//TODO: KT-2696
public void TODO_testObjectInObject() throws Exception {
fooBoxTest();
}
@@ -1,17 +1,17 @@
package foo
object A {
val query = object {val status = "complete"}
object query {val status = "complete"}
}
object B {
private val ov = "d"
val query = object {val status = "complete" + ov}
object query {val status = "complete" + ov}
}
class C {
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"