remove usages of static type assertions from the compiler
This commit is contained in:
@@ -16,17 +16,16 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.cfg
|
package org.jetbrains.kotlin.cfg
|
||||||
|
|
||||||
import org.jetbrains.kotlin.psi.JetElement
|
|
||||||
import com.intellij.openapi.util.TextRange
|
import com.intellij.openapi.util.TextRange
|
||||||
import java.util.HashSet
|
import com.intellij.psi.PsiComment
|
||||||
import org.jetbrains.kotlin.psi.JetPsiUtil
|
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
import com.intellij.psi.PsiElementVisitor
|
import com.intellij.psi.PsiElementVisitor
|
||||||
import com.intellij.psi.PsiWhiteSpace
|
import com.intellij.psi.PsiWhiteSpace
|
||||||
import java.util.ArrayList
|
|
||||||
import org.jetbrains.kotlin.lexer.JetTokens
|
|
||||||
import com.intellij.psi.util.PsiTreeUtil
|
import com.intellij.psi.util.PsiTreeUtil
|
||||||
import com.intellij.psi.PsiComment
|
import org.jetbrains.kotlin.lexer.JetTokens
|
||||||
|
import org.jetbrains.kotlin.psi.JetElement
|
||||||
|
import org.jetbrains.kotlin.psi.JetPsiUtil
|
||||||
|
import java.util.*
|
||||||
|
|
||||||
interface UnreachableCode {
|
interface UnreachableCode {
|
||||||
val elements: Set<JetElement>
|
val elements: Set<JetElement>
|
||||||
@@ -99,7 +98,7 @@ class UnreachableCodeImpl(
|
|||||||
|
|
||||||
private fun List<PsiElement>.mergeAdjacentTextRanges(): List<TextRange> {
|
private fun List<PsiElement>.mergeAdjacentTextRanges(): List<TextRange> {
|
||||||
val result = ArrayList<TextRange>()
|
val result = ArrayList<TextRange>()
|
||||||
val lastRange = fold(null: TextRange?) {
|
val lastRange = fold(null as TextRange?) {
|
||||||
currentTextRange, element ->
|
currentTextRange, element ->
|
||||||
|
|
||||||
val elementRange = element.getTextRange()!!
|
val elementRange = element.getTextRange()!!
|
||||||
|
|||||||
@@ -17,16 +17,16 @@
|
|||||||
package org.jetbrains.kotlin.psi
|
package org.jetbrains.kotlin.psi
|
||||||
|
|
||||||
import com.intellij.lang.ASTNode
|
import com.intellij.lang.ASTNode
|
||||||
import org.jetbrains.kotlin.parsing.JetExpressionParsing
|
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
import com.intellij.psi.impl.source.tree.TreeElement
|
import com.intellij.psi.impl.source.tree.TreeElement
|
||||||
import org.jetbrains.kotlin.lexer.JetSingleValueToken
|
import org.jetbrains.kotlin.lexer.JetSingleValueToken
|
||||||
import org.jetbrains.kotlin.lexer.JetToken
|
import org.jetbrains.kotlin.lexer.JetToken
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
import org.jetbrains.kotlin.parsing.JetExpressionParsing
|
||||||
import org.jetbrains.kotlin.types.expressions.OperatorConventions
|
import org.jetbrains.kotlin.types.expressions.OperatorConventions
|
||||||
|
|
||||||
public class JetOperationReferenceExpression(node: ASTNode) : JetSimpleNameExpressionImpl(node) {
|
public class JetOperationReferenceExpression(node: ASTNode) : JetSimpleNameExpressionImpl(node) {
|
||||||
override fun getReferencedNameElement() = (findChildByType(JetExpressionParsing.ALL_OPERATIONS): PsiElement?) ?: this
|
override fun getReferencedNameElement() = findChildByType<PsiElement?>(JetExpressionParsing.ALL_OPERATIONS) ?: this
|
||||||
|
|
||||||
fun getNameForConventionalOperation(unaryOperations: Boolean = true, binaryOperations: Boolean = true): Name? {
|
fun getNameForConventionalOperation(unaryOperations: Boolean = true, binaryOperations: Boolean = true): Name? {
|
||||||
val operator = (firstChild as? TreeElement)?.elementType as? JetToken ?: return null
|
val operator = (firstChild as? TreeElement)?.elementType as? JetToken ?: return null
|
||||||
|
|||||||
@@ -21,7 +21,9 @@ import org.jetbrains.kotlin.descriptors.*
|
|||||||
import org.jetbrains.kotlin.incremental.KotlinLookupLocation
|
import org.jetbrains.kotlin.incremental.KotlinLookupLocation
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.progress.ProgressIndicatorAndCompilationCanceledStatus
|
import org.jetbrains.kotlin.progress.ProgressIndicatorAndCompilationCanceledStatus
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.Call
|
||||||
|
import org.jetbrains.kotlin.psi.JetFile
|
||||||
|
import org.jetbrains.kotlin.psi.doNotAnalyze
|
||||||
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
||||||
import org.jetbrains.kotlin.resolve.calls.callResolverUtil.isConventionCall
|
import org.jetbrains.kotlin.resolve.calls.callResolverUtil.isConventionCall
|
||||||
import org.jetbrains.kotlin.resolve.calls.callResolverUtil.isOrOverridesSynthesized
|
import org.jetbrains.kotlin.resolve.calls.callResolverUtil.isOrOverridesSynthesized
|
||||||
@@ -484,7 +486,7 @@ public class TaskPrioritizer(
|
|||||||
|
|
||||||
private fun isSynthesized(candidate: ResolutionCandidate<D>): Boolean {
|
private fun isSynthesized(candidate: ResolutionCandidate<D>): Boolean {
|
||||||
val descriptor = candidate.getDescriptor()
|
val descriptor = candidate.getDescriptor()
|
||||||
return descriptor is CallableMemberDescriptor && isOrOverridesSynthesized(descriptor : CallableMemberDescriptor)
|
return descriptor is CallableMemberDescriptor && isOrOverridesSynthesized(descriptor)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun hasImplicitDynamicReceiver(candidate: ResolutionCandidate<D>): Boolean {
|
fun hasImplicitDynamicReceiver(candidate: ResolutionCandidate<D>): Boolean {
|
||||||
|
|||||||
@@ -104,7 +104,7 @@ class DynamicCallableDescriptors(private val builtIns: KotlinBuiltIns) {
|
|||||||
dynamicType,
|
dynamicType,
|
||||||
createTypeParameters(propertyDescriptor, call),
|
createTypeParameters(propertyDescriptor, call),
|
||||||
createDynamicDispatchReceiverParameter(propertyDescriptor),
|
createDynamicDispatchReceiverParameter(propertyDescriptor),
|
||||||
null: JetType?
|
null as JetType?
|
||||||
)
|
)
|
||||||
|
|
||||||
val getter = DescriptorFactory.createDefaultGetter(propertyDescriptor, Annotations.EMPTY)
|
val getter = DescriptorFactory.createDefaultGetter(propertyDescriptor, Annotations.EMPTY)
|
||||||
|
|||||||
+2
-1
@@ -282,7 +282,8 @@ object DynamicOperatorCallCase : FunctionCallCase() {
|
|||||||
}
|
}
|
||||||
is JetPostfixExpression -> {
|
is JetPostfixExpression -> {
|
||||||
// TODO drop hack with ":JsExpression" when KT-5569 will be fixed
|
// TODO drop hack with ":JsExpression" when KT-5569 will be fixed
|
||||||
JsPostfixOperation(OperatorTable.getUnaryOperator(operationToken), dispatchReceiver): JsExpression
|
@Suppress("USELESS_CAST")
|
||||||
|
(JsPostfixOperation(OperatorTable.getUnaryOperator(operationToken), dispatchReceiver) as JsExpression)
|
||||||
}
|
}
|
||||||
else -> unsupported("Unsupported callElement type: ${callElement.javaClass}, callElement: $callElement, callInfo: $this")
|
else -> unsupported("Unsupported callElement type: ${callElement.javaClass}, callElement: $callElement, callInfo: $this")
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-3
@@ -36,7 +36,7 @@ import org.jetbrains.kotlin.psi.JetClassOrObject
|
|||||||
import org.jetbrains.kotlin.psi.JetDelegationSpecifier
|
import org.jetbrains.kotlin.psi.JetDelegationSpecifier
|
||||||
import org.jetbrains.kotlin.psi.JetDelegatorByExpressionSpecifier
|
import org.jetbrains.kotlin.psi.JetDelegatorByExpressionSpecifier
|
||||||
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
||||||
import java.util.HashMap
|
import java.util.*
|
||||||
|
|
||||||
public class DelegationTranslator(
|
public class DelegationTranslator(
|
||||||
private val classDeclaration: JetClassOrObject,
|
private val classDeclaration: JetClassOrObject,
|
||||||
@@ -116,13 +116,13 @@ public class DelegationTranslator(
|
|||||||
val delegateRefName = context().getScopeForDescriptor(getterDescriptor).declareName(delegateName)
|
val delegateRefName = context().getScopeForDescriptor(getterDescriptor).declareName(delegateName)
|
||||||
val delegateRef = JsNameRef(delegateRefName, JsLiteral.THIS)
|
val delegateRef = JsNameRef(delegateRefName, JsLiteral.THIS)
|
||||||
|
|
||||||
val returnExpression = if (DescriptorUtils.isExtension(descriptor)) {
|
val returnExpression: JsExpression = if (DescriptorUtils.isExtension(descriptor)) { // TODO remove explicit type specification after resolving KT-5569
|
||||||
val getterName = context().getNameForDescriptor(getterDescriptor)
|
val getterName = context().getNameForDescriptor(getterDescriptor)
|
||||||
val receiver = Namer.getReceiverParameterName()
|
val receiver = Namer.getReceiverParameterName()
|
||||||
JsInvocation(JsNameRef(getterName, delegateRef), JsNameRef(receiver))
|
JsInvocation(JsNameRef(getterName, delegateRef), JsNameRef(receiver))
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
JsNameRef(propertyName, delegateRef): JsExpression // TODO remove explicit type specification after resolving KT-5569
|
JsNameRef(propertyName, delegateRef)
|
||||||
}
|
}
|
||||||
|
|
||||||
val jsFunction = simpleReturnFunction(context().getScopeForDescriptor(getterDescriptor.getContainingDeclaration()), returnExpression)
|
val jsFunction = simpleReturnFunction(context().getScopeForDescriptor(getterDescriptor.getContainingDeclaration()), returnExpression)
|
||||||
|
|||||||
Reference in New Issue
Block a user