FIR checker: report unresolved reference in imports
Compared to FE1.0, instead of using UNRESOLVED_REFERENCE, a new UNRESOLVED_IMPORT diagnostic is introduced. This is so that we can use a different positioning strategy to highlight the last part of the import if the entire import is passed. Also, this change fixed some incorrectly rejected imports in FIR. Such cases are covered the newly added test file staticFunAndPropertyImport.kt
This commit is contained in:
committed by
teamcityserver
parent
f51b108821
commit
18f7a760bb
Vendored
+45
@@ -0,0 +1,45 @@
|
||||
// FIR_IDENTICAL
|
||||
// !DIAGNOSTICS: -UNUSED_VARIABLE
|
||||
// FILE: A.java
|
||||
public class A {
|
||||
static void foo() {}
|
||||
int foo;
|
||||
|
||||
static void foo2() {}
|
||||
int foo2;
|
||||
|
||||
static int bar;
|
||||
int bar() {return 1;}
|
||||
|
||||
static int bar2;
|
||||
int bar2() {return 1;}
|
||||
|
||||
static class quux {}
|
||||
void quux() {}
|
||||
int quux;
|
||||
|
||||
static class quux2 {}
|
||||
void quux2() {}
|
||||
int quux2;
|
||||
|
||||
static void baz() {}
|
||||
}
|
||||
|
||||
// FILE: B.java
|
||||
public class B extends A {
|
||||
void baz(int i) {}
|
||||
}
|
||||
|
||||
|
||||
// FILE: 1.kt
|
||||
// Below should be all good because there is always a static function, property, or class with the requested name.
|
||||
import A.foo
|
||||
import A.bar
|
||||
import A.quux
|
||||
import B.foo2
|
||||
import B.bar2
|
||||
import A.baz
|
||||
import B.baz
|
||||
|
||||
// class cannot be imported by subclass
|
||||
import B.<!CANNOT_BE_IMPORTED!>quux2<!>
|
||||
Vendored
+61
@@ -0,0 +1,61 @@
|
||||
package
|
||||
|
||||
public open class A {
|
||||
public constructor A()
|
||||
public/*package*/ final var foo: kotlin.Int
|
||||
public/*package*/ final var foo2: kotlin.Int
|
||||
public/*package*/ final var quux: kotlin.Int
|
||||
public/*package*/ final var quux2: kotlin.Int
|
||||
public/*package*/ open fun bar(): kotlin.Int
|
||||
public/*package*/ open fun bar2(): kotlin.Int
|
||||
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/*package*/ open fun quux(): kotlin.Unit
|
||||
public/*package*/ open fun quux2(): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
|
||||
public/*package*/ open class quux {
|
||||
public/*package*/ constructor quux()
|
||||
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/*package*/ open class quux2 {
|
||||
public/*package*/ constructor quux2()
|
||||
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
|
||||
}
|
||||
|
||||
// Static members
|
||||
public/*package*/ final var bar: kotlin.Int
|
||||
public/*package*/ final var bar2: kotlin.Int
|
||||
public/*package*/ open fun baz(): kotlin.Unit
|
||||
public/*package*/ open fun foo(): kotlin.Unit
|
||||
public/*package*/ open fun foo2(): kotlin.Unit
|
||||
}
|
||||
|
||||
public open class B : A {
|
||||
public constructor B()
|
||||
public/*package*/ final override /*1*/ /*fake_override*/ var foo: kotlin.Int
|
||||
public/*package*/ final override /*1*/ /*fake_override*/ var foo2: kotlin.Int
|
||||
public/*package*/ final override /*1*/ /*fake_override*/ var quux: kotlin.Int
|
||||
public/*package*/ final override /*1*/ /*fake_override*/ var quux2: kotlin.Int
|
||||
public/*package*/ open override /*1*/ /*fake_override*/ fun bar(): kotlin.Int
|
||||
public/*package*/ open override /*1*/ /*fake_override*/ fun bar2(): kotlin.Int
|
||||
public/*package*/ open fun baz(/*0*/ i: kotlin.Int): kotlin.Unit
|
||||
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/*package*/ open override /*1*/ /*fake_override*/ fun quux(): kotlin.Unit
|
||||
public/*package*/ open override /*1*/ /*fake_override*/ fun quux2(): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
|
||||
// Static members
|
||||
public/*package*/ final override /*1*/ /*fake_override*/ var bar: kotlin.Int
|
||||
public/*package*/ final override /*1*/ /*fake_override*/ var bar2: kotlin.Int
|
||||
public/*package*/ open override /*1*/ /*fake_override*/ fun baz(): kotlin.Unit
|
||||
public/*package*/ open override /*1*/ /*fake_override*/ fun foo(): kotlin.Unit
|
||||
public/*package*/ open override /*1*/ /*fake_override*/ fun foo2(): kotlin.Unit
|
||||
}
|
||||
|
||||
+4
@@ -4,6 +4,8 @@
|
||||
public class A {
|
||||
static void foo() {}
|
||||
static int bar() {return 1;}
|
||||
void nonStatic1() {}
|
||||
void nonStatic2() {}
|
||||
}
|
||||
|
||||
// FILE: B.java
|
||||
@@ -17,6 +19,8 @@ public class C {
|
||||
// FILE: 1.kt
|
||||
import A.foo
|
||||
import B.bar
|
||||
import A.<!CANNOT_BE_IMPORTED!>nonStatic1<!>
|
||||
import B.<!CANNOT_BE_IMPORTED!>nonStatic2<!>
|
||||
|
||||
class E: A() {
|
||||
init {
|
||||
|
||||
+13
@@ -4,6 +4,8 @@ public open class A {
|
||||
public constructor A()
|
||||
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/*package*/ open fun nonStatic1(): kotlin.Unit
|
||||
public/*package*/ open fun nonStatic2(): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
|
||||
// Static members
|
||||
@@ -15,6 +17,8 @@ public open class B : A {
|
||||
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/*package*/ open override /*1*/ /*fake_override*/ fun nonStatic1(): kotlin.Unit
|
||||
public/*package*/ open override /*1*/ /*fake_override*/ fun nonStatic2(): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
|
||||
// Static members
|
||||
@@ -36,6 +40,8 @@ public final class E : A {
|
||||
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/*package*/ open override /*1*/ /*fake_override*/ fun nonStatic1(): kotlin.Unit
|
||||
public/*package*/ open override /*1*/ /*fake_override*/ fun nonStatic2(): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
@@ -43,6 +49,8 @@ public final class F : B {
|
||||
public constructor F()
|
||||
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/*package*/ open override /*1*/ /*fake_override*/ fun nonStatic1(): kotlin.Unit
|
||||
public/*package*/ open override /*1*/ /*fake_override*/ fun nonStatic2(): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
@@ -50,6 +58,8 @@ public final class Q : A {
|
||||
public constructor Q()
|
||||
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/*package*/ open override /*1*/ /*fake_override*/ fun nonStatic1(): kotlin.Unit
|
||||
public/*package*/ open override /*1*/ /*fake_override*/ fun nonStatic2(): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
@@ -57,5 +67,8 @@ public final class Z : A {
|
||||
public constructor Z()
|
||||
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/*package*/ open override /*1*/ /*fake_override*/ fun nonStatic1(): kotlin.Unit
|
||||
public/*package*/ open override /*1*/ /*fake_override*/ fun nonStatic2(): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user