Add CompilerConfiguration to JsConfig
Will be used to store common compiler options (such as source version, inline disabled, etc) as well as JS-specific options, to unify the logic of compiler option initialization between JS and JVM compilers
This commit is contained in:
@@ -24,6 +24,7 @@ import kotlin.collections.CollectionsKt;
|
||||
import kotlin.jvm.functions.Function1;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.kotlin.config.CompilerConfiguration;
|
||||
import org.jetbrains.kotlin.descriptors.PackageFragmentProvider;
|
||||
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl;
|
||||
import org.jetbrains.kotlin.js.resolve.JsPlatform;
|
||||
@@ -42,10 +43,12 @@ import java.util.List;
|
||||
* Base class representing a configuration of translator.
|
||||
*/
|
||||
public abstract class JsConfig {
|
||||
private final boolean inlineEnabled;
|
||||
@NotNull
|
||||
private final Project project;
|
||||
@NotNull
|
||||
private final CompilerConfiguration configuration;
|
||||
private final boolean inlineEnabled;
|
||||
@NotNull
|
||||
private final LockBasedStorageManager storageManager = new LockBasedStorageManager();
|
||||
@NotNull
|
||||
private final List<KtFile> sourceFilesFromLibraries = new SmartList<KtFile>();
|
||||
@@ -69,6 +72,7 @@ public abstract class JsConfig {
|
||||
|
||||
protected JsConfig(
|
||||
@NotNull Project project,
|
||||
@NotNull CompilerConfiguration configuration,
|
||||
@NotNull String moduleId,
|
||||
@NotNull EcmaVersion ecmaVersion,
|
||||
boolean sourcemap,
|
||||
@@ -77,6 +81,7 @@ public abstract class JsConfig {
|
||||
boolean kjsm
|
||||
) {
|
||||
this.project = project;
|
||||
this.configuration = configuration;
|
||||
this.target = ecmaVersion;
|
||||
this.moduleId = moduleId;
|
||||
this.sourcemap = sourcemap;
|
||||
|
||||
@@ -29,6 +29,7 @@ import kotlin.jvm.functions.Function1;
|
||||
import kotlin.jvm.functions.Function2;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.kotlin.config.CompilerConfiguration;
|
||||
import org.jetbrains.kotlin.idea.KotlinFileType;
|
||||
import org.jetbrains.kotlin.js.JavaScript;
|
||||
import org.jetbrains.kotlin.psi.KtFile;
|
||||
@@ -64,6 +65,7 @@ public class LibrarySourcesConfig extends JsConfig {
|
||||
|
||||
private LibrarySourcesConfig(
|
||||
@NotNull Project project,
|
||||
@NotNull CompilerConfiguration configuration,
|
||||
@NotNull String moduleId,
|
||||
@NotNull List<String> files,
|
||||
@NotNull EcmaVersion ecmaVersion,
|
||||
@@ -73,7 +75,7 @@ public class LibrarySourcesConfig extends JsConfig {
|
||||
boolean metaInfo,
|
||||
boolean kjsm
|
||||
) {
|
||||
super(project, moduleId, ecmaVersion, sourceMap, inlineEnabled, metaInfo, kjsm);
|
||||
super(project, configuration, moduleId, ecmaVersion, sourceMap, inlineEnabled, metaInfo, kjsm);
|
||||
this.files = files;
|
||||
this.isUnitTestConfig = isUnitTestConfig;
|
||||
}
|
||||
@@ -189,19 +191,25 @@ public class LibrarySourcesConfig extends JsConfig {
|
||||
}
|
||||
|
||||
public static class Builder {
|
||||
Project project;
|
||||
String moduleId;
|
||||
List<String> files;
|
||||
@NotNull
|
||||
EcmaVersion ecmaVersion = EcmaVersion.defaultVersion();
|
||||
private final Project project;
|
||||
private final CompilerConfiguration configuration;
|
||||
private final String moduleId;
|
||||
private final List<String> files;
|
||||
private EcmaVersion ecmaVersion = EcmaVersion.defaultVersion();
|
||||
boolean sourceMap = false;
|
||||
boolean inlineEnabled = true;
|
||||
boolean isUnitTestConfig = false;
|
||||
boolean metaInfo = false;
|
||||
boolean kjsm = false;
|
||||
|
||||
public Builder(@NotNull Project project, @NotNull String moduleId, @NotNull List<String> files) {
|
||||
public Builder(
|
||||
@NotNull Project project,
|
||||
@NotNull CompilerConfiguration configuration,
|
||||
@NotNull String moduleId,
|
||||
@NotNull List<String> files
|
||||
) {
|
||||
this.project = project;
|
||||
this.configuration = configuration;
|
||||
this.moduleId = moduleId;
|
||||
this.files = files;
|
||||
}
|
||||
@@ -237,7 +245,9 @@ public class LibrarySourcesConfig extends JsConfig {
|
||||
}
|
||||
|
||||
public JsConfig build() {
|
||||
return new LibrarySourcesConfig(project, moduleId, files, ecmaVersion, sourceMap, inlineEnabled, isUnitTestConfig, metaInfo, kjsm);
|
||||
return new LibrarySourcesConfig(
|
||||
project, configuration, moduleId, files, ecmaVersion, sourceMap, inlineEnabled, isUnitTestConfig, metaInfo, kjsm
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -342,7 +342,7 @@ public abstract class BasicTest extends KotlinTestWithEnvironment {
|
||||
librariesWithStdlib.addAll(libraries);
|
||||
}
|
||||
|
||||
return new LibrarySourcesConfig.Builder(project, moduleId, librariesWithStdlib)
|
||||
return new LibrarySourcesConfig.Builder(project, getEnvironment().getConfiguration(), moduleId, librariesWithStdlib)
|
||||
.ecmaVersion(ecmaVersion)
|
||||
.sourceMap(shouldGenerateSourceMap())
|
||||
.inlineEnabled(isInlineEnabled)
|
||||
|
||||
Reference in New Issue
Block a user