Get rid of unnecessary exceptions in JS translator
Before this commit, an internal error during JS translation resulted in the actual exception wrapped in TranslationRuntimeException wrapped in TranslationInternalException wrapped in RuntimeException being thrown. This change gets rid of the two latter wrappings. Also delete unthrown MainFunctionNotFoundException and related unused constructors in TranslationException
This commit is contained in:
@@ -55,6 +55,7 @@ import org.jetbrains.kotlin.js.facade.MainCallParameters;
|
|||||||
import org.jetbrains.kotlin.js.facade.TranslationResult;
|
import org.jetbrains.kotlin.js.facade.TranslationResult;
|
||||||
import org.jetbrains.kotlin.progress.ProgressIndicatorAndCompilationCanceledStatus;
|
import org.jetbrains.kotlin.progress.ProgressIndicatorAndCompilationCanceledStatus;
|
||||||
import org.jetbrains.kotlin.psi.KtFile;
|
import org.jetbrains.kotlin.psi.KtFile;
|
||||||
|
import org.jetbrains.kotlin.utils.ExceptionUtilsKt;
|
||||||
import org.jetbrains.kotlin.utils.PathUtil;
|
import org.jetbrains.kotlin.utils.PathUtil;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
@@ -169,8 +170,9 @@ public class K2JSCompiler extends CLICompiler<K2JSCompilerArguments> {
|
|||||||
try {
|
try {
|
||||||
//noinspection unchecked
|
//noinspection unchecked
|
||||||
translationResult = translator.translate(sourcesFiles, mainCallParameters, jsAnalysisResult);
|
translationResult = translator.translate(sourcesFiles, mainCallParameters, jsAnalysisResult);
|
||||||
} catch (Exception e) {
|
}
|
||||||
throw new RuntimeException(e);
|
catch (Exception e) {
|
||||||
|
throw ExceptionUtilsKt.rethrow(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
ProgressIndicatorAndCompilationCanceledStatus.checkCanceled();
|
ProgressIndicatorAndCompilationCanceledStatus.checkCanceled();
|
||||||
|
|||||||
@@ -16,9 +16,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.js.test.semantics;
|
package org.jetbrains.kotlin.js.test.semantics;
|
||||||
|
|
||||||
import org.jetbrains.kotlin.js.facade.exceptions.TranslationInternalException;
|
|
||||||
import org.jetbrains.kotlin.js.test.SingleFileTranslationTest;
|
import org.jetbrains.kotlin.js.test.SingleFileTranslationTest;
|
||||||
import org.junit.Assert;
|
|
||||||
|
|
||||||
public final class NumberTest extends SingleFileTranslationTest {
|
public final class NumberTest extends SingleFileTranslationTest {
|
||||||
public NumberTest() {
|
public NumberTest() {
|
||||||
@@ -56,14 +54,7 @@ public final class NumberTest extends SingleFileTranslationTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void testHexadecimalConstant() throws Exception {
|
public void testHexadecimalConstant() throws Exception {
|
||||||
try {
|
fooBoxTest();
|
||||||
fooBoxTest();
|
|
||||||
}
|
|
||||||
catch (TranslationInternalException e) {
|
|
||||||
Throwable cause = e.getCause();
|
|
||||||
Assert.assertTrue(cause instanceof IllegalStateException);
|
|
||||||
Assert.assertTrue(cause.getMessage().startsWith("Unsupported long constant "));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testNumberCompareTo() throws Exception {
|
public void testNumberCompareTo() throws Exception {
|
||||||
|
|||||||
-25
@@ -1,25 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2010-2015 JetBrains s.r.o.
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.jetbrains.kotlin.js.facade.exceptions;
|
|
||||||
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
|
||||||
|
|
||||||
public class MainFunctionNotFoundException extends TranslationException {
|
|
||||||
public MainFunctionNotFoundException(@NotNull String message) {
|
|
||||||
super(message);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-9
@@ -19,15 +19,6 @@ package org.jetbrains.kotlin.js.facade.exceptions;
|
|||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
public class TranslationException extends Exception {
|
public class TranslationException extends Exception {
|
||||||
|
|
||||||
public TranslationException(@NotNull String message) {
|
|
||||||
super(message);
|
|
||||||
}
|
|
||||||
|
|
||||||
public TranslationException(@NotNull Throwable cause) {
|
|
||||||
super(cause);
|
|
||||||
}
|
|
||||||
|
|
||||||
public TranslationException(@NotNull String message, @NotNull Exception cause) {
|
public TranslationException(@NotNull String message, @NotNull Exception cause) {
|
||||||
super(message, cause);
|
super(message, cause);
|
||||||
}
|
}
|
||||||
|
|||||||
-26
@@ -1,26 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2010-2015 JetBrains s.r.o.
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.jetbrains.kotlin.js.facade.exceptions;
|
|
||||||
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
|
||||||
|
|
||||||
public class TranslationInternalException extends TranslationException {
|
|
||||||
|
|
||||||
public TranslationInternalException(@NotNull Throwable cause) {
|
|
||||||
super(cause);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -24,7 +24,9 @@ import org.jetbrains.kotlin.descriptors.ModuleDescriptor;
|
|||||||
import org.jetbrains.kotlin.idea.MainFunctionDetector;
|
import org.jetbrains.kotlin.idea.MainFunctionDetector;
|
||||||
import org.jetbrains.kotlin.js.config.Config;
|
import org.jetbrains.kotlin.js.config.Config;
|
||||||
import org.jetbrains.kotlin.js.facade.MainCallParameters;
|
import org.jetbrains.kotlin.js.facade.MainCallParameters;
|
||||||
import org.jetbrains.kotlin.js.facade.exceptions.*;
|
import org.jetbrains.kotlin.js.facade.exceptions.TranslationException;
|
||||||
|
import org.jetbrains.kotlin.js.facade.exceptions.TranslationRuntimeException;
|
||||||
|
import org.jetbrains.kotlin.js.facade.exceptions.UnsupportedFeatureException;
|
||||||
import org.jetbrains.kotlin.js.translate.callTranslator.CallTranslator;
|
import org.jetbrains.kotlin.js.translate.callTranslator.CallTranslator;
|
||||||
import org.jetbrains.kotlin.js.translate.context.Namer;
|
import org.jetbrains.kotlin.js.translate.context.Namer;
|
||||||
import org.jetbrains.kotlin.js.translate.context.StaticContext;
|
import org.jetbrains.kotlin.js.translate.context.StaticContext;
|
||||||
@@ -46,6 +48,7 @@ import org.jetbrains.kotlin.psi.KtFile;
|
|||||||
import org.jetbrains.kotlin.psi.KtNamedFunction;
|
import org.jetbrains.kotlin.psi.KtNamedFunction;
|
||||||
import org.jetbrains.kotlin.resolve.BindingTrace;
|
import org.jetbrains.kotlin.resolve.BindingTrace;
|
||||||
import org.jetbrains.kotlin.resolve.bindingContextUtil.BindingContextUtilsKt;
|
import org.jetbrains.kotlin.resolve.bindingContextUtil.BindingContextUtilsKt;
|
||||||
|
import org.jetbrains.kotlin.utils.ExceptionUtilsKt;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
@@ -164,11 +167,13 @@ public final class Translation {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public static TranslationContext generateAst(@NotNull BindingTrace bindingTrace,
|
public static TranslationContext generateAst(
|
||||||
@NotNull Collection<KtFile> files, @NotNull MainCallParameters mainCallParameters,
|
@NotNull BindingTrace bindingTrace,
|
||||||
|
@NotNull Collection<KtFile> files,
|
||||||
|
@NotNull MainCallParameters mainCallParameters,
|
||||||
@NotNull ModuleDescriptor moduleDescriptor,
|
@NotNull ModuleDescriptor moduleDescriptor,
|
||||||
@NotNull Config config)
|
@NotNull Config config
|
||||||
throws TranslationException {
|
) throws TranslationException {
|
||||||
try {
|
try {
|
||||||
return doGenerateAst(bindingTrace, files, mainCallParameters, moduleDescriptor, config);
|
return doGenerateAst(bindingTrace, files, mainCallParameters, moduleDescriptor, config);
|
||||||
}
|
}
|
||||||
@@ -176,7 +181,7 @@ public final class Translation {
|
|||||||
throw new UnsupportedFeatureException("Unsupported feature used.", e);
|
throw new UnsupportedFeatureException("Unsupported feature used.", e);
|
||||||
}
|
}
|
||||||
catch (Throwable e) {
|
catch (Throwable e) {
|
||||||
throw new TranslationInternalException(e);
|
throw ExceptionUtilsKt.rethrow(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -184,7 +189,8 @@ public final class Translation {
|
|||||||
private static TranslationContext doGenerateAst(@NotNull BindingTrace bindingTrace, @NotNull Collection<KtFile> files,
|
private static TranslationContext doGenerateAst(@NotNull BindingTrace bindingTrace, @NotNull Collection<KtFile> files,
|
||||||
@NotNull MainCallParameters mainCallParameters,
|
@NotNull MainCallParameters mainCallParameters,
|
||||||
@NotNull ModuleDescriptor moduleDescriptor,
|
@NotNull ModuleDescriptor moduleDescriptor,
|
||||||
@NotNull Config config) throws MainFunctionNotFoundException {
|
@NotNull Config config
|
||||||
|
) {
|
||||||
StaticContext staticContext = StaticContext.generateStaticContext(bindingTrace, config, moduleDescriptor);
|
StaticContext staticContext = StaticContext.generateStaticContext(bindingTrace, config, moduleDescriptor);
|
||||||
JsProgram program = staticContext.getProgram();
|
JsProgram program = staticContext.getProgram();
|
||||||
JsBlock block = program.getGlobalBlock();
|
JsBlock block = program.getGlobalBlock();
|
||||||
@@ -226,8 +232,9 @@ public final class Translation {
|
|||||||
|
|
||||||
//TODO: determine whether should throw exception
|
//TODO: determine whether should throw exception
|
||||||
@Nullable
|
@Nullable
|
||||||
private static JsStatement generateCallToMain(@NotNull TranslationContext context, @NotNull Collection<KtFile> files,
|
private static JsStatement generateCallToMain(
|
||||||
@NotNull List<String> arguments) throws MainFunctionNotFoundException {
|
@NotNull TranslationContext context, @NotNull Collection<KtFile> files, @NotNull List<String> arguments
|
||||||
|
) {
|
||||||
MainFunctionDetector mainFunctionDetector = new MainFunctionDetector(context.bindingContext());
|
MainFunctionDetector mainFunctionDetector = new MainFunctionDetector(context.bindingContext());
|
||||||
KtNamedFunction mainFunction = mainFunctionDetector.getMainFunction(files);
|
KtNamedFunction mainFunction = mainFunctionDetector.getMainFunction(files);
|
||||||
if (mainFunction == null) {
|
if (mainFunction == null) {
|
||||||
|
|||||||
Reference in New Issue
Block a user