JS: add metaInfo attribute to Config

This commit is contained in:
Michael Nedzelsky
2015-03-25 13:47:51 +03:00
parent 54df359134
commit 0951d69bdc
6 changed files with 38 additions and 10 deletions
@@ -245,7 +245,7 @@ public class K2JSCompiler extends CLICompiler<K2JSCompilerArguments> {
ContainerUtil.addAllNotNull(libraryFiles, arguments.libraryFiles); ContainerUtil.addAllNotNull(libraryFiles, arguments.libraryFiles);
} }
return new LibrarySourcesConfig(project, moduleId, libraryFiles, ecmaVersion, arguments.sourceMap, inlineEnabled); return new LibrarySourcesConfig(project, moduleId, libraryFiles, ecmaVersion, arguments.sourceMap, inlineEnabled, arguments.metaInfo);
} }
public static MainCallParameters createMainCallParameters(String main) { public static MainCallParameters createMainCallParameters(String main) {
@@ -52,6 +52,8 @@ public abstract class Config {
private final String moduleId; private final String moduleId;
private final boolean sourcemap; private final boolean sourcemap;
@Nullable
private final String metaInfo;
@NotNull @NotNull
protected final List<KotlinJavascriptMetadata> metadata = new SmartList<KotlinJavascriptMetadata>(); protected final List<KotlinJavascriptMetadata> metadata = new SmartList<KotlinJavascriptMetadata>();
@@ -66,19 +68,26 @@ public abstract class Config {
@NotNull String moduleId, @NotNull String moduleId,
@NotNull EcmaVersion ecmaVersion, @NotNull EcmaVersion ecmaVersion,
boolean sourcemap, boolean sourcemap,
boolean inlineEnabled boolean inlineEnabled,
@Nullable String metaInfo
) { ) {
this.project = project; this.project = project;
this.target = ecmaVersion; this.target = ecmaVersion;
this.moduleId = moduleId; this.moduleId = moduleId;
this.sourcemap = sourcemap; this.sourcemap = sourcemap;
this.inlineEnabled = inlineEnabled; this.inlineEnabled = inlineEnabled;
this.metaInfo = metaInfo;
} }
public boolean isSourcemap() { public boolean isSourcemap() {
return sourcemap; return sourcemap;
} }
@Nullable
public String getMetaInfo() {
return metaInfo;
}
public boolean isInlineEnabled() { public boolean isInlineEnabled() {
return inlineEnabled; return inlineEnabled;
} }
@@ -61,9 +61,10 @@ public class LibrarySourcesConfig extends Config {
@NotNull List<String> files, @NotNull List<String> files,
@NotNull EcmaVersion ecmaVersion, @NotNull EcmaVersion ecmaVersion,
boolean sourcemap, boolean sourcemap,
boolean inlineEnabled boolean inlineEnabled,
@Nullable String metaInfo
) { ) {
super(project, moduleId, ecmaVersion, sourcemap, inlineEnabled); super(project, moduleId, ecmaVersion, sourcemap, inlineEnabled, metaInfo);
this.files = files; this.files = files;
} }
@@ -19,6 +19,7 @@ package org.jetbrains.kotlin.js.config;
import com.intellij.openapi.project.Project; import com.intellij.openapi.project.Project;
import com.intellij.util.SmartList; import com.intellij.util.SmartList;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.kotlin.psi.JetFile; import org.jetbrains.kotlin.psi.JetFile;
import org.jetbrains.kotlin.utils.KotlinJavascriptMetadata; import org.jetbrains.kotlin.utils.KotlinJavascriptMetadata;
import org.jetbrains.kotlin.utils.PathUtil; import org.jetbrains.kotlin.utils.PathUtil;
@@ -34,6 +35,19 @@ public class LibrarySourcesConfigWithCaching extends LibrarySourcesConfig {
private final boolean isUnitTestConfig; private final boolean isUnitTestConfig;
public LibrarySourcesConfigWithCaching(
@NotNull Project project,
@NotNull String moduleId,
@NotNull EcmaVersion ecmaVersion,
boolean sourcemap,
boolean inlineEnabled,
boolean isUnitTestConfig,
@Nullable String metaInfo
) {
super(project, moduleId, JS_STDLIB, ecmaVersion, sourcemap, inlineEnabled, metaInfo);
this.isUnitTestConfig = isUnitTestConfig;
}
public LibrarySourcesConfigWithCaching( public LibrarySourcesConfigWithCaching(
@NotNull Project project, @NotNull Project project,
@NotNull String moduleId, @NotNull String moduleId,
@@ -42,8 +56,7 @@ public class LibrarySourcesConfigWithCaching extends LibrarySourcesConfig {
boolean inlineEnabled, boolean inlineEnabled,
boolean isUnitTestConfig boolean isUnitTestConfig
) { ) {
super(project, moduleId, JS_STDLIB, ecmaVersion, sourcemap, inlineEnabled); this(project, moduleId, ecmaVersion, sourcemap, inlineEnabled, isUnitTestConfig, null);
this.isUnitTestConfig = isUnitTestConfig;
} }
@Override @Override
@@ -204,6 +204,11 @@ public abstract class BasicTest extends KotlinTestWithEnvironment {
return false; return false;
} }
@Nullable
protected String getMetaInfo(@NotNull String moduleId) {
return null;
}
protected void processJsProgram(@NotNull JsProgram program) throws Exception { } protected void processJsProgram(@NotNull JsProgram program) throws Exception { }
protected void runRhinoTests( protected void runRhinoTests(
@@ -279,10 +284,10 @@ public abstract class BasicTest extends KotlinTestWithEnvironment {
@NotNull @NotNull
private Config createConfig(@NotNull Project project, @NotNull String moduleId, @NotNull EcmaVersion ecmaVersion, @Nullable List<String> libraries) { private Config createConfig(@NotNull Project project, @NotNull String moduleId, @NotNull EcmaVersion ecmaVersion, @Nullable List<String> libraries) {
if (libraries == null) { if (libraries == null) {
return new LibrarySourcesConfigWithCaching(project, moduleId, ecmaVersion, shouldGenerateSourceMap(), IS_INLINE_ENABLED, shouldBeTranslateAsUnitTestClass()); return new LibrarySourcesConfigWithCaching(project, moduleId, ecmaVersion, shouldGenerateSourceMap(), IS_INLINE_ENABLED, shouldBeTranslateAsUnitTestClass(), getMetaInfo(moduleId));
} }
else { else {
return new LibrarySourcesConfig(project, moduleId, librariesWithJsStdlib(libraries), ecmaVersion, shouldGenerateSourceMap(), IS_INLINE_ENABLED); return new LibrarySourcesConfig(project, moduleId, librariesWithJsStdlib(libraries), ecmaVersion, shouldGenerateSourceMap(), IS_INLINE_ENABLED, getMetaInfo(moduleId));
} }
} }
@@ -294,7 +299,7 @@ public abstract class BasicTest extends KotlinTestWithEnvironment {
} }
@NotNull @NotNull
private String getOutputPath() { protected String getOutputPath() {
return pathToTestDir() + OUT; return pathToTestDir() + OUT;
} }
@@ -146,7 +146,7 @@ class NoInternalVisibilityInStdLibTest {
val environment = KotlinCoreEnvironment.createForProduction(disposable!!, configuration, EnvironmentConfigFiles.JS_CONFIG_FILES) val environment = KotlinCoreEnvironment.createForProduction(disposable!!, configuration, EnvironmentConfigFiles.JS_CONFIG_FILES)
val project = environment.project val project = environment.project
val pathToJsStdlibJar = KOTLIN_ROOT_PATH + PathUtil.getKotlinPathsForDistDirectory().getJsStdLibJarPath().path val pathToJsStdlibJar = KOTLIN_ROOT_PATH + PathUtil.getKotlinPathsForDistDirectory().getJsStdLibJarPath().path
val config = LibrarySourcesConfig(project, "testModule", listOf(pathToJsStdlibJar), EcmaVersion.defaultVersion(), false, false) val config = LibrarySourcesConfig(project, "testModule", listOf(pathToJsStdlibJar), EcmaVersion.defaultVersion(), false, false, null)
TopDownAnalyzerFacadeForJS.analyzeFiles(listOf(), config).moduleDescriptor TopDownAnalyzerFacadeForJS.analyzeFiles(listOf(), config).moduleDescriptor
} }