Minor refactoring after improving JS inliner

This commit is contained in:
Alexey Andreev
2017-07-28 11:25:12 +03:00
parent 918ce78c5a
commit df7d69b5b4
@@ -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
}
}