Commit Graph

66890 Commits

Author SHA1 Message Date
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