Move ClassifierUsageChecker invocation lower in LazyTopDownAnalyzer

Invoking checkers right after resolution of qualified expressions is too early:
DeprecatedClassifierUsageChecker tries to load the annotations of a referenced
classifier to report deprecation, and that may result in building light classes
for not yet analyzed declarations

 #KT-13954 Fixed
This commit is contained in:
Alexander Udalov
2016-09-22 20:19:00 +03:00
parent 35839695f7
commit dca99c3fd2
11 changed files with 166 additions and 31 deletions
@@ -0,0 +1,26 @@
// FILE: foo/A.kt
package foo
class A(val c: C)
// FILE: foo/B.kt
package foo
class B {
interface D {
fun foo(): E
}
class E
}
// FILE: foo/C.java
package foo;
import static foo.B.D.*;
@SuppressWarnings("RedundantTypeArguments")
public class C {}
@@ -0,0 +1,40 @@
package
package foo {
public final class A {
public constructor A(/*0*/ c: foo.C)
public final val c: foo.C
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 toString(): kotlin.String
}
public final class B {
public constructor B()
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 toString(): kotlin.String
public interface D {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public abstract fun foo(): foo.B.E
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public final class E {
public constructor E()
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 toString(): kotlin.String
}
}
@java.lang.SuppressWarnings(value = "RedundantTypeArguments") public open class C {
public constructor C()
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 toString(): kotlin.String
}
}