Minor refactoring after improving JS inliner
This commit is contained in:
+29
-30
@@ -18,13 +18,12 @@ package org.jetbrains.kotlin.js.translate.expression
|
|||||||
|
|
||||||
import com.intellij.openapi.vfs.VfsUtilCore
|
import com.intellij.openapi.vfs.VfsUtilCore
|
||||||
import org.jetbrains.kotlin.descriptors.*
|
import org.jetbrains.kotlin.descriptors.*
|
||||||
import org.jetbrains.kotlin.descriptors.impl.PropertyAccessorDescriptorImpl
|
|
||||||
import org.jetbrains.kotlin.js.backend.ast.*
|
import org.jetbrains.kotlin.js.backend.ast.*
|
||||||
import org.jetbrains.kotlin.js.backend.ast.metadata.descriptor
|
import org.jetbrains.kotlin.js.backend.ast.metadata.descriptor
|
||||||
import org.jetbrains.kotlin.js.backend.ast.metadata.functionDescriptor
|
import org.jetbrains.kotlin.js.backend.ast.metadata.functionDescriptor
|
||||||
import org.jetbrains.kotlin.js.backend.ast.metadata.hasDefaultValue
|
import org.jetbrains.kotlin.js.backend.ast.metadata.hasDefaultValue
|
||||||
import org.jetbrains.kotlin.js.descriptorUtils.shouldBeExported
|
|
||||||
import org.jetbrains.kotlin.js.config.JSConfigurationKeys
|
import org.jetbrains.kotlin.js.config.JSConfigurationKeys
|
||||||
|
import org.jetbrains.kotlin.js.descriptorUtils.shouldBeExported
|
||||||
import org.jetbrains.kotlin.js.inline.util.FunctionWithWrapper
|
import org.jetbrains.kotlin.js.inline.util.FunctionWithWrapper
|
||||||
import org.jetbrains.kotlin.js.translate.context.Namer
|
import org.jetbrains.kotlin.js.translate.context.Namer
|
||||||
import org.jetbrains.kotlin.js.translate.context.TranslationContext
|
import org.jetbrains.kotlin.js.translate.context.TranslationContext
|
||||||
@@ -36,8 +35,8 @@ import org.jetbrains.kotlin.psi.KtDeclarationWithBody
|
|||||||
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe
|
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe
|
||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.hasDefaultValue
|
import org.jetbrains.kotlin.resolve.descriptorUtil.hasDefaultValue
|
||||||
import org.jetbrains.kotlin.resolve.source.getPsi
|
|
||||||
import org.jetbrains.kotlin.resolve.source.PsiSourceFile
|
import org.jetbrains.kotlin.resolve.source.PsiSourceFile
|
||||||
|
import org.jetbrains.kotlin.resolve.source.getPsi
|
||||||
|
|
||||||
fun TranslationContext.translateAndAliasParameters(
|
fun TranslationContext.translateAndAliasParameters(
|
||||||
descriptor: FunctionDescriptor,
|
descriptor: FunctionDescriptor,
|
||||||
@@ -106,39 +105,39 @@ fun TranslationContext.wrapWithInlineMetadata(
|
|||||||
function: JsFunction, descriptor: FunctionDescriptor
|
function: JsFunction, descriptor: FunctionDescriptor
|
||||||
): JsExpression {
|
): JsExpression {
|
||||||
val sourceInfo = descriptor.source.getPsi()
|
val sourceInfo = descriptor.source.getPsi()
|
||||||
return if (descriptor.isInline && descriptor.shouldBeExported(config)) {
|
return if (descriptor.isInline) {
|
||||||
val metadata = InlineMetadata.compose(function, descriptor, this)
|
if (descriptor.shouldBeExported(config)) {
|
||||||
val functionWithMetadata = metadata.functionWithMetadata(outerContext, sourceInfo)
|
val metadata = InlineMetadata.compose(function, descriptor, this)
|
||||||
|
val functionWithMetadata = metadata.functionWithMetadata(outerContext, sourceInfo)
|
||||||
|
config.configuration[JSConfigurationKeys.INCREMENTAL_RESULTS_CONSUMER]?.apply {
|
||||||
|
val psiFile = (descriptor.source.containingFile as? PsiSourceFile)?.psiFile ?: return@apply
|
||||||
|
val file = VfsUtilCore.virtualToIoFile(psiFile.virtualFile)
|
||||||
|
|
||||||
config.configuration[JSConfigurationKeys.INCREMENTAL_RESULTS_CONSUMER]?.apply {
|
val fqName = when (descriptor) {
|
||||||
val psiFile = (descriptor.source.containingFile as? PsiSourceFile)?.psiFile ?: return@apply
|
is PropertyGetterDescriptor -> {
|
||||||
val file = VfsUtilCore.virtualToIoFile(psiFile.virtualFile)
|
"<get>" + descriptor.correspondingProperty.fqNameSafe.asString()
|
||||||
|
}
|
||||||
|
is PropertySetterDescriptor -> {
|
||||||
|
"<set>" + descriptor.correspondingProperty.fqNameSafe.asString()
|
||||||
|
}
|
||||||
|
else -> descriptor.fqNameSafe.asString()
|
||||||
|
}
|
||||||
|
|
||||||
val fqName = when (descriptor) {
|
processInlineFunction(file, fqName, functionWithMetadata)
|
||||||
is PropertyGetterDescriptor -> {
|
|
||||||
"<get>" + descriptor.correspondingProperty.fqNameSafe.asString()
|
|
||||||
}
|
|
||||||
is PropertySetterDescriptor -> {
|
|
||||||
"<set>" + descriptor.correspondingProperty.fqNameSafe.asString()
|
|
||||||
}
|
|
||||||
else -> descriptor.fqNameSafe.asString()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
processInlineFunction(file, fqName, functionWithMetadata)
|
functionWithMetadata
|
||||||
}
|
|
||||||
|
|
||||||
functionWithMetadata
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
val block = if (descriptor.isInline) {
|
|
||||||
inlineFunctionContext!!.let {
|
|
||||||
JsBlock(it.importBlock.statements + it.prototypeBlock.statements + it.declarationsBlock.statements +
|
|
||||||
JsReturn(function))
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
null
|
val block =
|
||||||
|
inlineFunctionContext!!.let {
|
||||||
|
JsBlock(it.importBlock.statements + it.prototypeBlock.statements + it.declarationsBlock.statements +
|
||||||
|
JsReturn(function))
|
||||||
|
}
|
||||||
|
InlineMetadata.wrapFunction(outerContext, FunctionWithWrapper(function, block), sourceInfo)
|
||||||
}
|
}
|
||||||
if (block != null) InlineMetadata.wrapFunction(outerContext, FunctionWithWrapper(function, block), sourceInfo) else function
|
}
|
||||||
|
else {
|
||||||
|
function
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user