Drop external annotations support in build tools

External annotations will only be considered in the IDE for additional
inspections based on more precise types in Java libraries
This commit is contained in:
Alexander Udalov
2015-04-24 19:22:37 +03:00
committed by Dmitry Jemerov
parent f2efd30a5d
commit 13c54a2678
105 changed files with 39 additions and 1148 deletions
@@ -23,19 +23,11 @@ import java.io.File.pathSeparator
public class Kotlin2JvmTask : KotlinCompilerBaseTask() {
override val compilerFqName = "org.jetbrains.kotlin.cli.jvm.K2JVMCompiler"
public var externalAnnotations: Path? = null
public var includeRuntime: Boolean = true
public var moduleName: String? = null
private var compileClasspath: Path? = null
public fun createExternalAnnotations(): Path {
if (externalAnnotations == null) {
externalAnnotations = Path(getProject())
}
return externalAnnotations!!.createPath()
}
public fun setClasspath(classpath: Path) {
if (compileClasspath == null) {
compileClasspath = classpath
@@ -65,11 +57,6 @@ public class Kotlin2JvmTask : KotlinCompilerBaseTask() {
args.add(it.list().join(pathSeparator))
}
externalAnnotations?.let {
args.add("-annotations")
args.add(it.list().join(pathSeparator))
}
if (moduleName == null) {
moduleName = defaultModuleName
+3 -5
View File
@@ -25,8 +25,6 @@
<property name="java.target" value="1.6"/>
<property name="external.annotations.path" value="${basedir}/annotations"/>
<property name="dependencies.dir" value="${basedir}/dependencies"/>
<condition property="bootstrap.or.local.build" value="true">
@@ -529,7 +527,7 @@
<javac2 destdir="${output}/classes/compiler" debug="true" debuglevel="lines,vars,source" includeAntRuntime="false"
source="${java.target}" target="${java.target}">
<withKotlin externalannotations="${external.annotations.path}" modulename="kotlin-compiler"/>
<withKotlin modulename="kotlin-compiler"/>
<skip pattern="kotlin/jvm/internal/.*"/>
<src refid="compilerSources.path"/>
<classpath refid="classpath"/>
@@ -630,7 +628,7 @@
<cleandir dir="${output}/classes/ant"/>
<javac2 destdir="${output}/classes/ant" debug="true" debuglevel="lines,vars,source" includeAntRuntime="false"
source="${java.target}" target="${java.target}">
<withKotlin externalannotations="${external.annotations.path}" modulename="kotlin-ant-tools"/>
<withKotlin modulename="kotlin-ant-tools"/>
<skip pattern="kotlin/jvm/internal/.*"/>
<src>
<dirset dir="${basedir}/ant">
@@ -960,7 +958,7 @@
<javac2 destdir="${output}/classes/idea-analysis" debug="true" debuglevel="lines,vars,source" includeAntRuntime="false"
source="${java.target}" target="${java.target}">
<withKotlin externalannotations="${external.annotations.path}" modulename="kotlin-for-upsource"/>
<withKotlin modulename="kotlin-for-upsource"/>
<skip pattern="kotlin/jvm/internal/.*"/>
<src>
<dirset dir="${basedir}/idea/ide-common" includes="src"/>
@@ -28,10 +28,6 @@ public class K2JVMCompilerArguments extends CommonCompilerArguments {
@ValueDescription("<path>")
public String classpath;
@Argument(value = "annotations", description = "Paths to external annotations")
@ValueDescription("<path>")
public String annotations;
@Argument(value = "include-runtime", description = "Include Kotlin runtime in to resulting .jar")
public boolean includeRuntime;
@@ -41,9 +37,6 @@ public class K2JVMCompilerArguments extends CommonCompilerArguments {
@Argument(value = "no-stdlib", description = "Don't include Kotlin runtime into classpath")
public boolean noStdlib;
@Argument(value = "no-jdk-annotations", description = "Don't include JDK external annotations into classpath")
public boolean noJdkAnnotations;
@Argument(value = "module", description = "Path to the module file to compile")
@ValueDescription("<path>")
public String module;
@@ -51,7 +44,7 @@ public class K2JVMCompilerArguments extends CommonCompilerArguments {
@Argument(value = "script", description = "Evaluate the script file")
public boolean script;
@Argument(value = "kotlin-home", description = "Path to Kotlin compiler home directory, used for annotations and runtime libraries discovery")
@Argument(value = "kotlin-home", description = "Path to Kotlin compiler home directory, used for runtime libraries discovery")
@ValueDescription("<path>")
public String kotlinHome;
@@ -27,7 +27,6 @@ public class ModuleBuilder(
private val sourceFiles = ArrayList<String>()
private val classpathRoots = ArrayList<String>()
private val javaSourceRoots = ArrayList<String>()
private val annotationsRoots = ArrayList<String>()
public fun addSourceFiles(pattern: String) {
sourceFiles.add(pattern)
@@ -37,10 +36,6 @@ public class ModuleBuilder(
classpathRoots.add(name)
}
public fun addAnnotationsPathEntry(name: String) {
annotationsRoots.add(name)
}
public fun addJavaSourceRoot(name: String) {
javaSourceRoots.add(name)
}
@@ -49,7 +44,6 @@ public class ModuleBuilder(
override fun getJavaSourceRoots(): List<String> = javaSourceRoots
override fun getSourceFiles(): List<String> = sourceFiles
override fun getClasspathRoots(): List<String> = classpathRoots
override fun getAnnotationsRoots(): List<String> = annotationsRoots
override fun getModuleName(): String = name
override fun getModuleType(): String = type
}
@@ -49,7 +49,6 @@ public class ModuleXmlParser {
public static final String JAVA_SOURCE_ROOTS = "javaSourceRoots";
public static final String PATH = "path";
public static final String CLASSPATH = "classpath";
public static final String EXTERNAL_ANNOTATIONS = "externalAnnotations";
@NotNull
public static ModuleScriptData parseModuleScript(
@@ -58,8 +57,8 @@ public class ModuleXmlParser {
) {
FileInputStream stream = null;
try {
stream = new FileInputStream(xmlFile);
//noinspection IOResourceOpenedButNotSafelyClosed
stream = new FileInputStream(xmlFile);
return new ModuleXmlParser(messageCollector).parse(new BufferedInputStream(stream));
}
catch (FileNotFoundException e) {
@@ -164,10 +163,6 @@ public class ModuleXmlParser {
String path = getAttribute(attributes, PATH, qName);
moduleBuilder.addClasspathEntry(path);
}
else if (EXTERNAL_ANNOTATIONS.equalsIgnoreCase(qName)) {
String path = getAttribute(attributes, PATH, qName);
moduleBuilder.addAnnotationsPathEntry(path);
}
else if (JAVA_SOURCE_ROOTS.equalsIgnoreCase(qName)) {
String path = getAttribute(attributes, PATH, qName);
moduleBuilder.addJavaSourceRoot(path);
@@ -190,10 +190,6 @@ public class KotlinToJVMBytecodeCompiler {
}
for (Module module : chunk) {
for (String annotationsRoot : module.getAnnotationsRoots()) {
configuration.add(JVMConfigurationKeys.ANNOTATIONS_PATH_KEY, new File(annotationsRoot));
}
configuration.add(JVMConfigurationKeys.MODULES, module);
}
@@ -29,7 +29,8 @@ public class JVMConfigurationKeys {
private JVMConfigurationKeys() {
}
public static final CompilerConfigurationKey<List<File>> ANNOTATIONS_PATH_KEY = CompilerConfigurationKey.create("annotations path");
public static final CompilerConfigurationKey<List<File>> ANNOTATIONS_PATH_KEY =
CompilerConfigurationKey.create("external annotations path");
public static final CompilerConfigurationKey<List<AnalyzerScriptParameter>> SCRIPT_PARAMETERS =
CompilerConfigurationKey.create("script");
+1 -3
View File
@@ -2,14 +2,12 @@ Usage: kotlinc-jvm <options> <source files>
where possible options include:
-d <directory|jar> Destination for generated class files
-classpath (-cp) <path> Paths where to find user class files
-annotations <path> Paths to external annotations
-include-runtime Include Kotlin runtime in to resulting .jar
-no-jdk Don't include Java runtime into classpath
-no-stdlib Don't include Kotlin runtime into classpath
-no-jdk-annotations Don't include JDK external annotations into classpath
-module <path> Path to the module file to compile
-script Evaluate the script file
-kotlin-home <path> Path to Kotlin compiler home directory, used for annotations and runtime libraries discovery
-kotlin-home <path> Path to Kotlin compiler home directory, used for runtime libraries discovery
-module-name Module name
-nowarn Generate no warnings
-verbose Enable verbose logging output
@@ -1,7 +1,5 @@
$TESTDATA_DIR$/simple.kt
-classpath
not/existing/path
-annotations
yet/another/not/existing/path
-d
$TEMP_DIR$
@@ -1,3 +1,2 @@
warning: classpath entry points to a non-existent location: not/existing/path
warning: annotations path entry points to a non-existent location: yet/another/not/existing/path
OK
+1 -3
View File
@@ -3,14 +3,12 @@ Usage: kotlinc-jvm <options> <source files>
where possible options include:
-d <directory|jar> Destination for generated class files
-classpath (-cp) <path> Paths where to find user class files
-annotations <path> Paths to external annotations
-include-runtime Include Kotlin runtime in to resulting .jar
-no-jdk Don't include Java runtime into classpath
-no-stdlib Don't include Kotlin runtime into classpath
-no-jdk-annotations Don't include JDK external annotations into classpath
-module <path> Path to the module file to compile
-script Evaluate the script file
-kotlin-home <path> Path to Kotlin compiler home directory, used for annotations and runtime libraries discovery
-kotlin-home <path> Path to Kotlin compiler home directory, used for runtime libraries discovery
-module-name Module name
-nowarn Generate no warnings
-verbose Enable verbose logging output
@@ -50,7 +50,6 @@ fun test6() : Boolean {
return true
}
// ArrayList without jdk-annotations cannot be used in these tests
class MyArrayList<T>() {
private var value17: T? = null
private var value39: T? = null
@@ -1,32 +0,0 @@
// !CHECK_TYPE
package kotlin1
import java.util.*
fun main(args : Array<String>) {
val al : ArrayList<Int> = ArrayList<Int>()
val al1 = ArrayList<Int>(1)
// for (x in al1) {
//
// }
val <!UNUSED_VARIABLE!>al2<!> = ArrayList<Int>(ArrayList<Int>())
checkSubtype<RandomAccess>(al)
checkSubtype<Unit>(al.clear())
checkSubtype<Boolean>(al.add(1))
checkSubtype<Unit>(al.add(0, 1))
checkSubtype<Boolean>(al.addAll(al1))
checkSubtype<Boolean>(al.addAll(0, al1))
checkSubtype<Int>(al.get(0))
val m = HashMap<String, Int>()
m.put("", 1)
test(al, m)
}
fun test(a : List<Int>, m : Map<String, Int>) {
System.out.println(
a.get(0) + 1
)
HashMap<Int, Int>().get(0)
if (m.get("") != null)
System.out.println(m.get("")!!.plus(1))
}
@@ -1,6 +0,0 @@
package
package kotlin1 {
public fun main(/*0*/ args: kotlin.Array<kotlin.String>): kotlin.Unit
public fun test(/*0*/ a: kotlin.List<kotlin.Int>, /*1*/ m: kotlin.Map<kotlin.String, kotlin.Int>): kotlin.Unit
}
@@ -1,10 +0,0 @@
// !CHECK_TYPE
package kotlin1
import java.util.*
fun main(args : Array<String>) {
val al : ArrayList<Int> = ArrayList<Int>()
checkSubtype<Any>(al.clone()) // A type mismatch on this line means that jdk-annotations were not loaded
}
@@ -1,5 +0,0 @@
package
package kotlin1 {
public fun main(/*0*/ args: kotlin.Array<kotlin.String>): kotlin.Unit
}
@@ -1,14 +0,0 @@
// !CHECK_TYPE
// !DIAGNOSTICS: -UNUSED_PARAMETER
package kotlin1
import java.util.*
public inline fun <reified T> Array(n: Int, block: (Int) -> T): Array<T> = null!!
fun main(args : Array<String>) {
val al : ArrayList<Int> = ArrayList<Int>()
// A type mismatch on this line means that jdk-annotations were not loaded
checkSubtype<Array<Int>>(al.toArray(Array<Int>(3, {1})))
}
@@ -1,6 +0,0 @@
package
package kotlin1 {
@kotlin.inline() public fun </*0*/ reified T> Array(/*0*/ n: kotlin.Int, /*1*/ block: (kotlin.Int) -> T): kotlin.Array<T>
public fun main(/*0*/ args: kotlin.Array<kotlin.String>): kotlin.Unit
}
@@ -1,34 +0,0 @@
// !CHECK_TYPE
import java.sql.DriverManager
fun getConnection(url: String?) {
DriverManager.getConnection(url)
checkSubtype<java.sql.Connection>(DriverManager.getConnection(url!!))
}
fun getConnection(url: String?, props: java.util.Properties?) {
DriverManager.getConnection(url, props)
checkSubtype<java.sql.Connection>(DriverManager.getConnection(url!!, props))
}
fun getConnection(url: String?, user: String?, password: String?) {
DriverManager.getConnection(url, user!!, password!!)
DriverManager.getConnection(url!!, user, password<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>)
DriverManager.getConnection(url<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>, user<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>, password)
checkSubtype<java.sql.Connection>(DriverManager.getConnection(url<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>, user<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>, password<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>))
}
fun getDriver(url: String?) {
DriverManager.getDriver(url)
checkSubtype<java.sql.Driver>(DriverManager.getDriver(url!!))
}
fun registerDriver(driver: java.sql.Driver?) {
DriverManager.registerDriver(driver)
DriverManager.registerDriver(driver!!)
}
fun getDrivers() {
checkSubtype<java.util.Enumeration<java.sql.Driver>>(DriverManager.getDrivers())
}
@@ -1,8 +0,0 @@
package
public fun getConnection(/*0*/ url: kotlin.String?): kotlin.Unit
public fun getConnection(/*0*/ url: kotlin.String?, /*1*/ props: java.util.Properties?): kotlin.Unit
public fun getConnection(/*0*/ url: kotlin.String?, /*1*/ user: kotlin.String?, /*2*/ password: kotlin.String?): kotlin.Unit
public fun getDriver(/*0*/ url: kotlin.String?): kotlin.Unit
public fun getDrivers(): kotlin.Unit
public fun registerDriver(/*0*/ driver: java.sql.Driver?): kotlin.Unit
@@ -1,5 +0,0 @@
// !CHECK_TYPE
fun getMetaData(rs: java.sql.ResultSet) {
checkSubtype<java.sql.ResultSetMetaData>(rs.getMetaData())
}
@@ -1,3 +0,0 @@
package
public fun getMetaData(/*0*/ rs: java.sql.ResultSet): kotlin.Unit
@@ -1,15 +0,0 @@
// !CHECK_TYPE
fun executeQuery(statement: java.sql.Statement, cmd: String?) {
statement.executeQuery(cmd)
checkSubtype<java.sql.ResultSet>(statement.executeQuery(cmd!!))
}
fun executeQuery(statement: java.sql.PreparedStatement) {
checkSubtype<java.sql.ResultSet>(statement.executeQuery())
}
fun executeUpdate(statement: java.sql.Statement, cmd: String?) {
statement.executeUpdate(cmd)
statement.executeUpdate(cmd!!)
}
@@ -1,5 +0,0 @@
package
public fun executeQuery(/*0*/ statement: java.sql.PreparedStatement): kotlin.Unit
public fun executeQuery(/*0*/ statement: java.sql.Statement, /*1*/ cmd: kotlin.String?): kotlin.Unit
public fun executeUpdate(/*0*/ statement: java.sql.Statement, /*1*/ cmd: kotlin.String?): kotlin.Unit
@@ -1,16 +0,0 @@
OUT:
Buildfile: [TestData]/build.xml
build:
[mkdir] Created dir: [Temp]/classes
[javac] Compiling 2 source files to [Temp]/classes
[javac] Compiling [[TestData]/root1] => [[Temp]/classes]
[javac] Running javac...
[jar] Building jar: [Temp]/hello.jar
[java] Hello, a!
[java] Java Hello
BUILD SUCCESSFUL
Total time: [time]
Return code: 0
@@ -1,23 +0,0 @@
<project name="Ant Task Test" default="build">
<taskdef resource="org/jetbrains/kotlin/ant/antlib.xml" classpath="${kotlin.lib}/kotlin-ant.jar"/>
<target name="build">
<delete dir="${temp}/classes" failonerror="false"/>
<mkdir dir="${temp}/classes"/>
<javac destdir="${temp}/classes" includeAntRuntime="false" srcdir="${test.data}/root1">
<withKotlin externalannotations="${test.data}/root1/b/">
<externalannotations path="${test.data}/root1/a/"/>
</withKotlin>
</javac>
<jar destfile="${temp}/hello.jar">
<fileset dir="${temp}/classes"/>
</jar>
<java classname="hello.HelloPackage" fork="true">
<classpath>
<pathelement location="${temp}/hello.jar"/>
<pathelement location="${kotlin.runtime.jar}"/>
</classpath>
</java>
</target>
</project>
@@ -1,5 +0,0 @@
<root>
<item name='j.Java java.lang.String f()'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
</root>
@@ -1,5 +0,0 @@
<root>
<item name='j.Java java.lang.String f2()'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
</root>
@@ -1,9 +0,0 @@
package hello
fun main(args : Array<String>) {
for (s in arrayListOf("a"))
println("Hello, $s!")
val java: String = j.Java().f()
val hello: String = j.Java().f2()
println("$java $hello")
}
@@ -1,20 +0,0 @@
package j;
import org.jetbrains.annotations.NotNull;
import java.lang.String;
import java.lang.System;
public class Java {
public String f() {
return "Java";
}
public String f2() {
return "Hello";
}
public static void main(String[] args) {
hello.HelloPackage.main(new String[] {});
}
}
-1
View File
@@ -3,4 +3,3 @@ name
outputDir=out
sources=[foo]
classpath=[bar]
annotations=[baz]
-1
View File
@@ -2,6 +2,5 @@
<module name="name" outputDir="out" type="java-production">
<sources path="foo"/>
<classpath path="bar"/>
<externalAnnotations path="baz"/>
</module>
</modules>
-1
View File
@@ -3,4 +3,3 @@ name
outputDir=out
sources=[foo, foo1, foo2]
classpath=[bar1, bar2]
annotations=[baz, baz1, baz2]
-3
View File
@@ -9,8 +9,5 @@
<classpath path="bar1"/>
<!-- sdfgadfg -->
<classpath path="bar2"/>
<externalAnnotations path="baz"/>
<externalAnnotations path="baz1"/>
<externalAnnotations path="baz2"/>
</module>
</modules>
-1
View File
@@ -3,4 +3,3 @@ name
outputDir=out
sources=[]
classpath=[]
annotations=[]
-1
View File
@@ -3,4 +3,3 @@ name
outputDir=out
sources=[foo, foo1, foo2]
classpath=[bar, bar1, bar2]
annotations=[baz, baz1, baz2]
-3
View File
@@ -6,8 +6,5 @@
<classpath path="bar"/>
<classpath path="bar1"/>
<classpath path="bar2"/>
<externalAnnotations path="baz"/>
<externalAnnotations path="baz1"/>
<externalAnnotations path="baz2"/>
</module>
</modules>
-1
View File
@@ -3,4 +3,3 @@ name
outputDir=out
sources=[foo]
classpath=[]
annotations=[]
-2
View File
@@ -3,10 +3,8 @@ name
outputDir=out
sources=[foo, foo1, foo2]
classpath=[bar, bar1, bar2]
annotations=[baz, baz1, baz2]
name2
type=java-production
outputDir=out2
sources=[2foo, 2foo1, 2foo2]
classpath=[2bar, 2bar1, 2bar2]
annotations=[2baz, 2baz1, 2baz2]
-6
View File
@@ -6,9 +6,6 @@
<classpath path="bar"/>
<classpath path="bar1"/>
<classpath path="bar2"/>
<externalAnnotations path="baz"/>
<externalAnnotations path="baz1"/>
<externalAnnotations path="baz2"/>
</module>
<module name="name2" outputDir="out2" type="java-production">
<sources path="2foo"/>
@@ -17,8 +14,5 @@
<classpath path="2bar"/>
<classpath path="2bar1"/>
<classpath path="2bar2"/>
<externalAnnotations path="2baz"/>
<externalAnnotations path="2baz1"/>
<externalAnnotations path="2baz2"/>
</module>
</modules>
@@ -9112,60 +9112,6 @@ public class JetDiagnosticsTestGenerated extends AbstractJetDiagnosticsTest {
}
}
@TestMetadata("compiler/testData/diagnostics/tests/jdk-annotations")
@TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class)
public static class Jdk_annotations extends AbstractJetDiagnosticsTest {
public void testAllFilesPresentInJdk_annotations() throws Exception {
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/diagnostics/tests/jdk-annotations"), Pattern.compile("^(.+)\\.kt$"), true);
}
@TestMetadata("ArrayListAndMap.kt")
public void testArrayListAndMap() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/jdk-annotations/ArrayListAndMap.kt");
doTest(fileName);
}
@TestMetadata("ArrayListClone.kt")
public void testArrayListClone() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/jdk-annotations/ArrayListClone.kt");
doTest(fileName);
}
@TestMetadata("ArrayListToArray.kt")
public void testArrayListToArray() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/jdk-annotations/ArrayListToArray.kt");
doTest(fileName);
}
@TestMetadata("compiler/testData/diagnostics/tests/jdk-annotations/sql")
@TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class)
public static class Sql extends AbstractJetDiagnosticsTest {
public void testAllFilesPresentInSql() throws Exception {
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/diagnostics/tests/jdk-annotations/sql"), Pattern.compile("^(.+)\\.kt$"), true);
}
@TestMetadata("DriverManager.kt")
public void testDriverManager() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/jdk-annotations/sql/DriverManager.kt");
doTest(fileName);
}
@TestMetadata("ResultSet.kt")
public void testResultSet() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/jdk-annotations/sql/ResultSet.kt");
doTest(fileName);
}
@TestMetadata("Statement.kt")
public void testStatement() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/jdk-annotations/sql/Statement.kt");
doTest(fileName);
}
}
}
@TestMetadata("compiler/testData/diagnostics/tests/labels")
@TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class)
@@ -35,15 +35,12 @@ public class CompileEnvironmentTest extends TestCase {
try {
File out = new File(tempDir, "out");
File stdlib = ForTestCompileRuntime.runtimeJarForTests();
File jdkAnnotations = JetTestUtils.getJdkAnnotationsJar();
ExitCode exitCode = new K2JVMCompiler().exec(
System.out,
JetTestUtils.getTestDataPathBase() + "/compiler/smoke/Smoke.kt",
"-d", out.getAbsolutePath(),
"-no-stdlib",
"-classpath", stdlib.getAbsolutePath(),
"-no-jdk-annotations",
"-annotations", jdkAnnotations.getAbsolutePath()
"-classpath", stdlib.getAbsolutePath()
);
Assert.assertEquals(ExitCode.OK, exitCode);
File[] files = out.listFiles();
@@ -65,7 +65,6 @@ public abstract class AbstractModuleXmlParserTest extends TestCase {
"\n\ttype=" + module.getModuleType() +
"\n\toutputDir=" + module.getOutputDirectory() +
"\n\tsources=" + module.getSourceFiles() +
"\n\tclasspath=" + module.getClasspathRoots() +
"\n\tannotations=" + module.getAnnotationsRoots();
"\n\tclasspath=" + module.getClasspathRoots();
}
}
-3
View File
@@ -8,8 +8,5 @@
<!-- Classpath -->
<classpath path="cp1"/>
<classpath path="cp2"/>
<!-- External annotations -->
<externalAnnotations path="a1/f1"/>
<externalAnnotations path="a2"/>
</module>
</modules>
-3
View File
@@ -7,8 +7,5 @@
<!-- Classpath -->
<classpath path="cp1"/>
<classpath path="cp2"/>
<!-- External annotations -->
<externalAnnotations path="a1/f1"/>
<externalAnnotations path="a2"/>
</module>
</modules>
-6
View File
@@ -7,9 +7,6 @@
<!-- Classpath -->
<classpath path="cp1"/>
<classpath path="cp2"/>
<!-- External annotations -->
<externalAnnotations path="a1/f1"/>
<externalAnnotations path="a2"/>
</module>
<!-- Module script for tests -->
<module name="name2" type="java-test" outputDir="output2">
@@ -19,8 +16,5 @@
<!-- Classpath -->
<classpath path="cp12"/>
<classpath path="cp22"/>
<!-- External annotations -->
<externalAnnotations path="a12/f12"/>
<externalAnnotations path="a22"/>
</module>
</modules>
@@ -33,14 +33,6 @@ import org.jetbrains.jps.builders.logging.ProjectBuilderLogger;
import org.jetbrains.jps.incremental.CompileContext;
import org.jetbrains.jps.incremental.ModuleBuildTarget;
import org.jetbrains.jps.incremental.ProjectBuildException;
import org.jetbrains.jps.model.java.JpsAnnotationRootType;
import org.jetbrains.jps.model.java.JpsJavaSdkType;
import org.jetbrains.jps.model.library.JpsLibrary;
import org.jetbrains.jps.model.library.sdk.JpsSdk;
import org.jetbrains.jps.model.library.sdk.JpsSdkType;
import org.jetbrains.jps.model.module.JpsDependencyElement;
import org.jetbrains.jps.model.module.JpsModule;
import org.jetbrains.jps.model.module.JpsSdkDependency;
import org.jetbrains.kotlin.config.IncrementalCompilation;
import org.jetbrains.kotlin.modules.KotlinModuleXmlBuilder;
@@ -92,7 +84,6 @@ public class KotlinBuilderModuleScriptGenerator {
moduleSources,
findSourceRoots(context, target),
findClassPathRoots(target),
findAnnotationRoots(target),
(JavaModuleBuildTargetType) targetType,
// this excludes the output directories from the class path, to be removed for true incremental compilation
outputDirs
@@ -149,33 +140,6 @@ public class KotlinBuilderModuleScriptGenerator {
return result;
}
@NotNull
private static List<File> findAnnotationRoots(@NotNull ModuleBuildTarget target) {
LinkedHashSet<File> annotationRootFiles = new LinkedHashSet<File>();
JpsModule module = target.getModule();
JpsSdk sdk = module.getSdk(getSdkType(module));
if (sdk != null) {
annotationRootFiles.addAll(sdk.getParent().getFiles(JpsAnnotationRootType.INSTANCE));
}
for (JpsLibrary library : getAllDependencies(target).getLibraries()) {
annotationRootFiles.addAll(library.getFiles(JpsAnnotationRootType.INSTANCE));
}
// JDK is stored locally on user's machine, so its configuration, including external annotation paths
// is not available on TeamCity. When running on TeamCity, one has to provide extra path to JDK annotations
String extraAnnotationsPaths = System.getProperty("jps.kotlin.extra.annotation.paths");
if (extraAnnotationsPaths != null) {
String[] paths = extraAnnotationsPaths.split(";");
for (String path : paths) {
annotationRootFiles.add(new File(path));
}
}
return CollectionsKt.toList(annotationRootFiles);
}
@NotNull
private static JpsSdkType getSdkType(@NotNull JpsModule module) {
for (JpsDependencyElement dependency : module.getDependenciesList().getDependencies()) {
@@ -45,7 +45,6 @@ public class KotlinModuleXmlBuilder {
List<File> sourceFiles,
List<File> javaSourceRoots,
Collection<File> classpathRoots,
List<File> annotationRoots,
JavaModuleBuildTargetType targetType,
Set<File> directoriesToFilterOut
) {
@@ -71,7 +70,6 @@ public class KotlinModuleXmlBuilder {
processJavaSourceRoots(javaSourceRoots);
processClasspath(classpathRoots, directoriesToFilterOut);
processAnnotationRoots(annotationRoots);
closeTag(p, MODULE);
return this;
@@ -102,13 +100,6 @@ public class KotlinModuleXmlBuilder {
}
}
private void processAnnotationRoots(@NotNull List<File> files) {
p.println("<!-- External annotations -->");
for (File file : files) {
p.println("<", EXTERNAL_ANNOTATIONS, " ", PATH, "=\"", getEscapedPath(file), "\"/>");
}
}
private void processJavaSourceRoots(@NotNull List<File> files) {
p.println("<!-- Java source roots -->");
for (File file : files) {
@@ -22,7 +22,6 @@ import org.jetbrains.jps.builders.JpsBuildTestCase;
import org.jetbrains.jps.model.JpsDummyElement;
import org.jetbrains.jps.model.JpsModuleRootModificationUtil;
import org.jetbrains.jps.model.JpsProject;
import org.jetbrains.jps.model.java.JpsAnnotationRootType;
import org.jetbrains.jps.model.java.JpsJavaDependencyScope;
import org.jetbrains.jps.model.java.JpsJavaLibraryType;
import org.jetbrains.jps.model.java.JpsJavaSdkType;
@@ -73,7 +72,6 @@ public abstract class AbstractKotlinJpsBuildTestCase extends JpsBuildTestCase {
String versionString = System.getProperty("java.version");
JpsTypedLibrary<JpsSdk<JpsDummyElement>> jdk = myModel.getGlobal().addSdk(name, homePath, versionString, JpsJavaSdkType.INSTANCE);
jdk.addRoot(JpsPathUtil.pathToUrl(path), JpsOrderRootType.COMPILED);
jdk.addRoot(JpsPathUtil.pathToUrl(PathUtil.getKotlinPathsForDistDirectory().getJdkAnnotationsPath().getAbsolutePath()), JpsAnnotationRootType.INSTANCE);
return jdk.getProperties();
}
@@ -45,7 +45,6 @@ public class ClasspathOrderTest : TestCaseWithTmpdir() {
listOf(sourceDir),
listOf(sourceDir),
listOf(PathUtil.getKotlinPathsForDistDirectory().getRuntimePath()),
listOf(),
JavaModuleBuildTargetType.PRODUCTION,
setOf()
).asText().toString()
@@ -32,7 +32,6 @@ public class KotlinModuleXmlGeneratorTest extends TestCase {
Arrays.asList(new File("s1"), new File("s2")),
Collections.singletonList(new File("java")),
Arrays.asList(new File("cp1"), new File("cp2")),
Arrays.asList(new File("a1/f1"), new File("a2")),
JavaModuleBuildTargetType.PRODUCTION,
Collections.<File>emptySet()
).asText().toString();
@@ -46,7 +45,6 @@ public class KotlinModuleXmlGeneratorTest extends TestCase {
Arrays.asList(new File("s1"), new File("s2")),
Collections.<File>emptyList(),
Arrays.asList(new File("cp1"), new File("cp2")),
Arrays.asList(new File("a1/f1"), new File("a2")),
JavaModuleBuildTargetType.PRODUCTION,
Collections.singleton(new File("cp1"))
).asText().toString();
@@ -61,7 +59,6 @@ public class KotlinModuleXmlGeneratorTest extends TestCase {
Arrays.asList(new File("s1"), new File("s2")),
Collections.<File>emptyList(),
Arrays.asList(new File("cp1"), new File("cp2")),
Arrays.asList(new File("a1/f1"), new File("a2")),
JavaModuleBuildTargetType.PRODUCTION,
Collections.singleton(new File("cp1"))
);
@@ -71,7 +68,6 @@ public class KotlinModuleXmlGeneratorTest extends TestCase {
Arrays.asList(new File("s12"), new File("s22")),
Collections.<File>emptyList(),
Arrays.asList(new File("cp12"), new File("cp22")),
Arrays.asList(new File("a12/f12"), new File("a22")),
JavaModuleBuildTargetType.TEST,
Collections.singleton(new File("cp12"))
);
@@ -63,11 +63,6 @@
<artifactId>kotlin-maven-plugin</artifactId>
<groupId>org.jetbrains.kotlin</groupId>
<version>${project.version}</version>
<configuration>
<annotationPaths>
<annotationPath>${basedir}/kotlinAnnotation</annotationPath>
</annotationPaths>
</configuration>
<executions>
<execution>
@@ -63,11 +63,6 @@
<artifactId>kotlin-maven-plugin</artifactId>
<groupId>org.jetbrains.kotlin</groupId>
<version>${project.version}</version>
<configuration>
<annotationPaths>
<annotationPath>${basedir}/kotlinAnnotation</annotationPath>
</annotationPaths>
</configuration>
<executions>
<execution>
@@ -56,11 +56,6 @@
<artifactId>kotlin-maven-plugin</artifactId>
<groupId>org.jetbrains.kotlin</groupId>
<version>${project.version}</version>
<configuration>
<annotationPaths>
<annotationPath>${basedir}/kotlinAnnotation</annotationPath>
</annotationPaths>
</configuration>
<executions>
<execution>
@@ -1,5 +0,0 @@
<root>
<item name='com.android.build.gradle.BaseExtension org.gradle.api.NamedDomainObjectContainer&lt;com.android.build.gradle.api.AndroidSourceSet&gt; getSourceSets()'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
</root>
@@ -1,31 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<root>
<item name="com.android.build.gradle.api.AndroidSourceSet org.gradle.api.file.SourceDirectorySet getAllJava()">
<annotation name="org.jetbrains.annotations.NotNull" />
</item>
<item name="com.android.build.gradle.api.AndroidSourceSet org.gradle.api.file.SourceDirectorySet getAllSource()">
<annotation name="org.jetbrains.annotations.NotNull" />
</item>
<item name="com.android.build.gradle.api.AndroidSourceSet org.gradle.api.file.SourceDirectorySet getJava()">
<annotation name="org.jetbrains.annotations.NotNull" />
</item>
<item name="com.android.build.gradle.api.ApkVariant com.android.builder.DefaultBuildType getBuildType()">
<annotation name="org.jetbrains.annotations.NotNull" />
</item>
<item name="com.android.build.gradle.api.ApkVariant java.util.List&lt;com.android.builder.DefaultProductFlavor&gt; getProductFlavors()">
<annotation name="org.jetbrains.annotations.NotNull" />
</item>
<item name="com.android.build.gradle.api.BaseVariant com.android.build.gradle.tasks.AidlCompile getAidlCompile()">
<annotation name="org.jetbrains.annotations.NotNull" />
</item>
<item name="com.android.build.gradle.api.BaseVariant com.android.build.gradle.tasks.ProcessAndroidResources getProcessResources()">
<annotation name="org.jetbrains.annotations.NotNull" />
</item>
<item name="com.android.build.gradle.api.BaseVariant com.android.build.gradle.tasks.RenderscriptCompile getRenderscriptCompile()">
<annotation name="org.jetbrains.annotations.NotNull" />
</item>
<item name="com.android.build.gradle.api.LibraryVariant com.android.builder.DefaultBuildType getBuildType()">
<annotation name="org.jetbrains.annotations.NotNull" />
</item>
</root>
@@ -1,5 +0,0 @@
<root>
<item name='com.google.common.base.Joiner com.google.common.base.Joiner on(java.lang.String)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
</root>
@@ -1,5 +0,0 @@
<root>
<item name='com.google.common.io.Files java.io.File createTempDir()'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
</root>
@@ -1,5 +0,0 @@
<root>
<item name='org.apache.commons.io.FilenameUtils java.lang.String getExtension(java.lang.String)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
</root>
@@ -1,38 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<root>
<item name="org.gradle.api.NamedDomainObjectCollection T getByName(java.lang.String)">
<annotation name="org.jetbrains.annotations.NotNull" />
</item>
<item name="org.gradle.api.Plugin void apply(T)">
<annotation name="jet.runtime.typeinfo.KotlinSignature">
<val name="value" val="&quot;fun apply(p0 : T) : Unit&quot;" />
</annotation>
</item>
<item name='org.gradle.api.Project java.util.Map&lt;java.lang.String,?&gt; getProperties()'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name="org.gradle.api.Project org.gradle.api.file.ConfigurableFileCollection files(java.lang.Object...)">
<annotation name="org.jetbrains.annotations.NotNull" />
</item>
<item name="org.gradle.api.Project org.gradle.api.initialization.dsl.ScriptHandler getBuildscript()">
<annotation name="jet.runtime.typeinfo.KotlinSignature">
<val name="value" val="&quot;fun getBuildscript() : ScriptHandler&quot;" />
</annotation>
</item>
<item name="org.gradle.api.Project org.gradle.api.logging.Logger getLogger()">
<annotation name="org.jetbrains.annotations.NotNull" />
</item>
<item name="org.gradle.api.Project org.gradle.api.plugins.Convention getConvention()">
<annotation name="org.jetbrains.annotations.NotNull" />
</item>
<item name='org.gradle.api.Project org.gradle.api.plugins.ExtensionContainer getExtensions()'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name="org.gradle.api.Project org.gradle.api.plugins.PluginContainer getPlugins()">
<annotation name="org.jetbrains.annotations.NotNull" />
</item>
<item name='org.gradle.api.Project org.gradle.api.tasks.TaskContainer getTasks()'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
</root>
@@ -1,8 +0,0 @@
<root>
<item name='org.gradle.api.artifacts.Configuration org.gradle.api.artifacts.ResolvedConfiguration getResolvedConfiguration()'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.gradle.api.artifacts.ConfigurationContainer org.gradle.api.artifacts.Configuration detachedConfiguration(org.gradle.api.artifacts.Dependency...)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
</root>
@@ -1,5 +0,0 @@
<root>
<item name='org.gradle.api.artifacts.dsl.DependencyHandler org.gradle.api.artifacts.Dependency create(java.lang.Object)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
</root>
@@ -1,20 +0,0 @@
<root>
<item name='org.gradle.api.file.FileCollection org.gradle.api.file.FileCollection filter(org.gradle.api.specs.Spec&lt;? super java.io.File&gt;)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.gradle.api.file.FileCollection org.gradle.api.file.FileCollection minus(org.gradle.api.file.FileCollection)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.gradle.api.file.FileCollection org.gradle.api.file.FileCollection minus(org.gradle.api.file.FileCollection) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.gradle.api.file.FileCollection org.gradle.api.file.FileCollection plus(org.gradle.api.file.FileCollection)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.gradle.api.file.FileCollection org.gradle.api.file.FileCollection plus(org.gradle.api.file.FileCollection) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.gradle.api.file.SourceDirectorySet java.util.Set&lt;java.io.File&gt; getSrcDirs()'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
</root>
@@ -1,10 +0,0 @@
<root>
<item name='org.gradle.api.initialization.dsl.ScriptHandler org.gradle.api.artifacts.ConfigurationContainer getConfigurations()'>
<annotation name='jet.runtime.typeinfo.KotlinSignature'>
<val name="value" val="&quot;fun getConfigurations() : ConfigurationContainer&quot;"/>
</annotation>
</item>
<item name='org.gradle.api.initialization.dsl.ScriptHandler org.gradle.api.artifacts.dsl.DependencyHandler getDependencies()'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
</root>
@@ -1,17 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<root>
<item name="org.gradle.api.internal.AbstractTask org.gradle.api.Project getProject()">
<annotation name="jet.runtime.typeinfo.KotlinSignature">
<val name="value" val="&quot;fun getProject() : Project&quot;" />
</annotation>
</item>
<item name="org.gradle.api.internal.AbstractTask org.gradle.api.logging.Logger getLogger()">
<annotation name="org.jetbrains.annotations.NotNull" />
</item>
<item name="org.gradle.api.internal.HasConvention org.gradle.api.plugins.Convention getConvention()">
<annotation name="jet.runtime.typeinfo.KotlinSignature">
<val name="value" val="&quot;fun getConvention() : Convention&quot;" />
</annotation>
</item>
</root>
@@ -1,5 +0,0 @@
<root>
<item name='org.gradle.api.internal.project.ProjectInternal org.gradle.api.internal.tasks.TaskContainerInternal getTasks()'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
</root>
@@ -1,5 +0,0 @@
<root>
<item name='org.gradle.api.logging.Logging org.gradle.api.logging.Logger getLogger(java.lang.Class)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
</root>
@@ -1,30 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<root>
<item name="org.gradle.api.plugins.Convention T getPlugin(java.lang.Class&lt;T&gt;)">
<annotation name="org.jetbrains.annotations.NotNull" />
</item>
<item name="org.gradle.api.plugins.Convention java.util.Map&lt;java.lang.String,java.lang.Object&gt; getPlugins()">
<annotation name="jet.runtime.typeinfo.KotlinSignature">
<val name="value" val="&quot;fun getPlugins() : MutableMap&lt;String, Any&gt;&quot;" />
</annotation>
</item>
<item name="org.gradle.api.plugins.Convention org.gradle.api.internal.DynamicObject getExtensionsAsDynamicObject()">
<annotation name="org.jetbrains.annotations.NotNull" />
<annotation name="jet.runtime.typeinfo.KotlinSignature">
<val name="value" val="&quot;fun getExtensionsAsDynamicObject() : DynamicObject&quot;" />
</annotation>
</item>
<item name="org.gradle.api.plugins.ExtensionAware org.gradle.api.plugins.ExtensionContainer getExtensions()">
<annotation name="org.jetbrains.annotations.NotNull" />
</item>
<item name="org.gradle.api.plugins.PluginContainer T apply(java.lang.Class&lt;T&gt;)">
<annotation name="org.jetbrains.annotations.NotNull" />
</item>
<item name="org.gradle.api.plugins.PluginContainer org.gradle.api.Plugin apply(java.lang.String)">
<annotation name="org.jetbrains.annotations.NotNull" />
</item>
<item name='org.gradle.api.plugins.PluginContainer org.gradle.api.Plugin findPlugin(java.lang.String)'>
<annotation name='org.jetbrains.annotations.Nullable'/>
</item>
</root>
@@ -1,10 +0,0 @@
<root>
<item name='org.gradle.api.tasks.SourceTask org.gradle.api.file.FileTree getSource()'>
<annotation name='jet.runtime.typeinfo.KotlinSignature'>
<val name="value" val="&quot;fun getSource() : FileTree&quot;"/>
</annotation>
</item>
<item name='org.gradle.api.tasks.TaskContainer T create(java.lang.String, java.lang.Class&lt;T&gt;)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
</root>
@@ -1,5 +0,0 @@
<root>
<item name='org.gradle.api.tasks.compile.AbstractCompile org.gradle.api.file.FileCollection getClasspath()'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
</root>
@@ -47,11 +47,6 @@
<artifactId>kotlin-compiler-embeddable</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-jdk-annotations</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-stdlib</artifactId>
@@ -64,12 +59,6 @@
<sourceDirectory>${project.basedir}/src/main/kotlin</sourceDirectory>
<resources>
<resource>
<!-- jdkAnnotations -->
<directory>${kotlin-sdk}/lib</directory>
<includes><include>kotlin-jdk-annotations.jar</include></includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>${project.basedir}/src/main/resources</directory>
</resource>
@@ -80,11 +69,6 @@
<artifactId>kotlin-maven-plugin</artifactId>
<groupId>org.jetbrains.kotlin</groupId>
<version>${project.version}</version>
<configuration>
<annotationPaths>
<annotationPath>${basedir}/kotlinAnnotation</annotationPath>
</annotationPaths>
</configuration>
<executions>
<execution>
@@ -1,31 +1,32 @@
package org.jetbrains.kotlin.gradle.tasks
import org.gradle.api.tasks.compile.AbstractCompile
import java.io.File
import com.intellij.ide.highlighter.JavaFileType
import com.intellij.openapi.util.io.FileUtil
import org.apache.commons.io.FileUtils
import org.apache.commons.io.FilenameUtils
import org.apache.commons.lang.StringUtils
import org.codehaus.groovy.runtime.MethodClosure
import org.gradle.api.GradleException
import org.jetbrains.kotlin.cli.common.ExitCode
import org.gradle.api.file.SourceDirectorySet
import org.gradle.api.logging.Logger
import org.gradle.api.logging.Logging
import org.gradle.api.tasks.SourceTask
import java.util.HashSet
import org.gradle.api.tasks.TaskAction
import org.gradle.api.file.SourceDirectorySet
import org.jetbrains.kotlin.cli.jvm.K2JVMCompiler
import org.jetbrains.kotlin.cli.common.arguments.K2JVMCompilerArguments
import org.jetbrains.kotlin.cli.common.messages.MessageCollector
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageLocation
import org.gradle.api.logging.Logger
import org.gradle.api.logging.Logging
import org.apache.commons.lang.StringUtils
import org.apache.commons.io.FileUtils
import org.gradle.api.Project
import org.jetbrains.kotlin.config.Services
import org.jetbrains.kotlin.cli.js.K2JSCompiler
import org.jetbrains.kotlin.cli.common.arguments.K2JSCompilerArguments
import org.codehaus.groovy.runtime.MethodClosure
import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments
import org.gradle.api.tasks.compile.AbstractCompile
import org.jetbrains.kotlin.cli.common.CLICompiler
import com.intellij.ide.highlighter.JavaFileType
import org.jetbrains.kotlin.idea.JetFileType
import org.jetbrains.kotlin.cli.common.ExitCode
import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments
import org.jetbrains.kotlin.cli.common.arguments.K2JSCompilerArguments
import org.jetbrains.kotlin.cli.common.arguments.K2JVMCompilerArguments
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageLocation
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity
import org.jetbrains.kotlin.cli.common.messages.MessageCollector
import org.jetbrains.kotlin.cli.js.K2JSCompiler
import org.jetbrains.kotlin.cli.jvm.K2JVMCompiler
import org.jetbrains.kotlin.config.Services
import org.jetbrains.kotlin.doc.KDocArguments
import org.jetbrains.kotlin.doc.KDocCompiler
import org.jetbrains.kotlin.utils.LibraryUtils
import com.intellij.openapi.util.io.FileUtil
import org.apache.commons.io.FilenameUtils
@@ -37,6 +38,8 @@ import java.io.IOException
import java.lang.ref.WeakReference
val DEFAULT_ANNOTATIONS = "org.jebrains.kotlin.gradle.defaultAnnotations"
import java.io.File
import java.util.HashSet
val ANNOTATIONS_PLUGIN_NAME = "org.jetbrains.kotlin.kapt"
@@ -134,16 +137,7 @@ public open class KotlinCompile() : AbstractKotlinCompile<K2JVMCompilerArguments
args.pluginOptions = pluginOptions.toTypedArray()
getLogger().kotlinDebug("args.pluginOptions = ${args.pluginOptions.joinToString(File.pathSeparator)}")
val embeddedAnnotations = getAnnotations(getProject(), getLogger())
val userAnnotations = kotlinOptions.annotations?.split(File.pathSeparatorChar)?.toList() ?: emptyList()
val allAnnotations = if (kotlinOptions.noJdkAnnotations) userAnnotations else userAnnotations.plus(embeddedAnnotations.map { it.getPath() })
if (allAnnotations.isNotEmpty()) {
args.annotations = allAnnotations.join(File.pathSeparator)
getLogger().kotlinDebug("args.annotations = ${args.annotations}")
}
args.noStdlib = true
args.noJdkAnnotations = true
args.noInline = kotlinOptions.noInline
args.noOptimize = kotlinOptions.noOptimize
args.noCallAssertions = kotlinOptions.noCallAssertions
@@ -294,18 +288,6 @@ private fun <T: Any> ExtraPropertiesExtension.getOrNull(id: String): T? {
}
}
fun getAnnotations(project: Project, logger: Logger): Collection<File> {
@Suppress("UNCHECKED_CAST")
val annotations = project.getExtensions().getByName(DEFAULT_ANNOTATIONS) as Collection<File>
if (!annotations.isEmpty()) {
logger.info("using default annontations from [${annotations.map { it.getPath() }}]")
return annotations
} else {
throw GradleException("Default annotations not found in Kotlin gradle plugin classpath")
}
}
class GradleMessageCollector(val logger: Logger) : MessageCollector {
public override fun report(severity: CompilerMessageSeverity, message: String, location: CompilerMessageLocation) {
val text = with(StringBuilder()) {
@@ -1,5 +0,0 @@
<root>
<item name='com.android.build.gradle.BaseExtension org.gradle.api.NamedDomainObjectContainer&lt;com.android.build.gradle.api.AndroidSourceSet&gt; getSourceSets()'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
</root>
@@ -1,31 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<root>
<item name="com.android.build.gradle.api.AndroidSourceSet org.gradle.api.file.SourceDirectorySet getAllJava()">
<annotation name="org.jetbrains.annotations.NotNull" />
</item>
<item name="com.android.build.gradle.api.AndroidSourceSet org.gradle.api.file.SourceDirectorySet getAllSource()">
<annotation name="org.jetbrains.annotations.NotNull" />
</item>
<item name="com.android.build.gradle.api.AndroidSourceSet org.gradle.api.file.SourceDirectorySet getJava()">
<annotation name="org.jetbrains.annotations.NotNull" />
</item>
<item name="com.android.build.gradle.api.ApkVariant com.android.builder.DefaultBuildType getBuildType()">
<annotation name="org.jetbrains.annotations.NotNull" />
</item>
<item name="com.android.build.gradle.api.ApkVariant java.util.List&lt;com.android.builder.DefaultProductFlavor&gt; getProductFlavors()">
<annotation name="org.jetbrains.annotations.NotNull" />
</item>
<item name="com.android.build.gradle.api.BaseVariant com.android.build.gradle.tasks.AidlCompile getAidlCompile()">
<annotation name="org.jetbrains.annotations.NotNull" />
</item>
<item name="com.android.build.gradle.api.BaseVariant com.android.build.gradle.tasks.ProcessAndroidResources getProcessResources()">
<annotation name="org.jetbrains.annotations.NotNull" />
</item>
<item name="com.android.build.gradle.api.BaseVariant com.android.build.gradle.tasks.RenderscriptCompile getRenderscriptCompile()">
<annotation name="org.jetbrains.annotations.NotNull" />
</item>
<item name="com.android.build.gradle.api.LibraryVariant com.android.builder.DefaultBuildType getBuildType()">
<annotation name="org.jetbrains.annotations.NotNull" />
</item>
</root>
@@ -1,5 +0,0 @@
<root>
<item name='com.google.common.base.Joiner com.google.common.base.Joiner on(java.lang.String)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
</root>
@@ -1,5 +0,0 @@
<root>
<item name='com.google.common.io.Files java.io.File createTempDir()'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
</root>
@@ -1,5 +0,0 @@
<root>
<item name='org.apache.commons.io.FilenameUtils java.lang.String getExtension(java.lang.String)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
</root>
@@ -1,32 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<root>
<item name="org.gradle.api.NamedDomainObjectCollection T getByName(java.lang.String)">
<annotation name="org.jetbrains.annotations.NotNull" />
</item>
<item name="org.gradle.api.Plugin void apply(T)">
<annotation name="jet.runtime.typeinfo.KotlinSignature">
<val name="value" val="&quot;fun apply(p0 : T) : Unit&quot;" />
</annotation>
</item>
<item name="org.gradle.api.Project org.gradle.api.file.ConfigurableFileCollection files(java.lang.Object...)">
<annotation name="org.jetbrains.annotations.NotNull" />
</item>
<item name="org.gradle.api.Project org.gradle.api.initialization.dsl.ScriptHandler getBuildscript()">
<annotation name="jet.runtime.typeinfo.KotlinSignature">
<val name="value" val="&quot;fun getBuildscript() : ScriptHandler&quot;" />
</annotation>
</item>
<item name="org.gradle.api.Project org.gradle.api.logging.Logger getLogger()">
<annotation name="org.jetbrains.annotations.NotNull" />
</item>
<item name="org.gradle.api.Project org.gradle.api.plugins.Convention getConvention()">
<annotation name="org.jetbrains.annotations.NotNull" />
</item>
<item name='org.gradle.api.Project org.gradle.api.plugins.ExtensionContainer getExtensions()'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name="org.gradle.api.Project org.gradle.api.plugins.PluginContainer getPlugins()">
<annotation name="org.jetbrains.annotations.NotNull" />
</item>
</root>
@@ -1,8 +0,0 @@
<root>
<item name='org.gradle.api.artifacts.Configuration org.gradle.api.artifacts.ResolvedConfiguration getResolvedConfiguration()'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.gradle.api.artifacts.ConfigurationContainer org.gradle.api.artifacts.Configuration detachedConfiguration(org.gradle.api.artifacts.Dependency...)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
</root>
@@ -1,5 +0,0 @@
<root>
<item name='org.gradle.api.Project org.gradle.api.artifacts.dsl.DependencyHandler getDependencies()'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
</root>
@@ -1,8 +0,0 @@
<root>
<item name='org.gradle.api.file.FileCollection org.gradle.api.file.FileCollection filter(org.gradle.api.specs.Spec&lt;? super java.io.File&gt;)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.gradle.api.file.SourceDirectorySet java.util.Set&lt;java.io.File&gt; getSrcDirs()'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
</root>
@@ -1,10 +0,0 @@
<root>
<item name='org.gradle.api.initialization.dsl.ScriptHandler org.gradle.api.artifacts.ConfigurationContainer getConfigurations()'>
<annotation name='jet.runtime.typeinfo.KotlinSignature'>
<val name="value" val="&quot;fun getConfigurations() : ConfigurationContainer&quot;"/>
</annotation>
</item>
<item name='org.gradle.api.initialization.dsl.ScriptHandler org.gradle.api.artifacts.dsl.DependencyHandler getDependencies()'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
</root>
@@ -1,17 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<root>
<item name="org.gradle.api.internal.AbstractTask org.gradle.api.Project getProject()">
<annotation name="jet.runtime.typeinfo.KotlinSignature">
<val name="value" val="&quot;fun getProject() : Project&quot;" />
</annotation>
</item>
<item name="org.gradle.api.internal.AbstractTask org.gradle.api.logging.Logger getLogger()">
<annotation name="org.jetbrains.annotations.NotNull" />
</item>
<item name="org.gradle.api.internal.HasConvention org.gradle.api.plugins.Convention getConvention()">
<annotation name="jet.runtime.typeinfo.KotlinSignature">
<val name="value" val="&quot;fun getConvention() : Convention&quot;" />
</annotation>
</item>
</root>
@@ -1,5 +0,0 @@
<root>
<item name='org.gradle.api.internal.project.ProjectInternal org.gradle.api.internal.tasks.TaskContainerInternal getTasks()'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
</root>
@@ -1,5 +0,0 @@
<root>
<item name='org.gradle.api.logging.Logging org.gradle.api.logging.Logger getLogger(java.lang.Class)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
</root>
@@ -1,27 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<root>
<item name="org.gradle.api.plugins.Convention T getPlugin(java.lang.Class&lt;T&gt;)">
<annotation name="org.jetbrains.annotations.NotNull" />
</item>
<item name="org.gradle.api.plugins.Convention java.util.Map&lt;java.lang.String,java.lang.Object&gt; getPlugins()">
<annotation name="jet.runtime.typeinfo.KotlinSignature">
<val name="value" val="&quot;fun getPlugins() : MutableMap&lt;String, Any&gt;&quot;" />
</annotation>
</item>
<item name="org.gradle.api.plugins.Convention org.gradle.api.internal.DynamicObject getExtensionsAsDynamicObject()">
<annotation name="org.jetbrains.annotations.NotNull" />
<annotation name="jet.runtime.typeinfo.KotlinSignature">
<val name="value" val="&quot;fun getExtensionsAsDynamicObject() : DynamicObject&quot;" />
</annotation>
</item>
<item name="org.gradle.api.plugins.ExtensionAware org.gradle.api.plugins.ExtensionContainer getExtensions()">
<annotation name="org.jetbrains.annotations.NotNull" />
</item>
<item name="org.gradle.api.plugins.PluginContainer T apply(java.lang.Class&lt;T&gt;)">
<annotation name="org.jetbrains.annotations.NotNull" />
</item>
<item name="org.gradle.api.plugins.PluginContainer org.gradle.api.Plugin apply(java.lang.String)">
<annotation name="org.jetbrains.annotations.NotNull" />
</item>
</root>
@@ -1,7 +0,0 @@
<root>
<item name='org.gradle.api.tasks.SourceTask org.gradle.api.file.FileTree getSource()'>
<annotation name='jet.runtime.typeinfo.KotlinSignature'>
<val name="value" val="&quot;fun getSource() : FileTree&quot;"/>
</annotation>
</item>
</root>
@@ -1,5 +0,0 @@
<root>
<item name='org.gradle.api.tasks.compile.AbstractCompile org.gradle.api.file.FileCollection getClasspath()'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
</root>
@@ -72,11 +72,6 @@
<artifactId>kotlin-maven-plugin</artifactId>
<groupId>org.jetbrains.kotlin</groupId>
<version>${project.version}</version>
<configuration>
<annotationPaths>
<annotationPath>${basedir}/kotlinAnnotation</annotationPath>
</annotationPaths>
</configuration>
<executions>
<execution>
@@ -107,9 +102,7 @@
<postBuildHookScript>verify</postBuildHookScript> <!-- no extension required -->
<extraArtifacts>
<extraArtifact>org.jetbrains.kotlin:kotlin-gradle-plugin-core:${project.version}</extraArtifact>
<extraArtifact>org.jetbrains.kotlin:kotlin-jdk-annotations:${project.version}</extraArtifact>
<extraArtifact>org.jetbrains.kotlin:kotlin-js-library:${project.version}</extraArtifact>
<extraArtifact>org.jetbrains.kotlin:kotlin-android-sdk-annotations:${project.version}</extraArtifact>
</extraArtifacts>
</configuration>
<executions>
@@ -36,8 +36,6 @@ import org.jetbrains.kotlin.gradle.internal.initKapt
import java.net.URL
import java.util.jar.Manifest
val DEFAULT_ANNOTATIONS = "org.jebrains.kotlin.gradle.defaultAnnotations"
val KOTLIN_AFTER_JAVA_TASK_SUFFIX = "AfterJava"
abstract class KotlinSourceSetProcessor<T : AbstractCompile>(
@@ -239,9 +237,6 @@ abstract class AbstractKotlinPlugin @Inject constructor(val scriptHandler: Scrip
project.getPlugins().apply(javaClass<JavaPlugin>())
configureSourceSetDefaults(project as ProjectInternal, javaBasePlugin, javaPluginConvention)
val gradleUtils = GradleUtils(scriptHandler, project)
project.getExtensions().add(DEFAULT_ANNOTATIONS, gradleUtils.resolveKotlinPluginDependency("kotlin-jdk-annotations"))
}
open protected fun configureSourceSetDefaults(project: ProjectInternal,
@@ -332,9 +327,6 @@ open class KotlinAndroidPlugin @Inject constructor(val scriptHandler: ScriptHand
ext, plugin, aptConfigurations)
}
}
project.getExtensions().add(DEFAULT_ANNOTATIONS, GradleUtils(scriptHandler, project)
.resolveKotlinPluginDependency("kotlin-android-sdk-annotations"))
}
private fun processVariantData(
@@ -534,8 +526,6 @@ open class GradleUtils(val scriptHandler: ScriptHandler, val project: ProjectInt
public fun kotlinPluginArtifactCoordinates(artifact: String): String = "org.jetbrains.kotlin:${artifact}:${kotlinPluginVersion()}"
public fun kotlinJsLibraryCoordinates(): String = kotlinPluginArtifactCoordinates("kotlin-js-library")
public fun resolveKotlinPluginDependency(artifact: String): Collection<File> =
resolveDependencies(kotlinPluginArtifactCoordinates(artifact))
public fun resolveJsLibrary(): File = resolveDependencies(kotlinJsLibraryCoordinates()).first()
}
@@ -21,10 +21,6 @@ android {
compileSdkVersion 22
buildToolsVersion "21.1.2"
kotlinOptions {
annotations = "kotlinAnnotations"
}
sourceSets {
main.kotlin.srcDirs += 'root/kotlin'
}
@@ -1,5 +0,0 @@
<root>
<item name='android.app.Activity android.view.MenuInflater getMenuInflater()'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
</root>
@@ -44,12 +44,6 @@ task show << {
buildscript.configurations.classpath.each { println it }
}
compileKotlin {
kotlinOptions.annotations = "externalAnnotations"
}
task wrapper(type: Wrapper) {
gradleVersion="1.4"
}
}
@@ -1,11 +0,0 @@
<root>
<item name='com.google.common.base.Joiner com.google.common.base.Joiner on(java.lang.String)'>
<annotation name="org.jetbrains.annotations.NotNull" />
</item>
<item name='com.google.common.base.Joiner com.google.common.base.Joiner.MapJoiner withKeyValueSeparator(java.lang.String)'>
<annotation name="org.jetbrains.annotations.NotNull" />
</item>
<item name='com.google.common.base.Joiner com.google.common.base.Joiner skipNulls()'>
<annotation name="org.jetbrains.annotations.NotNull" />
</item>
</root>
@@ -39,11 +39,6 @@ test {
useTestNG()
}
compileKotlin {
kotlinOptions.annotations = "externalAnnotations"
}
task wrapper(type: Wrapper) {
gradleVersion="1.4"
}
}
@@ -1,11 +0,0 @@
<root>
<item name='com.google.common.base.Joiner com.google.common.base.Joiner on(java.lang.String)'>
<annotation name="org.jetbrains.annotations.NotNull" />
</item>
<item name='com.google.common.base.Joiner com.google.common.base.Joiner.MapJoiner withKeyValueSeparator(java.lang.String)'>
<annotation name="org.jetbrains.annotations.NotNull" />
</item>
<item name='com.google.common.base.Joiner com.google.common.base.Joiner skipNulls()'>
<annotation name="org.jetbrains.annotations.NotNull" />
</item>
</root>
@@ -28,12 +28,6 @@ task show << {
buildscript.configurations.classpath.each { println it }
}
compileKotlin {
kotlinOptions.annotations = "externalAnnotations"
}
task wrapper(type: Wrapper) {
gradleVersion="1.4"
}
}
@@ -39,12 +39,6 @@ task show << {
buildscript.configurations.classpath.each { println it }
}
compileKotlin {
kotlinOptions.annotations = "externalAnnotations"
}
task wrapper(type: Wrapper) {
gradleVersion="1.4"
}
@@ -1,18 +0,0 @@
<root>
<item name='com.google.common.base.Joiner com.google.common.base.Joiner on(java.lang.String)'>
<annotation name='jet.runtime.typeinfo.KotlinSignature'>
<val name="value" val="&quot;fun on(separator : String?) : Joiner&quot;"/>
</annotation>
</item>
<item name='com.google.common.base.Joiner com.google.common.base.Joiner.MapJoiner withKeyValueSeparator(java.lang.String)'>
<annotation name='jet.runtime.typeinfo.KotlinSignature'>
<val name="value"
val="&quot;fun withKeyValueSeparator(keyValueSeparator : String?) : Joiner.MapJoiner?&quot;"/>
</annotation>
</item>
<item name='com.google.common.base.Joiner com.google.common.base.Joiner skipNulls()'>
<annotation name='jet.runtime.typeinfo.KotlinSignature'>
<val name="value" val="&quot;fun skipNulls() : Joiner&quot;"/>
</annotation>
</item>
</root>
@@ -34,12 +34,6 @@ task show << {
buildscript.configurations.classpath.each { println it }
}
compileKotlin {
kotlinOptions.annotations = "externalAnnotations"
}
task wrapper(type: Wrapper) {
gradleVersion="1.4"
}

Some files were not shown because too many files have changed in this diff Show More