diff --git a/build-tools/core/src/org/jetbrains/jet/buildtools/core/BytecodeCompiler.java b/build-tools/core/src/org/jetbrains/jet/buildtools/core/BytecodeCompiler.java
index 19c1ba401b3..aad74fbac3d 100644
--- a/build-tools/core/src/org/jetbrains/jet/buildtools/core/BytecodeCompiler.java
+++ b/build-tools/core/src/org/jetbrains/jet/buildtools/core/BytecodeCompiler.java
@@ -26,6 +26,7 @@ import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.cli.common.CLIConfigurationKeys;
import org.jetbrains.jet.cli.common.CompilerPlugin;
import org.jetbrains.jet.cli.common.messages.MessageCollectorPlainTextToStream;
+import org.jetbrains.jet.cli.common.modules.ModuleScriptData;
import org.jetbrains.jet.cli.jvm.JVMConfigurationKeys;
import org.jetbrains.jet.cli.jvm.compiler.*;
import org.jetbrains.jet.config.CommonConfigurationKeys;
@@ -231,7 +232,7 @@ public class BytecodeCompiler {
@Nullable String[] externalAnnotationsPath, boolean enableInline
) {
try {
- CompileEnvironmentUtil.ModuleScriptData moduleScriptData =
+ ModuleScriptData moduleScriptData =
loadModuleDescriptions(getKotlinPathsForAntTask(), module, MessageCollectorPlainTextToStream.PLAIN_TEXT_TO_SYSTEM_ERR);
List modules = moduleScriptData.getModules();
List sourcesRoots = new ArrayList();
diff --git a/compiler/cli/cli-common/cli-common.iml b/compiler/cli/cli-common/cli-common.iml
index d0a04b011b4..641076a3d8d 100644
--- a/compiler/cli/cli-common/cli-common.iml
+++ b/compiler/cli/cli-common/cli-common.iml
@@ -8,6 +8,7 @@
+
diff --git a/compiler/cli/cli-common/src/org/jetbrains/jet/cli/common/modules/ModuleDescription.java b/compiler/cli/cli-common/src/org/jetbrains/jet/cli/common/modules/ModuleDescription.java
deleted file mode 100644
index 70bd28bfb20..00000000000
--- a/compiler/cli/cli-common/src/org/jetbrains/jet/cli/common/modules/ModuleDescription.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * Copyright 2010-2013 JetBrains s.r.o.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.jetbrains.jet.cli.common.modules;
-
-import com.intellij.util.SmartList;
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
-
-import java.util.List;
-
-/**
- * This interface duplicates {@link kotlin.modules.Module}, because cli-common should not depend on kotlin-runtime.jar
- */
-public interface ModuleDescription {
-
- @NotNull
- String getModuleName();
-
- @NotNull
- String getOutputDir();
-
- @NotNull
- List getSourceFiles();
-
- @NotNull
- List getClasspathRoots();
-
- @NotNull
- List getAnnotationsRoots();
-
- class Impl implements ModuleDescription {
-
- private String name;
- private String outputDir;
- private final List sources = new SmartList();
- private final List classpath = new SmartList();
- private final List annotations = new SmartList();
-
- public void setName(String name) {
- this.name = name;
- }
-
- public void setOutputDir(String outputDir) {
- this.outputDir = outputDir;
- }
-
- public void addSourcePath(String path) {
- sources.add(path);
- }
-
- public void addClassPath(String path) {
- classpath.add(path);
- }
-
- public void addAnnotationPath(String path) {
- annotations.add(path);
- }
-
- @NotNull
- @Override
- public String getModuleName() {
- return name;
- }
-
- @NotNull
- @Override
- public String getOutputDir() {
- return outputDir;
- }
-
- @NotNull
- @Override
- public List getSourceFiles() {
- return sources;
- }
-
- @NotNull
- @Override
- public List getClasspathRoots() {
- return classpath;
- }
-
- @NotNull
- @Override
- public List getAnnotationsRoots() {
- return annotations;
- }
-
- @Override
- public String toString() {
- return name +
- "\n\toutputDir=" + outputDir +
- "\n\tsources=" + sources +
- "\n\tclasspath=" + classpath +
- "\n\tannotations=" + annotations;
- }
- }
-}
diff --git a/compiler/cli/cli-common/src/org/jetbrains/jet/cli/common/modules/ModuleScriptData.java b/compiler/cli/cli-common/src/org/jetbrains/jet/cli/common/modules/ModuleScriptData.java
new file mode 100644
index 00000000000..727bccf305d
--- /dev/null
+++ b/compiler/cli/cli-common/src/org/jetbrains/jet/cli/common/modules/ModuleScriptData.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright 2010-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.jetbrains.jet.cli.common.modules;
+
+import kotlin.modules.Module;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.Collections;
+import java.util.List;
+
+public class ModuleScriptData {
+ public static final ModuleScriptData EMPTY = new ModuleScriptData(Collections.emptyList(), null);
+
+ @Nullable
+ private final String incrementalCacheDir;
+ @NotNull
+ private final List modules;
+
+ @NotNull
+ public List getModules() {
+ return modules;
+ }
+
+ @Nullable
+ public String getIncrementalCacheDir() {
+ return incrementalCacheDir;
+ }
+
+ public ModuleScriptData(@NotNull List modules, @Nullable String incrementalCacheDir) {
+ this.incrementalCacheDir = incrementalCacheDir;
+ this.modules = modules;
+ }
+}
diff --git a/compiler/cli/cli-common/src/org/jetbrains/jet/cli/common/modules/ModuleXmlParser.java b/compiler/cli/cli-common/src/org/jetbrains/jet/cli/common/modules/ModuleXmlParser.java
index 78d7914bd08..04c564a38de 100644
--- a/compiler/cli/cli-common/src/org/jetbrains/jet/cli/common/modules/ModuleXmlParser.java
+++ b/compiler/cli/cli-common/src/org/jetbrains/jet/cli/common/modules/ModuleXmlParser.java
@@ -16,11 +16,14 @@
package org.jetbrains.jet.cli.common.modules;
-import com.intellij.openapi.util.Pair;
import com.intellij.openapi.util.io.StreamUtil;
import com.intellij.util.SmartList;
+import kotlin.modules.Module;
+import kotlin.modules.ModuleBuilder;
import org.jetbrains.annotations.NotNull;
-import org.jetbrains.jet.cli.common.messages.*;
+import org.jetbrains.jet.cli.common.messages.MessageCollector;
+import org.jetbrains.jet.cli.common.messages.MessageCollectorUtil;
+import org.jetbrains.jet.cli.common.messages.MessageRenderer;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
@@ -29,11 +32,10 @@ import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import java.io.*;
-import java.util.Collections;
import java.util.List;
-import static org.jetbrains.jet.cli.common.messages.CompilerMessageLocation.*;
-import static org.jetbrains.jet.cli.common.messages.CompilerMessageSeverity.*;
+import static org.jetbrains.jet.cli.common.messages.CompilerMessageLocation.NO_LOCATION;
+import static org.jetbrains.jet.cli.common.messages.CompilerMessageSeverity.ERROR;
public class ModuleXmlParser {
@@ -48,7 +50,7 @@ public class ModuleXmlParser {
public static final String EXTERNAL_ANNOTATIONS = "externalAnnotations";
@NotNull
- public static Pair, String> parseModuleDescriptionsAndIncrementalCacheDir(
+ public static ModuleScriptData parseModuleScript(
@NotNull String xmlFile,
@NotNull MessageCollector messageCollector
) {
@@ -60,7 +62,7 @@ public class ModuleXmlParser {
}
catch (FileNotFoundException e) {
MessageCollectorUtil.reportException(messageCollector, e);
- return Pair.create(Collections.emptyList(), null);
+ return ModuleScriptData.EMPTY;
}
finally {
StreamUtil.closeStream(stream);
@@ -69,7 +71,7 @@ public class ModuleXmlParser {
private final MessageCollector messageCollector;
private String incrementalCacheDir;
- private final List descriptions = new SmartList();
+ private final List modules = new SmartList();
private DefaultHandler currentState;
private ModuleXmlParser(@NotNull MessageCollector messageCollector) {
@@ -80,7 +82,7 @@ public class ModuleXmlParser {
this.currentState = currentState;
}
- private Pair, String> parse(@NotNull InputStream xml) {
+ private ModuleScriptData parse(@NotNull InputStream xml) {
try {
setCurrentState(initial);
SAXParser saxParser = SAXParserFactory.newInstance().newSAXParser();
@@ -91,7 +93,7 @@ public class ModuleXmlParser {
return currentState;
}
});
- return Pair.create(descriptions, incrementalCacheDir);
+ return new ModuleScriptData(modules, incrementalCacheDir);
}
catch (ParserConfigurationException e) {
MessageCollectorUtil.reportException(messageCollector, e);
@@ -102,7 +104,7 @@ public class ModuleXmlParser {
catch (IOException e) {
MessageCollectorUtil.reportException(messageCollector, e);
}
- return Pair.create(Collections.emptyList(), null);
+ return ModuleScriptData.EMPTY;
}
private final DefaultHandler initial = new DefaultHandler() {
@@ -140,27 +142,25 @@ public class ModuleXmlParser {
private class InsideModule extends DefaultHandler {
- private final ModuleDescription.Impl moduleDescription;
+ private final ModuleBuilder moduleBuilder;
private InsideModule(String name, String outputDir) {
- this.moduleDescription = new ModuleDescription.Impl();
- this.moduleDescription.setName(name);
- this.moduleDescription.setOutputDir(outputDir);
- descriptions.add(moduleDescription);
+ this.moduleBuilder = new ModuleBuilder(name, outputDir);
+ modules.add(moduleBuilder);
}
@Override
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
if (SOURCES.equalsIgnoreCase(qName)) {
String path = getAttribute(attributes, PATH, qName);
- moduleDescription.addSourcePath(path);
+ moduleBuilder.addSourceFiles(path);
}
else if (CLASSPATH.equalsIgnoreCase(qName)) {
String path = getAttribute(attributes, PATH, qName);
- moduleDescription.addClassPath(path);
+ moduleBuilder.addClasspathEntry(path);
}
else if (EXTERNAL_ANNOTATIONS.equalsIgnoreCase(qName)) {
String path = getAttribute(attributes, PATH, qName);
- moduleDescription.addAnnotationPath(path);
+ moduleBuilder.addAnnotationsPathEntry(path);
}
else {
throw createError(qName);
diff --git a/compiler/cli/src/org/jetbrains/jet/cli/jvm/K2JVMCompiler.java b/compiler/cli/src/org/jetbrains/jet/cli/jvm/K2JVMCompiler.java
index 7fc969f89de..8353071bfcf 100644
--- a/compiler/cli/src/org/jetbrains/jet/cli/jvm/K2JVMCompiler.java
+++ b/compiler/cli/src/org/jetbrains/jet/cli/jvm/K2JVMCompiler.java
@@ -27,6 +27,7 @@ import org.jetbrains.jet.cli.common.ExitCode;
import org.jetbrains.jet.cli.common.arguments.CompilerArgumentsUtil;
import org.jetbrains.jet.cli.common.arguments.K2JVMCompilerArguments;
import org.jetbrains.jet.cli.common.messages.*;
+import org.jetbrains.jet.cli.common.modules.ModuleScriptData;
import org.jetbrains.jet.cli.jvm.compiler.CommandLineScriptUtils;
import org.jetbrains.jet.cli.jvm.compiler.CompileEnvironmentUtil;
import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment;
@@ -128,7 +129,7 @@ public class K2JVMCompiler extends CLICompiler {
if (arguments.module != null) {
MessageCollector sanitizedCollector = new FilteringMessageCollector(messageCollector, in(CompilerMessageSeverity.VERBOSE));
- CompileEnvironmentUtil.ModuleScriptData moduleScript = CompileEnvironmentUtil.loadModuleDescriptions(
+ ModuleScriptData moduleScript = CompileEnvironmentUtil.loadModuleDescriptions(
paths, arguments.module, sanitizedCollector);
if (moduleScript.getIncrementalCacheDir() != null) {
configuration.put(JVMConfigurationKeys.INCREMENTAL_CACHE_BASE_DIR, new File(moduleScript.getIncrementalCacheDir()));
diff --git a/compiler/cli/src/org/jetbrains/jet/cli/jvm/compiler/CompileEnvironmentUtil.java b/compiler/cli/src/org/jetbrains/jet/cli/jvm/compiler/CompileEnvironmentUtil.java
index 0faf2ed84e6..aeb5e99e8b7 100644
--- a/compiler/cli/src/org/jetbrains/jet/cli/jvm/compiler/CompileEnvironmentUtil.java
+++ b/compiler/cli/src/org/jetbrains/jet/cli/jvm/compiler/CompileEnvironmentUtil.java
@@ -20,7 +20,6 @@ import com.google.common.collect.Lists;
import com.intellij.openapi.Disposable;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Disposer;
-import com.intellij.openapi.util.Pair;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.util.io.FileUtilRt;
import com.intellij.openapi.vfs.StandardFileSystems;
@@ -29,8 +28,6 @@ import com.intellij.openapi.vfs.VirtualFileManager;
import com.intellij.openapi.vfs.VirtualFileSystem;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiManager;
-import com.intellij.util.Function;
-import com.intellij.util.containers.ContainerUtil;
import kotlin.Function1;
import kotlin.Unit;
import kotlin.io.IoPackage;
@@ -42,7 +39,7 @@ import org.jetbrains.jet.OutputFile;
import org.jetbrains.jet.cli.common.CLIConfigurationKeys;
import org.jetbrains.jet.cli.common.messages.MessageCollector;
import org.jetbrains.jet.cli.common.messages.MessageRenderer;
-import org.jetbrains.jet.cli.common.modules.ModuleDescription;
+import org.jetbrains.jet.cli.common.modules.ModuleScriptData;
import org.jetbrains.jet.cli.common.modules.ModuleXmlParser;
import org.jetbrains.jet.cli.common.output.outputUtils.OutputUtilsPackage;
import org.jetbrains.jet.cli.jvm.JVMConfigurationKeys;
@@ -85,30 +82,17 @@ public class CompileEnvironmentUtil {
File file = new File(moduleDefinitionFile);
if (!file.exists()) {
messageCollector.report(ERROR, "Module definition file does not exist: " + moduleDefinitionFile, NO_LOCATION);
- return new ModuleScriptData(Collections.emptyList(), null);
+ return ModuleScriptData.EMPTY;
}
String extension = FileUtilRt.getExtension(moduleDefinitionFile);
if ("ktm".equalsIgnoreCase(extension)) {
return loadModuleScript(paths, moduleDefinitionFile, messageCollector);
}
if ("xml".equalsIgnoreCase(extension)) {
- Pair, String> moduleDescriptionsAndIncrementalCacheDir =
- ModuleXmlParser.parseModuleDescriptionsAndIncrementalCacheDir(moduleDefinitionFile, messageCollector);
- List moduleDescriptions = moduleDescriptionsAndIncrementalCacheDir.first;
- String incrementalCacheDir = moduleDescriptionsAndIncrementalCacheDir.second;
- List modules = ContainerUtil.map(
- moduleDescriptions,
- new Function() {
- @Override
- public Module fun(ModuleDescription description) {
- return new DescriptionToModuleAdapter(description);
- }
- }
- );
- return new ModuleScriptData(modules, incrementalCacheDir);
+ return ModuleXmlParser.parseModuleScript(moduleDefinitionFile, messageCollector);
}
messageCollector.report(ERROR, "Unknown module definition type: " + moduleDefinitionFile, NO_LOCATION);
- return new ModuleScriptData(Collections.emptyList(), null);
+ return ModuleScriptData.EMPTY;
}
@NotNull
@@ -327,64 +311,4 @@ public class CompileEnvironmentUtil {
return result;
}
-
- public static class ModuleScriptData {
- @Nullable
- private final String incrementalCacheDir;
- @NotNull
- private final List modules;
-
- @NotNull
- public List getModules() {
- return modules;
- }
-
- @Nullable
- public String getIncrementalCacheDir() {
- return incrementalCacheDir;
- }
-
- private ModuleScriptData(@NotNull List modules, @Nullable String incrementalCacheDir) {
- this.incrementalCacheDir = incrementalCacheDir;
- this.modules = modules;
- }
- }
-
- private static class DescriptionToModuleAdapter implements Module {
- private final ModuleDescription description;
-
- public DescriptionToModuleAdapter(ModuleDescription description) {
- this.description = description;
- }
-
- @NotNull
- @Override
- public String getModuleName() {
- return description.getModuleName();
- }
-
- @NotNull
- @Override
- public String getOutputDirectory() {
- return description.getOutputDir();
- }
-
- @NotNull
- @Override
- public List getSourceFiles() {
- return description.getSourceFiles();
- }
-
- @NotNull
- @Override
- public List getClasspathRoots() {
- return description.getClasspathRoots();
- }
-
- @NotNull
- @Override
- public List getAnnotationsRoots() {
- return description.getAnnotationsRoots();
- }
- }
}
diff --git a/compiler/tests/org/jetbrains/jet/modules/xml/AbstractModuleXmlParserTest.java b/compiler/tests/org/jetbrains/jet/modules/xml/AbstractModuleXmlParserTest.java
index ac2a686078d..e0c56cdc813 100644
--- a/compiler/tests/org/jetbrains/jet/modules/xml/AbstractModuleXmlParserTest.java
+++ b/compiler/tests/org/jetbrains/jet/modules/xml/AbstractModuleXmlParserTest.java
@@ -16,28 +16,27 @@
package org.jetbrains.jet.modules.xml;
-import com.intellij.openapi.util.Pair;
import com.intellij.openapi.util.io.FileUtil;
import junit.framework.TestCase;
+import kotlin.modules.Module;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.JetTestUtils;
import org.jetbrains.jet.cli.common.messages.CompilerMessageLocation;
import org.jetbrains.jet.cli.common.messages.CompilerMessageSeverity;
import org.jetbrains.jet.cli.common.messages.MessageCollector;
import org.jetbrains.jet.cli.common.messages.MessageRenderer;
-import org.jetbrains.jet.cli.common.modules.ModuleDescription;
+import org.jetbrains.jet.cli.common.modules.ModuleScriptData;
import org.jetbrains.jet.cli.common.modules.ModuleXmlParser;
import java.io.File;
import java.io.IOException;
-import java.util.List;
public abstract class AbstractModuleXmlParserTest extends TestCase {
protected void doTest(String xmlPath) throws IOException {
File txtFile = new File(FileUtil.getNameWithoutExtension(xmlPath) + ".txt");
- Pair, String> result = ModuleXmlParser.parseModuleDescriptionsAndIncrementalCacheDir(xmlPath, new MessageCollector() {
+ ModuleScriptData result = ModuleXmlParser.parseModuleScript(xmlPath, new MessageCollector() {
@Override
public void report(
@NotNull CompilerMessageSeverity severity, @NotNull String message, @NotNull CompilerMessageLocation location
@@ -47,12 +46,12 @@ public abstract class AbstractModuleXmlParserTest extends TestCase {
});
StringBuilder sb = new StringBuilder();
- if (result.second != null) {
- sb.append("incrementalCacheDir=").append(result.second).append("\n\n");
+ if (result.getIncrementalCacheDir() != null) {
+ sb.append("incrementalCacheDir=").append(result.getIncrementalCacheDir()).append("\n\n");
}
- for (ModuleDescription description : result.first) {
- sb.append(description).append("\n");
+ for (Module module : result.getModules()) {
+ sb.append(moduleToString(module)).append("\n");
}
String actual = sb.toString();
@@ -64,4 +63,12 @@ public abstract class AbstractModuleXmlParserTest extends TestCase {
JetTestUtils.assertEqualsToFile(txtFile, actual);
}
+
+ private static String moduleToString(@NotNull Module module) {
+ return module.getModuleName() +
+ "\n\toutputDir=" + module.getOutputDirectory() +
+ "\n\tsources=" + module.getSourceFiles() +
+ "\n\tclasspath=" + module.getClasspathRoots() +
+ "\n\tannotations=" + module.getAnnotationsRoots();
+ }
}