Commit Graph

2505 Commits

Author SHA1 Message Date
Alexander Udalov fec2c14ea5 Support local delegated properties in kotlinx-metadata-jvm 2018-06-14 17:19:08 +02:00
Vyacheslav Gerasimov 992a31af88 Build: introduce javaPluginConvention extension on project
`ExtensionAware.the<T>()` introduced in gradle 4.7 made existing calls `the<JavaPluginConvention>()` invalid (on wrong receiver)
2018-06-13 19:43:03 +03:00
Alexander Gorshenev 6d7dd58f70 Separated idl2k frontend and backend invocations. 2018-06-13 15:45:54 +03:00
Yan Zhulanow ed43cb57e3 PrePush: Add a pre-push warning before committing to locked branches 2018-06-08 19:37:21 +03:00
Yan Zhulanow bf10c1162a Kapt: Fix Gradle input/output verification 2018-06-08 19:37:21 +03:00
Yan Zhulanow 8645be3ace Kapt: Remove the remaining kapt1-related code in Gradle plugin 2018-06-08 19:37:20 +03:00
Yan Zhulanow 64ea16fdfc Kapt: Allow running kapt using Workers API in Gradle 2018-06-08 19:37:19 +03:00
Yan Zhulanow 2bc45e0484 Kapt: Extract annotation processing running logic from the compiler plugin 2018-06-08 19:37:19 +03:00
Yan Zhulanow ab611a20c5 Kapt: Do now show a warning for APs from 'annotationProcessor' configuration also declared in 'kapt' configuration (#KT-23898) 2018-06-08 19:27:00 +03:00
Yan Zhulanow 614003ad70 Android Extensions: Allow to disable specific features of Android Extensions (#KT-23244) 2018-06-08 19:26:59 +03:00
Yan Zhulanow a70707b72b Android Extensions: Allow to access library project resources in Gradle setup (#KT-22430) 2018-06-08 19:26:59 +03:00
Yan Zhulanow 5eedbf4177 G2K: Rewrite AndroidGradleWrapper in Kotlin 2018-06-08 19:26:59 +03:00
Yan Zhulanow 9aa02c7ae4 G2K: Move AndroidGradleWrapper to the Kotlin source set, rename to .kt 2018-06-08 19:26:59 +03:00
Alexey Tsvetkov 451c732b8f Test: speed up tests by minimizing number of tasks to run
E.g. avoid building release variants for Android
(extremely slow due to proguard minification, optimization)
2018-06-06 17:54:51 +03:00
Alexey Tsvetkov 0383584f33 Test: rename file to match class name 2018-06-06 17:54:51 +03:00
Alexey Tsvetkov 0c12b0e5fb Test: refactor Gradle daemon memory test
Currently the test makes more harm than use:
* It is too slow: two executions (with different Gradle versions)
take 5 minute on CI.
* It is unreliable: the test fails on CI for months
with insignificant violation of the memory growth limit.

After this change:
* the memory growth limit is increased;
* the test run count is decreased;
* changes the test to use separate project with minimal amount of classes
(we're not interested in compiler's memory leaks; only Gradle plugin specific ones);
2018-06-06 17:54:51 +03:00
Alexey Tsvetkov 43e7b0425d Test: move Gradle daemon memory test to separate class 2018-06-06 17:54:50 +03:00
Alexey Tsvetkov 2fecf07dd7 Test: do not expect copy classes task to run with Gradle 4.0+ 2018-06-05 19:27:08 +03:00
Alexey Tsvetkov 141cf43153 Test: remove KotlinGradlePluginMultiVersionIT
We run all tests with multiple Gradle versions now,
so parametrized test is not needed anymore.

Test cases are moved to relevant test classes.

testKaptProcessorPath is removed because kapt1 is not supported anymore.
2018-06-05 19:27:07 +03:00
Alexey Tsvetkov fdbd3cd8cb Test: remove unsupported Gradle versions from tests 2018-06-05 19:27:07 +03:00
Alexey Tsvetkov 80731437a8 Drop forcing Java task to recompile
We don't support Gradle <= 3.5 at the moment,
it does not make sense to have the code for Gradle < 2.14
2018-06-05 19:27:07 +03:00
Alexey Tsvetkov 0eadc76cb7 Remove unneeded code from Gradle plugin 2018-06-05 19:27:07 +03:00
Alexey Tsvetkov 3dc314d509 Remove com.intellij usages from Gradle plugin 2018-06-05 19:27:07 +03:00
Alexey Tsvetkov c9e49ed198 Remove unused util 2018-06-05 19:27:07 +03:00
Alexey Tsvetkov 5f2513ee20 Get rid of split package org.jetbrains.kotlin.incremental in Gradle plugin
#KT-18621 fixed
2018-06-05 19:27:07 +03:00
Alexey Tsvetkov f7b32bdfa7 Refactor managing Gradle daemons for tests
Encapsulate daemon run count within DaemonRegistry to simplify reasoning
about the state.

Never count test process Gradle version as active Gradle process.

Fix the bug when daemon version hit max run count threshold
would be restarted every time after that.
2018-06-01 23:14:34 +03:00
Alexey Tsvetkov 0fd0eb9a18 Do not build release variant for Android Gradle test
This speeds up the test case significally. On my machine the time spent
in test case dropped from 1+ minute to 15 seconds.
2018-06-01 23:13:37 +03:00
Alexey Tsvetkov 87b053958b Make lint not fail on error in Android tests
It fails with meaningless (for us) errors, such as "target version 23
won't be accepted to play store soon".
2018-06-01 23:13:37 +03:00
Alexey Tsvetkov 3ccaae249a Move Android test from foo to com.example package
Otherwise the test `KotlinAndroid32GradleIT.testIncrementalCompile`
failed with Android resource linking failed error:
"attribute 'package' in <manifest> tag is not a valid Android package name: 'foo'."
2018-06-01 23:13:37 +03:00
Alexey Tsvetkov 44a845eca9 Avoid using bound class reference
Bound references require kotlin-reflect 1.1.x on runtime.
However old Gradle versions (e.g. 3.4) can leak 1.0.x reflect
into Gradle classloader, so getting bound reference fails on runtime
(in this case the plugin couldn't connect to the daemon).
2018-06-01 23:13:37 +03:00
Alexey Tsvetkov 42350ffb1a Fix applying subplugin from script
#KT-24497 fixed
2018-06-01 23:13:36 +03:00
Alexey Tsvetkov 6eebcf7f18 Add test for subplugin in nested buildscript
KT-24653
2018-06-01 23:13:36 +03:00
Alexey Tsvetkov f720501612 Implement fallback compiler search 2018-06-01 23:13:36 +03:00
Alexey Tsvetkov 15a372b0eb Create compiler and plugin classpath configurations in Android plugin too 2018-06-01 23:13:36 +03:00
Alexey Tsvetkov af8b0ffa6d Resolve compiler classpath using 'kotlinCompilerClasspath' configuration
#KT-24675 fixed
2018-06-01 23:13:36 +03:00
Alexey Tsvetkov 6fe0829cf8 Remove scripting plugin from JVM compiler classpath
#KT-24559 fixed
2018-06-01 23:13:36 +03:00
Alexey Tsvetkov db66bfd726 Pack scripting plugin into kotlin-scripting-embeddable for use in Gradle 2018-06-01 23:13:36 +03:00
Alexey Tsvetkov dd731da6d1 Make 'kotlinCompilerPluginClasspath' non-transitive
Previous plugin resolution mechanism was only searching
for exact artifact without transitive dependencies.

The configuration allows resolving transitive dependencies,
but it resolves stdlib which fails because the compiler
loads plugins using parent last classloader.

Non-transitivity can be removed after parent last classloader is
removed.
2018-06-01 23:13:36 +03:00
Alexey Tsvetkov 873de17056 Resolve compiler plugin classpath using 'kotlinCompilerPluginClasspath' configuration
#KT-24653 fixed
        #KT-24676 fixed
2018-06-01 23:13:36 +03:00
Alexey Tsvetkov 0c21b21a88 Move subplugin tests to separate class 2018-06-01 23:13:36 +03:00
Alexey Tsvetkov 1085abedcd Test scripting with Gradle 2018-06-01 23:13:36 +03:00
Alexey Tsvetkov 0b22a3c67b Prevent starting multiple daemons from Gradle
#KT-24560 fixed
2018-06-01 23:13:36 +03:00
Ilya Gorbunov f8217ef28f Extract subclasses of JvmMemberSignature sealed class to top-level
Use more specific subtypes of sealed class in visitors.
2018-06-01 06:43:48 +03:00
Ilya Gorbunov 1a290d0c73 Refactor: make JvmMemberSignature a sealed class
Use JvmMemberSignature.asString instead of toString
2018-06-01 06:43:48 +03:00
Ilya Gorbunov 2f58539200 Refactor: allow to distinguish whether JvmMemberSignature is for field or for method
Introduce a method to create org.jetbrains.kotlin.load.kotlin.MemberSignature directly from JvmMemberSignature.
Create JvmFunctionSignature from JvmMemberSignature.
2018-06-01 06:43:48 +03:00
Ilya Gorbunov 36c658fd8b Introduce JvmMemberSignature to represent name and desc of jvm methods and fields
Return member name and desc in a class in order not to parse that information
from concatenated string when required.
2018-06-01 06:43:48 +03:00
Ilya Gorbunov eee9f8ab3f Include kotlinp tests into distTest and kotlinx-metadata-jvm tests into coreLibsTest
kotlinp tests: do not fail due to different directory separators on Windows
2018-06-01 06:43:48 +03:00
Alexey Tsvetkov cb549cba00 Create kapt configurations before gradle script is evaluated
We cannot create kapt configurations in `KotlinGradleSubplugin.apply`,
because `apply` is invoked after a script is evaluated, so user cannot
refer to kapt configurations in script.

We cannot call `apply` before script's evaluation, because
then we might not be able to determine
if a Gradle plugin corresponding to a subplugin is appled.
For example in case of the following script:
```
apply plugin: "kotlin"
apply plugin: "kotlin-kapt"
```
subplugin's apply will exit early because Gradle plugin "kotlin-kapt"
is not applied yet, when "kotlin"'s apply is evaluated.
2018-05-30 20:24:11 +03:00
Ilya Chernikov a46dd5b30e Avoid using reflected types in the scripting API
since it causes numerous classloading issues. Using the wrapping types
and reload them in the proper context when needed.
Note: this version supports only classes, but the wrapping type could
be extended to support other types in the future.
+ numerous fixes related to proper loading and handling of the templates.
2018-05-28 22:10:56 +02:00
Ilya Gorbunov 418db53ba4 Array.copyOf docs: do not use 'primitive default' term, rewrite description
#KT-22298
2018-05-25 21:52:36 +03:00