[FIR] Fix disappeared CANNOT_ALL_UNDER_IMPORT_FROM_SINGLETON
^KT-59965 Fixed
This commit is contained in:
committed by
Space Team
parent
f3bc8677c5
commit
3894e719b3
+14
-1
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.fir.analysis.checkers.declaration
|
||||
import org.jetbrains.kotlin.KtFakeSourceElement
|
||||
import org.jetbrains.kotlin.KtFakeSourceElementKind
|
||||
import org.jetbrains.kotlin.descriptors.Visibilities
|
||||
import org.jetbrains.kotlin.descriptors.isObject
|
||||
import org.jetbrains.kotlin.diagnostics.DiagnosticReporter
|
||||
import org.jetbrains.kotlin.diagnostics.reportOn
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
|
||||
@@ -41,7 +42,9 @@ object FirImportsChecker : FirFileChecker() {
|
||||
declaration.imports.forEach { import ->
|
||||
if (import is FirErrorImport) return@forEach
|
||||
if (import.isAllUnder) {
|
||||
if (import !is FirResolvedImport) {
|
||||
if (import is FirResolvedImport) {
|
||||
checkAllUnderFromObject(import, context, reporter)
|
||||
} else {
|
||||
checkAllUnderFromEnumEntry(import, context, reporter)
|
||||
}
|
||||
} else {
|
||||
@@ -65,6 +68,16 @@ object FirImportsChecker : FirFileChecker() {
|
||||
}
|
||||
}
|
||||
|
||||
private fun checkAllUnderFromObject(import: FirImport, context: CheckerContext, reporter: DiagnosticReporter) {
|
||||
val fqName = import.importedFqName ?: return
|
||||
if (fqName.isRoot) return
|
||||
val classId = ClassId.topLevel(fqName)
|
||||
val classSymbol = classId.resolveToClass(context) ?: return
|
||||
if (classSymbol.classKind.isObject) {
|
||||
reporter.reportOn(import.source, FirErrors.CANNOT_ALL_UNDER_IMPORT_FROM_SINGLETON, classSymbol.classId.shortClassName, context)
|
||||
}
|
||||
}
|
||||
|
||||
private fun checkCanBeImported(import: FirImport, context: CheckerContext, reporter: DiagnosticReporter) {
|
||||
val importedFqName = import.importedFqName ?: return
|
||||
val importedName = importedFqName.shortName()
|
||||
|
||||
@@ -1,28 +0,0 @@
|
||||
// FILE: foo.kt
|
||||
|
||||
package test
|
||||
|
||||
typealias ClassAlias = ClassSample
|
||||
typealias ObjectAlias = ObjectSample
|
||||
typealias EnumAlias = EnumSample
|
||||
|
||||
class ClassSample
|
||||
|
||||
object ObjectSample
|
||||
|
||||
enum class EnumSample {
|
||||
Entry;
|
||||
}
|
||||
|
||||
// FILE: bar.kt
|
||||
|
||||
import test.ClassAlias.*
|
||||
import test.ObjectAlias.*
|
||||
import test.EnumAlias.*
|
||||
import test.EnumAlias
|
||||
|
||||
|
||||
fun bar() {
|
||||
Entry
|
||||
EnumAlias.Entry
|
||||
}
|
||||
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// FILE: foo.kt
|
||||
|
||||
package test
|
||||
|
||||
+2
-1
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// FILE: foo.kt
|
||||
|
||||
package test
|
||||
@@ -17,7 +18,7 @@ enum class EnumSample {
|
||||
// FILE: bar.kt
|
||||
|
||||
import test.ClassAlias.*
|
||||
import test.ObjectAlias.*
|
||||
import test.<!CANNOT_ALL_UNDER_IMPORT_FROM_SINGLETON!>ObjectAlias<!>.*
|
||||
import test.EnumAlias.*
|
||||
import test.EnumAlias
|
||||
|
||||
|
||||
Reference in New Issue
Block a user