Transform anonymous types even for public symbols

This became necessary when we removed the requirement to specify types for
public members, because otherwise everything fails not being able to locate the
anonymous class from another module

 #KT-9072 Fixed
 EA-72801
This commit is contained in:
Alexander Udalov
2015-09-11 16:43:31 +03:00
parent 6cecc66d10
commit 085fc3bf87
30 changed files with 85 additions and 65 deletions
@@ -26,6 +26,7 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import org.jetbrains.kotlin.builtins.KotlinBuiltIns; import org.jetbrains.kotlin.builtins.KotlinBuiltIns;
import org.jetbrains.kotlin.descriptors.*; import org.jetbrains.kotlin.descriptors.*;
import org.jetbrains.kotlin.descriptors.annotations.AnnotationSplitter;
import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget; import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget;
import org.jetbrains.kotlin.descriptors.annotations.Annotations; import org.jetbrains.kotlin.descriptors.annotations.Annotations;
import org.jetbrains.kotlin.descriptors.annotations.CompositeAnnotations; import org.jetbrains.kotlin.descriptors.annotations.CompositeAnnotations;
@@ -42,12 +43,14 @@ import org.jetbrains.kotlin.resolve.constants.ConstantValue;
import org.jetbrains.kotlin.resolve.constants.evaluate.ConstantExpressionEvaluator; import org.jetbrains.kotlin.resolve.constants.evaluate.ConstantExpressionEvaluator;
import org.jetbrains.kotlin.resolve.dataClassUtils.DataClassUtilsPackage; import org.jetbrains.kotlin.resolve.dataClassUtils.DataClassUtilsPackage;
import org.jetbrains.kotlin.resolve.lazy.ForceResolveUtil; import org.jetbrains.kotlin.resolve.lazy.ForceResolveUtil;
import org.jetbrains.kotlin.resolve.scopes.*; import org.jetbrains.kotlin.resolve.scopes.JetScopeUtils;
import org.jetbrains.kotlin.resolve.scopes.LexicalScope;
import org.jetbrains.kotlin.resolve.scopes.LexicalWritableScope;
import org.jetbrains.kotlin.resolve.scopes.WritableScope;
import org.jetbrains.kotlin.storage.StorageManager; import org.jetbrains.kotlin.storage.StorageManager;
import org.jetbrains.kotlin.types.*; import org.jetbrains.kotlin.types.*;
import org.jetbrains.kotlin.types.checker.JetTypeChecker; import org.jetbrains.kotlin.types.checker.JetTypeChecker;
import org.jetbrains.kotlin.types.expressions.ExpressionTypingServices; import org.jetbrains.kotlin.types.expressions.ExpressionTypingServices;
import org.jetbrains.kotlin.descriptors.annotations.AnnotationSplitter;
import java.util.*; import java.util.*;
@@ -930,25 +933,21 @@ public class DescriptorResolver {
@NotNull JetType type, @NotNull JetType type,
@NotNull BindingTrace trace @NotNull BindingTrace trace
) { ) {
ClassifierDescriptor classifierDescriptor = type.getConstructor().getDeclarationDescriptor(); ClassifierDescriptor classifier = type.getConstructor().getDeclarationDescriptor();
if (classifierDescriptor == null || !DescriptorUtils.isAnonymousObject(classifierDescriptor)) { if (classifier == null || !DescriptorUtils.isAnonymousObject(classifier) || DescriptorUtils.isLocal(descriptor)) {
return type; return type;
} }
boolean definedInClass = DescriptorUtils.getParentOfType(descriptor, ClassDescriptor.class) != null; boolean definedInClass = DescriptorUtils.getParentOfType(descriptor, ClassDescriptor.class) != null;
boolean isLocal = DescriptorUtils.isLocal(descriptor); if (!definedInClass || !Visibilities.isPrivate(descriptor.getVisibility())) {
Visibility visibility = descriptor.getVisibility();
boolean transformNeeded = !isLocal && !visibility.getIsPublicAPI()
&& !(definedInClass && Visibilities.isPrivate(visibility));
if (transformNeeded) {
if (type.getConstructor().getSupertypes().size() == 1) { if (type.getConstructor().getSupertypes().size() == 1) {
assert type.getArguments().isEmpty() : "Object expression couldn't have any type parameters!";
return type.getConstructor().getSupertypes().iterator().next(); return type.getConstructor().getSupertypes().iterator().next();
} }
else { else {
trace.report(AMBIGUOUS_ANONYMOUS_TYPE_INFERRED.on(declaration, type.getConstructor().getSupertypes())); trace.report(AMBIGUOUS_ANONYMOUS_TYPE_INFERRED.on(declaration, type.getConstructor().getSupertypes()));
} }
} }
return type; return type;
} }
@@ -0,0 +1,9 @@
package pkg
interface ClassA {
companion object {
val DEFAULT = object : ClassA {
override fun toString() = "OK"
}
}
}
@@ -0,0 +1,6 @@
import pkg.ClassA
fun main(args: Array<String>) {
val obj = ClassA.DEFAULT
obj.toString()
}
@@ -1,6 +1,6 @@
package package
public val x: x.<no name provided> public val x: kotlin.Any
public object A1 { public object A1 {
private constructor A1() private constructor A1()
@@ -1,6 +1,6 @@
package package
public val a: a.<no name provided> public val a: T
kotlin.annotation.annotation() public final class Ann : C { kotlin.annotation.annotation() public final class Ann : C {
public constructor Ann() public constructor Ann()
@@ -5,7 +5,7 @@ package kt462 {
public final class T { public final class T {
public constructor T() public constructor T()
public final val a: kt462.T.a.<no name provided> public final val a: kotlin.Any
public final var r: kotlin.Int public final var r: kotlin.Int
public final var x: kotlin.Int public final var x: kotlin.Int
public final val z: kotlin.Int public final val z: kotlin.Int
@@ -1,6 +1,6 @@
package package
public val m: m.<no name provided> public val m: X
public interface X { public interface X {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
@@ -1,7 +1,7 @@
package package
package kt1191 { package kt1191 {
public fun foo(/*0*/ unused: kotlin.Int): kt1191.foo.<no name provided> public fun foo(/*0*/ unused: kotlin.Int): kotlin.Any
public fun </*0*/ T> kt1191.FunctionalList<T>.plus(/*0*/ element: T): kt1191.FunctionalList<T> public fun </*0*/ T> kt1191.FunctionalList<T>.plus(/*0*/ element: T): kt1191.FunctionalList<T>
public interface FunctionalList</*0*/ T> { public interface FunctionalList</*0*/ T> {
@@ -3,7 +3,7 @@ package
package b { package b {
public var f: () -> kotlin.Unit public var f: () -> kotlin.Unit
public val g: () -> kotlin.Int public val g: () -> kotlin.Int
public val o: b.o.<no name provided> public val o: kotlin.Any
public val p: b.P public val p: b.P
public fun doSmth(/*0*/ i: kotlin.Int): kotlin.Int public fun doSmth(/*0*/ i: kotlin.Int): kotlin.Int
@@ -1,6 +1,6 @@
package package
public val m: m.<no name provided> public val m: X
public fun box(): kotlin.Unit public fun box(): kotlin.Unit
public interface X { public interface X {
@@ -16,13 +16,13 @@ class Foo {
privateProperty.f2() privateProperty.f2()
} }
protected val protectedProperty = object : MyClass(), MyTrait {} <!AMBIGUOUS_ANONYMOUS_TYPE_INFERRED!>protected val protectedProperty<!> = object : MyClass(), MyTrait {}
val internalProperty = object : MyClass(), MyTrait {} <!AMBIGUOUS_ANONYMOUS_TYPE_INFERRED!>val internalProperty<!> = object : MyClass(), MyTrait {}
<!AMBIGUOUS_ANONYMOUS_TYPE_INFERRED!>internal val internal2Property<!> = object : MyClass(), MyTrait {} <!AMBIGUOUS_ANONYMOUS_TYPE_INFERRED!>internal val internal2Property<!> = object : MyClass(), MyTrait {}
public val publicProperty = object : MyClass(), MyTrait {} <!AMBIGUOUS_ANONYMOUS_TYPE_INFERRED!>public val publicProperty<!> = object : MyClass(), MyTrait {}
private fun privateFunction() = object : MyClass(), MyTrait {} private fun privateFunction() = object : MyClass(), MyTrait {}
@@ -32,13 +32,13 @@ class Foo {
privateFunction().f2() privateFunction().f2()
} }
protected fun protectedFunction() = object : MyClass(), MyTrait {} <!AMBIGUOUS_ANONYMOUS_TYPE_INFERRED!>protected fun protectedFunction()<!> = object : MyClass(), MyTrait {}
fun internalFunction() = object : MyClass(), MyTrait {} <!AMBIGUOUS_ANONYMOUS_TYPE_INFERRED!>fun internalFunction()<!> = object : MyClass(), MyTrait {}
<!AMBIGUOUS_ANONYMOUS_TYPE_INFERRED!>internal fun internal2Function()<!> = object : MyClass(), MyTrait {} <!AMBIGUOUS_ANONYMOUS_TYPE_INFERRED!>internal fun internal2Function()<!> = object : MyClass(), MyTrait {}
public fun publicFunction() = object : MyClass(), MyTrait {} <!AMBIGUOUS_ANONYMOUS_TYPE_INFERRED!>public fun publicFunction()<!> = object : MyClass(), MyTrait {}
@@ -50,13 +50,13 @@ class Foo {
privatePropertyInner.f2() privatePropertyInner.f2()
} }
protected val protectedProperty = object : MyClass(), MyTrait {} <!AMBIGUOUS_ANONYMOUS_TYPE_INFERRED!>protected val protectedProperty<!> = object : MyClass(), MyTrait {}
val internalProperty = object : MyClass(), MyTrait {} <!AMBIGUOUS_ANONYMOUS_TYPE_INFERRED!>val internalProperty<!> = object : MyClass(), MyTrait {}
<!AMBIGUOUS_ANONYMOUS_TYPE_INFERRED!>internal val internal2Property<!> = object : MyClass(), MyTrait {} <!AMBIGUOUS_ANONYMOUS_TYPE_INFERRED!>internal val internal2Property<!> = object : MyClass(), MyTrait {}
public val publicProperty = object : MyClass(), MyTrait {} <!AMBIGUOUS_ANONYMOUS_TYPE_INFERRED!>public val publicProperty<!> = object : MyClass(), MyTrait {}
private fun privateFunctionInner() = object : MyClass(), MyTrait {} private fun privateFunctionInner() = object : MyClass(), MyTrait {}
@@ -66,13 +66,13 @@ class Foo {
privateFunctionInner().f2() privateFunctionInner().f2()
} }
protected fun protectedFunction() = object : MyClass(), MyTrait {} <!AMBIGUOUS_ANONYMOUS_TYPE_INFERRED!>protected fun protectedFunction()<!> = object : MyClass(), MyTrait {}
fun internalFunction() = object : MyClass(), MyTrait {} <!AMBIGUOUS_ANONYMOUS_TYPE_INFERRED!>fun internalFunction()<!> = object : MyClass(), MyTrait {}
<!AMBIGUOUS_ANONYMOUS_TYPE_INFERRED!>internal fun internal2Function()<!> = object : MyClass(), MyTrait {} <!AMBIGUOUS_ANONYMOUS_TYPE_INFERRED!>internal fun internal2Function()<!> = object : MyClass(), MyTrait {}
public fun publicFunction() = object : MyClass(), MyTrait {} <!AMBIGUOUS_ANONYMOUS_TYPE_INFERRED!>public fun publicFunction()<!> = object : MyClass(), MyTrait {}
} }
@@ -90,21 +90,21 @@ class Foo {
<!AMBIGUOUS_ANONYMOUS_TYPE_INFERRED!>private val packagePrivateProperty<!> = object : MyClass(), MyTrait {} <!AMBIGUOUS_ANONYMOUS_TYPE_INFERRED!>private val packagePrivateProperty<!> = object : MyClass(), MyTrait {}
<!WRONG_MODIFIER_TARGET!>protected<!> val packageProtectedProperty = object : MyClass(), MyTrait {} <!AMBIGUOUS_ANONYMOUS_TYPE_INFERRED!><!WRONG_MODIFIER_TARGET!>protected<!> val packageProtectedProperty<!> = object : MyClass(), MyTrait {}
val packageInternalProperty = object : MyClass(), MyTrait {} <!AMBIGUOUS_ANONYMOUS_TYPE_INFERRED!>val packageInternalProperty<!> = object : MyClass(), MyTrait {}
<!AMBIGUOUS_ANONYMOUS_TYPE_INFERRED!>internal val packageInternal2Property<!> = object : MyClass(), MyTrait {} <!AMBIGUOUS_ANONYMOUS_TYPE_INFERRED!>internal val packageInternal2Property<!> = object : MyClass(), MyTrait {}
public val packagePublicProperty = object : MyClass(), MyTrait {} <!AMBIGUOUS_ANONYMOUS_TYPE_INFERRED!>public val packagePublicProperty<!> = object : MyClass(), MyTrait {}
<!WRONG_MODIFIER_TARGET!>protected<!> fun packageProtectedFunction() = object : MyClass(), MyTrait {} <!AMBIGUOUS_ANONYMOUS_TYPE_INFERRED!><!WRONG_MODIFIER_TARGET!>protected<!> fun packageProtectedFunction()<!> = object : MyClass(), MyTrait {}
fun packageInternalFunction() = object : MyClass(), MyTrait {} <!AMBIGUOUS_ANONYMOUS_TYPE_INFERRED!>fun packageInternalFunction()<!> = object : MyClass(), MyTrait {}
<!AMBIGUOUS_ANONYMOUS_TYPE_INFERRED!>internal fun packageInternal2Function()<!> = object : MyClass(), MyTrait {} <!AMBIGUOUS_ANONYMOUS_TYPE_INFERRED!>internal fun packageInternal2Function()<!> = object : MyClass(), MyTrait {}
public fun packagePublicFunction() = object : MyClass(), MyTrait {} <!AMBIGUOUS_ANONYMOUS_TYPE_INFERRED!>public fun packagePublicFunction()<!> = object : MyClass(), MyTrait {}
fun fooPackage() { fun fooPackage() {
val packageLocalVar = object : MyClass(), MyTrait {} val packageLocalVar = object : MyClass(), MyTrait {}
@@ -2,15 +2,15 @@ package
internal val packageInternalProperty: MyClass internal val packageInternalProperty: MyClass
private val packagePrivateProperty: MyClass private val packagePrivateProperty: MyClass
protected val packageProtectedProperty: packageProtectedProperty.<no name provided> protected val packageProtectedProperty: MyClass
public val packagePublic2Property: MyClass public val packagePublic2Property: MyClass
public val packagePublicProperty: packagePublicProperty.<no name provided> public val packagePublicProperty: MyClass
public fun fooPackage(): kotlin.Unit public fun fooPackage(): kotlin.Unit
internal fun internalFunction(): MyClass internal fun internalFunction(): MyClass
private fun privateFunction(): MyClass private fun privateFunction(): MyClass
protected fun protectedFunction(): protectedFunction.<no name provided> protected fun protectedFunction(): MyClass
public fun public2Function(): MyClass public fun public2Function(): MyClass
public fun publicFunction(): publicFunction.<no name provided> public fun publicFunction(): MyClass
public fun testFunctions(): kotlin.Unit public fun testFunctions(): kotlin.Unit
public fun testProperties(): kotlin.Unit public fun testProperties(): kotlin.Unit
@@ -19,18 +19,18 @@ public final class Foo {
internal final val internalProperty: MyClass internal final val internalProperty: MyClass
private final val privateProperty: Foo.privateProperty.<no name provided> private final val privateProperty: Foo.privateProperty.<no name provided>
protected final val protected2Property: MyClass protected final val protected2Property: MyClass
protected final val protectedProperty: Foo.protectedProperty.<no name provided> protected final val protectedProperty: MyClass
public final val public2Property: MyClass public final val public2Property: MyClass
public final val publicProperty: Foo.publicProperty.<no name provided> public final val publicProperty: MyClass
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final fun foo(): kotlin.Unit public final fun foo(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
internal final fun internalFunction(): MyClass internal final fun internalFunction(): MyClass
private final fun privateFunction(): Foo.privateFunction.<no name provided> private final fun privateFunction(): Foo.privateFunction.<no name provided>
protected final fun protected2Function(): MyClass protected final fun protected2Function(): MyClass
protected final fun protectedFunction(): Foo.protectedFunction.<no name provided> protected final fun protectedFunction(): MyClass
public final fun public2Function(): MyClass public final fun public2Function(): MyClass
public final fun publicFunction(): Foo.publicFunction.<no name provided> public final fun publicFunction(): MyClass
public final fun testFunctions(): kotlin.Unit public final fun testFunctions(): kotlin.Unit
public final fun testProperties(): kotlin.Unit public final fun testProperties(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
@@ -40,17 +40,17 @@ public final class Foo {
internal final val internalProperty: MyClass internal final val internalProperty: MyClass
private final val privateProperty: Foo.FooInner.privateProperty.<no name provided> private final val privateProperty: Foo.FooInner.privateProperty.<no name provided>
protected final val protected2Property: MyClass protected final val protected2Property: MyClass
protected final val protectedProperty: Foo.FooInner.protectedProperty.<no name provided> protected final val protectedProperty: MyClass
public final val public2Property: MyClass public final val public2Property: MyClass
public final val publicProperty: Foo.FooInner.publicProperty.<no name provided> public final val publicProperty: MyClass
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
internal final fun internalFunction(): MyClass internal final fun internalFunction(): MyClass
private final fun privateFunction(): Foo.FooInner.privateFunction.<no name provided> private final fun privateFunction(): Foo.FooInner.privateFunction.<no name provided>
protected final fun protected2Function(): MyClass protected final fun protected2Function(): MyClass
protected final fun protectedFunction(): Foo.FooInner.protectedFunction.<no name provided> protected final fun protectedFunction(): MyClass
public final fun public2Function(): MyClass public final fun public2Function(): MyClass
public final fun publicFunction(): Foo.FooInner.publicFunction.<no name provided> public final fun publicFunction(): MyClass
public final fun testFunctions(): kotlin.Unit public final fun testFunctions(): kotlin.Unit
public final fun testProperties(): kotlin.Unit public final fun testProperties(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
@@ -1,3 +1,3 @@
package package
public fun foo(): foo.<no name provided> public fun foo(): kotlin.Any
@@ -2,7 +2,7 @@ package
public final class Outer { public final class Outer {
public constructor Outer() public constructor Outer()
public final val x: Outer.x.<no name provided> public final val x: kotlin.Any
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
@@ -1,8 +1,8 @@
package package
public fun main(/*0*/ args: kotlin.Array<kotlin.String>): kotlin.Unit public fun main(/*0*/ args: kotlin.Array<kotlin.String>): kotlin.Unit
public fun </*0*/ T : kotlin.Any> T?.iterator(): iterator.<no name provided> public fun </*0*/ T : kotlin.Any> T?.iterator(): MyIterator<T>
public fun </*0*/ T> java.util.Enumeration<T>.iterator(): iterator.<no name provided> public fun </*0*/ T> java.util.Enumeration<T>.iterator(): kotlin.Iterator<T>
public interface MyIterator</*0*/ T> { public interface MyIterator</*0*/ T> {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
@@ -1,4 +1,4 @@
package package
public fun a(/*0*/ e: java.util.Enumeration<kotlin.Int>): kotlin.Unit public fun a(/*0*/ e: java.util.Enumeration<kotlin.Int>): kotlin.Unit
public fun </*0*/ T> java.util.Enumeration<T>.iterator(): iterator.<no name provided> public fun </*0*/ T> java.util.Enumeration<T>.iterator(): kotlin.Iterator<T>
@@ -1,6 +1,6 @@
package package
public val R: R.<no name provided> public val R: kotlin.Any
public val prop: kotlin.Int = 42 public val prop: kotlin.Int = 42
public fun foo(): kotlin.Unit public fun foo(): kotlin.Unit
@@ -17,7 +17,7 @@ public final class Test {
public companion object Companion : Test.InnerClass { public companion object Companion : Test.InnerClass {
private constructor Companion() private constructor Companion()
public final val a: Test.Companion.a.<no name provided> public final val a: Test.InnerClass
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public final fun more(): Test.InnerClass public final fun more(): Test.InnerClass
@@ -24,7 +24,7 @@ public final class Test {
public object Some : Test.InnerClass { public object Some : Test.InnerClass {
private constructor Some() private constructor Some()
public final val a: Test.Some.a.<no name provided> public final val a: Test.InnerClass
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public final fun more(): Test.InnerClass public final fun more(): Test.InnerClass
+1 -1
View File
@@ -1,3 +1,3 @@
package package
public val oo: oo.<no name provided> public val oo: kotlin.Any
+1 -1
View File
@@ -2,7 +2,7 @@ package
package toplevelObjectDeclarations { package toplevelObjectDeclarations {
public val x: kotlin.Int public val x: kotlin.Int
public val y: toplevelObjectDeclarations.y.<no name provided> public val y: toplevelObjectDeclarations.Foo
public val z: kotlin.Int public val z: kotlin.Int
public object A : toplevelObjectDeclarations.Foo { public object A : toplevelObjectDeclarations.Foo {
+1 -1
View File
@@ -1,7 +1,7 @@
package package
package a { package a {
public val o: a.o.<no name provided> public val o: kotlin.Any
public fun </*0*/ T> a.A.foo(/*0*/ f: T): kotlin.Unit public fun </*0*/ T> a.A.foo(/*0*/ f: T): kotlin.Unit
public final class A { public final class A {
@@ -1,6 +1,6 @@
package package
public val anonObject: anonObject.<no name provided> public val anonObject: kotlin.Any
public object A { public object A {
private constructor A() private constructor A()
@@ -8,7 +8,7 @@ kotlin.js.native() public final class A {
public final class B { public final class B {
public constructor B() public constructor B()
public final val anonymous: A.B.anonymous.<no name provided> public final val anonymous: kotlin.Any
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
@@ -8,7 +8,7 @@ public final class A {
public final class B { public final class B {
public constructor B() public constructor B()
public final val anonymous: A.B.anonymous.<no name provided> public final val anonymous: kotlin.Any
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
@@ -8,7 +8,7 @@ kotlin.js.native() public final class A {
public final class B { public final class B {
public constructor B() public constructor B()
public final val anonymous: A.B.anonymous.<no name provided> public final val anonymous: kotlin.Any
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
@@ -8,7 +8,7 @@ public final class A {
public final class B { public final class B {
public constructor B() public constructor B()
public final val anonymous: A.B.anonymous.<no name provided> public final val anonymous: kotlin.Any
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
@@ -8,7 +8,7 @@ kotlin.js.native() public final class A {
public final class B { public final class B {
public constructor B() public constructor B()
public final val anonymous: A.B.anonymous.<no name provided> public final val anonymous: kotlin.Any
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
@@ -8,7 +8,7 @@ public final class A {
public final class B { public final class B {
public constructor B() public constructor B()
public final val anonymous: A.B.anonymous.<no name provided> public final val anonymous: kotlin.Any
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
@@ -167,6 +167,12 @@ public class CompileKotlinAgainstKotlinTestGenerated extends AbstractCompileKotl
doTest(fileName); doTest(fileName);
} }
@TestMetadata("SimpleValAnonymousObject.A.kt")
public void testSimpleValAnonymousObject() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/SimpleValAnonymousObject.A.kt");
doTest(fileName);
}
@TestMetadata("StarImportEnum.A.kt") @TestMetadata("StarImportEnum.A.kt")
public void testStarImportEnum() throws Exception { public void testStarImportEnum() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/StarImportEnum.A.kt"); String fileName = JetTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/StarImportEnum.A.kt");