[FIR JS] KT-57822: Don't report the diagnostic for non-qualifiers ^KT-57822 Fixed
diff --git a/compiler/fir/checkers/checkers.js/src/org/jetbrains/kotlin/fir/analysis/js/checkers/expression/FirJsNativeRttiChecker.kt b/compiler/fir/checkers/checkers.js/src/org/jetbrains/kotlin/fir/analysis/js/checkers/expression/FirJsNativeRttiChecker.kt index f986514..c86f619 100644 --- a/compiler/fir/checkers/checkers.js/src/org/jetbrains/kotlin/fir/analysis/js/checkers/expression/FirJsNativeRttiChecker.kt +++ b/compiler/fir/checkers/checkers.js/src/org/jetbrains/kotlin/fir/analysis/js/checkers/expression/FirJsNativeRttiChecker.kt
@@ -27,6 +27,10 @@ private fun checkGetClassCall(expression: FirGetClassCall, context: CheckerContext, reporter: DiagnosticReporter) { val declarationToCheck = expression.argument.typeRef.toRegularClassSymbol(context.session) ?: return + if (expression.arguments.firstOrNull() !is FirResolvedQualifier) { + return + } + if (declarationToCheck.isNativeInterface(context)) { reporter.reportOn(expression.source, FirJsErrors.EXTERNAL_INTERFACE_AS_CLASS_LITERAL, context) }
diff --git a/compiler/testData/diagnostics/testsWithJsStdLib/externalInterfaceClassLiteral.kt b/compiler/testData/diagnostics/testsWithJsStdLib/externalInterfaceClassLiteral.kt new file mode 100644 index 0000000..66babc5 --- /dev/null +++ b/compiler/testData/diagnostics/testsWithJsStdLib/externalInterfaceClassLiteral.kt
@@ -0,0 +1,10 @@ +// FIR_IDENTICAL +// ISSUE: KT-57822 + +external interface Foo + +fun bar() { + foo()::class.simpleName +} + +external fun foo(): Foo
diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticsTestWithJsStdLibGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticsTestWithJsStdLibGenerated.java index d02edd1..a616100 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticsTestWithJsStdLibGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticsTestWithJsStdLibGenerated.java
@@ -31,6 +31,12 @@ } @Test + @TestMetadata("externalInterfaceClassLiteral.kt") + public void testExternalInterfaceClassLiteral() throws Exception { + runTest("compiler/testData/diagnostics/testsWithJsStdLib/externalInterfaceClassLiteral.kt"); + } + + @Test @TestMetadata("funConstructorCallJS.kt") public void testFunConstructorCallJS() throws Exception { runTest("compiler/testData/diagnostics/testsWithJsStdLib/funConstructorCallJS.kt");
diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirPsiJsOldFrontendDiagnosticsTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirPsiJsOldFrontendDiagnosticsTestGenerated.java index 19739db..fa13033 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirPsiJsOldFrontendDiagnosticsTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirPsiJsOldFrontendDiagnosticsTestGenerated.java
@@ -32,6 +32,12 @@ } @Test + @TestMetadata("externalInterfaceClassLiteral.kt") + public void testExternalInterfaceClassLiteral() throws Exception { + runTest("compiler/testData/diagnostics/testsWithJsStdLib/externalInterfaceClassLiteral.kt"); + } + + @Test @TestMetadata("funConstructorCallJS.kt") public void testFunConstructorCallJS() throws Exception { runTest("compiler/testData/diagnostics/testsWithJsStdLib/funConstructorCallJS.kt");