JS backend: pass diagnostics to TranslationContext using config

This commit is contained in:
Alexey Tsvetkov
2014-11-27 17:06:57 +03:00
parent 5530ad84e5
commit 3658698f4f
3 changed files with 30 additions and 1 deletions
@@ -50,6 +50,7 @@ import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment;
import org.jetbrains.jet.config.CompilerConfiguration;
import org.jetbrains.jet.config.Services;
import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.jet.lang.resolve.*;
import org.jetbrains.jet.utils.PathUtil;
import org.jetbrains.k2js.analyze.TopDownAnalyzerFacadeForJS;
import org.jetbrains.k2js.config.*;
@@ -148,9 +149,15 @@ public class K2JSCompiler extends CLICompiler<K2JSCompilerArguments> {
}
MainCallParameters mainCallParameters = createMainCallParameters(arguments.main);
BindingTraceContext trace = new BindingTraceContext();
config.setTrace(trace);
OutputFileCollection outputFiles = translate(mainCallParameters, config, sourcesFiles, outputFile, outputPrefixFile, outputPostfixFile);
Diagnostics diagnostics = trace.getBindingContext().getDiagnostics();
if (AnalyzerWithCompilerReport.reportDiagnostics(diagnostics, messageCollector)) {
return ExitCode.COMPILATION_ERROR;
}
if (outputFile.isDirectory()) {
messageCollector.report(CompilerMessageSeverity.ERROR,
"Cannot open output file '" + outputFile.getPath() + "': is a directory",
@@ -23,8 +23,13 @@ import kotlin.Unit;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
import org.jetbrains.jet.lang.diagnostics.Diagnostic;
import org.jetbrains.jet.lang.diagnostics.DiagnosticSink;
import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.jet.lang.resolve.BindingContext;
import org.jetbrains.jet.lang.resolve.BindingTrace;
import org.jetbrains.jet.lang.resolve.BindingTraceContext;
import org.jetbrains.jet.lang.resolve.DelegatingBindingTrace;
import java.util.Collection;
import java.util.List;
@@ -47,6 +52,9 @@ public abstract class Config {
private final boolean sourcemap;
@NotNull
private DiagnosticSink trace = new BindingTraceContext();
public Config(
@NotNull Project project,
@NotNull String moduleId,
@@ -102,6 +110,15 @@ public abstract class Config {
return null;
}
@NotNull
public DiagnosticSink getTrace() {
return trace;
}
public void setTrace(@NotNull DiagnosticSink trace) {
this.trace = trace;
}
@Nullable
public ModuleDescriptor getLibraryModule() {
return null;
@@ -24,9 +24,11 @@ import org.jetbrains.jet.lang.descriptors.CallableDescriptor;
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
import org.jetbrains.jet.lang.descriptors.MemberDescriptor;
import org.jetbrains.jet.lang.descriptors.ReceiverParameterDescriptor;
import org.jetbrains.jet.lang.diagnostics.DiagnosticSink;
import org.jetbrains.jet.lang.psi.JetExpression;
import org.jetbrains.jet.lang.reflect.ReflectionTypes;
import org.jetbrains.jet.lang.resolve.BindingContext;
import org.jetbrains.jet.lang.resolve.BindingTraceContext;
import org.jetbrains.jet.lang.resolve.name.FqName;
import org.jetbrains.k2js.config.Config;
import org.jetbrains.k2js.translate.intrinsic.Intrinsics;
@@ -163,6 +165,9 @@ public class TranslationContext {
return staticContext.getBindingContext();
}
@NotNull
public DiagnosticSink getTrace() { return staticContext.getConfig().getTrace(); }
@NotNull
public JsScope getScopeForDescriptor(@NotNull DeclarationDescriptor descriptor) {
return staticContext.getScopeForDescriptor(descriptor);