~ add compiler-min tasks as separate "build.xml" to avoid conflicts during rebase in the future
diff --git a/.idea/ant.xml b/.idea/ant.xml
index 455b5c0..4d8e6aa 100644
--- a/.idea/ant.xml
+++ b/.idea/ant.xml
@@ -19,5 +19,8 @@
</buildFile>
<buildFile url="file://$PROJECT_DIR$/TeamCityRelay.xml" />
<buildFile url="file://$PROJECT_DIR$/node_utils.xml" />
+ <buildFile url="file://$PROJECT_DIR$/build-compiler-min.xml">
+ <maximumHeapSize value="1024" />
+ </buildFile>
</component>
</project>
\ No newline at end of file
diff --git a/build-compiler-min.xml b/build-compiler-min.xml
new file mode 100644
index 0000000..e1d1e51
--- /dev/null
+++ b/build-compiler-min.xml
@@ -0,0 +1,133 @@
+<project xmlns:if="ant:if" xmlns:unless="ant:unless" name="Kotlin JS min" default="compiler.kjs.min">
+ <import file="build.xml" optional="false"/>
+
+ <dirset id="compilerSources.dirset.kjs" dir="${basedir}/">
+ <include name="compiler/util/src"/>
+
+ <include name="compiler/container/src"/>
+
+ <include name="core/descriptors/src"/>
+ <include name="core/deserialization/src"/>
+ <include name="core/util.runtime/src"/>
+ <include name="compiler/serialization/src"/>
+
+ <include name="compiler/frontend/src"/>
+ <include name="compiler/resolution/src"/>
+
+ <include name="compiler/backend-common/src"/>
+
+ <include name="js/js.ast/src"/>
+ <include name="js/js.translator/src"/>
+ <include name="js/js.frontend/src"/>
+ <include name="js/js.inliner/src"/>
+ <include name="js/js.parser/src"/>
+ <include name="js/js.serializer/src"/>
+
+ <include name="compiler/cli/cli-js/src"/>
+
+ <!--<include name="compiler/cli/src"/>-->
+ <!--<include name="compiler/cli/cli-common/src"/>-->
+
+ <!--<include name="compiler/plugin-api/src"/>-->
+ </dirset>
+
+ <path id="compilerSources.path.kjs">
+ <dirset refid="compilerSources.dirset.kjs"/>
+ </path>
+
+ <macrodef name="pack-compiler-min">
+ <attribute name="jarfile"/>
+ <attribute name="compress" default="true"/>
+
+ <sequential>
+ <jar jarfile="@{jarfile}" compress="@{compress}" duplicate="preserve">
+ <fileset dir="${output}/classes/compiler"/>
+ <fileset dir="${output}/builtins">
+ <include name="kotlin/**"/>
+ </fileset>
+ <!--<fileset dir="${basedir}/core/descriptor.loader.java/src" includes="META-INF/services/**"/>-->
+ <!--<fileset dir="${basedir}/compiler/frontend.java/src" includes="META-INF/services/**"/>-->
+ <!--<fileset dir="${basedir}/compiler/backend/src" includes="META-INF/services/**"/>-->
+ <!--<fileset dir="${basedir}/compiler/cli/src" includes="META-INF/services/**"/>-->
+ <fileset dir="${basedir}/resources" includes="kotlinManifest.properties"/>
+
+ <fileset dir="idea/src">
+ <include name="META-INF/extensions/common.xml"/>
+ <!--<include name="META-INF/extensions/kotlin2jvm.xml"/>-->
+ <include name="META-INF/extensions/kotlin2js.xml"/>
+ </fileset>
+
+ <zipgroupfileset dir="${basedir}/lib" includes="*.jar"/>
+ <zipfileset src="${basedir}/ideaSDK/core/annotations.jar"/>
+ <zipfileset src="${basedir}/ideaSDK/core/asm-all.jar"/>
+ <zipfileset src="${basedir}/ideaSDK/core/guava-19.0.jar"/>
+ <zipfileset src="${basedir}/ideaSDK/core/intellij-core.jar"/>
+ <zipfileset src="${basedir}/ideaSDK/core/jdom.jar"/>
+ <zipfileset src="${basedir}/ideaSDK/core/jna.jar"/>
+ <zipfileset src="${basedir}/ideaSDK/core/log4j.jar"/>
+ <zipfileset src="${basedir}/ideaSDK/core/picocontainer.jar"/>
+ <zipfileset src="${basedir}/ideaSDK/core/snappy-in-java-0.5.1.jar"/>
+ <zipfileset src="${basedir}/ideaSDK/core/trove4j.jar"/>
+ <zipfileset src="${basedir}/ideaSDK/core/xpp3-1.1.4-min.jar"/>
+ <zipfileset src="${basedir}/ideaSDK/core/xstream-1.4.8.jar"/>
+ <zipfileset src="${idea.sdk}/lib/jna-platform.jar"/>
+ <zipfileset src="${idea.sdk}/lib/oromatcher.jar"/>
+ <zipfileset src="${idea.sdk}/jps/jps-model.jar"/>
+ <zipfileset src="${dependencies}/jline.jar"/>
+ <zipfileset src="${dependencies}/javaslang-2.0.6.jar"/>
+ <zipfileset src="${protobuf.jar}"/>
+
+ <manifest>
+ <attribute name="Built-By" value="${manifest.impl.vendor}"/>
+
+ <attribute name="Implementation-Vendor" value="${manifest.impl.vendor}"/>
+ <attribute name="Implementation-Title" value="${manifest.impl.title.kotlin.compiler}"/>
+ <attribute name="Implementation-Version" value="${build.number}"/>
+
+ <!--<attribute name="Class-Path" value="${compiler.manifest.class.path}"/>-->
+ <!--<attribute name="Main-Class" value="org.jetbrains.kotlin.cli.jvm.K2JVMCompiler"/>-->
+
+ <!-- This is needed if the compiler is run on Java 9 via "java -jar kotlin-compiler.jar" -->
+ <attribute name="Add-Opens" value="java.base/java.lang java.base/java.util java.base/java.util.concurrent.atomic java.base/jdk.internal.misc"/>
+ </manifest>
+ </jar>
+ </sequential>
+ </macrodef>
+
+ <target name="compiler.kjs.min">
+ <cleandir dir="${output}/classes/compiler"/>
+
+ <javac2 destdir="${output}/classes/compiler" debug="true" debuglevel="lines,vars,source" includeAntRuntime="false"
+ source="${java.target}" target="${java.target}">
+ <withKotlin modulename="kotlin-compiler">
+ <compilerarg value="-version"/>
+ </withKotlin>
+ <skip pattern="kotlin/Metadata"/>
+ <src refid="compilerSources.path.kjs"/>
+ <classpath refid="classpath"/>
+ </javac2>
+
+ <pack-compiler-min jarfile="${output}/kotlin-compiler-before-shrink-min.jar"/>
+
+ <delete file="${kotlin-home}/lib/kotlin-compiler-min.jar" failonerror="false"/>
+
+ <copy file="${output}/kotlin-compiler-before-shrink-min.jar"
+ tofile="${kotlin-home}/lib/kotlin-compiler-min.jar"
+ unless:true="${shrink}" />
+
+ <shrink2 />
+ </target>
+
+ <target name="shrink-compiler-min" >
+ <delete file="${kotlin-home}/lib/kotlin-compiler-min.jar" failonerror="false"/>
+ <shrink2 />
+ </target>
+
+ <macrodef name="shrink2">
+ <sequential>
+ <sequential if:true="${shrink}">
+ <shrink configuration="${basedir}/compiler/compiler-kjs-min.pro"/>
+ </sequential>
+ </sequential>
+ </macrodef>
+</project>
diff --git a/compiler/compiler-kjs-min.pro b/compiler/compiler-kjs-min.pro
new file mode 100644
index 0000000..ccf21d1
--- /dev/null
+++ b/compiler/compiler-kjs-min.pro
@@ -0,0 +1,151 @@
+-injars '<output>/kotlin-compiler-before-shrink-min.jar'(
+!com/thoughtworks/xstream/converters/extended/ISO8601**,
+!com/thoughtworks/xstream/converters/reflection/CGLIBEnhancedConverter**,
+!com/thoughtworks/xstream/io/xml/JDom**,
+!com/thoughtworks/xstream/io/xml/Dom4J**,
+!com/thoughtworks/xstream/io/xml/Xom**,
+!com/thoughtworks/xstream/io/xml/Wstx**,
+!com/thoughtworks/xstream/io/xml/KXml2**,
+!com/thoughtworks/xstream/io/xml/BEAStax**,
+!com/thoughtworks/xstream/io/json/Jettison**,
+!com/thoughtworks/xstream/mapper/CGLIBMapper**,
+!com/thoughtworks/xstream/mapper/LambdaMapper**,
+!org/apache/log4j/jmx/Agent*,
+!org/apache/log4j/net/JMS*,
+!org/apache/log4j/net/SMTP*,
+!org/apache/log4j/or/jms/MessageRenderer*,
+!org/jdom/xpath/Jaxen*,
+!org/mozilla/javascript/xml/impl/xmlbeans/**,
+!net/sf/cglib/**,
+!META-INF/maven**,
+**.class,**.properties,**.kt,**.kotlin_*,**.jnilib,**.so,**.dll,
+META-INF/services/**,META-INF/native/**,META-INF/extensions/**,META-INF/MANIFEST.MF,
+messages/**)
+
+-injars '<bootstrap.runtime>'
+-injars '<bootstrap.script.runtime>'
+
+-outjars '<kotlin-home>/lib/kotlin-compiler-min.jar'
+
+-dontnote **
+-dontwarn com.intellij.util.ui.IsRetina*
+-dontwarn com.intellij.util.RetinaImage*
+-dontwarn apple.awt.*
+-dontwarn dk.brics.automaton.*
+-dontwarn org.fusesource.**
+-dontwarn org.imgscalr.Scalr**
+-dontwarn org.xerial.snappy.SnappyBundleActivator
+-dontwarn com.intellij.util.CompressionUtil
+-dontwarn com.intellij.util.SnappyInitializer
+-dontwarn com.intellij.util.SVGLoader
+-dontwarn com.intellij.util.SVGLoader$MyTranscoder
+-dontwarn net.sf.cglib.**
+-dontwarn org.objectweb.asm.** # this is ASM3, the old version that we do not use
+-dontwarn com.sun.jna.NativeString
+-dontwarn com.sun.jna.WString
+-dontwarn com.intellij.psi.util.PsiClassUtil
+-dontwarn org.apache.hadoop.io.compress.*
+-dontwarn com.google.j2objc.annotations.Weak
+-dontwarn org.iq80.snappy.HadoopSnappyCodec$SnappyCompressionInputStream
+-dontwarn org.iq80.snappy.HadoopSnappyCodec$SnappyCompressionOutputStream
+-dontwarn com.google.common.util.concurrent.*
+-dontwarn org.apache.xerces.dom.**
+-dontwarn org.apache.xerces.util.**
+-dontwarn org.w3c.dom.ElementTraversal
+-dontwarn javaslang.match.annotation.Unapply
+-dontwarn javaslang.match.annotation.Patterns
+
+-dontwarn kotlin.reflect.**
+
+
+-libraryjars '<rtjar>'
+-libraryjars '<jssejar>'
+#-libraryjars '<bootstrap.runtime>'
+#-libraryjars '<bootstrap.reflect>'
+#-libraryjars '<bootstrap.script.runtime>'
+
+-dontoptimize
+-dontobfuscate
+
+#-keep class org.jetbrains.annotations.** {
+# public protected *;
+#}
+#
+-keep class javax.inject.** {
+ public protected *;
+}
+
+-keep class org.jetbrains.kotlin.psi.** {
+ public protected *;
+}
+-keep class org.jetbrains.kotlin.js.** {
+ public protected *;
+}
+-keep class org.jetbrains.kotlin.** {
+ public protected *;
+}
+
+#-keep class org.jetbrains.kotlin.compiler.plugin.** {
+# public protected *;
+#}
+#
+#-keep class org.jetbrains.kotlin.extensions.** {
+# public protected *;
+#}
+#
+#-keep class org.jetbrains.kotlin.protobuf.** {
+# public protected *;
+#}
+#
+#-keep class org.jetbrains.kotlin.container.** { *; }
+
+#-keepclassmembers class com.intellij.openapi.vfs.VirtualFile {
+# public InputStream getInputStream();
+#}
+#
+#-keep class com.intellij.openapi.vfs.StandardFileSystems {
+# public static *;
+#}
+
+#-keep class com.intellij.psi.** {
+# public protected *;
+#}
+
+# Used from org.jdom.input.SAXBuilder throught reflection
+-keep class org.jdom.input.JAXPParserFactory { public ** createParser(...); }
+
+-keepclassmembers enum * {
+ public static **[] values();
+ public static ** valueOf(java.lang.String);
+}
+
+-keepclassmembers class * {
+ ** toString();
+ ** hashCode();
+ #void start();
+ #void stop();
+ #void dispose();
+}
+
+#-keep class org.jetbrains.kotlin.cli.js.K2JSCompiler {
+# public static void main(java.lang.String[]);
+#}
+
+#-keep class com.intellij.openapi.util.Disposer { public *; }
+-keep class org.picocontainer.Disposable { public *; }
+-keep class org.picocontainer.Startable { public *; }
+#
+#-keep class org.jetbrains.kotlin.config.KotlinSourceRoot { public *; }
+#
+#-keep class org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment { *; }
+#-keep class org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles {
+# #public static ** JS_CONFIG_FILES;
+# *;
+#}
+#
+#-keep class org.jetbrains.kotlin.js.config.JsConfig { public *; }
+#-keep class org.jetbrains.kotlin.js.facade.K2JSTranslator { public *; }
+
+#-keep class org.jetbrains.kotlin.config.JVMConfigurationKeys { public *;}
+
+-keep class org.jetbrains.kotlin.js.cli.SimpleRunnerKt { public *;}