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 ->
|
is VariableDescriptor ->
|
||||||
if (!variableDescriptor.isLateInit) {
|
if (!variableDescriptor.isLateInit &&
|
||||||
|
!(variableDescriptor is MemberDescriptor && variableDescriptor.isEffectivelyExternal())) {
|
||||||
report(Errors.UNINITIALIZED_VARIABLE.on(element, variableDescriptor), ctxt)
|
report(Errors.UNINITIALIZED_VARIABLE.on(element, variableDescriptor), ctxt)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -2,7 +2,9 @@
|
|||||||
// unreachable code suppressed due to KT-9586
|
// unreachable code suppressed due to KT-9586
|
||||||
|
|
||||||
external val baz: Int
|
external val baz: Int
|
||||||
|
val useBaz = baz
|
||||||
external val boo: Int = definedExternally
|
external val boo: Int = definedExternally
|
||||||
|
val useBoo = boo
|
||||||
|
|
||||||
external fun foo()
|
external fun foo()
|
||||||
external fun bar() { definedExternally }
|
external fun bar() { definedExternally }
|
||||||
@@ -37,5 +39,3 @@ external object O {
|
|||||||
fun foo(s: String): String
|
fun foo(s: String): String
|
||||||
fun bar(s: String): String = definedExternally
|
fun bar(s: String): String = definedExternally
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,8 @@ package
|
|||||||
|
|
||||||
public external val baz: kotlin.Int
|
public external val baz: kotlin.Int
|
||||||
public external val boo: 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 bar(): kotlin.Unit
|
||||||
public external fun foo(): kotlin.Unit
|
public external fun foo(): kotlin.Unit
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,5 @@
|
|||||||
<id>org.jetbrains.kotlin</id>
|
<id>org.jetbrains.kotlin</id>
|
||||||
|
|
||||||
<extensions defaultExtensionNs="org.jetbrains.kotlin">
|
<extensions defaultExtensionNs="org.jetbrains.kotlin">
|
||||||
<diagnosticSuppressor implementation="org.jetbrains.kotlin.js.analyze.SuppressUninitializedErrorsForNativeDeclarations"/>
|
|
||||||
</extensions>
|
</extensions>
|
||||||
</idea-plugin>
|
</idea-plugin>
|
||||||
|
|||||||
@@ -19,14 +19,8 @@ package org.jetbrains.kotlin.js.analyze
|
|||||||
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor
|
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.VariableDescriptor
|
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.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.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)
|
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()
|
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