diff --git a/js/js.tests/test/org/jetbrains/k2js/test/BasicTest.java b/js/js.tests/test/org/jetbrains/k2js/test/BasicTest.java index 5856a88a05d..8f875754e0e 100644 --- a/js/js.tests/test/org/jetbrains/k2js/test/BasicTest.java +++ b/js/js.tests/test/org/jetbrains/k2js/test/BasicTest.java @@ -88,6 +88,7 @@ public abstract class BasicTest extends TestWithEnvironment { assert success; } + @NotNull protected List additionalJSFiles(@NotNull EcmaVersion ecmaVersion) { List list = Lists.newArrayList(); list.add(ecmaVersion == EcmaVersion.v5 ? KOTLIN_JS_LIB_ECMA_5 : KOTLIN_JS_LIB_ECMA_3); @@ -160,7 +161,7 @@ public abstract class BasicTest extends TestWithEnvironment { } @NotNull - protected List withAdditionalFiles(@NotNull String inputFile, EcmaVersion ecmaVersion) { + protected List withAdditionalFiles(@NotNull String inputFile, @NotNull EcmaVersion ecmaVersion) { List allFiles = Lists.newArrayList(additionalJSFiles(ecmaVersion)); allFiles.add(inputFile); return allFiles; diff --git a/js/js.tests/test/org/jetbrains/k2js/test/semantics/NativeInteropTest.java b/js/js.tests/test/org/jetbrains/k2js/test/semantics/NativeInteropTest.java index 4e57b3e454f..d7ace866ff9 100644 --- a/js/js.tests/test/org/jetbrains/k2js/test/semantics/NativeInteropTest.java +++ b/js/js.tests/test/org/jetbrains/k2js/test/semantics/NativeInteropTest.java @@ -36,6 +36,7 @@ public final class NativeInteropTest extends SingleFileTranslationTest { super("native/"); } + @NotNull @Override protected List additionalJSFiles(@NotNull EcmaVersion ecmaVersion) { List result = Lists.newArrayList(super.additionalJSFiles(ecmaVersion)); diff --git a/js/js.translator/src/org/jetbrains/k2js/analyze/AnalyzerFacadeForJS.java b/js/js.translator/src/org/jetbrains/k2js/analyze/AnalyzerFacadeForJS.java index 7c8ee893acb..2d87bd9c7fa 100644 --- a/js/js.translator/src/org/jetbrains/k2js/analyze/AnalyzerFacadeForJS.java +++ b/js/js.translator/src/org/jetbrains/k2js/analyze/AnalyzerFacadeForJS.java @@ -18,7 +18,6 @@ package org.jetbrains.k2js.analyze; import com.google.common.base.Predicate; import com.google.common.base.Predicates; -import com.google.common.collect.Lists; import com.google.common.collect.Sets; import com.intellij.openapi.project.Project; import com.intellij.psi.PsiFile; @@ -92,14 +91,16 @@ public final class AnalyzerFacadeForJS { completely, false, false, Collections.emptyList()); InjectorForTopDownAnalyzerForJs injector = new InjectorForTopDownAnalyzerForJs( - project, topDownAnalysisParameters, new ObservableBindingTrace(bindingTraceContext), owner, JsConfiguration.jsLibConfiguration(project)); + project, topDownAnalysisParameters, new ObservableBindingTrace(bindingTraceContext), owner, + JsConfiguration.jsLibConfiguration(project)); try { injector.getTopDownAnalyzer().analyzeFiles(withJsLibAdded(files, config), Collections.emptyList()); BodiesResolveContext bodiesResolveContext = storeContextForBodiesResolve ? new CachedBodiesResolveContext(injector.getTopDownAnalysisContext()) : null; return AnalyzeExhaust.success(bindingTraceContext.getBindingContext(), JetStandardLibrary.getInstance(), bodiesResolveContext); - } finally { + } + finally { injector.destroy(); } } @@ -114,19 +115,21 @@ public final class AnalyzerFacadeForJS { final ModuleDescriptor owner = new ModuleDescriptor(Name.special("")); Predicate completely = Predicates.and(notLibFiles(config.getLibFiles()), filesToAnalyzeCompletely); - TopDownAnalysisParameters topDownAnalysisParameters = new TopDownAnalysisParameters(completely, false, false, Collections.emptyList()); + TopDownAnalysisParameters topDownAnalysisParameters = + new TopDownAnalysisParameters(completely, false, false, Collections.emptyList()); InjectorForTopDownAnalyzerForJs injector = new InjectorForTopDownAnalyzerForJs( - project, topDownAnalysisParameters, new ObservableBindingTrace(traceContext), owner, JsConfiguration.jsLibConfiguration(project)); + project, topDownAnalysisParameters, new ObservableBindingTrace(traceContext), owner, + JsConfiguration.jsLibConfiguration(project)); try { bodiesResolveContext.setTopDownAnalysisParameters(topDownAnalysisParameters); injector.getTopDownAnalyzer().doProcessForBodies(bodiesResolveContext); return AnalyzeExhaust.success(traceContext.getBindingContext(), JetStandardLibrary.getInstance()); - } finally { + } + finally { injector.destroy(); } - } private static void checkForErrors(@NotNull Collection allFiles, @NotNull BindingContext bindingContext) { @@ -139,8 +142,8 @@ public final class AnalyzerFacadeForJS { @NotNull public static Collection withJsLibAdded(@NotNull Collection files, @NotNull Config config) { Set allFiles = Sets.newHashSet(); - allFiles.addAll(toOriginal(files)); - allFiles.addAll(toOriginal(config.getLibFiles())); + allFiles.addAll(files); + allFiles.addAll(config.getLibFiles()); return allFiles; } @@ -156,15 +159,6 @@ public final class AnalyzerFacadeForJS { }; } - @NotNull - private static Collection toOriginal(@NotNull Collection files) { - Collection result = Lists.newArrayList(); - for (JetFile file : files) { - result.add(file); - } - return result; - } - private static final class JsConfiguration implements ModuleConfiguration { @NotNull