[KT-4124] Suppress error reporting about native local classes
This commit is contained in:
@@ -21,6 +21,7 @@ import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
|||||||
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
||||||
import org.jetbrains.kotlin.diagnostics.DiagnosticSink
|
import org.jetbrains.kotlin.diagnostics.DiagnosticSink
|
||||||
import org.jetbrains.kotlin.diagnostics.rendering.renderKind
|
import org.jetbrains.kotlin.diagnostics.rendering.renderKind
|
||||||
|
import org.jetbrains.kotlin.js.translate.utils.AnnotationsUtils
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
import org.jetbrains.kotlin.resolve.BindingContext
|
import org.jetbrains.kotlin.resolve.BindingContext
|
||||||
import org.jetbrains.kotlin.resolve.DeclarationChecker
|
import org.jetbrains.kotlin.resolve.DeclarationChecker
|
||||||
@@ -32,7 +33,7 @@ class LocalClassChecker : DeclarationChecker {
|
|||||||
if (descriptor !is ClassDescriptor || declaration !is KtNamedDeclaration) {
|
if (descriptor !is ClassDescriptor || declaration !is KtNamedDeclaration) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (isAnonymousObject(descriptor) || isObject(descriptor)) {
|
if (isAnonymousObject(descriptor) || isObject(descriptor) || AnnotationsUtils.isNativeObject(descriptor)) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+2
-3
@@ -222,7 +222,7 @@ object ConstructorCallCase : FunctionCallCase() {
|
|||||||
val functionRef = context.aliasOrValue(callableDescriptor) { fqName }
|
val functionRef = context.aliasOrValue(callableDescriptor) { fqName }
|
||||||
|
|
||||||
val constructorDescriptor = callableDescriptor as ConstructorDescriptor
|
val constructorDescriptor = callableDescriptor as ConstructorDescriptor
|
||||||
val receiver = this.superCallReceiver
|
val receiver = superCallReceiver
|
||||||
var allArguments = when (receiver) {
|
var allArguments = when (receiver) {
|
||||||
null -> argumentsInfo.translateArguments
|
null -> argumentsInfo.translateArguments
|
||||||
else -> (sequenceOf(receiver) + argumentsInfo.translateArguments).toList()
|
else -> (sequenceOf(receiver) + argumentsInfo.translateArguments).toList()
|
||||||
@@ -246,8 +246,7 @@ object SuperCallCase : FunctionCallCase() {
|
|||||||
// TODO: spread operator
|
// TODO: spread operator
|
||||||
val prototypeClass = JsNameRef(Namer.getPrototypeName(), dispatchReceiver!!)
|
val prototypeClass = JsNameRef(Namer.getPrototypeName(), dispatchReceiver!!)
|
||||||
val functionRef = Namer.getFunctionCallRef(JsNameRef(functionName, prototypeClass))
|
val functionRef = Namer.getFunctionCallRef(JsNameRef(functionName, prototypeClass))
|
||||||
val superReceiver = this.superCallReceiver
|
val receiver = superCallReceiver ?: JsLiteral.THIS;
|
||||||
val receiver = if (superReceiver != null) superReceiver else JsLiteral.THIS;
|
|
||||||
return JsInvocation(functionRef, argumentsInfo.argsWithReceiver(receiver))
|
return JsInvocation(functionRef, argumentsInfo.argsWithReceiver(receiver))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -110,7 +110,7 @@ object DelegatePropertyAccessIntrinsic : DelegateIntrinsic<VariableAccessInfo> {
|
|||||||
object SuperPropertyAccessCase : VariableAccessCase() {
|
object SuperPropertyAccessCase : VariableAccessCase() {
|
||||||
override fun VariableAccessInfo.dispatchReceiver(): JsExpression {
|
override fun VariableAccessInfo.dispatchReceiver(): JsExpression {
|
||||||
val variableName = context.program().getStringLiteral(this.variableName.ident)
|
val variableName = context.program().getStringLiteral(this.variableName.ident)
|
||||||
val jsReceiver = this.superCallReceiver
|
val jsReceiver = superCallReceiver
|
||||||
var propertyOwner = when (jsReceiver) {
|
var propertyOwner = when (jsReceiver) {
|
||||||
null -> JsLiteral.THIS
|
null -> JsLiteral.THIS
|
||||||
else -> jsReceiver
|
else -> jsReceiver
|
||||||
|
|||||||
+3
-2
@@ -27,6 +27,7 @@ import org.jetbrains.kotlin.js.translate.context.TranslationContext;
|
|||||||
import org.jetbrains.kotlin.js.translate.declaration.DelegationTranslator;
|
import org.jetbrains.kotlin.js.translate.declaration.DelegationTranslator;
|
||||||
import org.jetbrains.kotlin.js.translate.general.AbstractTranslator;
|
import org.jetbrains.kotlin.js.translate.general.AbstractTranslator;
|
||||||
import org.jetbrains.kotlin.js.translate.reference.CallArgumentTranslator;
|
import org.jetbrains.kotlin.js.translate.reference.CallArgumentTranslator;
|
||||||
|
import org.jetbrains.kotlin.js.translate.utils.JsAstUtils;
|
||||||
import org.jetbrains.kotlin.js.translate.utils.jsAstUtils.AstUtilsKt;
|
import org.jetbrains.kotlin.js.translate.utils.jsAstUtils.AstUtilsKt;
|
||||||
import org.jetbrains.kotlin.lexer.KtTokens;
|
import org.jetbrains.kotlin.lexer.KtTokens;
|
||||||
import org.jetbrains.kotlin.psi.*;
|
import org.jetbrains.kotlin.psi.*;
|
||||||
@@ -127,8 +128,8 @@ public final class ClassInitializerTranslator extends AbstractTranslator {
|
|||||||
initFunction.getParameters().add(0, new JsParameter(outerName));
|
initFunction.getParameters().add(0, new JsParameter(outerName));
|
||||||
|
|
||||||
JsExpression target = new JsNameRef(outerName, JsLiteral.THIS);
|
JsExpression target = new JsNameRef(outerName, JsLiteral.THIS);
|
||||||
JsExpression paramRef = new JsNameRef(outerName);
|
JsExpression paramRef = outerName.makeRef();
|
||||||
JsExpression assignment = new JsBinaryOperation(JsBinaryOperator.ASG, target, paramRef);
|
JsExpression assignment = JsAstUtils.assignment(target, paramRef);
|
||||||
initFunction.getBody().getStatements().add(new JsExpressionStatement(assignment));
|
initFunction.getBody().getStatements().add(new JsExpressionStatement(assignment));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+6
-16
@@ -18,24 +18,19 @@ package org.jetbrains.kotlin.js.translate.reference
|
|||||||
|
|
||||||
import com.google.dart.compiler.backend.js.ast.*
|
import com.google.dart.compiler.backend.js.ast.*
|
||||||
import com.intellij.util.SmartList
|
import com.intellij.util.SmartList
|
||||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
|
||||||
import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor
|
import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.ValueParameterDescriptor
|
|
||||||
import org.jetbrains.kotlin.js.descriptorUtils.nameIfStandardType
|
|
||||||
import org.jetbrains.kotlin.js.translate.context.TemporaryConstVariable
|
import org.jetbrains.kotlin.js.translate.context.TemporaryConstVariable
|
||||||
import org.jetbrains.kotlin.js.translate.context.TemporaryVariable
|
|
||||||
import org.jetbrains.kotlin.js.translate.context.TranslationContext
|
import org.jetbrains.kotlin.js.translate.context.TranslationContext
|
||||||
import org.jetbrains.kotlin.js.translate.expression.PatternTranslator
|
import org.jetbrains.kotlin.js.translate.expression.PatternTranslator
|
||||||
import org.jetbrains.kotlin.js.translate.general.AbstractTranslator
|
import org.jetbrains.kotlin.js.translate.general.AbstractTranslator
|
||||||
import org.jetbrains.kotlin.js.translate.general.Translation
|
import org.jetbrains.kotlin.js.translate.general.Translation
|
||||||
import org.jetbrains.kotlin.js.translate.utils.*
|
import org.jetbrains.kotlin.js.translate.utils.AnnotationsUtils
|
||||||
import org.jetbrains.kotlin.psi.KtExpression
|
import org.jetbrains.kotlin.js.translate.utils.JsAstUtils
|
||||||
|
import org.jetbrains.kotlin.js.translate.utils.TranslationUtils
|
||||||
import org.jetbrains.kotlin.psi.ValueArgument
|
import org.jetbrains.kotlin.psi.ValueArgument
|
||||||
import org.jetbrains.kotlin.resolve.calls.model.*
|
import org.jetbrains.kotlin.resolve.calls.model.*
|
||||||
import org.jetbrains.kotlin.types.KotlinType
|
import org.jetbrains.kotlin.types.KotlinType
|
||||||
|
import java.util.*
|
||||||
import java.util.ArrayList
|
|
||||||
import java.util.Collections
|
|
||||||
|
|
||||||
class CallArgumentTranslator private constructor(
|
class CallArgumentTranslator private constructor(
|
||||||
private val resolvedCall: ResolvedCall<*>,
|
private val resolvedCall: ResolvedCall<*>,
|
||||||
@@ -102,13 +97,8 @@ class CallArgumentTranslator private constructor(
|
|||||||
val arguments = actualArgument.getArguments()
|
val arguments = actualArgument.getArguments()
|
||||||
|
|
||||||
val size = arguments.size
|
val size = arguments.size
|
||||||
var i = 0
|
if (!hasSpreadOperator) {
|
||||||
while (i != size) {
|
hasSpreadOperator = arguments.any { it.getSpreadElement() != null }
|
||||||
if (arguments.get(i).getSpreadElement() != null) {
|
|
||||||
hasSpreadOperator = true
|
|
||||||
break
|
|
||||||
}
|
|
||||||
++i
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (hasSpreadOperator) {
|
if (hasSpreadOperator) {
|
||||||
|
|||||||
Reference in New Issue
Block a user