diff --git a/idea/idea-maven/src/org/jetbrains/kotlin/idea/maven/KotlinMavenImporter.kt b/idea/idea-maven/src/org/jetbrains/kotlin/idea/maven/KotlinMavenImporter.kt index 79e777fe313..d8d2974c63f 100644 --- a/idea/idea-maven/src/org/jetbrains/kotlin/idea/maven/KotlinMavenImporter.kt +++ b/idea/idea-maven/src/org/jetbrains/kotlin/idea/maven/KotlinMavenImporter.kt @@ -130,6 +130,7 @@ class KotlinMavenImporter : MavenImporter(KOTLIN_PLUGIN_GROUP_ID, KOTLIN_PLUGIN_ is K2JSCompilerArguments -> { arguments.sourceMap = configuration?.getChild("sourceMap")?.text?.trim()?.toBoolean() ?: false arguments.sourceMapPrefix = configuration?.getChild("sourceMapPrefix")?.text?.trim() ?: "" + arguments.sourceMapEmbedSources = configuration?.getChild("sourceMapEmbedSources")?.text?.trim() ?: "inlining" arguments.outputFile = configuration?.getChild("outputFile")?.text arguments.metaInfo = configuration?.getChild("metaInfo")?.text?.trim()?.toBoolean() ?: false arguments.moduleKind = configuration?.getChild("moduleKind")?.text diff --git a/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerConfigurableTab.form b/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerConfigurableTab.form index 86a96e286b9..7d89bc8c52a 100644 --- a/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerConfigurableTab.form +++ b/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerConfigurableTab.form @@ -3,7 +3,7 @@ - + @@ -15,7 +15,7 @@ - + @@ -30,7 +30,7 @@ - + @@ -38,13 +38,13 @@ - + - + @@ -52,13 +52,13 @@ - + - + @@ -66,7 +66,7 @@ - + @@ -76,7 +76,7 @@ - + @@ -85,7 +85,7 @@ - + @@ -94,7 +94,7 @@ - + @@ -126,6 +126,20 @@ + + + + + + + + + + + + + + diff --git a/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerConfigurableTab.java b/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerConfigurableTab.java index aa0bf5fd23f..d3a524aae18 100644 --- a/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerConfigurableTab.java +++ b/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerConfigurableTab.java @@ -64,7 +64,8 @@ import java.util.List; import java.util.Map; public class KotlinCompilerConfigurableTab implements SearchableConfigurable, Configurable.NoScroll{ - private static final Map moduleKindDescriptions = new LinkedHashMap(); + private static final Map moduleKindDescriptions = new LinkedHashMap<>(); + private static final Map soruceMapSourceEmbeddingDescriptions = new LinkedHashMap<>(); private static final List languageFeatureStates = Arrays.asList( LanguageFeature.State.ENABLED, LanguageFeature.State.ENABLED_WITH_WARNING, LanguageFeature.State.ENABLED_WITH_ERROR ); @@ -75,6 +76,11 @@ public class KotlinCompilerConfigurableTab implements SearchableConfigurable, Co moduleKindDescriptions.put(K2JsArgumentConstants.MODULE_AMD, "AMD"); moduleKindDescriptions.put(K2JsArgumentConstants.MODULE_COMMONJS, "CommonJS"); moduleKindDescriptions.put(K2JsArgumentConstants.MODULE_UMD, "UMD (detect AMD or CommonJS if available, fallback to plain)"); + + soruceMapSourceEmbeddingDescriptions.put(K2JsArgumentConstants.SOURCE_MAP_SOURCE_CONTENT_NEVER, "Never"); + soruceMapSourceEmbeddingDescriptions.put(K2JsArgumentConstants.SOURCE_MAP_SOURCE_CONTENT_ALWAYS, "Always"); + soruceMapSourceEmbeddingDescriptions.put(K2JsArgumentConstants.SOURCE_MAP_SOURCE_CONTENT_INLINING, + "When inlining a function from other module with embedded sources"); } @Nullable @@ -114,6 +120,7 @@ public class KotlinCompilerConfigurableTab implements SearchableConfigurable, Co private JLabel warningLabel; private JTextField sourceMapPrefix; private JLabel labelForSourceMapPrefix; + private JComboBox sourceMapEmbedSources; private boolean isEnabled = true; public KotlinCompilerConfigurableTab( @@ -157,6 +164,7 @@ public class KotlinCompilerConfigurableTab implements SearchableConfigurable, Co false); fillModuleKindList(); + fillSourceMapSourceEmbeddingList(); fillJvmVersionList(); fillLanguageAndAPIVersionList(); fillCoroutineSupportList(); @@ -258,6 +266,15 @@ public class KotlinCompilerConfigurableTab implements SearchableConfigurable, Co return result; } + @NotNull + private static String getSourceMapSourceEmbeddingDescription(@Nullable String sourceMapSourceEmbeddingId) { + if (sourceMapSourceEmbeddingId == null) return ""; + String result = soruceMapSourceEmbeddingDescriptions.get(sourceMapSourceEmbeddingId); + assert result != null : "Source map source embedding mode " + sourceMapSourceEmbeddingId + + " was not added to combobox, therefore it should not be here"; + return result; + } + @NotNull private static String getModuleKindOrDefault(@Nullable String moduleKindId) { if (moduleKindId == null) { @@ -266,6 +283,14 @@ public class KotlinCompilerConfigurableTab implements SearchableConfigurable, Co return moduleKindId; } + @NotNull + private static String getSourceMapSourceEmbeddingOrDefault(@Nullable String sourceMapSourceEmbeddingId) { + if (sourceMapSourceEmbeddingId == null) { + sourceMapSourceEmbeddingId = K2JsArgumentConstants.SOURCE_MAP_SOURCE_CONTENT_INLINING; + } + return sourceMapSourceEmbeddingId; + } + private static String getJvmVersionOrDefault(@Nullable String jvmVersion) { return jvmVersion != null ? jvmVersion : JvmTarget.DEFAULT.getDescription(); } @@ -370,6 +395,19 @@ public class KotlinCompilerConfigurableTab implements SearchableConfigurable, Co }); } + @SuppressWarnings("unchecked") + private void fillSourceMapSourceEmbeddingList() { + for (String moduleKind : soruceMapSourceEmbeddingDescriptions.keySet()) { + sourceMapEmbedSources.addItem(moduleKind); + } + sourceMapEmbedSources.setRenderer(new ListCellRendererWrapper() { + @Override + public void customize(JList list, String value, int index, boolean selected, boolean hasFocus) { + setText(value != null ? getSourceMapSourceEmbeddingDescription(value) : ""); + } + }); + } + @NotNull @Override public String getId() { @@ -409,7 +447,8 @@ public class KotlinCompilerConfigurableTab implements SearchableConfigurable, Co ComparingUtils.isModified(outputPostfixFile, k2jsCompilerArguments.outputPostfix) || !getSelectedModuleKind().equals(getModuleKindOrDefault(k2jsCompilerArguments.moduleKind)) || ComparingUtils.isModified(sourceMapPrefix, k2jsCompilerArguments.sourceMapPrefix) || - + !getSelectedSourceMapSourceEmbedding().equals( + getSourceMapSourceEmbeddingOrDefault(k2jsCompilerArguments.sourceMapEmbedSources)) || !getSelectedJvmVersion().equals(getJvmVersionOrDefault(k2jvmCompilerArguments.jvmTarget)); } @@ -418,6 +457,10 @@ public class KotlinCompilerConfigurableTab implements SearchableConfigurable, Co return getModuleKindOrDefault((String) moduleKindComboBox.getSelectedItem()); } + private String getSelectedSourceMapSourceEmbedding() { + return getSourceMapSourceEmbeddingOrDefault((String) sourceMapEmbedSources.getSelectedItem()); + } + @NotNull private String getSelectedJvmVersion() { return getJvmVersionOrDefault((String) jvmVersionComboBox.getSelectedItem()); @@ -499,6 +542,7 @@ public class KotlinCompilerConfigurableTab implements SearchableConfigurable, Co k2jsCompilerArguments.moduleKind = getSelectedModuleKind(); k2jsCompilerArguments.sourceMapPrefix = sourceMapPrefix.getText(); + k2jsCompilerArguments.sourceMapEmbedSources = getSelectedSourceMapSourceEmbedding(); k2jvmCompilerArguments.jvmTarget = getSelectedJvmVersion(); @@ -542,6 +586,7 @@ public class KotlinCompilerConfigurableTab implements SearchableConfigurable, Co moduleKindComboBox.setSelectedItem(getModuleKindOrDefault(k2jsCompilerArguments.moduleKind)); sourceMapPrefix.setText(k2jsCompilerArguments.sourceMapPrefix); sourceMapPrefix.setEnabled(k2jsCompilerArguments.sourceMap); + sourceMapEmbedSources.setSelectedItem(getSourceMapSourceEmbeddingOrDefault(k2jsCompilerArguments.sourceMapEmbedSources)); jvmVersionComboBox.setSelectedItem(getJvmVersionOrDefault(k2jvmCompilerArguments.jvmTarget)); } diff --git a/idea/src/org/jetbrains/kotlin/idea/facet/facetUtils.kt b/idea/src/org/jetbrains/kotlin/idea/facet/facetUtils.kt index 7d233dd5ddf..c5c6ee438ce 100644 --- a/idea/src/org/jetbrains/kotlin/idea/facet/facetUtils.kt +++ b/idea/src/org/jetbrains/kotlin/idea/facet/facetUtils.kt @@ -164,6 +164,7 @@ private val jvmPrimaryFields = commonPrimaryFields + jvmSpecificUIExposedFields private val jsSpecificUIExposedFields = listOf(K2JSCompilerArguments::sourceMap.name, K2JSCompilerArguments::sourceMapPrefix.name, + K2JSCompilerArguments::sourceMapEmbedSources.name, K2JSCompilerArguments::outputPrefix.name, K2JSCompilerArguments::outputPostfix.name, K2JSCompilerArguments::moduleKind.name)