Commit Graph

63245 Commits

Author SHA1 Message Date
Victor Turansky 4cd4dfee25 KT-37587 Karma. Support dynamically created webpack configs 2020-03-24 15:52:52 +03:00
Ilya Goncharov 7736e5f4a7 [Gradle, JS] Run tasks for legacy target 2020-03-24 15:42:07 +03:00
Roman Golyshev 85bfbaa8a8 Check if returned typeParameters are null
- See EA-141456, EA-212070
2020-03-24 15:23:34 +03:00
Ilya Matveev 4171dd511f Gradle, native: Fix generating platform libs for Windows 2020-03-24 18:54:12 +07:00
Ilya Matveev 6c146f6448 Update K/N version: 1.4-M2-dev-14898 2020-03-24 18:54:12 +07:00
Ilya Matveev 38b5414f30 Gradle, native: Actualize stacktrace format in tests 2020-03-24 18:54:12 +07:00
Ilya Matveev a51230d307 Gradle, native: Support reinstalling K/N compiler
Sometimes a user may need to invalidate all precompiled
caches and regenerate all platform libraries. For example
this may be necessary after updating Xcode since platform
libraries are generated on basis of Xcode frameworks.

This patch provides a simple setting allowing a user
to manually reinstall a K/N compiler.
2020-03-24 18:54:11 +07:00
Ilya Matveev 27f5c577c9 Gradle, native: Generate platform libraries at the user side
Since 1.4, a regular K/N distribution will not contain prebuilt
platform libraries, so the libraries must be generated at the
user side.

This patch adds support for such generation to the MPP Gradle
plugin. The generation itself is performed by separate utility
provided by the K/N compiler distribution. The plugin checks
existence of platform libraries for required targets and starts
this utility if some some of these libraries are missing. Building
caches for platform libraries is also performed at this step.

The patch also adds some project properties allowing a user to
workaround potential problems. User will be able to:
  - Use a special distribution with prebuilt platform libraries.
  - Force building platform libraries in the good old sourcecode mode
    in case of some issues with the new metadata mode.

Kotlin/Native counterpart: https://github.com/JetBrains/kotlin-native/pull/3829.

Issue #KT-32931 Fixed
2020-03-24 18:54:11 +07:00
Mikhail Bogdanov 64a4d09bb3 Add basic synchronization workaround for scratch 2020-03-24 10:58:58 +01:00
Pavel Kirpichenkov dc18c62dbc [NI] Filter out type variable from its dependencies
Don't take into account complex variable dependency on itself when determining fixation status.
^KT-37621 Fixed
2020-03-24 12:49:18 +03:00
Dmitry Gridin 7f6124254f Remove redundant plugin-common.xml.191 2020-03-24 09:35:12 +00:00
Dmitry Gridin 32dba0afa2 Move implementation of runForWholeFile field to xml 2020-03-24 09:35:11 +00:00
Dmitry Gridin f92936ae12 AbstractKotlinInspection: fix suppressor
#KT-37576 Fixed
2020-03-24 09:35:10 +00:00
Dmitry Gridin eaa21f86c4 QuickFixTest: all inspections should be initialized from EP 2020-03-24 09:35:10 +00:00
Dmitry Gridin 84c9929935 i18n: NativeDefinitions: remove redundant bundle
#KT-37483
2020-03-24 16:18:05 +07:00
Mikhail Glukhikh 03143bc788 [FIR2IR] Implement mapping of FIR & IR built-in class members 2020-03-24 12:15:18 +03:00
Dmitry Petrov afacb4b4b2 KT-37604 Use proper type when generating constructor call 2020-03-24 11:31:47 +03:00
Victor Turansky 95857c5af4 KT-34468 Yarn. Add entry registry 2020-03-24 11:28:02 +03:00
Victor Turansky 35e3691d6c KT-34468 Yarn. Lock file check at the beginning 2020-03-24 11:28:02 +03:00
Victor Turansky 8cd23dfc9a KT-34468 Yarn. Remove redundant collection creation 2020-03-24 11:28:02 +03:00
Victor Turansky 21cd5086ed KT-34468 Yarn. Named parameters for NpmDependency 2020-03-24 11:28:02 +03:00
Victor Turansky 6931b37a79 KT-34468 Yarn. Dependency search key calculated once 2020-03-24 11:28:02 +03:00
Victor Turansky 0d1bf66c2a KT-34468 Yarn. Star version support fix 2020-03-24 11:28:02 +03:00
Victor Turansky d494881cb9 KT-34468 Yarn. Dependency check at the beginning 2020-03-24 11:28:02 +03:00
Victor Turansky c2b3dd8b33 KT-34468 Yarn. Support dependency GitHub version 2020-03-24 11:28:02 +03:00
Dmitry Gridin afb8ff1dd5 i18n: NativeDefinitions: add getter to property
#KT-37483
2020-03-24 15:25:53 +07:00
Mikhail Zarechenskiy ec4d9d2f1f [NI] Prefer between two complex variables one with proper lower bounds
This reverts commit d4d35bb766.
2020-03-24 11:13:55 +03:00
Mikhail Glukhikh a4c7619c89 [FIR2IR] Introduce & use FirBuiltInsPackageFragment
Without this commit, JVM name mapping logic in BE does not work for FIR,
because FIR cannot use old BuiltInsPackageFragmentImpl descriptor.
In this commit we add our own implementation thus fixing
a pack of FIR black box tests.
2020-03-24 10:37:53 +03:00
Dmitriy Dolovov 01558f48ae KLIB: Clean-up AbstractKlibLibraryInfo API 2020-03-24 13:37:51 +07:00
Dmitriy Dolovov c9245ef497 IDE: Port JS to use the same KLIB utilities as Native & Common 2020-03-24 13:37:38 +07:00
Dmitriy Dolovov e81479e30b KLIB: Avoid check for KLIBs w/o components for other platforms than Native 2020-03-24 13:37:26 +07:00
Sergey Igushkin ad1a1ac49a Fix failures when a common source set compiled to nothing (KT-36674)
This could happen:
* when a common source set had no sources
* when the compile task of a common source set was disabled

In those cases, there were two subsequent failures:
* the metadata JAR could not interpret the missing klib file as ZIP
* the consumer could not read the empty klib in its dependencies

Issue #KT-36674 Fixed
2020-03-24 01:48:34 +03:00
Sergey Igushkin 066d413fb8 Add a test for host-specific metadata publishing and consumption 2020-03-24 01:48:34 +03:00
Sergey Igushkin 2478a57646 Rework source sets metadata consumption
* Add `ResolvedMppVariantsProvider` that provides variant names,
  platform artifacts, and metadata artifacts for MPP dependencies

* Rework SourceSetVisibilityProvider.kt so that it uses the
  `ResolvedMppVariantsProvider` to determine which source sets should be
  read from which metadata artifacts

* Rework `GranularMetadataTransformation` and its consumers so that:

  * it uses the
    visibility result and extracts the source set metadata from the
    host-specific artifacts whenever `SourceSetsVisibilityProvider`
    yields host-specific artifacts in the visibility results

  * it uses the new Gradle API for resolutionResults / artifactView

* Rework module IDs in the code base, unify the logic of their
  construction, also fix possible false-positive visibility in
  `applyToConfiguration` that used a module ID that mismatched the
  published module ID.
2020-03-24 01:48:33 +03:00
Sergey Igushkin 33ef4452b7 Always create shared-Native metadata compilations
Create the compilations even when all of the targets that the
shared-Native source set is compiled for are disabled on the current
host. In that case, disable the compilation task

Also clear the inputs of the disabled tasks so that when Gradle builds
the task graph it doesn't resolve the dependencies.

Otherwise, a Gradle build that includes the compile tasks of the
disabled targets in the task graph would fail as follows, e.g. on a
macOS host with a project containing a mingw target):

```
Could not determine the dependencies of task ':compileKotlinMingwX86'
...
Could not resolve all task dependencies for configuration
':mingwX86CompileKlibraries'
...
Could not find com.example:my-dependency-mingwx86:1.0
...
2020-03-24 01:48:33 +03:00
Sergey Igushkin 593869aa37 Fix incorrect unchecked cast in kotlin.metadata()
It was broken once the metadata target got K/N compilations along with
K2Metadata compilations.
2020-03-24 01:48:33 +03:00
Sergey Igushkin 94e3fa2132 (minor) Extract constants for XML nodes in project structure metadata 2020-03-24 01:48:33 +03:00
Sergey Igushkin f30aada84a If a source set is host-specific, publish it within the Native modules
Consider host-specific all source sets that participate in a compilation
of a target that cannot be built on some of the hosts.

Exclude those source sets from the `-metadata` artifact since the
`metadata` target must publish in the same way from any host.

Instead, add a metadata variant to those targets which use such a source
set and pack the source set's klib into a similar metadata JAR as the
artifact of those metadata variants.
2020-03-24 01:48:32 +03:00
Ilya Gorbunov d7007044c2 Add a note about the Random(...) generators being not thread-safe 2020-03-24 01:37:03 +03:00
Ilya Chernikov 44ffed9590 Approximate only types substituted with captured types
properly fixes #KT-37389
#KT-37389 fixed
#KT-37644 fixed
2020-03-23 22:58:45 +01:00
Martynas Sateika 49ae3c3db0 Supply missing 'project' argument to ReplaceWith replacement 2020-03-23 21:46:50 +03:00
Vladimir Dolzhenko a832c12550 Fetch analysis results if it is available
Relates to #KT-37467 and #KT-37515
2020-03-23 14:49:47 +00:00
Vladimir Dolzhenko 0073d260f8 Fix incremental analysis for whitespaces
incremental analysis could ignore whitespace iff old item was whitespace

#KT-37629 Fixed
2020-03-23 14:46:55 +00:00
Vladimir Dolzhenko 8935c600c1 Add checkCanceled on find usages execution path
#KT-36138 Fixed
2020-03-23 14:46:13 +00:00
Mads Ager baf1f56859 [JVM_IR] Rebase test of string concatenation codegen.
The JVM IR backend code seems saner to me. The string concatenation
lowering for JVM IR calls the stringPlus intrinsic if there are
only two arguments. That leads to a lot less code:

```
load string
load argument
box argument
call Intrinsics.stringPlus
```

instead of

```
allocate StringBuilder
call StringBuilder.<init>
load string
call StringBuilder.append
load argument
call StringBuilder.append
call StringBuilder.toString
```

This will lead to more boxing, but a lot smaller code. We still
use StringBuilders in JVM IR if there are more than two strings
being concatenated.
2020-03-23 16:42:53 +03:00
Mikhail Zarechenskiy 1cf970b110 Revert "Minor. Specify type arguments explicitly"
This reverts commit 2e9075115b.
2020-03-23 16:39:22 +03:00
Mikhail Zarechenskiy 191fb02bf6 [NI] Consider intersection type with number type as Nothing
Currently, only for "in": In<in Int & A> == In<in Nothing> == In<*>

 #KT-37302 Fixed
2020-03-23 16:39:21 +03:00
Mikhail Zarechenskiy b23aff4d0d [NI] Type-check lambda arguments against approximated type
It's required as we analyze lambda with the approximated type too
2020-03-23 16:39:20 +03:00
Mikhail Zarechenskiy 72ce4eb5ee Minor, replace fields with getters to avoid leaking "this" inspection 2020-03-23 16:39:19 +03:00
Ilya Goncharov e6d39ce785 [Gradle, JS] True on check exit code in mocha
#KT-37668 fixed
2020-03-23 15:36:52 +03:00