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 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
} }
} }