Ilya Gorbunov
33150a0809
KT-38817 capitalize uses title case for the first char where available
...
This unifies its behavior with new capitalize overload with Locale.
Co-authored-by: Abduqodiri Qurbonzoda <abduqodiri.qurbonzoda@jetbrains.com >
2020-06-24 16:45:09 +03:00
Ilya Gorbunov
9e2f95233c
Promote capitalize/decapitalize with Locale to stable
...
Relates to KT-28933
2020-06-24 16:45:08 +03:00
Ivan Kylchik
e34246faec
Fix fir2ir text tests after introducing const evaluator
2020-06-24 16:13:02 +03:00
Ivan Kylchik
8044b47984
Create internalName extension method that returns fqName as jvm internal
2020-06-24 16:13:02 +03:00
Ivan Kylchik
ddd03373cc
Allow to interpret toString method from Any class for ONLY_BUILTINS mode
...
This change aims to support string concatenation operation with const
properties
2020-06-24 16:13:02 +03:00
Ivan Kylchik
6f4f7dd090
Remove coroutines from ir interpreter
2020-06-24 16:13:01 +03:00
Ivan Kylchik
f028d6c898
Move interpreter files to separate module
2020-06-24 16:13:01 +03:00
Ivan Kylchik
64aa0ec5c8
Add new module for ir interpreter
2020-06-24 16:13:01 +03:00
Ivan Kylchik
49124709b8
Remove all usages of descriptors from interpreter
2020-06-24 16:13:01 +03:00
Ivan Kylchik
e4f88e83fe
Get rid of compile time check in generator for ir builtins map
...
These checks are unnecessary because we use all methods from given
classes
2020-06-24 16:13:01 +03:00
Ivan Kylchik
2534b15553
Remove descriptors.jvm dependency from common backend module
...
Common backend should not depend on JVM parts
2020-06-24 16:13:00 +03:00
Ivan Kylchik
8f6a1b418d
Add method to evaluate constant expressions in ir module for fir2ir
2020-06-24 16:13:00 +03:00
Ivan Kylchik
fa221af1b1
Move IrConstTransformer.kt to evaluate package
2020-06-24 16:13:00 +03:00
Ivan Kylchik
932ce71093
Rename method checkForError to replaceIfError
...
This name better reflects the point of this method.
a.replaceIfError(b) will return b instead of a in case a is an error
expression
2020-06-24 16:13:00 +03:00
Ivan Kylchik
b71c74c6ef
Remove descriptor usages in Primitive.kt
2020-06-24 16:13:00 +03:00
Ivan Kylchik
0c6d485c9c
Rename ReturnLabel.NEXT to ReturnLabel.REGULAR
...
This name better describe that this label mean: execution was finished
regular and there is no need to make special processing
2020-06-24 16:13:00 +03:00
Ivan Kylchik
9377d274a8
Drop ExecutionResult class implementations and make it regular class
...
There was 2 implementations that I managed to combine
2020-06-24 16:12:59 +03:00
Ivan Kylchik
c386cbeb54
Move checkNullability function in State.kt file
2020-06-24 16:12:59 +03:00
Ivan Kylchik
e57de9a08f
Mark most of classes and functions from interpreter package as internal
...
Main goal is to avoid ambiguity because some names, that are used by
interpreter, can be found in other modules
2020-06-24 16:12:59 +03:00
Ivan Kylchik
27c52f54ca
Remove IGNORE_FIR from tests that are passing after constant folding
2020-06-24 16:12:59 +03:00
Ivan Kylchik
f20e878d35
Add constant folding after FIR2IR processing
2020-06-24 16:12:59 +03:00
Ivan Kylchik
f2045b857b
Add fix for interpretation const val
...
After FIR2IR processing getter doesn't has body, but has initializer.
On the other hand common IR has body for const val getter
2020-06-24 16:12:59 +03:00
Ivan Kylchik
af6ed5ca43
Change toIrConst extension function logic
...
For now this function check not value, but type. By ir type it create
right ir const
2020-06-24 16:12:59 +03:00
Ivan Kylchik
3155f56d8a
Change the way of receiving fields
...
Before that, interpreted values for fields were taken by backing
field's symbol. For now, they will be taken by property's symbol.
It was done because not all properties contain backing field. For
example, Throwable class in FIR2IR.
2020-06-24 16:12:58 +03:00
Ivan Kylchik
8644c48b28
Prevent interpretation of call expression with continue/break statement
...
Example: foo("" + continue)
2020-06-24 16:12:58 +03:00
Ivan Kylchik
d90aba60cc
Implement correct type checks and casts taking into account erased types
2020-06-24 16:12:58 +03:00
Ivan Kylchik
7a19906705
Change all usages of descriptors in interpreter to usages of ir symbols
2020-06-24 16:12:58 +03:00
Ivan Kylchik
db5046af85
Add support in interpreter for jvm static fields in primitive classes
2020-06-24 16:12:58 +03:00
Ivan Kylchik
a3c77eca08
Make interpreter maps of enum and object declarations non static
...
Instead of this just create interpreter once per module handling
2020-06-24 16:12:58 +03:00
Ivan Kylchik
ff830cc744
Make state property mutable in Variable class
...
This change allow to remove copy method from State interface
2020-06-24 16:12:57 +03:00
Ivan Kylchik
848ca70de1
Change keys in static maps of enums and objects from String to IrSymbol
2020-06-24 16:12:57 +03:00
Ivan Kylchik
224d56ec15
Allow compile time calculations inside object declaration
2020-06-24 16:12:57 +03:00
Ivan Kylchik
1c498660dc
Create ir compile time checker
...
This checker is suppose to return true if ir node can be computed
in compile time
2020-06-24 16:12:57 +03:00
Ivan Kylchik
19495e40f7
Remove unnecessary getAllTypeArguments method from Stack class
2020-06-24 16:12:57 +03:00
Ivan Kylchik
99d823da8a
Remove unnecessary getThisAsReceiver function from Utils.kt file
2020-06-24 16:12:57 +03:00
Ivan Kylchik
c6240face0
Add test for generation builtins map for interpreter
2020-06-24 16:12:57 +03:00
Ivan Kylchik
1103de4bd5
Prepare ir interpreter for receiving ir bodies in separate map
...
This change will be useful when starts work with jvm klib
2020-06-24 16:12:56 +03:00
Ivan Kylchik
9542eb36ec
Support interpretation of String's plus method and its extension version
2020-06-24 16:12:56 +03:00
Ivan Kylchik
94e36411fa
Support interpretation for inner class
2020-06-24 16:12:56 +03:00
Ivan Kylchik
0c1f2edbf2
Get rid of abstract and fake override checks in ir call interpretation
...
For now interpreter will find necessary method for interpretation in
one step instead of checking is this method abstract or fake override
2020-06-24 16:12:56 +03:00
Ivan Kylchik
80d83f8703
Change check for Wrapper method
...
For now method is wrapper if its receiver is Wrapper and
method itself isn't inline only
2020-06-24 16:12:56 +03:00
Ivan Kylchik
38822c3bf8
Implement correct interpretation of toList function
2020-06-24 16:12:56 +03:00
Ivan Kylchik
ba8147cd47
Allow lambda to be used in built in calculation
...
Primary use case to allow lambda null check
2020-06-24 16:12:55 +03:00
Ivan Kylchik
5f61f6f3a5
Simplify interpretation for java methods with names other in kotlin
2020-06-24 16:12:55 +03:00
Ivan Kylchik
2e0d4c9af1
Add correct interpretation for unsigned arrays in vararg method handler
2020-06-24 16:12:55 +03:00
Ivan Kylchik
30f2affb93
Add support for local function that are declared and called immediately
2020-06-24 16:12:55 +03:00
Ivan Kylchik
296f343cab
Change conditions for saving type arguments into stack
...
For now all type arguments are saved. This is necessary for several
reason:
1. ir type operator call need to get right type argument class
2. if class is local then information about type argument cannot be lost
2020-06-24 16:12:55 +03:00
Ivan Kylchik
a095309e10
Allow local declaration interpretation
...
By local declaration is meant local functions and local objects
2020-06-24 16:12:55 +03:00
Ivan Kylchik
2c93c46b84
Implement do while loop
2020-06-24 16:12:55 +03:00
Ivan Kylchik
1e82975a7c
Replace explicit returnLabel call to check call inside try interpreter
2020-06-24 16:12:54 +03:00