Commit Graph

84790 Commits

Author SHA1 Message Date
Ivan Kylchik e5ca646de4 Move object creation logic into constructor interpretation
This newly created object is not used in arguments interpretation
so there is no need to create it in InstructionsUnfolder. Moreover
this object can interfere with other objects in memory, for example,
when creating outer object from inner.
2021-08-06 13:33:14 +03:00
Ivan Kylchik 1af1a3c84e Support interpretation of Throwable constructor
For now every subclass of Throwable will be represented as
ExceptionState. This way it is easier to store stack trace and handle
`cause` property in exceptions.
2021-08-06 13:33:13 +03:00
Ivan Kylchik c8cd000563 Simplify work with fake override methods in interpreter 2021-08-06 13:33:12 +03:00
Ivan Kylchik 8972fc5158 Interpret properties and init blocks in order of appearance 2021-08-06 13:33:12 +03:00
Ivan Kylchik 78475a5d9c Support interpretation of toArray for collections 2021-08-06 13:33:11 +03:00
Ivan Kylchik b10fdb919f Support cast to array with reified argument in interpreter 2021-08-06 13:33:10 +03:00
Ivan Kylchik cc56acc2c2 Add configuration into IrInterpreterEnvironment
This configuration will contains all necessary setting for interpreter
and will be replenished over time
2021-08-06 13:33:10 +03:00
Ivan Kylchik b150cc9537 Implement better support for default args in interpreter
Now supported default args:
1. from super class or interface;
2. with field access, declared in interface;
3. with field access, declared in outer class.
2021-08-06 13:33:09 +03:00
Ivan Kylchik 42ea17b151 Support interpretation of dataClassArrayMemberToString method 2021-08-06 13:33:09 +03:00
Ivan Kylchik 15808cb376 Lower priority of captured variables in interpreter 2021-08-06 13:33:08 +03:00
Ivan Kylchik 4f3d47eed3 Remove unused equals and hashCode methods from Primitive class
They were used only when primitive objects were put in the collection
as they were, in Primitive state wrapper
2021-08-06 13:33:07 +03:00
Ivan Kylchik 0716c557fe Allow inner class to has outer super class in interpreter 2021-08-06 13:33:07 +03:00
Ivan Kylchik 574c607f1c Support proper subtype check in interpreter for KFunction 2021-08-06 13:33:06 +03:00
Ivan Kylchik 9638af042d Support proper behavior in interpreter for cast of null value 2021-08-06 13:33:05 +03:00
Ivan Kylchik c2fc017d96 Move doubleArrayOf test file to proper place in interpreter test data 2021-08-06 13:33:04 +03:00
Ivan Kylchik b44fd1a6fe Simplify logic of interpreting invoke method for lambdas
For now will be created separate invoke method that will contains
a call to lambda. This way it is clearer and more intuitive
2021-08-06 13:33:04 +03:00
Ivan Kylchik 06a8156376 Change logic of returning object from constructor in interpreter
For now there is no need to place object on stack before evaluation.
The result will be taken from memory and all unnecessary values on
stack will be removed
2021-08-06 13:33:02 +03:00
Ivan Kylchik 3326cbd9c0 Support passing property as argument to array constructor in interpreter 2021-08-06 13:33:02 +03:00
Ivan Kylchik 59fefb6214 Fix property rendering in interpreter 2021-08-06 13:33:01 +03:00
Ivan Kylchik af67e950c4 Replace all assert calls in interpreter with internal verify
This swap of methods allow us to handle all asserted errors as
critical and not to process them inside interpreter
2021-08-06 13:33:00 +03:00
Ivan Kylchik 23392b73a9 Simplify the interpretation logic of methods defined in super Wrapper 2021-08-06 13:32:58 +03:00
Ivan Kylchik cf20e64c61 Support basic interpretation of IrGetClass 2021-08-06 13:32:57 +03:00
Ivan Kylchik 6fe8dd1254 Add ir interpreter tests for ir built from psi 2021-08-06 13:32:57 +03:00
Dmitriy Novozhilov a9882a86c0 [FIR] Consider extension receiver type in conflicting members checker 2021-08-06 13:31:20 +03:00
Victor Petukhov cd09c8ba51 Report CANNOT_INFER_PARAMETER_TYPE on any error value parameters of a lambda
^KT-48058 Fixed
2021-08-06 13:27:57 +03:00
Victor Petukhov 1966915e92 Create DONT_CARE type only for dependent lambdas (i.e. to be resolved through the type inference later)
^KT-47493 Fixed
2021-08-06 13:27:56 +03:00
sebastian.sellmair dbdc6176f0 [Gradle] GradleIT: kotlinToolingMetadataAndroid: Add java 8 support
^KT-48019
2021-08-06 09:25:01 +00:00
Andrey Zinovyev 6dd4164f1e [FIR][CFG] Link finally exit to jump target
Instead of try exit node. So try exit is used only for real exits from
try expressions.
2021-08-06 11:49:35 +03:00
Andrey Zinovyev 32426da625 [FIR][CFG] Support multiple levels of finally blocks in jumps
Jump inside try expressions now goes through all finally blocks between
it and the target
2021-08-06 11:49:35 +03:00
Andrey Zinovyev 06b23d5937 [FIR] Improve the control flow graph around try expressions
1. throw goes to catches instead of main exist block
2. return goes via finally (single level only supported atm)
3. collect non-direct return to retrieve all return expressions easier
2021-08-06 11:49:34 +03:00
Yahor Berdnikau 7b6dddf012 Replace usages of IncrementalTaskInputs with InputChanges.
Gradle IncrementalTaskInputs was long time ago deprecated and not
so flexible as a new proposed way - InputChanges.

^KT-47867 Fixed
2021-08-06 08:44:56 +00:00
Aleksei.Cherepanov c3344549a8 Avoid overwriting counters file of Lookups storage if it hasn't changed 2021-08-06 02:27:18 +03:00
Aleksei.Cherepanov cb92413cd8 Change hashcode evaluation for portable caches
Use canonical path and strictly evaluation of hash instead of using insensitive hashcode

#KTIJ-17296 Fixed
2021-08-06 02:27:17 +03:00
Aleksei.Cherepanov f16b1c2d69 Add flag to cache storage to reduce number of disk accesses 2021-08-06 02:27:15 +03:00
Sergey Igushkin 395b2119a1 Fixup for the fix of KT-47506 interfering with CInterop changes
As the `*Default` configurations are gone, each K/N target now has two
consumable configuration, the `*ApiElements` and the
`*CInteropApiElements`. They have diverging sets of attributes (both
more concrete than `*Default` had).

To make their attribute sets non-diverging, we set the
local-to-project=public on the `*CInteropApiElements` in order to match
the same attribute on the `*ApiElements` configuration

Related to the original fix of KT-47506
2021-08-05 17:53:37 +00:00
Mikhail Glukhikh 11f951e6d1 RawFirBuilder: don't convert scripts to prevent exceptions 2021-08-05 19:24:06 +03:00
Mikhail Glukhikh 8d27f102e7 Fix typo: addCompetedCall -> addCompletedCall 2021-08-05 19:24:06 +03:00
Mikhail Glukhikh 469b3b9d02 Raw FIR: re-use OperatorNameConventions for delegate-related names 2021-08-05 19:24:05 +03:00
Mikhail Glukhikh 22ccb7a943 FIR: discriminate generics during callable reference resolve 2021-08-05 19:24:04 +03:00
Mikhail Glukhikh e924ee3150 FIR: add test with minOf ambiguity 2021-08-05 19:24:02 +03:00
sebastian.sellmair ee0b64cb29 [Gradle] BuildKotlinToolingMetadataTask: Ensure clean output directory
This is done to prevent unwanted files from also being located
in the output directory. If the task is executed it is expected
that the output directory only contains this one file.

This is necessary, since *everything* located in the output directory
will potentially be bundled into release apks.

^KT-48019
2021-08-05 16:00:08 +00:00
sebastian.sellmair e897c60ef1 [Gradle] [Android] Only bundle kotlin tooling metadata for non debuggable variants
^KT-48019
2021-08-05 16:00:08 +00:00
sebastian.sellmair 79565da904 [Gradle] [Android] Implement 'test KotlinToolingMetadataArtifact is bundled into apk'
Covers ^KT-48019
2021-08-05 16:00:08 +00:00
sebastian.sellmair 82a70a205b [Gradle] [Android] Include kotlin-tooling-metadata.json in apk artifact
^KT-48019 Verification Pending
2021-08-05 16:00:07 +00:00
Svyatoslav Scherbina a22ef02e47 Native: disable compiler caches for experimental memory model
Experimental MM doesn't support compiler caches yet.
2021-08-05 15:22:00 +00:00
Svyatoslav Scherbina 4abbac1ff1 Native: improve code that handles unsupported compiler caches 2021-08-05 15:22:00 +00:00
Dmitry Petrov 02d8c7527e JVM_IR more aggressive if-null expressions fusion
Assume that changing a return type from T to T?
is not a binary-compatible change.
2021-08-05 17:51:49 +03:00
Dmitriy Novozhilov 6f0bf766f2 [Test] Add single service for checking that codegen test is ingored
This approach is better than manual check for `IGNORE_BACKEND` directive
  because it also tracks `IGNORE_BACKEND_FIR` directive and reduces
  duplicating code
2021-08-05 16:59:00 +03:00
Dmitriy Novozhilov c8386ad1c7 [Test] Properly handle output from separate jvm instance in box tests 2021-08-05 16:58:59 +03:00
Dmitriy Novozhilov 13b5f87f3a [Build] Add gradle properties for different sets of modularized testdata 2021-08-05 15:22:42 +03:00