From b431bf6fc90daeb1146a77dc1105ee39ed434a8a Mon Sep 17 00:00:00 2001 From: Alexey Tsvetkov Date: Thu, 18 Dec 2014 20:37:57 +0300 Subject: [PATCH] JS: made JsCodeErrorReporter class static --- .../reference/CallExpressionTranslator.java | 37 ++++++++++++------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/js/js.translator/src/org/jetbrains/kotlin/js/translate/reference/CallExpressionTranslator.java b/js/js.translator/src/org/jetbrains/kotlin/js/translate/reference/CallExpressionTranslator.java index 993d619411c..47191dd0b3f 100644 --- a/js/js.translator/src/org/jetbrains/kotlin/js/translate/reference/CallExpressionTranslator.java +++ b/js/js.translator/src/org/jetbrains/kotlin/js/translate/reference/CallExpressionTranslator.java @@ -16,7 +16,6 @@ package org.jetbrains.kotlin.js.translate.reference; - import com.google.dart.compiler.backend.js.ast.*; import com.google.dart.compiler.backend.js.ast.metadata.MetadataPackage; import com.google.dart.compiler.common.SourceInfoImpl; @@ -32,9 +31,8 @@ import org.jetbrains.kotlin.builtins.InlineStrategy; import org.jetbrains.kotlin.builtins.InlineUtil; import org.jetbrains.kotlin.descriptors.*; import org.jetbrains.kotlin.diagnostics.DiagnosticFactory2; +import org.jetbrains.kotlin.diagnostics.DiagnosticSink; import org.jetbrains.kotlin.diagnostics.ParametrizedDiagnostic; -import org.jetbrains.kotlin.js.descriptors.DescriptorPredicate; -import org.jetbrains.kotlin.js.descriptors.PatternBuilder; import org.jetbrains.kotlin.js.resolve.diagnostics.ErrorsJs; import org.jetbrains.kotlin.js.translate.callTranslator.CallTranslator; import org.jetbrains.kotlin.js.translate.context.TranslationContext; @@ -140,7 +138,7 @@ public final class CallExpressionTranslator extends AbstractCallExpressionTransl return program().getEmptyExpression(); } - List statements = parseJsCode(argumentExpression); + List statements = parseJsCode((JetStringTemplateExpression) argumentExpression); int size = statements.size(); if (size == 0) { @@ -158,12 +156,12 @@ public final class CallExpressionTranslator extends AbstractCallExpressionTransl } @NotNull - private List parseJsCode(@NotNull JetExpression jsCodeExpression) { + private List parseJsCode(@NotNull JetStringTemplateExpression jsCodeExpression) { Object jsCode = getCompileTimeValue(bindingContext(), jsCodeExpression); assert jsCode instanceof String: "jsCode must be compile time string"; List statements = new ArrayList(); - ErrorReporter errorReporter = new JsCodeErrorReporter(jsCodeExpression); + ErrorReporter errorReporter = new JsCodeErrorReporter(jsCodeExpression, (String) jsCode, context().getTrace()); try { SourceInfoImpl info = new SourceInfoImpl(null, 0, 0, 0, 0); @@ -182,25 +180,37 @@ public final class CallExpressionTranslator extends AbstractCallExpressionTransl return statements; } - private class JsCodeErrorReporter implements ErrorReporter { + private static class JsCodeErrorReporter implements ErrorReporter { + @NotNull private final JetExpression jsCodeExpression; - private JsCodeErrorReporter(@NotNull JetExpression expression) { - jsCodeExpression = expression; + @NotNull + private final String code; + + @NotNull + private final DiagnosticSink trace; + + JsCodeErrorReporter(@NotNull JetStringTemplateExpression jsCodeExpression, + @NotNull String code, + @NotNull DiagnosticSink trace + ) { + this.jsCodeExpression = jsCodeExpression; + this.code = code; + this.trace = trace; } @Override public void error(String message, String sourceName, int line, String lineSource, int lineOffset) { ParametrizedDiagnostic diagnostic = getDiagnostic(ErrorsJs.JSCODE_ERROR, message, line, lineOffset); - context().getTrace().report(diagnostic); + trace.report(diagnostic); throw new AbortParsingException(); } @Override public void warning(String message, String sourceName, int line, String lineSource, int lineOffset) { ParametrizedDiagnostic diagnostic = getDiagnostic(ErrorsJs.JSCODE_WARNING, message, line, lineOffset); - context().getTrace().report(diagnostic); + trace.report(diagnostic); } /** @@ -219,8 +229,7 @@ public final class CallExpressionTranslator extends AbstractCallExpressionTransl int line, int lineOffset ) { - String text = (String) getCompileTimeValue(bindingContext(), jsCodeExpression); - int offset = jsCodeExpression.getTextOffset() + offsetFromStart(text, line, lineOffset); + int offset = jsCodeExpression.getTextOffset() + offsetFromStart(code, line, lineOffset); assert jsCodeExpression instanceof JetStringTemplateExpression: "js argument is expected to be compile-time string literal"; int quotesLength = jsCodeExpression.getFirstChild().getTextLength(); @@ -234,7 +243,7 @@ public final class CallExpressionTranslator extends AbstractCallExpressionTransl * Calculates an offset from the start of a text for a position, * defined by line and offset in that line. */ - private int offsetFromStart(String text, int line, int offset) { + private static int offsetFromStart(String text, int line, int offset) { int i = 0; int lineCount = 0; int offsetInLine = 0;