Ivan Kylchik
895c32e21c
Create separate source set for interpreter map generator
...
A separate source set is needed so that the generator no longer depends
on the generated code
2020-06-25 10:45:19 +03:00
Ilya Gorbunov
643d339496
Advance bootstrap to 1.4.20-dev-1080
2020-06-25 02:37:39 +03:00
Vladimir Ilmov
d6483ace94
(UltraLightClasses) fix for processing stubs for Deprecation.HIDDEN annotation fast-path
2020-06-25 00:39:34 +02:00
Mikhail Zarechenskiy
a5ae1b38b0
Don't skip constraints from equations with the kind equal
...
The problem was that we didn't incorporate T == Foo into K <: Inv<out T>.
It happened because of optimisation that isn't applicable here as we
already have projection in the initial type
#KT-39777 Fixed
2020-06-24 23:36:59 +03:00
Toshiaki Kameyama
ab34f8c738
Add indent before accessor for extension property (KT-33131)
...
#KT-33131 Fixed
2020-06-24 21:42:02 +02:00
Alexander Udalov
c6a481190a
JVM: optimize type mapping for primitive types
2020-06-24 19:26:59 +02:00
Alexander Udalov
64f7c3f498
IR: do not use descriptors in IrTypeSystemContext.getPrimitiveType
...
Also optimize getPrimitiveType and getPrimitiveArrayType. Convert
PrimitiveType to Kotlin to leverage the switch over string optimization,
which is not possible in Java 6 (which is used to compile
'descriptors').
2020-06-24 19:26:59 +02:00
Alexander Udalov
7013becda5
IR: remove IrBuiltInOperator, use IrFunctionImpl instead
...
It seems that this is no longer needed. This change in particular helps
to avoid megamorphic interface call on IrValueParameter.accept, which
happens a lot because there are usually many value parameters.
2020-06-24 19:26:55 +02:00
Alexander Udalov
988226a90e
IR: optimize FqNameEqualityChecker.checkViaDeclarations
2020-06-24 19:16:12 +02:00
Alexander Udalov
014d855449
IR: minor, make all overrides in IrElementTransformerVoid final
2020-06-24 19:16:11 +02:00
Alexander Udalov
3c90e25cb4
IR: optimize IrType.isNullable, do not use DFS
...
DFS is not justified for type usages. In contrast to type hierarchies,
traversing the type usage naively with recursion has linear, not
exponential, complexity.
2020-06-24 19:16:11 +02:00
pavlospt
597bc061e2
Add Kotlin Data Class, Sealed Class and Annotation file templates
...
#KT-20775 Fixed
2020-06-24 16:25:51 +02:00
Toshiaki Kameyama
2162c39ab3
Quick doc: show default parameter value
...
#KT-19069 Fixed
2020-06-24 16:20:21 +02:00
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