From e676bd841dbc5dd6440bc9557712d89a59e658bb Mon Sep 17 00:00:00 2001 From: Evgeny Gerashchenko Date: Tue, 28 Jan 2014 22:56:16 +0400 Subject: [PATCH] Partial compilation of package (only functions supported). Original commit: d62bc0743794db73a8e27aeb71bdc8fa0c3ecef8 --- .../org/jetbrains/jet/jps/build/KotlinBuilder.java | 7 ++++++- .../jetbrains/jet/jps/build/IncrementalJpsTest.kt | 4 ++++ .../incremental/topLevelMembersInTwoPackages/a.kt | 9 +++++++++ .../topLevelMembersInTwoPackages/a.kt.new | 9 +++++++++ .../incremental/topLevelMembersInTwoPackages/b.kt | 9 +++++++++ .../topLevelMembersInTwoPackages/build.log | 12 ++++++++++++ 6 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 jps/jps-plugin/testData/incremental/topLevelMembersInTwoPackages/a.kt create mode 100644 jps/jps-plugin/testData/incremental/topLevelMembersInTwoPackages/a.kt.new create mode 100644 jps/jps-plugin/testData/incremental/topLevelMembersInTwoPackages/b.kt create mode 100644 jps/jps-plugin/testData/incremental/topLevelMembersInTwoPackages/build.log diff --git a/jps/jps-plugin/src/org/jetbrains/jet/jps/build/KotlinBuilder.java b/jps/jps-plugin/src/org/jetbrains/jet/jps/build/KotlinBuilder.java index dfa5db0a8ae..2b6607c95df 100644 --- a/jps/jps-plugin/src/org/jetbrains/jet/jps/build/KotlinBuilder.java +++ b/jps/jps-plugin/src/org/jetbrains/jet/jps/build/KotlinBuilder.java @@ -191,6 +191,10 @@ public class KotlinBuilder extends ModuleLevelBuilder { } for (SimpleOutputItem outputItem : outputItemCollector.getOutputs()) { + // TODO this is a hack: we don't remove + if (outputItem.getOutputFile().getName().endsWith("Package.class")) { + continue; + } BuildTarget target = null; Collection sourceFiles = outputItem.getSourceFiles(); if (sourceFiles != null && !sourceFiles.isEmpty()) { @@ -200,7 +204,8 @@ public class KotlinBuilder extends ModuleLevelBuilder { messageCollector.report(EXCEPTION, "KotlinBuilder: outputItem.sourceFiles is null or empty, outputItem = " + outputItem, NO_LOCATION); } - outputConsumer.registerOutputFile(target != null ? target : representativeTarget, outputItem.getOutputFile(), paths(sourceFiles)); + outputConsumer.registerOutputFile(target != null ? target : representativeTarget, outputItem.getOutputFile(), + paths(sourceFiles)); } // TODO should mark dependencies as dirty, as well diff --git a/jps/jps-plugin/test/org/jetbrains/jet/jps/build/IncrementalJpsTest.kt b/jps/jps-plugin/test/org/jetbrains/jet/jps/build/IncrementalJpsTest.kt index 0823675e211..1e3f934f02c 100644 --- a/jps/jps-plugin/test/org/jetbrains/jet/jps/build/IncrementalJpsTest.kt +++ b/jps/jps-plugin/test/org/jetbrains/jet/jps/build/IncrementalJpsTest.kt @@ -98,6 +98,10 @@ public class IncrementalJpsTest : JpsBuildTestCase() { doTest() } + fun testTopLevelMembersInTwoPackages() { + doTest() + } + private class MyLogger(val rootPath: String) : ProjectBuilderLoggerBase() { private val logBuf = StringBuilder() public val log: String diff --git a/jps/jps-plugin/testData/incremental/topLevelMembersInTwoPackages/a.kt b/jps/jps-plugin/testData/incremental/topLevelMembersInTwoPackages/a.kt new file mode 100644 index 00000000000..0aae67fb7fd --- /dev/null +++ b/jps/jps-plugin/testData/incremental/topLevelMembersInTwoPackages/a.kt @@ -0,0 +1,9 @@ +package test + +fun foo() { + bar(5) + baz() +} + +fun baz() { +} diff --git a/jps/jps-plugin/testData/incremental/topLevelMembersInTwoPackages/a.kt.new b/jps/jps-plugin/testData/incremental/topLevelMembersInTwoPackages/a.kt.new new file mode 100644 index 00000000000..5e5e3542b2c --- /dev/null +++ b/jps/jps-plugin/testData/incremental/topLevelMembersInTwoPackages/a.kt.new @@ -0,0 +1,9 @@ +package test + +fun foo() { + bar(4) + baz() +} + +fun baz() { +} diff --git a/jps/jps-plugin/testData/incremental/topLevelMembersInTwoPackages/b.kt b/jps/jps-plugin/testData/incremental/topLevelMembersInTwoPackages/b.kt new file mode 100644 index 00000000000..0790fb178f1 --- /dev/null +++ b/jps/jps-plugin/testData/incremental/topLevelMembersInTwoPackages/b.kt @@ -0,0 +1,9 @@ +package test + +fun bar(i: Int): String { + return "$i ${quux()} $i" +} + +fun quux(): String { + return "quux" +} \ No newline at end of file diff --git a/jps/jps-plugin/testData/incremental/topLevelMembersInTwoPackages/build.log b/jps/jps-plugin/testData/incremental/topLevelMembersInTwoPackages/build.log new file mode 100644 index 00000000000..37736142dc4 --- /dev/null +++ b/jps/jps-plugin/testData/incremental/topLevelMembersInTwoPackages/build.log @@ -0,0 +1,12 @@ +Cleaning output files: +out/production/module/test/TestPackage-a-*.class +End of files +Compiling files: +src/a.kt +End of files +Cleaning output files: +out/production/module/test/TestPackage-b-*.class +End of files +Compiling files: +src/b.kt +End of files