[FIR] Do not process constructors in super-type scopes
This commit is contained in:
+6
-7
@@ -14,10 +14,7 @@ import org.jetbrains.kotlin.fir.declarations.impl.FirValueParameterImpl
|
||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||
import org.jetbrains.kotlin.fir.scopes.FirOverrideChecker
|
||||
import org.jetbrains.kotlin.fir.scopes.FirScope
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassifierSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.*
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
|
||||
abstract class AbstractFirUseSiteMemberScope(
|
||||
@@ -48,9 +45,11 @@ abstract class AbstractFirUseSiteMemberScope(
|
||||
}
|
||||
|
||||
superTypesScope.processFunctionsByName(name) {
|
||||
val overriddenBy = it.getOverridden(overrideCandidates)
|
||||
if (overriddenBy == null) {
|
||||
add(it)
|
||||
if (it !is FirConstructorSymbol) {
|
||||
val overriddenBy = it.getOverridden(overrideCandidates)
|
||||
if (overriddenBy == null) {
|
||||
add(it)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,15 +32,15 @@ import util.HashSet
|
||||
class LinkedHashMap<K, V> : java.util.LinkedHashMap<K, V>()
|
||||
|
||||
fun test_1() {
|
||||
val map = <!AMBIGUITY!>HashMap<!><Int, Int>() // <- should be util.HashMap
|
||||
val map = HashMap<Int, Int>() // <- should be util.HashMap
|
||||
}
|
||||
|
||||
fun test_2() {
|
||||
val set = <!AMBIGUITY!>HashSet<!><Int>() // <- should be util.HashSet
|
||||
val set = HashSet<Int>() // <- should be util.HashSet
|
||||
}
|
||||
|
||||
fun test_3() {
|
||||
val list = <!AMBIGUITY!>ArrayList<!><Int>() // <- should be foo.ArrayList
|
||||
val list = ArrayList<Int>() // <- should be foo.ArrayList
|
||||
}
|
||||
|
||||
fun test_4() {
|
||||
|
||||
@@ -20,13 +20,13 @@ FILE: main.kt
|
||||
|
||||
}
|
||||
public final fun test_1(): R|kotlin/Unit| {
|
||||
lval map: <ERROR TYPE REF: Ambiguity: HashMap, [util/HashMap.HashMap, java/util/HashMap.HashMap]> = <Ambiguity: HashMap, [util/HashMap.HashMap, java/util/HashMap.HashMap]>#<R|kotlin/Int|, R|kotlin/Int|>()
|
||||
lval map: R|util/HashMap<kotlin/Int, kotlin/Int>| = R|util/HashMap.HashMap|<R|kotlin/Int|, R|kotlin/Int|>()
|
||||
}
|
||||
public final fun test_2(): R|kotlin/Unit| {
|
||||
lval set: <ERROR TYPE REF: Ambiguity: HashSet, [util/HashSet.HashSet, java/util/HashSet.HashSet]> = <Ambiguity: HashSet, [util/HashSet.HashSet, java/util/HashSet.HashSet]>#<R|kotlin/Int|>()
|
||||
lval set: R|util/HashSet<kotlin/Int>| = R|util/HashSet.HashSet|<R|kotlin/Int|>()
|
||||
}
|
||||
public final fun test_3(): R|kotlin/Unit| {
|
||||
lval list: <ERROR TYPE REF: Ambiguity: ArrayList, [foo/ArrayList.ArrayList, java/util/ArrayList.ArrayList]> = <Ambiguity: ArrayList, [foo/ArrayList.ArrayList, java/util/ArrayList.ArrayList]>#<R|kotlin/Int|>()
|
||||
lval list: R|foo/ArrayList<kotlin/Int>| = R|foo/ArrayList.ArrayList|<R|kotlin/Int|>()
|
||||
}
|
||||
public final fun test_4(): R|kotlin/Unit| {
|
||||
lval list: R|foo/LinkedList<kotlin/Int>| = R|foo/LinkedList.LinkedList|<R|kotlin/Int|>()
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
// FILE: K1.kt
|
||||
class K2: <!AMBIGUITY!>J1<!>() {
|
||||
class K2: J1() {
|
||||
class Q : Nested()
|
||||
fun bar() {
|
||||
<!UNRESOLVED_REFERENCE!>foo<!>()
|
||||
|
||||
@@ -6,6 +6,6 @@ class J extends K {
|
||||
|
||||
// FILE: K.kt
|
||||
|
||||
class K : <!AMBIGUITY!>J<!>() {
|
||||
class K : J() {
|
||||
fun bar() {}
|
||||
}
|
||||
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
// FILE: I.kt
|
||||
|
||||
open class I : <!AMBIGUITY!>K<!>() {
|
||||
open class I : K() {
|
||||
fun foo() {}
|
||||
}
|
||||
|
||||
@@ -12,6 +12,6 @@ class J extends I {
|
||||
|
||||
// FILE: K.kt
|
||||
|
||||
open class K : <!AMBIGUITY!>J<!>() {
|
||||
open class K : J() {
|
||||
fun baz() {}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user