diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/expression/TryTranslator.java b/js/js.translator/src/org/jetbrains/k2js/translate/expression/TryTranslator.java index 2e5c43c1c6e..07c14dcfc29 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/expression/TryTranslator.java +++ b/js/js.translator/src/org/jetbrains/k2js/translate/expression/TryTranslator.java @@ -16,6 +16,7 @@ package org.jetbrains.k2js.translate.expression; +import com.google.common.collect.Lists; import com.google.dart.compiler.backend.js.ast.JsBlock; import com.google.dart.compiler.backend.js.ast.JsCatch; import com.google.dart.compiler.backend.js.ast.JsName; @@ -27,7 +28,6 @@ import org.jetbrains.k2js.translate.context.TranslationContext; import org.jetbrains.k2js.translate.general.AbstractTranslator; import org.jetbrains.k2js.translate.general.Translation; -import java.util.ArrayList; import java.util.List; import static org.jetbrains.k2js.translate.utils.JsAstUtils.convertToBlock; @@ -55,11 +55,7 @@ public final class TryTranslator extends AbstractTranslator { } private JsTry translate() { - JsTry result = new JsTry(); - result.setTryBlock(translateTryBlock()); - result.setFinallyBlock(translateFinallyBlock()); - result.getCatches().addAll(translateCatches()); - return result; + return new JsTry(translateTryBlock(), translateCatches(), translateFinallyBlock()); } @Nullable @@ -75,10 +71,9 @@ public final class TryTranslator extends AbstractTranslator { return convertToBlock(Translation.translateAsStatement(expression.getTryBlock(), context())); } - @NotNull private List translateCatches() { - List result = new ArrayList(); + List result = Lists.newArrayList(); for (JetCatchClause catchClause : expression.getCatchClauses()) { result.add(translateCatchClause(catchClause)); } diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/expression/WhenTranslator.java b/js/js.translator/src/org/jetbrains/k2js/translate/expression/WhenTranslator.java index ce484b9bba9..5d5a8d0131b 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/expression/WhenTranslator.java +++ b/js/js.translator/src/org/jetbrains/k2js/translate/expression/WhenTranslator.java @@ -67,7 +67,7 @@ public final class WhenTranslator extends AbstractTranslator { @NotNull JsNode translate() { JsFor resultingFor = generateDummyFor(); - resultingFor.setBody(newBlock(translateEntries())); + resultingFor.setBody(new JsBlock(translateEntries())); context().addStatementToCurrentBlock(resultingFor); return result.reference(); } diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/expression/foreach/ArrayForTranslator.java b/js/js.translator/src/org/jetbrains/k2js/translate/expression/foreach/ArrayForTranslator.java index 11d6acb8407..3bb95c9f10f 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/expression/foreach/ArrayForTranslator.java +++ b/js/js.translator/src/org/jetbrains/k2js/translate/expression/foreach/ArrayForTranslator.java @@ -82,7 +82,7 @@ public final class ArrayForTranslator extends ForTranslator { List blockStatements = Lists.newArrayList(); blockStatements.add(temporariesInitialization(loopRange, end).makeStmt()); blockStatements.add(generateForExpression(getInitExpression(), getCondition(), getIncrementExpression(), getBody())); - return newBlock(blockStatements); + return new JsBlock(blockStatements); } diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/expression/foreach/RangeLiteralForTranslator.java b/js/js.translator/src/org/jetbrains/k2js/translate/expression/foreach/RangeLiteralForTranslator.java index 262f9b5f896..babc6e49d0f 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/expression/foreach/RangeLiteralForTranslator.java +++ b/js/js.translator/src/org/jetbrains/k2js/translate/expression/foreach/RangeLiteralForTranslator.java @@ -86,7 +86,7 @@ public final class RangeLiteralForTranslator extends ForTranslator { getCondition(), getIncrExpression(), translateOriginalBodyExpression())); - return newBlock(blockStatements); + return new JsBlock(blockStatements); } @NotNull @@ -101,6 +101,6 @@ public final class RangeLiteralForTranslator extends ForTranslator { @NotNull private JsExpression getIncrExpression() { - return new JsPrefixOperation(JsUnaryOperator.INC, parameterName.makeRef()); + return new JsPostfixOperation(JsUnaryOperator.INC, parameterName.makeRef()); } } diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/initializer/ClassInitializerTranslator.java b/js/js.translator/src/org/jetbrains/k2js/translate/initializer/ClassInitializerTranslator.java index 8baff78f32f..42906d6e8ec 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/initializer/ClassInitializerTranslator.java +++ b/js/js.translator/src/org/jetbrains/k2js/translate/initializer/ClassInitializerTranslator.java @@ -34,7 +34,8 @@ import java.util.ArrayList; import java.util.List; import static org.jetbrains.k2js.translate.utils.BindingUtils.*; -import static org.jetbrains.k2js.translate.utils.JsAstUtils.*; +import static org.jetbrains.k2js.translate.utils.JsAstUtils.convertToStatement; +import static org.jetbrains.k2js.translate.utils.JsAstUtils.setParameters; import static org.jetbrains.k2js.translate.utils.PsiUtils.getPrimaryConstructorParameters; import static org.jetbrains.k2js.translate.utils.TranslationUtils.translateArgumentList; @@ -90,7 +91,7 @@ public final class ClassInitializerTranslator extends AbstractTranslator { } else { JsName superMethodName = context().scope().declareName(Namer.superMethodName()); - initializerStatements.add(convertToStatement(newInvocation(thisQualifiedReference(superMethodName), arguments))); + initializerStatements.add(convertToStatement(new JsInvocation(new JsNameRef(superMethodName, JsLiteral.THIS), arguments))); } } diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/intrinsic/functions/basic/BuiltInFunctionIntrinsic.java b/js/js.translator/src/org/jetbrains/k2js/translate/intrinsic/functions/basic/BuiltInFunctionIntrinsic.java index 3a226d57428..82acff0ffca 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/intrinsic/functions/basic/BuiltInFunctionIntrinsic.java +++ b/js/js.translator/src/org/jetbrains/k2js/translate/intrinsic/functions/basic/BuiltInFunctionIntrinsic.java @@ -17,17 +17,14 @@ package org.jetbrains.k2js.translate.intrinsic.functions.basic; import com.google.dart.compiler.backend.js.ast.JsExpression; +import com.google.dart.compiler.backend.js.ast.JsInvocation; import com.google.dart.compiler.backend.js.ast.JsNameRef; -import com.google.dart.compiler.util.AstUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.k2js.translate.context.TranslationContext; import java.util.List; -import static org.jetbrains.k2js.translate.utils.JsAstUtils.newInvocation; -import static org.jetbrains.k2js.translate.utils.JsAstUtils.setQualifier; - /** * @author Pavel Talanov */ @@ -45,8 +42,6 @@ public final class BuiltInFunctionIntrinsic extends FunctionIntrinsic { public JsExpression apply(@Nullable JsExpression receiver, @NotNull List arguments, @NotNull TranslationContext context) { assert receiver != null; - JsNameRef functionReference = AstUtil.newQualifiedNameRef(functionName); - setQualifier(functionReference, receiver); - return newInvocation(functionReference, arguments); + return new JsInvocation(new JsNameRef(functionName, receiver), arguments); } } \ No newline at end of file diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/intrinsic/functions/basic/BuiltInPropertyIntrinsic.java b/js/js.translator/src/org/jetbrains/k2js/translate/intrinsic/functions/basic/BuiltInPropertyIntrinsic.java index dbea4dbdba4..08b24f60858 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/intrinsic/functions/basic/BuiltInPropertyIntrinsic.java +++ b/js/js.translator/src/org/jetbrains/k2js/translate/intrinsic/functions/basic/BuiltInPropertyIntrinsic.java @@ -2,15 +2,12 @@ package org.jetbrains.k2js.translate.intrinsic.functions.basic; import com.google.dart.compiler.backend.js.ast.JsExpression; import com.google.dart.compiler.backend.js.ast.JsNameRef; -import com.google.dart.compiler.util.AstUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.k2js.translate.context.TranslationContext; import java.util.List; -import static org.jetbrains.k2js.translate.utils.JsAstUtils.setQualifier; - /** * @author Pavel Talanov */ @@ -30,8 +27,6 @@ public final class BuiltInPropertyIntrinsic extends FunctionIntrinsic { @NotNull TranslationContext context) { assert receiver != null; assert arguments.isEmpty() : "Properties can't have arguments."; - JsNameRef propertyReference = AstUtil.newQualifiedNameRef(propertyName); - setQualifier(propertyReference, receiver); - return propertyReference; + return new JsNameRef(propertyName, receiver); } } \ No newline at end of file diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/intrinsic/functions/basic/CallStandardMethodIntrinsic.java b/js/js.translator/src/org/jetbrains/k2js/translate/intrinsic/functions/basic/CallStandardMethodIntrinsic.java index 37cc724a83b..5529cf7209d 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/intrinsic/functions/basic/CallStandardMethodIntrinsic.java +++ b/js/js.translator/src/org/jetbrains/k2js/translate/intrinsic/functions/basic/CallStandardMethodIntrinsic.java @@ -18,8 +18,8 @@ package org.jetbrains.k2js.translate.intrinsic.functions.basic; import com.google.common.collect.Lists; import com.google.dart.compiler.backend.js.ast.JsExpression; +import com.google.dart.compiler.backend.js.ast.JsInvocation; import com.google.dart.compiler.backend.js.ast.JsNameRef; -import com.google.dart.compiler.util.AstUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.k2js.translate.context.TranslationContext; @@ -27,20 +27,18 @@ import org.jetbrains.k2js.translate.context.TranslationContext; import java.util.List; import static org.jetbrains.k2js.translate.utils.ErrorReportingUtils.atLocation; -import static org.jetbrains.k2js.translate.utils.JsAstUtils.newInvocation; /** * @author Pavel Talanov */ public final class CallStandardMethodIntrinsic extends FunctionIntrinsic { - @NotNull - private final String methodName; + private final JsNameRef methodName; private final boolean receiverShouldBeNotNull; private final int expectedParamsNumber; - public CallStandardMethodIntrinsic(@NotNull String methodName, boolean receiverShouldBeNotNull, int expectedParamsNumber) { + public CallStandardMethodIntrinsic(@NotNull JsNameRef methodName, boolean receiverShouldBeNotNull, int expectedParamsNumber) { this.methodName = methodName; this.receiverShouldBeNotNull = receiverShouldBeNotNull; this.expectedParamsNumber = expectedParamsNumber; @@ -53,14 +51,13 @@ public final class CallStandardMethodIntrinsic extends FunctionIntrinsic { @NotNull TranslationContext context) { assert (receiver != null == receiverShouldBeNotNull); assert arguments.size() == expectedParamsNumber : errorMessage(receiver, arguments); - JsNameRef iteratorFunName = AstUtil.newQualifiedNameRef(methodName); - return newInvocation(iteratorFunName, composeArguments(receiver, arguments)); + return new JsInvocation(methodName, composeArguments(receiver, arguments)); } @NotNull private String errorMessage(@Nullable JsExpression receiver, @NotNull List arguments) { return "Incorrect number of arguments " + arguments.size() + " when expected " + expectedParamsNumber + " on method " + methodName + " " + - atLocation(receiver, arguments); + atLocation(receiver, arguments); } @NotNull @@ -75,4 +72,4 @@ public final class CallStandardMethodIntrinsic extends FunctionIntrinsic { return arguments; } } -} \ No newline at end of file +} diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/intrinsic/functions/factories/ArrayFIF.java b/js/js.translator/src/org/jetbrains/k2js/translate/intrinsic/functions/factories/ArrayFIF.java index 61cf38db979..2a305b5c61e 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/intrinsic/functions/factories/ArrayFIF.java +++ b/js/js.translator/src/org/jetbrains/k2js/translate/intrinsic/functions/factories/ArrayFIF.java @@ -19,6 +19,7 @@ package org.jetbrains.k2js.translate.intrinsic.functions.factories; import com.google.common.collect.Lists; import com.google.dart.compiler.backend.js.ast.JsArrayAccess; import com.google.dart.compiler.backend.js.ast.JsExpression; +import com.google.dart.compiler.backend.js.ast.JsNameRef; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.lang.resolve.name.Name; @@ -91,8 +92,8 @@ public final class ArrayFIF extends CompositeFIF { add(pattern(ARRAYS, "get"), GET_INTRINSIC); add(pattern(ARRAYS, "set"), SET_INTRINSIC); add(pattern(ARRAYS, ""), ARRAY_LENGTH_INTRINSIC); - add(pattern(ARRAYS, ""), new CallStandardMethodIntrinsic("Kotlin.arrayIndices", true, 0)); - add(pattern(ARRAYS, "iterator"), new CallStandardMethodIntrinsic("Kotlin.arrayIterator", true, 0)); - add(pattern(ARRAYS, ""), new CallStandardMethodIntrinsic("Kotlin.arrayFromFun", false, 2)); + add(pattern(ARRAYS, ""), new CallStandardMethodIntrinsic(new JsNameRef("arrayIndices", "Kotlin"), true, 0)); + add(pattern(ARRAYS, "iterator"), new CallStandardMethodIntrinsic(new JsNameRef("arrayIterator", "Kotlin"), true, 0)); + add(pattern(ARRAYS, ""), new CallStandardMethodIntrinsic(new JsNameRef("arrayFromFun", "Kotlin"), false, 2)); } } diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/intrinsic/functions/factories/RangesFIF.java b/js/js.translator/src/org/jetbrains/k2js/translate/intrinsic/functions/factories/RangesFIF.java index d6e787d72e7..583c8e5f2d4 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/intrinsic/functions/factories/RangesFIF.java +++ b/js/js.translator/src/org/jetbrains/k2js/translate/intrinsic/functions/factories/RangesFIF.java @@ -16,6 +16,7 @@ package org.jetbrains.k2js.translate.intrinsic.functions.factories; +import com.google.dart.compiler.backend.js.ast.JsNameRef; import org.jetbrains.annotations.NotNull; import org.jetbrains.k2js.translate.intrinsic.functions.basic.CallStandardMethodIntrinsic; @@ -30,7 +31,7 @@ public final class RangesFIF extends CompositeFIF { public static final FunctionIntrinsicFactory INSTANCE = new RangesFIF(); private RangesFIF() { - add(pattern("Int.upto"), new CallStandardMethodIntrinsic("Kotlin.intUpto", true, 1)); - add(pattern("Int.downto"), new CallStandardMethodIntrinsic("Kotlin.intDownto", true, 1)); + add(pattern("Int.upto"), new CallStandardMethodIntrinsic(new JsNameRef("intUpto", "Kotlin"), true, 1)); + add(pattern("Int.downto"), new CallStandardMethodIntrinsic(new JsNameRef("intDownto", "Kotlin"), true, 1)); } } diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/intrinsic/functions/factories/StringOperationFIF.java b/js/js.translator/src/org/jetbrains/k2js/translate/intrinsic/functions/factories/StringOperationFIF.java index f74b22060f7..fa93422bd80 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/intrinsic/functions/factories/StringOperationFIF.java +++ b/js/js.translator/src/org/jetbrains/k2js/translate/intrinsic/functions/factories/StringOperationFIF.java @@ -17,6 +17,7 @@ package org.jetbrains.k2js.translate.intrinsic.functions.factories; import com.google.dart.compiler.backend.js.ast.JsExpression; +import com.google.dart.compiler.backend.js.ast.JsInvocation; import com.google.dart.compiler.backend.js.ast.JsNameRef; import com.google.dart.compiler.util.AstUtil; import org.jetbrains.annotations.NotNull; @@ -29,7 +30,6 @@ import org.jetbrains.k2js.translate.intrinsic.functions.patterns.DescriptorPredi import java.util.List; import static org.jetbrains.k2js.translate.intrinsic.functions.patterns.PatternBuilder.pattern; -import static org.jetbrains.k2js.translate.utils.JsAstUtils.newInvocation; import static org.jetbrains.k2js.translate.utils.JsAstUtils.setQualifier; /** @@ -52,7 +52,7 @@ public final class StringOperationFIF extends CompositeFIF { //TODO: provide better way JsNameRef charAtReference = AstUtil.newQualifiedNameRef("charAt"); setQualifier(charAtReference, receiver); - return newInvocation(charAtReference, arguments); + return new JsInvocation(charAtReference, arguments); } }; diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/intrinsic/functions/factories/TopLevelFIF.java b/js/js.translator/src/org/jetbrains/k2js/translate/intrinsic/functions/factories/TopLevelFIF.java index d21dc16a036..ca8f7c90e42 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/intrinsic/functions/factories/TopLevelFIF.java +++ b/js/js.translator/src/org/jetbrains/k2js/translate/intrinsic/functions/factories/TopLevelFIF.java @@ -16,6 +16,7 @@ package org.jetbrains.k2js.translate.intrinsic.functions.factories; +import com.google.dart.compiler.backend.js.ast.JsNameRef; import org.jetbrains.annotations.NotNull; import org.jetbrains.k2js.translate.intrinsic.functions.basic.BuiltInFunctionIntrinsic; import org.jetbrains.k2js.translate.intrinsic.functions.basic.CallStandardMethodIntrinsic; @@ -28,7 +29,7 @@ import static org.jetbrains.k2js.translate.intrinsic.functions.patterns.PatternB */ public final class TopLevelFIF extends CompositeFIF { @NotNull - public static final CallStandardMethodIntrinsic EQUALS = new CallStandardMethodIntrinsic("Kotlin.equals", true, 1); + public static final CallStandardMethodIntrinsic EQUALS = new CallStandardMethodIntrinsic(new JsNameRef("equals", "Kotlin"), true, 1); @NotNull public static final FunctionIntrinsicFactory INSTANCE = new TopLevelFIF(); @@ -37,6 +38,6 @@ public final class TopLevelFIF extends CompositeFIF { add(pattern("equals"), EQUALS); add(pattern(NamePredicate.PRIMITIVE_NUMBERS, "equals"), EQUALS); add(pattern("String|Boolean|Char|Number.equals"), EQUALS); - add(pattern("arrayOfNulls"), new CallStandardMethodIntrinsic("Kotlin.nullArray", false, 1)); + add(pattern("arrayOfNulls"), new CallStandardMethodIntrinsic(new JsNameRef("nullArray", "Kotlin"), false, 1)); } } diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/operation/IncrementTranslator.java b/js/js.translator/src/org/jetbrains/k2js/translate/operation/IncrementTranslator.java index 2a6dcdc3433..643c7afb8f3 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/operation/IncrementTranslator.java +++ b/js/js.translator/src/org/jetbrains/k2js/translate/operation/IncrementTranslator.java @@ -17,6 +17,8 @@ package org.jetbrains.k2js.translate.operation; import com.google.common.collect.Lists; +import com.google.dart.compiler.backend.js.ast.JsBinaryOperation; +import com.google.dart.compiler.backend.js.ast.JsBinaryOperator; import com.google.dart.compiler.backend.js.ast.JsExpression; import com.google.dart.compiler.util.AstUtil; import org.jetbrains.annotations.NotNull; @@ -89,7 +91,7 @@ public abstract class IncrementTranslator extends AbstractTranslator { JsExpression getExpression = accessTranslator.translateAsGet(); JsExpression reassignment = variableReassignment(getExpression); JsExpression getNewValue = accessTranslator.translateAsGet(); - return AstUtil.newSequence(reassignment, getNewValue); + return new JsBinaryOperation(JsBinaryOperator.COMMA, reassignment, getNewValue); } //TODO: decide if this expression can be optimised in case of direct access (not property) diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/reference/AbstractCallExpressionTranslator.java b/js/js.translator/src/org/jetbrains/k2js/translate/reference/AbstractCallExpressionTranslator.java index 1cf7f7f07ef..b619e92bade 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/reference/AbstractCallExpressionTranslator.java +++ b/js/js.translator/src/org/jetbrains/k2js/translate/reference/AbstractCallExpressionTranslator.java @@ -96,8 +96,6 @@ public abstract class AbstractCallExpressionTranslator extends AbstractTranslato @NotNull private static List wrapInArrayLiteral(@NotNull List translatedArgs) { - JsArrayLiteral argsWrappedInArray = new JsArrayLiteral(); - argsWrappedInArray.getExpressions().addAll(translatedArgs); - return Arrays.asList(argsWrappedInArray); + return Collections.singletonList(new JsArrayLiteral(translatedArgs)); } } diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/reference/CallTranslator.java b/js/js.translator/src/org/jetbrains/k2js/translate/reference/CallTranslator.java index dd24ca3e4cb..c5acf9db9ec 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/reference/CallTranslator.java +++ b/js/js.translator/src/org/jetbrains/k2js/translate/reference/CallTranslator.java @@ -196,9 +196,7 @@ public final class CallTranslator extends AbstractTranslator { @NotNull private JsExpression constructExtensionLiteralCall(@NotNull JsExpression realReceiver) { List callArguments = generateExtensionCallArgumentList(realReceiver); - JsInvocation callMethodInvocation = generateCallMethodInvocation(); - setArguments(callMethodInvocation, callArguments); - return callMethodInvocation; + return new JsInvocation(new JsNameRef("call", callParameters.getFunctionReference()), callArguments); } @NotNull @@ -233,7 +231,7 @@ public final class CallTranslator extends AbstractTranslator { List argumentList = generateExtensionCallArgumentList(receiver); JsExpression functionReference = callParameters.getFunctionReference(); setQualifier(functionReference, getThisObjectOrQualifier()); - return newInvocation(functionReference, argumentList); + return new JsInvocation(functionReference, argumentList); } @NotNull @@ -256,7 +254,7 @@ public final class CallTranslator extends AbstractTranslator { return ecma5PropertyAccess(qualifiedCallee); } - return newInvocation(qualifiedCallee, arguments); + return new JsInvocation(qualifiedCallee, arguments); } }, context()); } diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/reference/NativePropertyAccessTranslator.java b/js/js.translator/src/org/jetbrains/k2js/translate/reference/NativePropertyAccessTranslator.java index 8ac963d5905..2f75f008b75 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/reference/NativePropertyAccessTranslator.java +++ b/js/js.translator/src/org/jetbrains/k2js/translate/reference/NativePropertyAccessTranslator.java @@ -18,6 +18,7 @@ package org.jetbrains.k2js.translate.reference; import com.google.dart.compiler.backend.js.ast.JsExpression; import com.google.dart.compiler.backend.js.ast.JsName; +import com.google.dart.compiler.backend.js.ast.JsNameRef; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor; @@ -25,7 +26,6 @@ import org.jetbrains.jet.lang.descriptors.PropertyDescriptor; import org.jetbrains.k2js.translate.context.TranslationContext; import static org.jetbrains.k2js.translate.utils.JsAstUtils.assignment; -import static org.jetbrains.k2js.translate.utils.JsAstUtils.qualified; import static org.jetbrains.k2js.translate.utils.JsDescriptorUtils.getExpectedThisDescriptor; /** @@ -71,7 +71,7 @@ public final class NativePropertyAccessTranslator extends PropertyAccessTranslat private JsExpression doTranslateAsGet(JsExpression receiver) { JsName nativePropertyName = context().getNameForDescriptor(propertyDescriptor); if (receiver != null) { - return qualified(nativePropertyName, receiver); + return new JsNameRef(nativePropertyName, receiver); } else { return nativePropertyName.makeRef(); diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/reference/ReferenceTranslator.java b/js/js.translator/src/org/jetbrains/k2js/translate/reference/ReferenceTranslator.java index 74396e94106..bf8e09a34e1 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/reference/ReferenceTranslator.java +++ b/js/js.translator/src/org/jetbrains/k2js/translate/reference/ReferenceTranslator.java @@ -18,13 +18,13 @@ package org.jetbrains.k2js.translate.reference; import com.google.dart.compiler.backend.js.ast.JsExpression; import com.google.dart.compiler.backend.js.ast.JsName; +import com.google.dart.compiler.backend.js.ast.JsNameRef; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor; import org.jetbrains.jet.lang.psi.JetSimpleNameExpression; import org.jetbrains.k2js.translate.context.TranslationContext; -import static org.jetbrains.k2js.translate.utils.JsAstUtils.qualified; import static org.jetbrains.k2js.translate.utils.PsiUtils.isBackingFieldReference; /** @@ -49,7 +49,7 @@ public final class ReferenceTranslator { return translateAsLocalNameReference(referencedDescriptor, context); } JsName referencedName = context.getNameForDescriptor(referencedDescriptor); - return qualified(referencedName, qualifier); + return new JsNameRef(referencedName, qualifier); } @NotNull diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/utils/TranslationUtils.java b/js/js.translator/src/org/jetbrains/k2js/translate/utils/TranslationUtils.java index bfc97eb8570..414a447f7c1 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/utils/TranslationUtils.java +++ b/js/js.translator/src/org/jetbrains/k2js/translate/utils/TranslationUtils.java @@ -102,7 +102,7 @@ public final class TranslationUtils { public static JsNameRef backingFieldReference(@NotNull TranslationContext context, @NotNull PropertyDescriptor descriptor) { JsName backingFieldName = context.getNameForDescriptor(descriptor); - return qualified(backingFieldName, JsLiteral.THIS); + return new JsNameRef(backingFieldName, JsLiteral.THIS); } @NotNull @@ -110,7 +110,7 @@ public final class TranslationUtils { @NotNull PropertyDescriptor descriptor, @NotNull JsExpression assignTo) { JsNameRef backingFieldReference = backingFieldReference(context, descriptor); - return JsAstUtils.assignment(backingFieldReference, assignTo); + return assignment(backingFieldReference, assignTo); } @Nullable @@ -125,37 +125,8 @@ public final class TranslationUtils { } @NotNull - public static JsNameRef getQualifiedReference(@NotNull TranslationContext context, - @NotNull DeclarationDescriptor descriptor) { - JsName name = context.getNameForDescriptor(descriptor); - JsNameRef reference = name.makeRef(); - JsNameRef qualifier = context.getQualifierForDescriptor(descriptor); - if (qualifier != null) { - setQualifier(reference, qualifier); - } - return reference; - } - - //TODO: refactor - @NotNull - public static JsExpression getThisObject(@NotNull TranslationContext context, - @NotNull DeclarationDescriptor correspondingDeclaration) { - if (correspondingDeclaration instanceof ClassDescriptor) { - JsName alias = context.aliasingContext().getAliasForThis(correspondingDeclaration); - if (alias != null) { - return alias.makeRef(); - } - } - if (correspondingDeclaration instanceof CallableDescriptor) { - DeclarationDescriptor receiverDescriptor = - getExpectedReceiverDescriptor((CallableDescriptor) correspondingDeclaration); - assert receiverDescriptor != null; - JsName alias = context.aliasingContext().getAliasForThis(receiverDescriptor); - if (alias != null) { - return alias.makeRef(); - } - } - return JsLiteral.THIS; + public static JsNameRef getQualifiedReference(@NotNull TranslationContext context, @NotNull DeclarationDescriptor descriptor) { + return new JsNameRef(context.getNameForDescriptor(descriptor), context.getQualifierForDescriptor(descriptor)); } @NotNull