Remove obsolete InlineStrategy

Replace corresponding metadata property in js.ast with Boolean. This
allows to get rid of dependency of 'js.ast' on 'frontend'.
This commit is contained in:
Alexander Udalov
2020-03-15 13:57:03 +01:00
committed by Alexander Udalov
parent 4156a9c80b
commit 8dd04789ad
12 changed files with 44 additions and 101 deletions
@@ -27,7 +27,7 @@ import org.jetbrains.kotlin.descriptors.ConstructorDescriptor
import org.jetbrains.kotlin.descriptors.impl.TypeAliasConstructorDescriptor
import org.jetbrains.kotlin.js.backend.ast.*
import org.jetbrains.kotlin.js.backend.ast.metadata.descriptor
import org.jetbrains.kotlin.js.backend.ast.metadata.inlineStrategy
import org.jetbrains.kotlin.js.backend.ast.metadata.isInline
import org.jetbrains.kotlin.js.config.JSConfigurationKeys
import org.jetbrains.kotlin.js.config.JsConfig
import org.jetbrains.kotlin.js.patterns.NamePredicate
@@ -39,7 +39,6 @@ import org.jetbrains.kotlin.js.translate.intrinsic.functions.basic.BuiltInProper
import org.jetbrains.kotlin.js.translate.intrinsic.functions.basic.FunctionIntrinsic
import org.jetbrains.kotlin.js.translate.utils.JsAstUtils
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.resolve.inline.InlineStrategy
import org.jetbrains.kotlin.resolve.isInlineClassType
import org.jetbrains.kotlin.types.KotlinType
import java.util.*
@@ -217,7 +216,7 @@ object ArrayFIF : CompositeFIF() {
else {
JsAstUtils.invokeKotlinFunction(if (type == CHAR) "untypedCharArrayF" else "newArrayF", size, fn)
}
invocation.inlineStrategy = InlineStrategy.IN_PLACE
invocation.isInline = true
val descriptor = callInfo.resolvedCall.resultingDescriptor.original
val resolvedDescriptor = when (descriptor) {
is TypeAliasConstructorDescriptor -> descriptor.underlyingConstructorDescriptor
@@ -235,4 +234,4 @@ object ArrayFIF : CompositeFIF() {
return f(callInfo, arguments, context)
}
}
}
}
@@ -20,7 +20,7 @@ import org.jetbrains.kotlin.descriptors.ClassDescriptor
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
import org.jetbrains.kotlin.js.backend.ast.JsExpression
import org.jetbrains.kotlin.js.backend.ast.JsNameRef
import org.jetbrains.kotlin.js.backend.ast.metadata.inlineStrategy
import org.jetbrains.kotlin.js.backend.ast.metadata.isInline
import org.jetbrains.kotlin.js.descriptorUtils.isCoroutineLambda
import org.jetbrains.kotlin.js.translate.callTranslator.CallInfo
import org.jetbrains.kotlin.js.translate.context.TranslationContext
@@ -30,7 +30,6 @@ import org.jetbrains.kotlin.js.translate.utils.TranslationUtils
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.resolve.DescriptorUtils
import org.jetbrains.kotlin.resolve.calls.checkers.isBuiltInCoroutineContext
import org.jetbrains.kotlin.resolve.inline.InlineStrategy
object CoroutineContextFIF : FunctionIntrinsicFactory {
override fun getIntrinsic(descriptor: FunctionDescriptor, context: TranslationContext): FunctionIntrinsic? {
@@ -48,7 +47,7 @@ object CoroutineContextFIF : FunctionIntrinsicFactory {
if (context.declarationDescriptor?.isCoroutineLambda == true) JsAstUtils.stateMachineReceiver()
else TranslationUtils.translateContinuationArgument(context)
)
res.inlineStrategy = InlineStrategy.NOT_INLINE
res.isInline = false
return res
}
}
@@ -20,13 +20,14 @@ package org.jetbrains.kotlin.js.translate.utils
import org.jetbrains.kotlin.descriptors.CallableDescriptor
import org.jetbrains.kotlin.js.backend.ast.*
import org.jetbrains.kotlin.js.backend.ast.metadata.*
import org.jetbrains.kotlin.js.backend.ast.metadata.descriptor
import org.jetbrains.kotlin.js.backend.ast.metadata.isInline
import org.jetbrains.kotlin.js.backend.ast.metadata.psiElement
import org.jetbrains.kotlin.js.inline.util.isCallInvocation
import org.jetbrains.kotlin.js.translate.context.TranslationContext
import org.jetbrains.kotlin.js.translate.reference.CallExpressionTranslator
import org.jetbrains.kotlin.psi.KtElement
import org.jetbrains.kotlin.resolve.calls.model.ResolvedCall
import org.jetbrains.kotlin.resolve.inline.InlineStrategy
/**
* Recursively walks expression and sets metadata for all invocations of descriptor.
@@ -57,7 +58,7 @@ fun setInlineCallMetadata(
if (invocation.name in candidateNames || invocation.name?.descriptor?.original == descriptor.original) {
invocation.descriptor = descriptor
invocation.inlineStrategy = InlineStrategy.IN_PLACE
invocation.isInline = true
invocation.psiElement = psiElement
}
}
@@ -81,9 +82,9 @@ fun setInlineCallMetadata(
descriptor: CallableDescriptor,
context: TranslationContext
) {
if (nameRef.inlineStrategy != null) return
if (nameRef.isInline != null) return
nameRef.descriptor = descriptor
nameRef.inlineStrategy = InlineStrategy.IN_PLACE
nameRef.isInline = true
nameRef.psiElement = psiElement
context.addInlineCall(descriptor)