From 87a7408ddfa793133d6f68d8f048338afc847eb1 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Mon, 14 Mar 2022 15:20:16 +0300 Subject: [PATCH] FIR: handle double-imported qualifiers properly --- .../tree/src/org/jetbrains/kotlin/fir/scopes/FirScope.kt | 2 +- .../testData/diagnostics/tests/imports/DoubleImports.kt | 6 +++++- .../testData/diagnostics/tests/imports/DoubleImports.txt | 8 ++++++++ 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/scopes/FirScope.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/scopes/FirScope.kt index c534e9778bd..4c70379b8c6 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/scopes/FirScope.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/scopes/FirScope.kt @@ -38,7 +38,7 @@ abstract class FirScope { open val scopeOwnerLookupNames: List get() = emptyList() } -fun FirScope.getSingleClassifier(name: Name): FirClassifierSymbol<*>? = mutableListOf>().apply { +fun FirScope.getSingleClassifier(name: Name): FirClassifierSymbol<*>? = mutableSetOf>().apply { processClassifiersByName(name, this::add) }.singleOrNull() diff --git a/compiler/testData/diagnostics/tests/imports/DoubleImports.kt b/compiler/testData/diagnostics/tests/imports/DoubleImports.kt index 2213c1f30fa..08d7d5a81f8 100644 --- a/compiler/testData/diagnostics/tests/imports/DoubleImports.kt +++ b/compiler/testData/diagnostics/tests/imports/DoubleImports.kt @@ -3,7 +3,9 @@ package star -class SomeClass +class SomeClass { + class Nested +} fun foo() {} @@ -32,6 +34,8 @@ import explicit.gau fun useSomeClass(): SomeClass = SomeClass() +fun useNested(): SomeClass.Nested = SomeClass.Nested() + fun useAnotherClass(): AnotherClass = AnotherClass() fun test() { diff --git a/compiler/testData/diagnostics/tests/imports/DoubleImports.txt b/compiler/testData/diagnostics/tests/imports/DoubleImports.txt index eff3997be26..cce37543d7e 100644 --- a/compiler/testData/diagnostics/tests/imports/DoubleImports.txt +++ b/compiler/testData/diagnostics/tests/imports/DoubleImports.txt @@ -2,6 +2,7 @@ package public fun test(): kotlin.Unit public fun useAnotherClass(): explicit.AnotherClass +public fun useNested(): star.SomeClass.Nested public fun useSomeClass(): star.SomeClass package explicit { @@ -25,5 +26,12 @@ package star { 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 Nested { + public constructor Nested() + 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 + } } }