Commit Graph

85014 Commits

Author SHA1 Message Date
Ivan Kylchik 3932acf843 Fix interpretation of default varargs 2021-08-06 13:33:30 +03:00
Ivan Kylchik 0ce3dd117e Drop unnecessary check for not static initializer in interpreter
Apparently initializers can become static only in lowering
2021-08-06 13:33:30 +03:00
Ivan Kylchik 0af918be4f Use IrFactory to create IrFunction in interpreter 2021-08-06 13:33:29 +03:00
Ivan Kylchik 1002d076b3 Use StandardNames whenever it is possible in Wrapper 2021-08-06 13:33:28 +03:00
Ivan Kylchik 3cf4b8b108 Combine two caches from interpreter environment into single one 2021-08-06 13:33:28 +03:00
Ivan Kylchik 3fc5405d57 Implement simple cache for dynamically created wrapper for defaults 2021-08-06 13:33:27 +03:00
Ivan Kylchik 09c31b0900 Implement simple cache for dynamically created wrapper for lambda 2021-08-06 13:33:25 +03:00
Ivan Kylchik 6482abc602 Add CompileTimeCalculation annotation as helper to interpreter's tests 2021-08-06 13:33:25 +03:00
Ivan Kylchik 524189132b Introduce new property fqName to make it easier to take element's name 2021-08-06 13:33:24 +03:00
Ivan Kylchik fe74dd2689 Mute failing tests for IrInterpreterAfterPsi2IrTestGenerated
These tests are not passing because of the way how test system works.
To works properly interpreter needs source files. For now they are
passed as additional source files, but this method is not working
for old frontend, some conflicts appear in symbol table. Best way to
fix it is to wait until ir serialization.
2021-08-06 13:33:23 +03:00
Ivan Kylchik 295638b26e Allow to interpret non const properties of compile time object 2021-08-06 13:33:22 +03:00
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