Deal with absence of js library. fix K2JSMessagingTest

This commit is contained in:
Pavel V. Talanov
2012-07-03 17:58:58 +04:00
parent 508b241553
commit dd43f6b699
4 changed files with 18 additions and 10 deletions
@@ -42,6 +42,7 @@ import org.jetbrains.k2js.facade.K2JSTranslator;
import org.jetbrains.k2js.facade.MainCallParameters; import org.jetbrains.k2js.facade.MainCallParameters;
import java.io.File; import java.io.File;
import java.util.Arrays;
import java.util.List; import java.util.List;
import static org.jetbrains.jet.cli.common.messages.CompilerMessageLocation.NO_LOCATION; import static org.jetbrains.jet.cli.common.messages.CompilerMessageLocation.NO_LOCATION;
@@ -151,6 +152,6 @@ public class K2JSCompiler extends CLICompiler<K2JSCompilerArguments, K2JSCompile
// lets discover the JS library definitions on the classpath // lets discover the JS library definitions on the classpath
return new ClassPathLibraryDefintionsConfig(project, moduleId, ecmaVersion); return new ClassPathLibraryDefintionsConfig(project, moduleId, ecmaVersion);
} }
return new LibrarySourcesConfig(project, moduleId, arguments.libraryFiles, ecmaVersion); return new LibrarySourcesConfig(project, moduleId, Arrays.asList(arguments.libraryFiles), ecmaVersion);
} }
} }
@@ -39,6 +39,7 @@ import org.jetbrains.jet.plugin.project.JsModuleDetector;
import java.io.PrintStream; import java.io.PrintStream;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List;
import java.util.Set; import java.util.Set;
import static org.jetbrains.jet.plugin.compiler.CompilerUtils.invokeExecMethod; import static org.jetbrains.jet.plugin.compiler.CompilerUtils.invokeExecMethod;
@@ -166,7 +167,7 @@ public final class K2JSCompiler implements TranslatingCompiler {
} }
private static void addLibLocationAndTarget(@NotNull Module module, @NotNull ArrayList<String> args) { private static void addLibLocationAndTarget(@NotNull Module module, @NotNull ArrayList<String> args) {
Pair<String[], String> libLocationAndTarget = JsModuleDetector.getLibLocationAndTargetForProject(module); Pair<List<String>, String> libLocationAndTarget = JsModuleDetector.getLibLocationAndTargetForProject(module);
StringBuilder sb = StringBuilderSpinAllocator.alloc(); StringBuilder sb = StringBuilderSpinAllocator.alloc();
AccessToken token = ReadAction.start(); AccessToken token = ReadAction.start();
@@ -16,6 +16,7 @@
package org.jetbrains.jet.plugin.project; package org.jetbrains.jet.plugin.project;
import com.google.common.collect.Lists;
import com.intellij.openapi.module.Module; import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleManager; import com.intellij.openapi.module.ModuleManager;
import com.intellij.openapi.project.Project; import com.intellij.openapi.project.Project;
@@ -27,6 +28,8 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.psi.JetFile; import org.jetbrains.jet.lang.psi.JetFile;
import java.util.List;
/** /**
* @author Pavel Talanov * @author Pavel Talanov
* <p/> * <p/>
@@ -53,7 +56,7 @@ public final class JsModuleDetector {
} }
@NotNull @NotNull
public static Pair<String[], String> getLibLocationAndTargetForProject(@NotNull Project project) { public static Pair<List<String>, String> getLibLocationAndTargetForProject(@NotNull Project project) {
Module module = getJSModule(project); Module module = getJSModule(project);
if (module == null) { if (module == null) {
return Pair.empty(); return Pair.empty();
@@ -64,11 +67,15 @@ public final class JsModuleDetector {
} }
@NotNull @NotNull
public static Pair<String[], String> getLibLocationAndTargetForProject(@NotNull Module module) { public static Pair<List<String>, String> getLibLocationAndTargetForProject(@NotNull Module module) {
K2JSModuleComponent jsModuleComponent = K2JSModuleComponent.getInstance(module); K2JSModuleComponent jsModuleComponent = K2JSModuleComponent.getInstance(module);
String pathToJavaScriptLibrary = jsModuleComponent.getPathToJavaScriptLibrary(); String pathToJavaScriptLibrary = jsModuleComponent.getPathToJavaScriptLibrary();
String basePath = ModuleRootManager.getInstance(module).getContentRoots()[0].getPath(); String basePath = ModuleRootManager.getInstance(module).getContentRoots()[0].getPath();
return Pair.create(new String[] {basePath + pathToJavaScriptLibrary}, jsModuleComponent.getEcmaVersion().toString()); List<String> pathsToJSLib = Lists.newArrayList();
if (pathToJavaScriptLibrary != null) {
pathsToJSLib.add(basePath + pathToJavaScriptLibrary);
}
return Pair.create(pathsToJSLib, jsModuleComponent.getEcmaVersion().toString());
} }
@Nullable @Nullable
@@ -21,7 +21,6 @@ import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Key; import com.intellij.openapi.util.Key;
import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.io.FileUtil;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.psi.JetFile; import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.k2js.utils.JetFileUtils; import org.jetbrains.k2js.utils.JetFileUtils;
@@ -42,12 +41,12 @@ public class LibrarySourcesConfig extends Config {
public static final Key<String> EXTERNAL_MODULE_NAME = new Key<String>("externalModule"); public static final Key<String> EXTERNAL_MODULE_NAME = new Key<String>("externalModule");
public static final String UNKNOWN_EXTERNAL_MODULE_NAME = "<unknown>"; public static final String UNKNOWN_EXTERNAL_MODULE_NAME = "<unknown>";
@Nullable @NotNull
private final String[] files; private final List<String> files;
public LibrarySourcesConfig(@NotNull Project project, public LibrarySourcesConfig(@NotNull Project project,
@NotNull String moduleId, @NotNull String moduleId,
@Nullable String[] files, @NotNull List<String> files,
@NotNull EcmaVersion ecmaVersion) { @NotNull EcmaVersion ecmaVersion) {
super(project, moduleId, ecmaVersion); super(project, moduleId, ecmaVersion);
this.files = files; this.files = files;
@@ -56,7 +55,7 @@ public class LibrarySourcesConfig extends Config {
@NotNull @NotNull
@Override @Override
public List<JetFile> generateLibFiles() { public List<JetFile> generateLibFiles() {
if (files == null) { if (files.isEmpty()) {
return Collections.emptyList(); return Collections.emptyList();
} }