From 1c67e4cf217713568da59bc3a59a0de8a0140a43 Mon Sep 17 00:00:00 2001 From: Anton Bannykh Date: Wed, 6 Feb 2019 20:05:15 +0300 Subject: [PATCH] JS: simplify and fix the AST visitor code. --- .../kotlin/js/inline/InlineAstVisitor.kt | 38 ++++--------------- 1 file changed, 8 insertions(+), 30 deletions(-) diff --git a/js/js.inliner/src/org/jetbrains/kotlin/js/inline/InlineAstVisitor.kt b/js/js.inliner/src/org/jetbrains/kotlin/js/inline/InlineAstVisitor.kt index 5906a8cf775..fc659177aa0 100644 --- a/js/js.inliner/src/org/jetbrains/kotlin/js/inline/InlineAstVisitor.kt +++ b/js/js.inliner/src/org/jetbrains/kotlin/js/inline/InlineAstVisitor.kt @@ -24,39 +24,17 @@ class InlineAstVisitor( private val jsInliner: JsInliner, private val scope: InliningScope ) : JsVisitorWithContextImpl() { - - override fun visit(x: JsBinaryOperation, ctx: JsContext<*>): Boolean { - val assignment = JsAstUtils.decomposeAssignment(x) - if (assignment != null) { - val (left, right) = assignment - if (left is JsNameRef) { - val name = left.name - if (name != null) { - extractFunction(right)?.let { function -> - jsInliner.process(InlineFunctionDefinition(function, null), null, scope.fragment) - } - } - } - } - - return super.visit(x, ctx) - } - - override fun visit(x: JsVars.JsVar, ctx: JsContext<*>): Boolean { - val initializer = x.initExpression - val name = x.name - if (initializer != null && name != null) { - extractFunction(initializer)?.let { function -> - jsInliner.process(InlineFunctionDefinition(function, null), null, scope.fragment) - } - } - - return super.visit(x, ctx) - } - override fun visit(x: JsInvocation, ctx: JsContext<*>): Boolean { + // Is it `defineInlineFunction('tag', ...)`? InlineMetadata.decompose(x)?.let { jsInliner.process(InlineFunctionDefinition(it.function, it.tag.value), x, scope.fragment) + return false + } + + // Is it `wrapFunction(...)`? + InlineMetadata.tryExtractFunction(x)?.let { + jsInliner.process(InlineFunctionDefinition(it, null), x, scope.fragment) + return false } return super.visit(x, ctx)