[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.KtFakeSourceElement
|
||||||
import org.jetbrains.kotlin.KtFakeSourceElementKind
|
import org.jetbrains.kotlin.KtFakeSourceElementKind
|
||||||
import org.jetbrains.kotlin.descriptors.Visibilities
|
import org.jetbrains.kotlin.descriptors.Visibilities
|
||||||
|
import org.jetbrains.kotlin.descriptors.isObject
|
||||||
import org.jetbrains.kotlin.diagnostics.DiagnosticReporter
|
import org.jetbrains.kotlin.diagnostics.DiagnosticReporter
|
||||||
import org.jetbrains.kotlin.diagnostics.reportOn
|
import org.jetbrains.kotlin.diagnostics.reportOn
|
||||||
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
|
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
|
||||||
@@ -41,7 +42,9 @@ object FirImportsChecker : FirFileChecker() {
|
|||||||
declaration.imports.forEach { import ->
|
declaration.imports.forEach { import ->
|
||||||
if (import is FirErrorImport) return@forEach
|
if (import is FirErrorImport) return@forEach
|
||||||
if (import.isAllUnder) {
|
if (import.isAllUnder) {
|
||||||
if (import !is FirResolvedImport) {
|
if (import is FirResolvedImport) {
|
||||||
|
checkAllUnderFromObject(import, context, reporter)
|
||||||
|
} else {
|
||||||
checkAllUnderFromEnumEntry(import, context, reporter)
|
checkAllUnderFromEnumEntry(import, context, reporter)
|
||||||
}
|
}
|
||||||
} else {
|
} 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) {
|
private fun checkCanBeImported(import: FirImport, context: CheckerContext, reporter: DiagnosticReporter) {
|
||||||
val importedFqName = import.importedFqName ?: return
|
val importedFqName = import.importedFqName ?: return
|
||||||
val importedName = importedFqName.shortName()
|
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
|
// FILE: foo.kt
|
||||||
|
|
||||||
package test
|
package test
|
||||||
|
|||||||
+2
-1
@@ -1,3 +1,4 @@
|
|||||||
|
// FIR_IDENTICAL
|
||||||
// FILE: foo.kt
|
// FILE: foo.kt
|
||||||
|
|
||||||
package test
|
package test
|
||||||
@@ -17,7 +18,7 @@ enum class EnumSample {
|
|||||||
// FILE: bar.kt
|
// FILE: bar.kt
|
||||||
|
|
||||||
import test.ClassAlias.*
|
import test.ClassAlias.*
|
||||||
import test.ObjectAlias.*
|
import test.<!CANNOT_ALL_UNDER_IMPORT_FROM_SINGLETON!>ObjectAlias<!>.*
|
||||||
import test.EnumAlias.*
|
import test.EnumAlias.*
|
||||||
import test.EnumAlias
|
import test.EnumAlias
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user