diff --git a/translator/src/org/jetbrains/k2js/analyze/Analyzer.java b/translator/src/org/jetbrains/k2js/analyze/Analyzer.java index cb99a0ea832..ce75f61ffd4 100644 --- a/translator/src/org/jetbrains/k2js/analyze/Analyzer.java +++ b/translator/src/org/jetbrains/k2js/analyze/Analyzer.java @@ -28,19 +28,26 @@ public final class Analyzer { @NotNull public static BindingContext analyzeFilesAndCheckErrors(@NotNull List files, @NotNull Config config) { - final List jsLibFiles = config.getLibFiles(); - List allFiles = withJsLibAdded(files, config); - BindingContext bindingContext = AnalyzingUtils.analyzeFiles(config.getProject(), - JsConfiguration.jsLibConfiguration(config.getProject()), - allFiles, notLibFiles(jsLibFiles), JetControlFlowDataTraceFactory.EMPTY); - checkForErrors(allFiles, bindingContext); + BindingContext bindingContext = analyzeFiles(files, config); + checkForErrors(withJsLibAdded(files, config), bindingContext); return bindingContext; } + @NotNull + public static BindingContext analyzeFiles(@NotNull List files, + @NotNull Config config) { + Project project = config.getProject(); + return AnalyzingUtils.analyzeFiles(project, + JsConfiguration.jsLibConfiguration(project), + withJsLibAdded(files, config), + notLibFiles(config.getLibFiles()), + JetControlFlowDataTraceFactory.EMPTY); + } + private static void checkForErrors(@NotNull List allFiles, @NotNull BindingContext bindingContext) { + AnalyzingUtils.throwExceptionOnErrors(bindingContext); for (JetFile file : allFiles) { AnalyzingUtils.checkForSyntacticErrors(file); - AnalyzingUtils.throwExceptionOnErrors(bindingContext); } } diff --git a/translator/src/org/jetbrains/k2js/facade/K2JSTranslator.java b/translator/src/org/jetbrains/k2js/facade/K2JSTranslator.java index d5c57a6b038..ac191a5992e 100644 --- a/translator/src/org/jetbrains/k2js/facade/K2JSTranslator.java +++ b/translator/src/org/jetbrains/k2js/facade/K2JSTranslator.java @@ -94,6 +94,13 @@ public final class K2JSTranslator { return generator.generateToString(program); } + @NotNull + public BindingContext analyzeProgramCode(@NotNull String programText) { + JetFile file = JetFileUtils.createPsiFile("test", programText, getProject()); + return Analyzer.analyzeFiles(Arrays.asList(file), config); + } + + @NotNull private JsProgram generateProgram(@NotNull List filesToTranslate) { BindingContext bindingContext = Analyzer.analyzeFilesAndCheckErrors(filesToTranslate, config); diff --git a/translator/src/org/jetbrains/k2js/facade/K2JSTranslatorApplet.java b/translator/src/org/jetbrains/k2js/facade/K2JSTranslatorApplet.java index dc1066d63d9..f7ef74cff1e 100644 --- a/translator/src/org/jetbrains/k2js/facade/K2JSTranslatorApplet.java +++ b/translator/src/org/jetbrains/k2js/facade/K2JSTranslatorApplet.java @@ -2,6 +2,7 @@ package org.jetbrains.k2js.facade; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.jetbrains.jet.lang.resolve.BindingContext; import org.jetbrains.k2js.config.TestConfig; import org.jetbrains.k2js.utils.ErrorSender; @@ -37,6 +38,12 @@ public final class K2JSTranslatorApplet extends Applet { } } + @NotNull + public BindingContext getBindingContext(@NotNull String programText) { + K2JSTranslator k2JSTranslator = new K2JSTranslator(new TestConfig()); + return k2JSTranslator.analyzeProgramCode(programText); + } + @NotNull private String generateJSCode(@NotNull String code, @NotNull String arguments) { String generatedCode = (new K2JSTranslator(new TestConfig())).translateStringWithCallToMain(code, arguments);