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 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.metadata.descriptor
|
||||
import org.jetbrains.kotlin.js.backend.ast.metadata.functionDescriptor
|
||||
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.descriptorUtils.shouldBeExported
|
||||
import org.jetbrains.kotlin.js.inline.util.FunctionWithWrapper
|
||||
import org.jetbrains.kotlin.js.translate.context.Namer
|
||||
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.descriptorUtil.fqNameSafe
|
||||
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.getPsi
|
||||
|
||||
fun TranslationContext.translateAndAliasParameters(
|
||||
descriptor: FunctionDescriptor,
|
||||
@@ -106,39 +105,39 @@ fun TranslationContext.wrapWithInlineMetadata(
|
||||
function: JsFunction, descriptor: FunctionDescriptor
|
||||
): JsExpression {
|
||||
val sourceInfo = descriptor.source.getPsi()
|
||||
return if (descriptor.isInline && descriptor.shouldBeExported(config)) {
|
||||
val metadata = InlineMetadata.compose(function, descriptor, this)
|
||||
val functionWithMetadata = metadata.functionWithMetadata(outerContext, sourceInfo)
|
||||
return if (descriptor.isInline) {
|
||||
if (descriptor.shouldBeExported(config)) {
|
||||
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 psiFile = (descriptor.source.containingFile as? PsiSourceFile)?.psiFile ?: return@apply
|
||||
val file = VfsUtilCore.virtualToIoFile(psiFile.virtualFile)
|
||||
val fqName = when (descriptor) {
|
||||
is PropertyGetterDescriptor -> {
|
||||
"<get>" + descriptor.correspondingProperty.fqNameSafe.asString()
|
||||
}
|
||||
is PropertySetterDescriptor -> {
|
||||
"<set>" + descriptor.correspondingProperty.fqNameSafe.asString()
|
||||
}
|
||||
else -> descriptor.fqNameSafe.asString()
|
||||
}
|
||||
|
||||
val fqName = when (descriptor) {
|
||||
is PropertyGetterDescriptor -> {
|
||||
"<get>" + descriptor.correspondingProperty.fqNameSafe.asString()
|
||||
}
|
||||
is PropertySetterDescriptor -> {
|
||||
"<set>" + descriptor.correspondingProperty.fqNameSafe.asString()
|
||||
}
|
||||
else -> descriptor.fqNameSafe.asString()
|
||||
processInlineFunction(file, fqName, functionWithMetadata)
|
||||
}
|
||||
|
||||
processInlineFunction(file, fqName, functionWithMetadata)
|
||||
}
|
||||
|
||||
functionWithMetadata
|
||||
}
|
||||
else {
|
||||
val block = if (descriptor.isInline) {
|
||||
inlineFunctionContext!!.let {
|
||||
JsBlock(it.importBlock.statements + it.prototypeBlock.statements + it.declarationsBlock.statements +
|
||||
JsReturn(function))
|
||||
}
|
||||
functionWithMetadata
|
||||
}
|
||||
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