Ivan Kylchik
1978bfcd85
Rewrite rendering of meta info for CHECK_NOT_NULL in interpreter's test
...
This way it is possible to unify rendering of elements built by psi2ir
and fir2ir.
2021-08-06 13:33:22 +03:00
Ivan Kylchik
a9abf3b9b6
Drop redundant frames after some of exceptions in interpreter
...
Drop only last frame because it is pointing on function itself.
2021-08-06 13:33:21 +03:00
Ivan Kylchik
334d518aba
Change the way of getting name and ordinal for enum entry in interpreter
...
For now IrProperty doesn't have corresponding overridden symbol, so
it must be taken from getter.
2021-08-06 13:33:20 +03:00
Ivan Kylchik
f815f63fc5
Replace UNDEFINED_OFFSET with SYNTHETIC_OFFSET in IrTreeBuildUtils
...
This change is needed to avoid exception in `getLineNumber` method.
2021-08-06 13:33:20 +03:00
Ivan Kylchik
0c5fca31ec
Support early return from constructor interpretation
2021-08-06 13:33:19 +03:00
Ivan Kylchik
96cc74a752
Fix enum interpretation in case when primary constructor is missing
2021-08-06 13:33:18 +03:00
Ivan Kylchik
668bb4fd71
Fix equals check in interpreter in case when object is wrapped as Proxy
2021-08-06 13:33:18 +03:00
Ivan Kylchik
b9decc3b30
Support type check for deep nested arrays in interpreter
2021-08-06 13:33:17 +03:00
Ivan Kylchik
4ad88679fd
Unify logic of creation new ir tree nodes in interpreter
2021-08-06 13:33:17 +03:00
Ivan Kylchik
6ce2f8eb14
Drop unnecessary SubFrame creation from interpreter
2021-08-06 13:33:16 +03:00
Ivan Kylchik
10efbeb0c9
Add synthetic function in interpreter for default args evaluation
2021-08-06 13:33:16 +03:00
Ivan Kylchik
7852d01da6
Rewrite interpreter logic around arguments evaluation
...
For now calculated arguments will be stored on stack instead of memory.
At first this was done because of problems with default arguments, but
in the next commit this problem will be solved.
2021-08-06 13:33:15 +03:00
Ivan Kylchik
d41c6e900a
Place variables in interpreter's memory at the beginning
...
In case than in single SubFrame can appear several variables with
the same symbol, it is important to get the latest one. It is
relevant for local functions.
2021-08-06 13:33:14 +03:00
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