diff --git a/compiler/frontend/src/org/jetbrains/kotlin/cfg/ControlFlowInformationProvider.kt b/compiler/frontend/src/org/jetbrains/kotlin/cfg/ControlFlowInformationProvider.kt index 080f22696b3..c7a575651d8 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/cfg/ControlFlowInformationProvider.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/cfg/ControlFlowInformationProvider.kt @@ -367,7 +367,8 @@ class ControlFlowInformationProvider private constructor( } } is VariableDescriptor -> - if (!variableDescriptor.isLateInit) { + if (!variableDescriptor.isLateInit && + !(variableDescriptor is MemberDescriptor && variableDescriptor.isEffectivelyExternal())) { report(Errors.UNINITIALIZED_VARIABLE.on(element, variableDescriptor), ctxt) } } diff --git a/compiler/testData/diagnostics/testsWithJsStdLib/native/optionlBody/native.kt b/compiler/testData/diagnostics/testsWithJsStdLib/native/optionlBody/native.kt index b43a42905c3..39aa437d7a6 100644 --- a/compiler/testData/diagnostics/testsWithJsStdLib/native/optionlBody/native.kt +++ b/compiler/testData/diagnostics/testsWithJsStdLib/native/optionlBody/native.kt @@ -2,7 +2,9 @@ // unreachable code suppressed due to KT-9586 external val baz: Int +val useBaz = baz external val boo: Int = definedExternally +val useBoo = boo external fun foo() external fun bar() { definedExternally } @@ -37,5 +39,3 @@ external object O { fun foo(s: String): String fun bar(s: String): String = definedExternally } - - diff --git a/compiler/testData/diagnostics/testsWithJsStdLib/native/optionlBody/native.txt b/compiler/testData/diagnostics/testsWithJsStdLib/native/optionlBody/native.txt index dcf1c88e1fa..8044252a2bd 100644 --- a/compiler/testData/diagnostics/testsWithJsStdLib/native/optionlBody/native.txt +++ b/compiler/testData/diagnostics/testsWithJsStdLib/native/optionlBody/native.txt @@ -2,6 +2,8 @@ package public external val baz: kotlin.Int public external val boo: kotlin.Int +public val useBaz: kotlin.Int +public val useBoo: kotlin.Int public external fun bar(): kotlin.Unit public external fun foo(): kotlin.Unit diff --git a/idea/src/META-INF/extensions/kotlin2js.xml b/idea/src/META-INF/extensions/kotlin2js.xml index f003384214e..efe138dbfdd 100644 --- a/idea/src/META-INF/extensions/kotlin2js.xml +++ b/idea/src/META-INF/extensions/kotlin2js.xml @@ -2,6 +2,5 @@ org.jetbrains.kotlin - diff --git a/js/js.frontend/src/org/jetbrains/kotlin/js/analyze/suppressWarnings.kt b/js/js.frontend/src/org/jetbrains/kotlin/js/analyze/suppressWarnings.kt index e07f5b294e3..8b394cfb058 100644 --- a/js/js.frontend/src/org/jetbrains/kotlin/js/analyze/suppressWarnings.kt +++ b/js/js.frontend/src/org/jetbrains/kotlin/js/analyze/suppressWarnings.kt @@ -19,14 +19,8 @@ package org.jetbrains.kotlin.js.analyze import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor import org.jetbrains.kotlin.descriptors.DeclarationDescriptor import org.jetbrains.kotlin.descriptors.VariableDescriptor -import org.jetbrains.kotlin.diagnostics.Diagnostic -import org.jetbrains.kotlin.diagnostics.DiagnosticWithParameters1 -import org.jetbrains.kotlin.diagnostics.Errors import org.jetbrains.kotlin.js.PredefinedAnnotation.* -import org.jetbrains.kotlin.js.translate.utils.AnnotationsUtils -import org.jetbrains.kotlin.psi.KtSimpleNameExpression import org.jetbrains.kotlin.resolve.checkers.PlatformDiagnosticSuppressor -import org.jetbrains.kotlin.resolve.diagnostics.DiagnosticSuppressor private val NATIVE_ANNOTATIONS = arrayOf(NATIVE.fqName, NATIVE_INVOKE.fqName, NATIVE_GETTER.fqName, NATIVE_SETTER.fqName) @@ -45,17 +39,3 @@ object JsNativeDiagnosticSuppressor : PlatformDiagnosticSuppressor { override fun shouldReportNoBody(descriptor: CallableMemberDescriptor): Boolean = !descriptor.isLexicallyInsideJsNative() } - -class SuppressUninitializedErrorsForNativeDeclarations : DiagnosticSuppressor { - override fun isSuppressed(diagnostic: Diagnostic): Boolean { - if (diagnostic.factory != Errors.UNINITIALIZED_VARIABLE) return false - - @Suppress("UNCHECKED_CAST") - val diagnosticWithParameters = diagnostic as DiagnosticWithParameters1 - - val variableDescriptor = diagnosticWithParameters.a - - return AnnotationsUtils.isNativeObject(variableDescriptor) - } -} -