JS backend: pass diagnostics to TranslationContext using config
This commit is contained in:
@@ -50,6 +50,7 @@ import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment;
|
|||||||
import org.jetbrains.jet.config.CompilerConfiguration;
|
import org.jetbrains.jet.config.CompilerConfiguration;
|
||||||
import org.jetbrains.jet.config.Services;
|
import org.jetbrains.jet.config.Services;
|
||||||
import org.jetbrains.jet.lang.psi.JetFile;
|
import org.jetbrains.jet.lang.psi.JetFile;
|
||||||
|
import org.jetbrains.jet.lang.resolve.*;
|
||||||
import org.jetbrains.jet.utils.PathUtil;
|
import org.jetbrains.jet.utils.PathUtil;
|
||||||
import org.jetbrains.k2js.analyze.TopDownAnalyzerFacadeForJS;
|
import org.jetbrains.k2js.analyze.TopDownAnalyzerFacadeForJS;
|
||||||
import org.jetbrains.k2js.config.*;
|
import org.jetbrains.k2js.config.*;
|
||||||
@@ -148,9 +149,15 @@ public class K2JSCompiler extends CLICompiler<K2JSCompilerArguments> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
MainCallParameters mainCallParameters = createMainCallParameters(arguments.main);
|
MainCallParameters mainCallParameters = createMainCallParameters(arguments.main);
|
||||||
|
BindingTraceContext trace = new BindingTraceContext();
|
||||||
|
config.setTrace(trace);
|
||||||
OutputFileCollection outputFiles = translate(mainCallParameters, config, sourcesFiles, outputFile, outputPrefixFile, outputPostfixFile);
|
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()) {
|
if (outputFile.isDirectory()) {
|
||||||
messageCollector.report(CompilerMessageSeverity.ERROR,
|
messageCollector.report(CompilerMessageSeverity.ERROR,
|
||||||
"Cannot open output file '" + outputFile.getPath() + "': is a directory",
|
"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.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
|
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.psi.JetFile;
|
||||||
import org.jetbrains.jet.lang.resolve.BindingContext;
|
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.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -47,6 +52,9 @@ public abstract class Config {
|
|||||||
|
|
||||||
private final boolean sourcemap;
|
private final boolean sourcemap;
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
private DiagnosticSink trace = new BindingTraceContext();
|
||||||
|
|
||||||
public Config(
|
public Config(
|
||||||
@NotNull Project project,
|
@NotNull Project project,
|
||||||
@NotNull String moduleId,
|
@NotNull String moduleId,
|
||||||
@@ -102,6 +110,15 @@ public abstract class Config {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
public DiagnosticSink getTrace() {
|
||||||
|
return trace;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTrace(@NotNull DiagnosticSink trace) {
|
||||||
|
this.trace = trace;
|
||||||
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
public ModuleDescriptor getLibraryModule() {
|
public ModuleDescriptor getLibraryModule() {
|
||||||
return null;
|
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.DeclarationDescriptor;
|
||||||
import org.jetbrains.jet.lang.descriptors.MemberDescriptor;
|
import org.jetbrains.jet.lang.descriptors.MemberDescriptor;
|
||||||
import org.jetbrains.jet.lang.descriptors.ReceiverParameterDescriptor;
|
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.psi.JetExpression;
|
||||||
import org.jetbrains.jet.lang.reflect.ReflectionTypes;
|
import org.jetbrains.jet.lang.reflect.ReflectionTypes;
|
||||||
import org.jetbrains.jet.lang.resolve.BindingContext;
|
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.jet.lang.resolve.name.FqName;
|
||||||
import org.jetbrains.k2js.config.Config;
|
import org.jetbrains.k2js.config.Config;
|
||||||
import org.jetbrains.k2js.translate.intrinsic.Intrinsics;
|
import org.jetbrains.k2js.translate.intrinsic.Intrinsics;
|
||||||
@@ -163,6 +165,9 @@ public class TranslationContext {
|
|||||||
return staticContext.getBindingContext();
|
return staticContext.getBindingContext();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
public DiagnosticSink getTrace() { return staticContext.getConfig().getTrace(); }
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public JsScope getScopeForDescriptor(@NotNull DeclarationDescriptor descriptor) {
|
public JsScope getScopeForDescriptor(@NotNull DeclarationDescriptor descriptor) {
|
||||||
return staticContext.getScopeForDescriptor(descriptor);
|
return staticContext.getScopeForDescriptor(descriptor);
|
||||||
|
|||||||
Reference in New Issue
Block a user