Commit Graph

2848 Commits

Author SHA1 Message Date
Alexey Tsvetkov 5fa627c501 Add flag to enable intra-project parallel tasks
To enable parallel tasks execution within a project,
add 'kotlin.parallel.tasks.in.project=true'
to gradle.properties or local.properties file .

    #KT-28155 fixed
2018-11-14 11:41:43 +03:00
Alexey Tsvetkov 4678a00324 Always clear local state directories for non-incremental build 2018-11-14 11:41:43 +03:00
Alexey Tsvetkov 21289722b7 Move after-compilation cleanup actions to GradleKotlinCompilerWork
Otherwise cleanup actions would run in-parallel or before
compilation when Gradle Workers are used
2018-11-14 11:41:43 +03:00
Alexey Tsvetkov ff81a46233 Pass arguments to GradleKotlinCompilerWork in GradleKotlinCompilerWorkArguments
It's less error prone to add/remove/reorder arguments this way,
because named arguments can be used and the compiler actually
checks that all arguments are passed to GradleKotlinCompilerWorkArguments's
constructor.
2018-11-14 11:41:43 +03:00
Alexey Tsvetkov 349386960e Minor: remove unnecessary return 2018-11-14 11:41:43 +03:00
Alexey Tsvetkov 4fc05f74c3 Wrap null values into serializable optional
Otherwise worker executor fails with NPE
2018-11-14 11:41:43 +03:00
Alexey Tsvetkov a41c2d759a Avoid catching exceptions from workers in GradleKotlinCompilerRunner
Exceptions were catched in `KotlinCompilerRunner.runCompiler`.
When the method from superclass is not used in
`GradleKotlinCompilerRunner`, the superclass does not make much sense
anymore, so I turned it into util object.
2018-11-14 11:41:43 +03:00
Alexey Tsvetkov 37dfe2b608 Use Workers API for NMPP tasks
This change enables parallel execution of compile tasks in NMPP projects
within a subproject.

    #KT-28155 In Progress
2018-11-14 11:41:43 +03:00
Alexey Tsvetkov ba5795519b Minor: move compile iteration result to daemon common
The class is used on both server and client, but it was defined in
server module.
Gradle plugin worked, because all classes are present in kotlin compiler
embeddable, but the code was red in IDE (which is correct because
Gradle plugin does not depend on daemon server module).
2018-11-14 11:41:43 +03:00
Mikhail Zarechenskiy ed2b9172da Support unsigned integers in kotlinx-metadata-jvm
#KT-25371 Fixed
2018-11-13 01:29:39 +03:00
Sergey Igushkin 308eafe0e1 (test data) Revert removal of coroutines opt-in from a test
This test checks the coroutines opt-in, so it should stay there.

Revert the change made in a64a76d5
2018-11-12 17:26:07 +03:00
Ilya Gorbunov a64a76d5fc Remove experimental coroutines opt-in from build scripts
It has no effect in Kotlin 1.3

Only enable coroutines if '-ReleaseCoroutines' is used
2018-11-09 04:00:26 +03:00
Ilya Matveev 798b4a8164 Update Kotlin/Native: 1.0.2 2018-11-08 11:06:49 +03:00
Alexander Udalov 61d3b6ee1f Restore heuristic to compute inner class names in ClassifierResolutionContext
This commit restores the heuristic removed in 9df02b2366, but only
enables it in case the class wasn't found with the name mapped initially
according to the InnerClasses attribute values. This helps to support
class files which do not have the InnerClasses attribute for all nested
referenced classes, such as those generated by Groovy.

Note that in theory it's still possible for this code to behave
incorrectly, for example a reference to a class `C` nested in a
_top-level_ class named `A$B` will not be loaded by this code correctly.
This is a lower-priority issue and it will need to be fixed later.

 #KT-27874 Fixed
2018-11-07 18:12:58 +01:00
Bradley Smith 4b8f8604f2 Change kotlinSourceSets -> allKotlinSourceSets
This ensures that transitive SourceSets are also merged and included in
the model.
2018-11-06 20:19:02 +03:00
Bradley Smith f426fda18b Remove unused inport 2018-11-06 20:19:02 +03:00
Bradley Smith 1e37785de1 Populate the SourceSets with more relevant information. 2018-11-06 20:19:02 +03:00
Bradley Smith f3482d1251 Register KotlinModelBuilder for kotlin-android plugin 2018-11-06 20:19:02 +03:00
Karen Schwane d88fd8aa6f KT-20357 Add samples for maxBy and minBy 2018-11-04 22:34:16 +03:00
Alexey Tsvetkov aae24c993d Revert usage of lazy task API
We want to be compatible with Gradle 4.0+
where the API is not available.
Use eager task creation API for now.
Lazy API support should be added later with
proper Gradle versions checks.
2018-11-03 00:59:27 +03:00
Ivan Gavrilovic c42b3b8ff8 Do not resolve configuration for scripting Gradle plugin
Avoid resolving kotlinScriptDef configurations during
configuration phase. Also, make task creation lazy.

   #KT-27160 fixed
2018-11-03 00:59:27 +03:00
Ilya Gorbunov 332b843301 kotlin-bom: Add distributionManagement and signing profile
Since kotlin-bom intentionally has no parent these settings have to be duplicated
same as in the root kotlin-project pom.

#KT-18398
2018-11-02 19:04:10 +03:00
Ilya Gorbunov 11519e40cc Add scripting dependencies to kotlin-bom
#KT-18398
2018-11-02 18:52:40 +03:00
Ilya Gorbunov 119385839a Provide bom (bill-of-materials) pom for kotlin libraries
#KT-18398 Fixed
2018-11-02 18:52:40 +03:00
Alexey Tsvetkov d68cac314a Do not fail builds during lint checks in Gradle tests
Tests fail with unrelevant checks like recommended
target SDK for play store
2018-11-01 19:35:20 +03:00
Alexey Tsvetkov f139ec72cd Convert kotlin-gradle-plugin-integration-tests build script: step 2 2018-11-01 00:59:07 +03:00
Alexey Tsvetkov 45ac6ba251 Convert kotlin-gradle-plugin-integration-tests build script: step 1 2018-11-01 00:59:07 +03:00
Alexey Tsvetkov bc65e6e66a Convert kotlin-gradle-plugin-model build script: step 2 2018-11-01 00:59:07 +03:00
Alexey Tsvetkov 9c7bd610c5 Convert kotlin-gradle-plugin-model build script: step 1 2018-11-01 00:59:07 +03:00
Alexey Tsvetkov e0e3d90774 Convert kotlin-gradle-plugin-api build script: step 2 2018-11-01 00:59:07 +03:00
Alexey Tsvetkov 0ab326e4ba Convert kotlin-gradle-plugin-api build script: step 1 2018-11-01 00:59:07 +03:00
Alexey Tsvetkov 5a3a2df272 Convert kotlin-gradle-plugin build script: step 2 2018-11-01 00:59:07 +03:00
Alexey Tsvetkov 911f54ed0b Convert kotlin-gradle-plugin build script: step 1 2018-11-01 00:59:07 +03:00
Shagen Ogandzhanian d78115757f Update antlr dependency from 4.5.3 to 4.7.1 switch to gradle in idl2k
This is a squashed and rebased commit of https://github.com/JetBrains/kotlin/pull/1945

- add idl2k to default gradle build lifecycle
- removemaven build completely
- invert maven's `idl2k.deploy.skip` to `idl2k.deply` in gradle
(false by default)
- antlr upgrade from 4.5.3 to 4.7.1 - I'd have to slightly modify WebIDL.g4 definition though -
and updated copyright accordingly - my updates were based on
https://raw.githubusercontent.com/antlr/grammars-v4/master/webidl/WebIDL.g4
- I've checked all generated output to make sure it is identical to
what we hade before dependency update.
- Package idl2k according to our souce code guidelines
2018-10-31 16:23:00 +01:00
Sergey Igushkin f995afd50d Fix runtime elements configuration resolved for compile classpath
The existing disambiguation rule for the Usage attribute lead to
runtime variants being resolved even for compile-scoped input
configurations, because Gradle runs disambiguation rules even if the
consumer value is present in the candidates list.

For example, an `app` project's `jvmCompileClasspath` configuration
would get its `project('lib')` dependency resolved to the
`jvmLibRuntimeElements` instead of `jvmLibApiElements`.

Fix this by:
1) running the part of the disambiguation rule only with Gradle 4.1+, so
  as to use the consumer value for proper disambiguation;
2) choosing the JAVA_API usage when the consumer is JAVA_API or
  KOTLIN_API, and choosing one of the JAVA_RUNTIME usages if the
  consumer is either KOTLIN_RUNTIME, one of the JAVA_RUNTIME usages, or
  does not specify its usage.

Issue #KT-27849 Fixed
2018-10-30 17:29:54 +03:00
Alexey Tsvetkov 49d5c8ae37 Run model tests with Gradle 4.0+ 2018-10-29 21:48:01 +03:00
Alexey Tsvetkov 00f60553dc Try 0 and 1 starting lines in Kapt location mapping tests 2018-10-29 21:48:01 +03:00
Alexey Tsvetkov 22064fd005 Choose Gradle version for Gradle model tests as for other tests 2018-10-29 21:48:01 +03:00
Alexey Tsvetkov c4268a4238 Update Android Gradle plugin version in tests 2018-10-29 16:09:57 +03:00
Ilya Matveev a03707cf87 Update Kotlin/Native: 1.0.1 2018-10-29 18:45:51 +07:00
Ilya Matveev e0a83b6159 Use KOTLIN_API usage in cinterop dependencies.
Issue #KT-27803 fixed.
2018-10-29 18:45:51 +07:00
Mikhail Glukhikh cb92009862 Fix maven build + ~50 compiler tests broken by UNUSED_PARAMETER in main 2018-10-26 19:51:20 +03:00
Ilya Gorbunov c833272392 stdlib-gen, minor: rename property 2018-10-26 16:27:43 +03:00
Ilya Gorbunov 138ab13364 Remove experimental coroutines usages from stdlib generator 2018-10-26 16:27:42 +03:00
Alexander Udalov f4c77ec66f Minor, rework groovyTraitsWithFields integration test
Declaring Groovy and Kotlin classes in the same project is not necessary
for this test, split them to two projects instead to avoid the hack with
modifying task dependencies manually
2018-10-26 14:40:13 +02:00
Alexander Udalov 9df02b2366 Support Groovy $Trait$FieldHelper classes in new class file reader
Preface: for Groovy traits with fields, the Groovy compiler generates
synthetic "$Trait$FieldHelper" classes which posed several problems to
our class file reader, caused by the fact that the contents of the
InnerClasses attribute broke some assumptions about how names on the JVM
are formed and used.

For a trait named `A`, the Groovy compiler will additionally generate a
synthetic class file `A$Trait$FieldHelper` with the following in the
InnerClasses attribute:

InnerClasses:
     public static #15= #2 of #14; //FieldHelper=class A$Trait$FieldHelper of class A

i.e. the simple name of the class is `FieldHelper`, the name of its
outer class is `A`, but the full internal name is `A$Trait$FieldHelper`,
which is surprising considering that the names are usually obtained by
separating the outer and inner names via the dollar sign.

Another detail is that in some usages of this synthetic class, the
InnerClasses attribute was missing at all. For example, if an empty
class `B` extends `A`, then there's no InnerClasses attribute in `B`'s
class file, which is surprising because we might decode the same name
differently depending on the class file we encounter it in.

In this change, we attempt to treat these synthetic classes as top-level
by refusing to read "invalid" InnerClasses attribute values (they are
not technically invalid because they still conform to JVMS), fixing the
problem of "unresolved supertypes" error which occurred when these
classes were used as supertypes in a class file in a dependency.

1) In ClassifierResolutionContext.mapInternalNameToClassId, do not use
   the ad-hoc logic (copy-pasted from intellij-core) to determine class
   id heuristically from the internal name. For $Trait$FieldHelper
   classes this logic attempted to replace all dollar signs with dots,
   which was semantically incorrect: dollars there were used as
   synthetic characters, not as a separator between outer and inner
   classes.
2) In isNotTopLevelClass (Other.kt), only consider "valid" InnerClasses
   attribute values, where the full name of the class is obtained by
   separating the outer name and the inner name with a dollar character.
   This way, we'll be able to treat class files with invalid attribute
   values as top-level and avoid breaking any other assumptions in the
   class file loader.
3) In BinaryJavaClass.visitInnerClass, record all valid InnerClasses
   attribute values present in the class file, not just those related to
   the class in question itself. This is needed now because previously,
   the removed heuristics (see p.1) transformed mentioned inner class
   names to class ids correctly >99% of the time. Now that the
   heuristics are gone, we'll use the information present in the class
   file to map names correctly and predictably. According to JVMS, this
   attribute should contain information about all inner classes
   mentioned in the class file, and this is true at least for class
   files produced by javac.

 #KT-18592 Fixed
2018-10-25 22:15:22 +02:00
Yan Zhulanow 2cb2141e07 Kapt: Do not treat initially empty configurations specially (KT-27404) 2018-10-24 20:12:39 +03:00
Yan Zhulanow 6e6a036f98 Kapt: Improve check for the current JDK version (KT-27188) 2018-10-24 20:12:38 +03:00
Alexey Tsvetkov bf39e1d146 Make google maven repo take precedence over jcenter in Gradle tests
'com.android.tools.build:aapt2-proto:0.3.1' stopped resolving from jcenter
2018-10-24 15:54:04 +03:00
Sergey Igushkin 5ee6a6037d (minor) Move the unused source sets check to the taskGraph.whenReady
This is a workaround for Android compilations being configured in
an afterEvaluate callback.

Issue #KT-26963 Fixed
2018-10-23 16:15:05 +03:00