Sergey Igushkin
581b161611
Expose statically-typed kotlinOptions and compileKotlinTask in DSL
...
To simplify configuring a `KotlinCompilation` with Gradle Kotlin DSL, it
is essential to expose statically-known types where possible.
This commit parametrizes `KotlinCompilation` with its Kotlin options
type (a subtype of `KotlinCommonOptions`) and adds `kotlinOptions` and
`compileKotlinTask` to `KotlinCompilation`.
(minor) Also reduce the visibility of `attachClassesDir` and
`setupPlugins` to internal, since this API is not for external use.
2018-11-27 19:47:38 +03:00
Sergey Igushkin
1e2436b1c1
Make KotlinNativeCompile implement the <...>.dsl.KotlinCompile interface
...
This is required for KotlinCompilation to be able to generically expose
the Kotlin compile tasls.
2018-11-27 19:37:50 +03:00
Sergey Igushkin
ae5d59caf0
Add a new root of <...>.dsl.KotlinCompile hierarchy in API
...
This new interface uses a more general type for its kotlinOptions,
KotlinCommonToolOptions rather than KotlinCommonOptions. This is
needed for the Kotlin/Native task to implement a common interface
with the other Kotlin compilation tasks.
2018-11-27 19:37:50 +03:00
Sergey Igushkin
ecd54d9b21
(minor) Move KotlinCommonToolOptions to kotlin-gradle-plugin-api
...
This change is needed to expose `kotlinOptions { ... }` in the
API interfaces.
2018-11-27 19:37:50 +03:00
Sergey Igushkin
635d436f02
Provide preset-like factory functions for creating targets in new MPP
...
* Pull the `targets` and `presets` properties of the `kotlin` extension
up to an interface in `kotlin-gradle-plugin-api`
* Generate the code: we need type-safe statically-typed functions for
different target type, which seems to be only possible to achieve by
providing a function per preset.
* Place these functions in the top-level `kotlin` Gradle extension,
rather than extension functions for `kotlin.targets`:
- `kotlin.jvm { ... }` will work, while `kotlin.targets.jvm { ... }`
won't, the extension function needs to be somehow brought into scope
- reducing the nesting level by one seems to be a good move here
Issue #KT-26389 Fixed
2018-11-27 19:37:49 +03:00
Georgy Bronnikov
d23964034b
Switch off logging for failing IrBlackBox tests
...
Logging of tests that are expected to fail is controlled by
kotlin.suppress.expected.test.failures project property.
2018-11-27 16:53:34 +03:00
Yan Zhulanow
57d8e9457c
Evaluate: Pass a constructor with loaded classes to 'runEval4J()'
...
So even if 'evaluateWithCompilation()' fails, 'runEval4J()' can use the additional classes.
2018-11-27 22:21:28 +09:00
Yan Zhulanow
1d1f3c3fd6
Minor: Remove a deprecated method usage
2018-11-27 22:21:27 +09:00
Yan Zhulanow
4cfd028768
Do not ignore an evaluation exception in StepOver command
2018-11-27 22:21:27 +09:00
Yan Zhulanow
03a6066ce0
Call 'StackFrameProxy::visibleVariables()' in a safe way (KT-27462)
2018-11-27 22:21:27 +09:00
Yan Zhulanow
47657df8da
Kapt: Convert valid references to qualified names (KT-26304)
2018-11-27 22:21:27 +09:00
Yan Zhulanow
6a8a8b794d
Kapt: Support correctErrorTypes in suspend functions (KT-27711)
2018-11-27 22:21:27 +09:00
Yan Zhulanow
4c5e982f3e
Kapt: Fix an ArrayIndexOutOfBoundsException for suspend functions with generated return types
2018-11-27 22:21:26 +09:00
Yan Zhulanow
69633e6686
Kapt: Fix stubs for delegated properties with anonymous types (KT-27910)
2018-11-27 22:21:26 +09:00
Yan Zhulanow
5fd070a9b9
Kapt: Add option for showing annotation processor timings (KT-28024)
2018-11-27 22:21:26 +09:00
Yan Zhulanow
9feb834d97
Kapt: Support paranoid mode in memory leak searcher
2018-11-27 22:21:26 +09:00
Yan Zhulanow
ecc44419b6
Kapt: Support KotlinOptions class in KaptWithoutKotlincTask
2018-11-27 22:21:25 +09:00
Yan Zhulanow
7e4069f114
Kapt, Refactoring: Introduce 'KaptOptions'
...
1. Use 'KaptOptions' for all kapt options, including paths and flags.
2. Use a single 'KAPT_OPTIONS' compiler configuration key for setting all options (using a mutable KaptOptions.Builder).
3. Pass 'KaptOptions' instead of separate flags.
4. Remove 'KaptPaths'.
5. Remove deprecated 'aptOnly' CLI option.
2018-11-27 22:21:25 +09:00
Toshiaki Kameyama
a621171d9b
KT-24515 Intention to add an exception under the cursor to @Throws annotations
2018-11-27 22:21:25 +09:00
Yan Zhulanow
3918ec71be
Kapt: Suppress warnings for deprecated kapt option usage
2018-11-27 22:21:25 +09:00
Yan Zhulanow
abd1646d42
Kapt: Detect memory leaks in annotation processors (KT-28025)
2018-11-27 22:21:24 +09:00
Yan Zhulanow
eb3511164f
Fix DataBinding kapt integration test
2018-11-27 22:21:24 +09:00
Yan Zhulanow
911ad32580
Kapt: Check if the psiElement is bound to some Document instance before asking for its text range
...
textRange has an assertion that fails if the Document is not set.
2018-11-27 22:21:24 +09:00
Yan Zhulanow
cd968ba8fe
Kapt: Clear Javac shared ZIP cache after annotation processing or stub generation (KT-25756)
2018-11-27 22:21:24 +09:00
Yan Zhulanow
0ffa901859
Switch plugin and annotation processor loading to the own implementation of ServiceLoader
...
'ServiceLoader' in JDK8 leaks file handles (https://bugs.openjdk.java.net/browse/JDK-8156014 ).
New implementation uses the ZipFile API, it also doesn't operate on the whole classpath which is not often needed.
2018-11-27 22:21:24 +09:00
Yan Zhulanow
11e23ecc70
Kapt: Fix 'apt+compile' mode, clear package caches directly
2018-11-27 22:21:23 +09:00
Yan Zhulanow
4e84a6b601
Kapt: Do partial analysis only for stub generation
...
Kapt has a 'compile' mode which repeats analysis after the annotation processing.
It should not run in the partial analysis mode.
2018-11-27 22:21:23 +09:00
Yan Zhulanow
69ec958aab
Kapt: Add tests for the command-line 'kapt' tool
2018-11-27 22:21:23 +09:00
Yan Zhulanow
6e5eb0fdd4
Kapt: Implement 'kapt' command-line tool (KT-24998, KT-24997)
2018-11-27 22:21:23 +09:00
Yan Zhulanow
2e56feed73
Performance optimization: do not create a new list object on each new option
2018-11-27 22:21:23 +09:00
Yan Zhulanow
b6aecf3933
Remove hacky PluginURLClassLoader
...
It was once needed for the compiler plugins bundled straight into the compiler (read: kapt1). Since there are no bundled plugins anymore, the parent-last plugin classloader itself is not needed anymore.
2018-11-27 22:21:22 +09:00
Yan Zhulanow
02340a4fe3
Removed obsolete 'BundledCompilerPlugins' class
...
It was used once in kapt1, but since it's gone, there is no need in this anymore.
2018-11-27 22:21:22 +09:00
Yan Zhulanow
c5e241d5c6
Remove deprecated usages of CliOption in official compiler plugins
2018-11-27 22:21:22 +09:00
Yan Zhulanow
49941339a3
Introduce AbstractCliOption, rewrite all possible kapt options as enum values
2018-11-27 22:21:22 +09:00
Yan Zhulanow
546eff6e45
Kapt: Use light analysis by default
2018-11-27 22:21:21 +09:00
Yan Zhulanow
fa0f447a23
Minor: Refactor AptMode a bit
2018-11-27 22:21:21 +09:00
Yan Zhulanow
fe0f9005b0
Kapt: Allow to use class output directory as a generated class output
2018-11-27 22:21:21 +09:00
Yan Zhulanow
7893bb60a6
Kapt: Using 'kapt' configuration without the 'kotlin-kapt' plugin applied should throw an error (KT-26145)
2018-11-27 22:21:21 +09:00
victor.petukhov
f5d44003cd
Add tests for type annotations with unresolved reference and invalid target (KT-28424, KT-28449)
2018-11-27 13:55:12 +03:00
Andrey Uskov
620969652a
Fixed dependency resolution of root project
...
#KT-28389 Fixed
2018-11-27 13:46:56 +03:00
Toshiaki Kameyama
4abcd9a053
Make internal: don't suggest for @JvmField property inside companion object of interface #KT-27138 Fixed
2018-11-26 18:39:54 +03:00
Pavel Punegov
9cc93e9e55
Fix Contracts deserialization for native plugin
2018-11-26 18:19:03 +03:00
Pavel Punegov
fe0a2bc75e
Provide SerializerExtension methods with child DescriptorSerializer instance
...
to make Native be able to serialize backing properties and inline bodies.
Change visibility for functions and properties of DescriptorSerializer.
2018-11-26 18:15:30 +03:00
Toshiaki Kameyama
726b9272f3
Move out of companion object: don't suggest for @JvmField property inside companion object of interface #KT-28443 Fixed
2018-11-26 18:01:43 +03:00
Nikolay Krasko
3ca934e5ea
Update test data for gradle migration test
2018-11-26 17:23:00 +03:00
Nikolay Krasko
bc6f53d023
Auto-indent || and && operator typed on a new line (KT-28402)
...
#KT-28402 Fixed
2018-11-26 17:22:59 +03:00
Nikolay Krasko
9c41ec46ee
Auto-indent elvis operator on new line (KT-28371)
...
#KT-28371 Fixed
2018-11-26 17:22:58 +03:00
Nikolay Krasko
8fad4db8ce
Auto-popup lambda type parameter info (KT-28401)
...
#KT-28401 Fixed
2018-11-26 17:22:45 +03:00
Vyacheslav Gerasimov
d30b66467b
183: Update 183 Idea version to the release one
2018-11-26 17:00:38 +03:00
Simon Ogorodnik
fd1a6f3830
KT-20725: Fix storing NotProperty settings
...
#KT-20725 fixed
2018-11-26 16:38:23 +03:00