From e43a57bdeeddbbd20136a4b9b4a735c591902a46 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Wed, 29 Jan 2020 13:24:14 +0300 Subject: [PATCH] [FIR] Do not process constructors in super-type scopes --- .../scopes/impl/AbstractFirUseSiteMemberScope.kt | 13 ++++++------- .../resolve/problems/defaultJavaImportHiding.kt | 6 +++--- .../resolve/problems/defaultJavaImportHiding.txt | 6 +++--- .../stdlib/j+k/KJKComplexHierarchyNestedLoop.kt | 2 +- .../tests/cyclicHierarchy/kotlinJavaCycle.fir.kt | 2 +- .../cyclicHierarchy/kotlinJavaKotlinCycle.fir.kt | 4 ++-- 6 files changed, 16 insertions(+), 17 deletions(-) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/AbstractFirUseSiteMemberScope.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/AbstractFirUseSiteMemberScope.kt index 7f16d67686c..bd4d246b934 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/AbstractFirUseSiteMemberScope.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/AbstractFirUseSiteMemberScope.kt @@ -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) + } } } } diff --git a/compiler/fir/resolve/testData/resolve/problems/defaultJavaImportHiding.kt b/compiler/fir/resolve/testData/resolve/problems/defaultJavaImportHiding.kt index 808996ff9d5..e0bacc6cecd 100644 --- a/compiler/fir/resolve/testData/resolve/problems/defaultJavaImportHiding.kt +++ b/compiler/fir/resolve/testData/resolve/problems/defaultJavaImportHiding.kt @@ -32,15 +32,15 @@ import util.HashSet class LinkedHashMap : java.util.LinkedHashMap() fun test_1() { - val map = HashMap() // <- should be util.HashMap + val map = HashMap() // <- should be util.HashMap } fun test_2() { - val set = HashSet() // <- should be util.HashSet + val set = HashSet() // <- should be util.HashSet } fun test_3() { - val list = ArrayList() // <- should be foo.ArrayList + val list = ArrayList() // <- should be foo.ArrayList } fun test_4() { diff --git a/compiler/fir/resolve/testData/resolve/problems/defaultJavaImportHiding.txt b/compiler/fir/resolve/testData/resolve/problems/defaultJavaImportHiding.txt index 34ed65a533a..72b89777f4b 100644 --- a/compiler/fir/resolve/testData/resolve/problems/defaultJavaImportHiding.txt +++ b/compiler/fir/resolve/testData/resolve/problems/defaultJavaImportHiding.txt @@ -20,13 +20,13 @@ FILE: main.kt } public final fun test_1(): R|kotlin/Unit| { - lval map: = #() + lval map: R|util/HashMap| = R|util/HashMap.HashMap|() } public final fun test_2(): R|kotlin/Unit| { - lval set: = #() + lval set: R|util/HashSet| = R|util/HashSet.HashSet|() } public final fun test_3(): R|kotlin/Unit| { - lval list: = #() + lval list: R|foo/ArrayList| = R|foo/ArrayList.ArrayList|() } public final fun test_4(): R|kotlin/Unit| { lval list: R|foo/LinkedList| = R|foo/LinkedList.LinkedList|() diff --git a/compiler/fir/resolve/testData/resolve/stdlib/j+k/KJKComplexHierarchyNestedLoop.kt b/compiler/fir/resolve/testData/resolve/stdlib/j+k/KJKComplexHierarchyNestedLoop.kt index fd9ac18f6c4..cb863d7ced1 100644 --- a/compiler/fir/resolve/testData/resolve/stdlib/j+k/KJKComplexHierarchyNestedLoop.kt +++ b/compiler/fir/resolve/testData/resolve/stdlib/j+k/KJKComplexHierarchyNestedLoop.kt @@ -1,5 +1,5 @@ // FILE: K1.kt -class K2: J1() { +class K2: J1() { class Q : Nested() fun bar() { foo() diff --git a/compiler/testData/diagnostics/tests/cyclicHierarchy/kotlinJavaCycle.fir.kt b/compiler/testData/diagnostics/tests/cyclicHierarchy/kotlinJavaCycle.fir.kt index e05df739ef9..c362c08bc1e 100644 --- a/compiler/testData/diagnostics/tests/cyclicHierarchy/kotlinJavaCycle.fir.kt +++ b/compiler/testData/diagnostics/tests/cyclicHierarchy/kotlinJavaCycle.fir.kt @@ -6,6 +6,6 @@ class J extends K { // FILE: K.kt -class K : J() { +class K : J() { fun bar() {} } diff --git a/compiler/testData/diagnostics/tests/cyclicHierarchy/kotlinJavaKotlinCycle.fir.kt b/compiler/testData/diagnostics/tests/cyclicHierarchy/kotlinJavaKotlinCycle.fir.kt index c805d4c1799..d4241960250 100644 --- a/compiler/testData/diagnostics/tests/cyclicHierarchy/kotlinJavaKotlinCycle.fir.kt +++ b/compiler/testData/diagnostics/tests/cyclicHierarchy/kotlinJavaKotlinCycle.fir.kt @@ -1,6 +1,6 @@ // FILE: I.kt -open class I : K() { +open class I : K() { fun foo() {} } @@ -12,6 +12,6 @@ class J extends I { // FILE: K.kt -open class K : J() { +open class K : J() { fun baz() {} }