Do not use IntelliJ extensions for uninitialized variable suppressor in JS
This commit is contained in:
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -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
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -2,6 +2,5 @@
|
||||
<id>org.jetbrains.kotlin</id>
|
||||
|
||||
<extensions defaultExtensionNs="org.jetbrains.kotlin">
|
||||
<diagnosticSuppressor implementation="org.jetbrains.kotlin.js.analyze.SuppressUninitializedErrorsForNativeDeclarations"/>
|
||||
</extensions>
|
||||
</idea-plugin>
|
||||
|
||||
@@ -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<KtSimpleNameExpression, VariableDescriptor>
|
||||
|
||||
val variableDescriptor = diagnosticWithParameters.a
|
||||
|
||||
return AnnotationsUtils.isNativeObject(variableDescriptor)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user