diff --git a/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/FirDiagnosticsList.kt b/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/FirDiagnosticsList.kt index 937b3aa28f1..e2276c7d155 100644 --- a/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/FirDiagnosticsList.kt +++ b/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/FirDiagnosticsList.kt @@ -848,10 +848,10 @@ object DIAGNOSTICS_LIST : DiagnosticList("FirErrors") { val TYPE_PARAMETER_ON_LHS_OF_DOT by error { parameter("typeParameter") } - val NO_COMPANION_OBJECT by error(PositioningStrategy.SELECTOR_BY_QUALIFIED) { + val NO_COMPANION_OBJECT by error(PositioningStrategy.SELECTOR_BY_QUALIFIED) { parameter("klass") } - val EXPRESSION_EXPECTED_PACKAGE_FOUND by error(PositioningStrategy.SELECTOR_BY_QUALIFIED) + val EXPRESSION_EXPECTED_PACKAGE_FOUND by error(PositioningStrategy.SELECTOR_BY_QUALIFIED) } val FUNCTION_CONTRACTS by object : DiagnosticGroup("Function contracts") { diff --git a/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrors.kt b/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrors.kt index 8afdd9928e1..0c2699103c4 100644 --- a/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrors.kt +++ b/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrors.kt @@ -475,8 +475,8 @@ object FirErrors { // Context tracking val TYPE_PARAMETER_IS_NOT_AN_EXPRESSION by error1() val TYPE_PARAMETER_ON_LHS_OF_DOT by error1() - val NO_COMPANION_OBJECT by error1(SourceElementPositioningStrategies.SELECTOR_BY_QUALIFIED) - val EXPRESSION_EXPECTED_PACKAGE_FOUND by error0(SourceElementPositioningStrategies.SELECTOR_BY_QUALIFIED) + val NO_COMPANION_OBJECT by error1(SourceElementPositioningStrategies.SELECTOR_BY_QUALIFIED) + val EXPRESSION_EXPECTED_PACKAGE_FOUND by error0(SourceElementPositioningStrategies.SELECTOR_BY_QUALIFIED) // Function contracts val ERROR_IN_CONTRACT_DESCRIPTION by error1(SourceElementPositioningStrategies.SELECTOR_BY_QUALIFIED) diff --git a/idea/idea-fir/tests/org/jetbrains/kotlin/idea/fir/checkers/FirKotlinHighlightingPassTestGenerated.java b/idea/idea-fir/tests/org/jetbrains/kotlin/idea/fir/checkers/FirKotlinHighlightingPassTestGenerated.java index 9563802e210..014bb2a11f2 100644 --- a/idea/idea-fir/tests/org/jetbrains/kotlin/idea/fir/checkers/FirKotlinHighlightingPassTestGenerated.java +++ b/idea/idea-fir/tests/org/jetbrains/kotlin/idea/fir/checkers/FirKotlinHighlightingPassTestGenerated.java @@ -231,6 +231,11 @@ public class FirKotlinHighlightingPassTestGenerated extends AbstractFirKotlinHig runTest("idea/testData/checker/OverridesAndGenerics.kt"); } + @TestMetadata("PackageInExpressionPosition.kt") + public void testPackageInExpressionPosition() throws Exception { + runTest("idea/testData/checker/PackageInExpressionPosition.kt"); + } + @TestMetadata("PackageQualified.kt") public void testPackageQualified() throws Exception { runTest("idea/testData/checker/PackageQualified.kt"); diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDiagnostics.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDiagnostics.kt index 0e190d16e78..ee7ca38c3ac 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDiagnostics.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDiagnostics.kt @@ -1647,12 +1647,12 @@ sealed class KtFirDiagnostic : KtDiagnosticWithPsi { abstract val typeParameter: KtTypeParameterSymbol } - abstract class NoCompanionObject : KtFirDiagnostic() { + abstract class NoCompanionObject : KtFirDiagnostic() { override val diagnosticClass get() = NoCompanionObject::class abstract val klass: KtClassLikeSymbol } - abstract class ExpressionExpectedPackageFound : KtFirDiagnostic() { + abstract class ExpressionExpectedPackageFound : KtFirDiagnostic() { override val diagnosticClass get() = ExpressionExpectedPackageFound::class } diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDiagnosticsImpl.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDiagnosticsImpl.kt index 99a7699fc45..42b00b57813 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDiagnosticsImpl.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDiagnosticsImpl.kt @@ -2669,14 +2669,14 @@ internal class NoCompanionObjectImpl( override val klass: KtClassLikeSymbol, firDiagnostic: FirPsiDiagnostic<*>, override val token: ValidityToken, -) : KtFirDiagnostic.NoCompanionObject(), KtAbstractFirDiagnostic { +) : KtFirDiagnostic.NoCompanionObject(), KtAbstractFirDiagnostic { override val firDiagnostic: FirPsiDiagnostic<*> by weakRef(firDiagnostic) } internal class ExpressionExpectedPackageFoundImpl( firDiagnostic: FirPsiDiagnostic<*>, override val token: ValidityToken, -) : KtFirDiagnostic.ExpressionExpectedPackageFound(), KtAbstractFirDiagnostic { +) : KtFirDiagnostic.ExpressionExpectedPackageFound(), KtAbstractFirDiagnostic { override val firDiagnostic: FirPsiDiagnostic<*> by weakRef(firDiagnostic) } diff --git a/idea/idea-frontend-independent/tests/org/jetbrains/kotlin/test/utils/IgnoreTests.kt b/idea/idea-frontend-independent/tests/org/jetbrains/kotlin/test/utils/IgnoreTests.kt index aeb1e64bf20..034d0b6a1f9 100644 --- a/idea/idea-frontend-independent/tests/org/jetbrains/kotlin/test/utils/IgnoreTests.kt +++ b/idea/idea-frontend-independent/tests/org/jetbrains/kotlin/test/utils/IgnoreTests.kt @@ -14,7 +14,7 @@ import java.nio.file.Files import java.nio.file.Path object IgnoreTests { - private const val INSERT_DIRECTIVE_AUTOMATICALLY = true // TODO use environment variable instead + private const val INSERT_DIRECTIVE_AUTOMATICALLY = false // TODO use environment variable instead private const val ALWAYS_CONSIDER_TEST_AS_PASSING = false // TODO use environment variable instead fun runTestIfEnabledByFileDirective( diff --git a/idea/testData/checker/PackageInExpressionPosition.fir.kt b/idea/testData/checker/PackageInExpressionPosition.fir.kt new file mode 100644 index 00000000000..857b5f552ca --- /dev/null +++ b/idea/testData/checker/PackageInExpressionPosition.fir.kt @@ -0,0 +1,26 @@ +package foo + +class X {} + +val s = java +val ss = System +val sss = X +val x = "${System}" +val xs = java.lang +val xss = java.lang.System +val xsss = foo.X +val xssss = foo +val f = { System } + +fun main() { + java = null + System = null + System!! + java.lang.System = null + java.lang.System!! + System is Int + System() + (System) + foo@ System + null in System +} diff --git a/idea/testData/checker/PackageInExpressionPosition.kt b/idea/testData/checker/PackageInExpressionPosition.kt new file mode 100644 index 00000000000..43e698d0695 --- /dev/null +++ b/idea/testData/checker/PackageInExpressionPosition.kt @@ -0,0 +1,26 @@ +package foo + +class X {} + +val s = java +val ss = System +val sss = X +val x = "${System}" +val xs = java.lang +val xss = java.lang.System +val xsss = foo.X +val xssss = foo +val f = { System } + +fun main() { + java = null + System = null + System!! + java.lang.System = null + java.lang.System!! + System is Int + System() + (System) + foo@ System + null in System +} diff --git a/idea/tests/org/jetbrains/kotlin/checkers/KotlinHighlightingPassTestGenerated.java b/idea/tests/org/jetbrains/kotlin/checkers/KotlinHighlightingPassTestGenerated.java index f3a9ccdd3ce..ec18734fba6 100644 --- a/idea/tests/org/jetbrains/kotlin/checkers/KotlinHighlightingPassTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/checkers/KotlinHighlightingPassTestGenerated.java @@ -231,6 +231,11 @@ public class KotlinHighlightingPassTestGenerated extends AbstractKotlinHighlight runTest("idea/testData/checker/OverridesAndGenerics.kt"); } + @TestMetadata("PackageInExpressionPosition.kt") + public void testPackageInExpressionPosition() throws Exception { + runTest("idea/testData/checker/PackageInExpressionPosition.kt"); + } + @TestMetadata("PackageQualified.kt") public void testPackageQualified() throws Exception { runTest("idea/testData/checker/PackageQualified.kt");