diff --git a/js/js.inliner/src/org/jetbrains/kotlin/js/inline/ExpressionDecomposer.kt b/js/js.inliner/src/org/jetbrains/kotlin/js/inline/ExpressionDecomposer.kt index ce603ec3434..388865a9f72 100644 --- a/js/js.inliner/src/org/jetbrains/kotlin/js/inline/ExpressionDecomposer.kt +++ b/js/js.inliner/src/org/jetbrains/kotlin/js/inline/ExpressionDecomposer.kt @@ -72,7 +72,7 @@ internal class ExpressionDecomposer private constructor( } // TODO: add test case (after KT-7371 fix): var a = foo(), b = foo() + inlineBar() - override fun visit(x: JsVars, ctx: JsContext<*>): Boolean { + override fun visit(x: JsVars, ctx: JsContext): Boolean { val vars = x.getVars() var prevVars = SmartList() @@ -91,12 +91,12 @@ internal class ExpressionDecomposer private constructor( return false } - override fun visit(x: JsWhile, ctx: JsContext<*>): Boolean { + override fun visit(x: JsWhile, ctx: JsContext): Boolean { x.process(true) return false } - override fun visit(x: JsDoWhile, ctx: JsContext<*>): Boolean { + override fun visit(x: JsDoWhile, ctx: JsContext): Boolean { x.process(false) return false } @@ -126,7 +126,7 @@ internal class ExpressionDecomposer private constructor( } // TODO: comma operator? - override fun visit(x: JsBinaryOperation, ctx: JsContext<*>): Boolean { + override fun visit(x: JsBinaryOperation, ctx: JsContext): Boolean { x.arg1 = accept(x.arg1) when (x.operator) { @@ -138,7 +138,7 @@ internal class ExpressionDecomposer private constructor( return false } - private fun JsBinaryOperation.processOrAnd(ctx: JsContext<*>) { + private fun JsBinaryOperation.processOrAnd(ctx: JsContext) { if (arg2 !in containsExtractable) return val tmp = Temporary(arg1) @@ -176,13 +176,13 @@ internal class ExpressionDecomposer private constructor( arg2 = accept(arg2) } - override fun visit(x: JsArrayLiteral, ctx: JsContext<*>): Boolean { + override fun visit(x: JsArrayLiteral, ctx: JsContext): Boolean { val elements = x.getExpressions() processByIndices(elements, elements.indicesOfExtractable) return false } - override fun visit(x: JsArrayAccess, ctx: JsContext<*>): Boolean { + override fun visit(x: JsArrayAccess, ctx: JsContext): Boolean { x.process() return false } @@ -197,12 +197,12 @@ internal class ExpressionDecomposer private constructor( index = accept(index) } - override fun visit(x: JsConditional, ctx: JsContext<*>): Boolean { + override fun visit(x: JsConditional, ctx: JsContext): Boolean { x.process(ctx) return false } - private fun JsConditional.process(ctx: JsContext<*>) { + private fun JsConditional.process(ctx: JsContext) { test = accept(test) if (then !in containsExtractable && otherwise !in containsExtractable) return @@ -226,12 +226,12 @@ internal class ExpressionDecomposer private constructor( ctx.replaceMe(tmp.nameRef) } - override fun visit(x: JsInvocation, ctx: JsContext<*>): Boolean { + override fun visit(x: JsInvocation, ctx: JsContext): Boolean { CallableInvocationAdapter(x).process() return false } - override fun visit(x: JsNew, ctx: JsContext<*>): Boolean { + override fun visit(x: JsNew, ctx: JsContext): Boolean { CallableNewAdapter(x).process() return false } @@ -339,69 +339,69 @@ internal class ExpressionDecomposer private constructor( */ internal open class JsExpressionVisitor() : JsVisitorWithContextImpl() { - override fun visit(x: JsBlock, ctx: JsContext<*>): Boolean = false - override fun visit(x: JsTry, ctx: JsContext<*>): Boolean = false - override fun visit(x: JsDebugger, ctx: JsContext<*>): Boolean = false - override fun visit(x: JsLabel, ctx: JsContext<*>): Boolean = false - override fun visit(x: JsFunction, ctx: JsContext<*>): Boolean = false - override fun visit(x: JsObjectLiteral, ctx: JsContext<*>): Boolean = false - override fun visit(x: JsPropertyInitializer, ctx: JsContext<*>): Boolean = false - override fun visit(x: JsProgramFragment, ctx: JsContext<*>): Boolean = false - override fun visit(x: JsProgram, ctx: JsContext<*>): Boolean = false - override fun visit(x: JsParameter, ctx: JsContext<*>): Boolean = false - override fun visit(x: JsCatch, ctx: JsContext<*>): Boolean = false - override fun visit(x: JsBreak, ctx: JsContext<*>): Boolean = false - override fun visit(x: JsContinue, ctx: JsContext<*>): Boolean = false - override fun visit(x: JsCase, ctx: JsContext<*>): Boolean = false - override fun visit(x: JsDefault, ctx: JsContext<*>): Boolean = false - override fun visit(x: JsEmpty, ctx: JsContext<*>): Boolean = false - override fun visit(x: JsLiteral.JsBooleanLiteral, ctx: JsContext<*>): Boolean = false - override fun visit(x: JsLiteral.JsThisRef, ctx: JsContext<*>): Boolean = false - override fun visit(x: JsNullLiteral, ctx: JsContext<*>): Boolean = false - override fun visit(x: JsNumberLiteral, ctx: JsContext<*>): Boolean = false - override fun visit(x: JsRegExp, ctx: JsContext<*>): Boolean = false - override fun visit(x: JsStringLiteral, ctx: JsContext<*>): Boolean = false - override fun visit(x: JsName, ctx: JsContext<*>): Boolean = false + override fun visit(x: JsBlock, ctx: JsContext): Boolean = false + override fun visit(x: JsTry, ctx: JsContext): Boolean = false + override fun visit(x: JsDebugger, ctx: JsContext): Boolean = false + override fun visit(x: JsLabel, ctx: JsContext): Boolean = false + override fun visit(x: JsFunction, ctx: JsContext): Boolean = false + override fun visit(x: JsObjectLiteral, ctx: JsContext): Boolean = false + override fun visit(x: JsPropertyInitializer, ctx: JsContext): Boolean = false + override fun visit(x: JsProgramFragment, ctx: JsContext): Boolean = false + override fun visit(x: JsProgram, ctx: JsContext): Boolean = false + override fun visit(x: JsParameter, ctx: JsContext): Boolean = false + override fun visit(x: JsCatch, ctx: JsContext): Boolean = false + override fun visit(x: JsBreak, ctx: JsContext): Boolean = false + override fun visit(x: JsContinue, ctx: JsContext): Boolean = false + override fun visit(x: JsCase, ctx: JsContext): Boolean = false + override fun visit(x: JsDefault, ctx: JsContext): Boolean = false + override fun visit(x: JsEmpty, ctx: JsContext): Boolean = false + override fun visit(x: JsLiteral.JsBooleanLiteral, ctx: JsContext): Boolean = false + override fun visit(x: JsLiteral.JsThisRef, ctx: JsContext): Boolean = false + override fun visit(x: JsNullLiteral, ctx: JsContext): Boolean = false + override fun visit(x: JsNumberLiteral, ctx: JsContext): Boolean = false + override fun visit(x: JsRegExp, ctx: JsContext): Boolean = false + override fun visit(x: JsStringLiteral, ctx: JsContext): Boolean = false + override fun visit(x: JsName, ctx: JsContext): Boolean = false // TODO: support these // Not generated by compiler now, (can be generated in future or used in js() block) - override fun visit(x: JsForIn, ctx: JsContext<*>): Boolean = false - override fun visit(x: JsSwitch, ctx: JsContext<*>): Boolean = false + override fun visit(x: JsForIn, ctx: JsContext): Boolean = false + override fun visit(x: JsSwitch, ctx: JsContext): Boolean = false // Compiler generates restricted version of for, // where init and test do not contain inline calls. - override fun visit(x: JsFor, ctx: JsContext<*>): Boolean = false + override fun visit(x: JsFor, ctx: JsContext): Boolean = false - override fun visit(x: JsIf, ctx: JsContext<*>): Boolean { + override fun visit(x: JsIf, ctx: JsContext): Boolean { val test = x.getIfExpression() x.setIfExpression(accept(test)) return false } - override fun visit(x: JsWhile, ctx: JsContext<*>): Boolean { + override fun visit(x: JsWhile, ctx: JsContext): Boolean { x.test = accept(x.test) return false } - override fun visit(x: JsDoWhile, ctx: JsContext<*>): Boolean { + override fun visit(x: JsDoWhile, ctx: JsContext): Boolean { x.test = accept(x.test) return false } - override fun visit(x: JsArrayAccess, ctx: JsContext<*>): Boolean = true - override fun visit(x: JsArrayLiteral, ctx: JsContext<*>): Boolean = true - override fun visit(x: JsBinaryOperation, ctx: JsContext<*>): Boolean = true - override fun visit(x: JsConditional, ctx: JsContext<*>): Boolean = true - override fun visit(x: JsInvocation, ctx: JsContext<*>): Boolean = true - override fun visit(x: JsNameRef, ctx: JsContext<*>): Boolean = true - override fun visit(x: JsNew, ctx: JsContext<*>): Boolean = true - override fun visit(x: JsVars.JsVar, ctx: JsContext<*>): Boolean = true - override fun visit(x: JsPostfixOperation, ctx: JsContext<*>): Boolean = true - override fun visit(x: JsPrefixOperation, ctx: JsContext<*>): Boolean = true - override fun visit(x: JsExpressionStatement, ctx: JsContext<*>): Boolean = true - override fun visit(x: JsReturn, ctx: JsContext<*>): Boolean = true - override fun visit(x: JsThrow, ctx: JsContext<*>): Boolean = true - override fun visit(x: JsVars, ctx: JsContext<*>): Boolean = true + override fun visit(x: JsArrayAccess, ctx: JsContext): Boolean = true + override fun visit(x: JsArrayLiteral, ctx: JsContext): Boolean = true + override fun visit(x: JsBinaryOperation, ctx: JsContext): Boolean = true + override fun visit(x: JsConditional, ctx: JsContext): Boolean = true + override fun visit(x: JsInvocation, ctx: JsContext): Boolean = true + override fun visit(x: JsNameRef, ctx: JsContext): Boolean = true + override fun visit(x: JsNew, ctx: JsContext): Boolean = true + override fun visit(x: JsVars.JsVar, ctx: JsContext): Boolean = true + override fun visit(x: JsPostfixOperation, ctx: JsContext): Boolean = true + override fun visit(x: JsPrefixOperation, ctx: JsContext): Boolean = true + override fun visit(x: JsExpressionStatement, ctx: JsContext): Boolean = true + override fun visit(x: JsReturn, ctx: JsContext): Boolean = true + override fun visit(x: JsThrow, ctx: JsContext): Boolean = true + override fun visit(x: JsVars, ctx: JsContext): Boolean = true } /** @@ -411,7 +411,7 @@ private fun JsNode.match(predicate: (JsNode) -> Boolean): Set { val visitor = object : JsExpressionVisitor() { val matched = IdentitySet() - override fun doTraverse(node: R, ctx: JsContext<*>?) { + override fun doTraverse(node: R, ctx: JsContext?) { super.doTraverse(node, ctx) if (node !in matched && predicate(node)) { @@ -432,7 +432,7 @@ private fun JsNode.withParentsOfNodes(nodes: Set): Set { private val stack = SmartList() val matched = IdentitySet() - override fun doTraverse(node: R, ctx: JsContext<*>?) { + override fun doTraverse(node: R, ctx: JsContext?) { stack.add(node) super.doTraverse(node, ctx) diff --git a/js/js.inliner/src/org/jetbrains/kotlin/js/inline/FunctionReader.kt b/js/js.inliner/src/org/jetbrains/kotlin/js/inline/FunctionReader.kt index 3517ac5f173..13a3b13901d 100644 --- a/js/js.inliner/src/org/jetbrains/kotlin/js/inline/FunctionReader.kt +++ b/js/js.inliner/src/org/jetbrains/kotlin/js/inline/FunctionReader.kt @@ -179,7 +179,7 @@ private fun replaceExternalNames(function: JsFunction, externalReplacements: Map if (replacements.isEmpty()) return val visitor = object: JsVisitorWithContextImpl() { - override fun endVisit(x: JsNameRef, ctx: JsContext<*>) { + override fun endVisit(x: JsNameRef, ctx: JsContext) { if (x.getQualifier() != null) return replacements[x.getIdent()]?.let { diff --git a/js/js.inliner/src/org/jetbrains/kotlin/js/inline/util/rewriters/NameReplacingVisitor.kt b/js/js.inliner/src/org/jetbrains/kotlin/js/inline/util/rewriters/NameReplacingVisitor.kt index 24c2043b42c..8f89be57061 100644 --- a/js/js.inliner/src/org/jetbrains/kotlin/js/inline/util/rewriters/NameReplacingVisitor.kt +++ b/js/js.inliner/src/org/jetbrains/kotlin/js/inline/util/rewriters/NameReplacingVisitor.kt @@ -16,25 +16,18 @@ package org.jetbrains.kotlin.js.inline.util.rewriters -import com.google.dart.compiler.backend.js.ast.JsVisitorWithContextImpl -import com.google.dart.compiler.backend.js.ast.JsName -import com.google.dart.compiler.backend.js.ast.JsExpression -import com.google.dart.compiler.backend.js.ast.JsNameRef -import com.google.dart.compiler.backend.js.ast.JsContext -import com.google.dart.compiler.backend.js.ast.JsVars -import com.google.dart.compiler.backend.js.ast.HasName -import com.google.dart.compiler.backend.js.ast.JsLabel +import com.google.dart.compiler.backend.js.ast.* class NameReplacingVisitor(private val replaceMap: Map) : JsVisitorWithContextImpl() { - override fun endVisit(x: JsNameRef, ctx: JsContext<*>) { + override fun endVisit(x: JsNameRef, ctx: JsContext) { val replacement = replaceMap[x.getName()] if (replacement == null) return ctx.replaceMe(replacement) } - override fun endVisit(x: JsVars.JsVar, ctx: JsContext<*>) { + override fun endVisit(x: JsVars.JsVar, ctx: JsContext) { val replacement = replaceMap[x.getName()] if (replacement is HasName) { val replacementVar = JsVars.JsVar(replacement.getName(), x.getInitExpression()) @@ -42,7 +35,7 @@ class NameReplacingVisitor(private val replaceMap: Map) : } } - override fun endVisit(x: JsLabel, ctx: JsContext<*>) { + override fun endVisit(x: JsLabel, ctx: JsContext) { val replacement = replaceMap[x.getName()] if (replacement is HasName) { val replacementLabel = JsLabel(replacement.getName(), x.getStatement()) diff --git a/js/js.inliner/src/org/jetbrains/kotlin/js/inline/util/rewriters/ReturnReplacingVisitor.kt b/js/js.inliner/src/org/jetbrains/kotlin/js/inline/util/rewriters/ReturnReplacingVisitor.kt index a75bba84b92..fdfcdc9a65d 100644 --- a/js/js.inliner/src/org/jetbrains/kotlin/js/inline/util/rewriters/ReturnReplacingVisitor.kt +++ b/js/js.inliner/src/org/jetbrains/kotlin/js/inline/util/rewriters/ReturnReplacingVisitor.kt @@ -16,15 +16,7 @@ package org.jetbrains.kotlin.js.inline.util.rewriters -import com.google.dart.compiler.backend.js.ast.JsBreak -import com.google.dart.compiler.backend.js.ast.JsContext -import com.google.dart.compiler.backend.js.ast.JsExpression -import com.google.dart.compiler.backend.js.ast.JsExpressionStatement -import com.google.dart.compiler.backend.js.ast.JsFunction -import com.google.dart.compiler.backend.js.ast.JsNameRef -import com.google.dart.compiler.backend.js.ast.JsObjectLiteral -import com.google.dart.compiler.backend.js.ast.JsReturn -import com.google.dart.compiler.backend.js.ast.JsVisitorWithContextImpl +import com.google.dart.compiler.backend.js.ast.* import org.jetbrains.kotlin.js.inline.util.canHaveSideEffect import org.jetbrains.kotlin.js.translate.utils.JsAstUtils @@ -33,14 +25,14 @@ public class ReturnReplacingVisitor(private val resultRef: JsNameRef?, private v /** * Prevents replacing returns in object literal */ - override fun visit(x: JsObjectLiteral, ctx: JsContext<*>): Boolean = false + override fun visit(x: JsObjectLiteral, ctx: JsContext): Boolean = false /** * Prevents replacing returns in inner function */ - override fun visit(x: JsFunction, ctx: JsContext<*>): Boolean = false + override fun visit(x: JsFunction, ctx: JsContext): Boolean = false - override fun endVisit(x: JsReturn, ctx: JsContext<*>) { + override fun endVisit(x: JsReturn, ctx: JsContext) { ctx.removeMe() val returnReplacement = getReturnReplacement(x.getExpression()) diff --git a/js/js.inliner/src/org/jetbrains/kotlin/js/inline/util/rewriters/ThisReplacingVisitor.kt b/js/js.inliner/src/org/jetbrains/kotlin/js/inline/util/rewriters/ThisReplacingVisitor.kt index 13815ed438f..79deda8b02b 100644 --- a/js/js.inliner/src/org/jetbrains/kotlin/js/inline/util/rewriters/ThisReplacingVisitor.kt +++ b/js/js.inliner/src/org/jetbrains/kotlin/js/inline/util/rewriters/ThisReplacingVisitor.kt @@ -16,19 +16,14 @@ package org.jetbrains.kotlin.js.inline.util.rewriters -import com.google.dart.compiler.backend.js.ast.JsContext -import com.google.dart.compiler.backend.js.ast.JsExpression -import com.google.dart.compiler.backend.js.ast.JsFunction -import com.google.dart.compiler.backend.js.ast.JsLiteral -import com.google.dart.compiler.backend.js.ast.JsObjectLiteral -import com.google.dart.compiler.backend.js.ast.JsVisitorWithContextImpl +import com.google.dart.compiler.backend.js.ast.* class ThisReplacingVisitor(private val thisReplacement: JsExpression) : JsVisitorWithContextImpl() { - override fun endVisit(x: JsLiteral.JsThisRef, ctx: JsContext<*>) { + override fun endVisit(x: JsLiteral.JsThisRef, ctx: JsContext) { ctx.replaceMe(thisReplacement) } - override fun visit(x: JsFunction, ctx: JsContext<*>) = false + override fun visit(x: JsFunction, ctx: JsContext) = false - override fun visit(x: JsObjectLiteral, ctx: JsContext<*>) = false + override fun visit(x: JsObjectLiteral, ctx: JsContext) = false } diff --git a/js/js.translator/src/org/jetbrains/kotlin/js/translate/utils/expandIsCalls.kt b/js/js.translator/src/org/jetbrains/kotlin/js/translate/utils/expandIsCalls.kt index 17f515fcab1..f0ff48caba8 100644 --- a/js/js.translator/src/org/jetbrains/kotlin/js/translate/utils/expandIsCalls.kt +++ b/js/js.translator/src/org/jetbrains/kotlin/js/translate/utils/expandIsCalls.kt @@ -24,7 +24,7 @@ import org.jetbrains.kotlin.js.translate.utils.JsAstUtils.* public fun expandIsCalls(node: JsNode, context: TranslationContext) { val visitor = object : JsVisitorWithContextImpl() { - override fun visit(x: JsInvocation, ctx: JsContext<*>): Boolean { + override fun visit(x: JsInvocation, ctx: JsContext): Boolean { val callee = x.getQualifier() as? JsInvocation val instance = x.getArguments().firstOrNull() val type = callee?.getArguments()?.firstOrNull()