Do not use IntelliJ extensions for uninitialized variable suppressor in JS

This commit is contained in:
Alexander Udalov
2017-10-25 15:47:08 +02:00
parent 6f90a0545c
commit 6f276c623b
5 changed files with 6 additions and 24 deletions
@@ -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,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)
}
}