Commit Graph

29642 Commits

Author SHA1 Message Date
Victor Petukhov 73dec25eb1 NI: intersect DFI types before capturing
^KT-37887 Fixed
2020-05-14 19:54:59 +03:00
Roman Artemev 52a93f189e [JS SCRIPT] Fix IrBuiltIns to make it stable if symbols already defined 2020-05-14 17:58:32 +03:00
Roman Artemev 8f71bdbf01 [JS SCRIPT] Fix IrScript visit order 2020-05-14 17:58:32 +03:00
Roman Artemev f792c5c936 [JS SCRIPT] Fix default arguments in script 2020-05-14 17:58:32 +03:00
Roman Artemev 996137576e [JS SCRIPT] Fix script lowering 2020-05-14 17:58:32 +03:00
Roman Artemev e573efb3a5 [JS SCRIPT] Handle IrScript in mangler correctly 2020-05-14 17:58:32 +03:00
Alexander Udalov 82551e91a4 Add KClass.isFun modifier to reflection
#KT-38881 Fixed
2020-05-14 14:05:51 +02:00
Anton Bannykh 86b5c63891 JS IR: fix origin for callable references with bound reciever
In case of IrFunctionReference with type SuspendFunction (no K!) there
was a misalignment between the base class (Any) and the
origin (LAMBDA..). As a result the SuspendFunctionLowering was
getting confused and produced hanging code.
2020-05-14 14:33:12 +03:00
Anton Bannykh bdca4b45bd JS: inliner supports extra argument caused by suspend conversions 2020-05-14 14:33:12 +03:00
Alexander Udalov ed8efafa9b Generate InnerClasses attribute for nested classes in annotation arguments
Otherwise we incorrectly try to load a nested class "A.B" as if it is a
top level class named "A$B" and fail.

 #KT-38853 Fixed
2020-05-14 13:20:13 +02:00
Mikhail Glukhikh cdac6157a9 [FIR2IR] Force loading Java SAM from external classes 2020-05-14 14:07:40 +03:00
Jinseong Jeon 89a6ecd77d [FIR] Update argument mapping while transforming integer operator. 2020-05-14 13:42:07 +03:00
Juan Chen 858731cac8 [FIR] add support for varargs in delegated constructor calls
Also add support for spread operators as named arguments.
2020-05-14 13:42:07 +03:00
Mikhail Glukhikh 3652ac9354 [FIR2IR] Mute 2 failing BB tests
Looks like both tests are failing because now only classes from
'kotlin.*' are considered "external" and generated with declarations.
2020-05-14 13:40:37 +03:00
Mikhail Glukhikh d8398bb0ab [FIR2IR] Handle external declaration parents more accurately
This allows us to set declaration parent immediately,
not at some moment after its creation
2020-05-14 13:40:37 +03:00
Mikhail Glukhikh 6beee004a3 [FIR2IR] Take callables from scope in external declaration generator
This commit fixes 2 more unmuted BB tests
2020-05-14 13:40:37 +03:00
Mikhail Glukhikh 12c0cbee94 [FIR2IR] Don't enter same class twice while override searching
This commit fixes 21 unmuted BB tests after previous one
2020-05-14 13:40:37 +03:00
Mikhail Glukhikh 00fcb6cb02 [FIR2IR] Minor refactoring of populateOverriddenSymbols 2020-05-14 13:40:36 +03:00
Mikhail Glukhikh e7e80be34a [FIR2IR] Populate overridden symbols even for !isOverride
Before this commit we considered !isOverride as a sign that
function / field / accessor has no overridden symbols.
However, it's false for deserialized, because isOverride
is always false there.

This commit fixes 68 BB tests but breaks 25 BB tests (not yet muted)
2020-05-14 13:40:36 +03:00
Jinseong Jeon bcf277d885 Add comments for generators about data/inline class (in psi2ir and fir2ir) and annotations (fir2ir). 2020-05-14 09:41:11 +03:00
Jinseong Jeon e844c59e7e FIR2IR: filter correct use-site target for value parameter annotations. 2020-05-14 09:41:11 +03:00
Jinseong Jeon 76e679a6ca FIR2IR: refactor annotation generations. 2020-05-14 09:41:11 +03:00
Jinseong Jeon 931ba4892a FIR2IR: split property annotations according to use-site targets. 2020-05-14 09:41:11 +03:00
Steven Schäfer 9bc8fdcb3c JVM IR: Validate corresponding properties 2020-05-13 20:57:52 +02:00
Steven Schäfer 13f15a702b JVM IR: Remove corresponding property hacks from MethodSignatureMapper 2020-05-13 20:57:52 +02:00
Steven Schäfer 497df0922a JVM IR: Fix corresponding properties in inline classes 2020-05-13 20:57:52 +02:00
Steven Schäfer c41e71b1c5 JVM IR: Merge PropertiesToFieldsLowering and JvmPropertiesLowering
This is necessary in order to fix the corresponding property symbols,
since PropertiesToFieldsLowering broke them intentionally.
2020-05-13 20:57:52 +02:00
Steven Schäfer d5c2707c2c JVM IR: Fix corresponding properties in JvmStaticAnnotationLowering 2020-05-13 20:57:52 +02:00
Steven Schäfer 24b28f80cb JVM IR: Fix corresponding properties in BridgeLowering 2020-05-13 20:57:52 +02:00
Steven Schäfer 4a2b5df9fa JVM IR: Fix corresponding properties for default impls redirections 2020-05-13 20:57:52 +02:00
Steven Schäfer 1fafbb8d72 Minor: Remove duplicate IrSetField builder 2020-05-13 20:57:52 +02:00
simon.ogorodnik 86683e94fc [FIR] Fix cfg crash with multiple postponed arguments 2020-05-13 19:20:02 +03:00
Anton Bannykh 5b63dad1c3 JS IR: fix incremental compilation for stdlib 2020-05-13 19:15:18 +03:00
Anton Bannykh b5f31a3d76 JS IR: make CodeCleaner more conservative
The CodeCleaner treated all expressions with type `Nothing` as
non-terminating. This is not true for cases when return type is generic,
e.g:

```
fun <T> foo(): T = Any() as T

foo<Nothing>() // type: Nothing
```

This change makes the CodeCleaner more conservative, so that it doesn't
treat to such functions as non-terminating. This eliminates the need
to change call types from Nothing to Unit in
KotlinNothingValueExceptionLowering.
2020-05-13 16:30:47 +03:00
pyos 8809abdbac JVM_IR: do not handle Nothing in suspend tail call bridges
Else they wouldn't be tail call, would they?
2020-05-13 05:54:37 -07:00
Ilmir Usmanov 0acaedef92 Fix attribute clash between STATIC_INLINE_CLASS_REPLACEMENT and original
Attributes are used to name continuation classes and are generated
before inline classes processing. During the processing, for override
functions in inlined classes, the compiler generates
STATIC_INLINE_CLASS_REPLACEMENT function with body of the override.
The override's body is replaced with delegating call to
STATIC_INLINE_CLASS_REPLACEMENT. However, since we need to keep the name
of the continuation class, we copy attributes from the override to
STATIC_INLINE_CLASS_REPLACEMENT. This leads to attribute clash during
AddContinuationLowering.
So, to fix the issue, do not use the attribute of
STATIC_INLINE_CLASS_REPLACEMENT in original->suspend map.
As an optimization, do not generate continuation for the override
function.
2020-05-13 14:53:37 +02:00
Alexander Udalov d2a691d157 Minor, ignore failing box tests for light analysis 2020-05-13 13:54:51 +02:00
Mark Punzalan 99856afc31 ForLoopsLowering: Use @file:OptIn(ExperimentalUnsignedTypes::class)
instead of annotating declarations.
2020-05-13 13:54:35 +02:00
Mark Punzalan b5b361bb09 Add tests for nullable loop variable in for-loop over unsigned progression. 2020-05-13 13:54:35 +02:00
Mark Punzalan b85da8411d ForLoopsLowering: Convert ProgressionType from enum to sealed class and
move more logic into the class.

This refactoring simplifies their usage with fewer `when` switches and
passing around of Symbols.
2020-05-13 13:54:35 +02:00
Mark Punzalan 177967258b ForLoopsLowering: Eliminate construction/boxing/unboxing of UInt/ULong.
This needs further cleanup to encapsulate more logic into ProgressionType.
2020-05-13 13:54:35 +02:00
Mark Punzalan e1120f49d8 ForLoopsLowering: Reduce unnecessary temporary variables. 2020-05-13 13:54:35 +02:00
Mark Punzalan eaddd02e9b Mute/unmute failing/passing unsigned progression tests for FIR. 2020-05-13 13:54:35 +02:00
Mark Punzalan f249e7f5e9 ForLoopsLowering: Add additional bytecode text tests for optimization of
unsigned progressions.
2020-05-13 13:54:35 +02:00
Mark Punzalan 0e6af517d7 Generate tests for unsigned progressions using
GenerateSteppedRangesCodegenTestData.
2020-05-13 13:54:35 +02:00
Mark Punzalan 03ef3724f4 ForLoopsLowering: Add support for unsigned progressions. 2020-05-13 13:54:35 +02:00
Jinseong Jeon 6034fcdc46 FIR2IR: apply SAM conversion to arguments if needed 2020-05-13 11:28:48 +03:00
Alexander Udalov 0ce16b9d8c Support non-reified type parameters in typeOf in JVM and JVM_IR
#KT-30279 Fixed
2020-05-13 10:04:28 +02:00
Alexander Udalov 6fb40878c4 Minor, do not report "no reflection" error on KTypeParameter
Since an implementation of KTypeParameter for stdlib is coming, an
instance of which can be obtained through `typeOf`.
2020-05-13 10:04:27 +02:00
Alexander Udalov 37cf7316bc Do not calculate maxStack size manually when generating typeOf 2020-05-13 10:04:27 +02:00