Victor Petukhov
4a767c597e
Don't report the same diagnsotics several times
2021-05-28 15:36:23 +03:00
Victor Petukhov
e942052eb6
Substitute stub type variables in local variable descriptors
2021-05-28 15:36:22 +03:00
Victor Petukhov
758eb8f851
Fix builder inference tests
2021-05-28 15:36:22 +03:00
Victor Petukhov
be22078bd1
Return empty NotFixedToInferredTypesSubstitutor if the current substitutor is empty
2021-05-28 15:36:22 +03:00
Victor Petukhov
d8c68aacdd
Split setting substitutor descriptor for entire resolved call into two parts: setting resulting substitutor and setting substitutor for resolved call's types
2021-05-28 15:36:22 +03:00
Victor Petukhov
fd5169186e
Update test for the builder inference and add new ones
2021-05-28 15:36:21 +03:00
Victor Petukhov
31ed1ad5d9
Use recorded into descriptor inferred callable reference input/output types, to prevent leaking raw type parameter's types of reflectionCandidateType into the back-end
2021-05-28 15:36:21 +03:00
Victor Petukhov
84bd580f92
Complete block expressions to substitute stub type variables into last callable references there
2021-05-28 15:36:21 +03:00
Victor Petukhov
472ab09511
Do stub types substitution for property initializer's type
2021-05-28 15:36:20 +03:00
Victor Petukhov
ac222fdb41
Update type for both version of expression: parenthesis and not
2021-05-28 15:36:20 +03:00
Victor Petukhov
c0ad1c9b18
Do substitution of stub types inside smartcast types to further write it into trace and prevent dealing with that in the back-end
2021-05-28 15:36:20 +03:00
Victor Petukhov
26cbb020db
Use resulting descriptor for old callable references to substitute stub type variables
2021-05-28 15:36:20 +03:00
Victor Petukhov
3ff22b67f7
Substitute type arguments of old callable references as well
2021-05-28 15:36:20 +03:00
Victor Petukhov
d5be258291
Do substitution for receivers of old (by passing though OI) callable references properly, with avoiding premature returning from the method
2021-05-28 15:36:19 +03:00
Victor Petukhov
9fd1cbd2e7
Inject stub type variables of a different builder inference call properly
2021-05-28 15:36:19 +03:00
Victor Petukhov
d486f7e188
Don't report TYPE_INFERENCE_POSTPONED_VARIABLE_IN_RECEIVER_TYPE if unrestricted build inference was enabled
2021-05-28 15:36:19 +03:00
Victor Petukhov
0c427555cf
Support definitely not null stub types and proper subtyping on them
2021-05-28 15:36:19 +03:00
Victor Petukhov
0f317b01b4
Rename language feature StableBuilderInference to UnrestrictedBuilderInference
2021-05-28 15:36:19 +03:00
Victor Petukhov
0b37b2be6a
Add addtional tests for builder inference
2021-05-28 15:36:19 +03:00
Victor Petukhov
afbda75581
Set member scope for builder inference stub types equivalent to Any
2021-05-28 15:36:18 +03:00
Victor Petukhov
6356b9d501
Put removing builder inference restrictions under the compiler flag
2021-05-28 15:36:17 +03:00
Victor Petukhov
5a11450d77
Split stub types into stub type for subtyping and for builder inference and use them in the proper way
2021-05-28 15:36:17 +03:00
Victor Petukhov
703a353d2e
Determine empty constraint system for a builder inference call by presense of not fixed type variables
2021-05-28 15:36:17 +03:00
Victor Petukhov
c5faf532f5
Allow builder inference calls with labeled lambda
...
^KT-24993 Fixed
2021-05-28 15:36:16 +03:00
Victor Petukhov
90066d7e50
Add expected type constraints in a builder inference call
2021-05-28 15:36:16 +03:00
Victor Petukhov
7da47dcde8
Add type variables into common system of a builder inference call properly
2021-05-28 15:36:15 +03:00
Victor Petukhov
ac7b459f2a
Do subtyping with stub types properly
...
1) Return stub type if we are calculating super type between two same stub types
2) Return nullable Any if those stub types are different
2021-05-28 15:36:15 +03:00
Victor Petukhov
5d0461c722
Remove restrictions for builder inference internal calls
2021-05-28 15:36:14 +03:00
Victor Petukhov
26b8e86fe1
Render stub types properly
2021-05-28 15:36:14 +03:00
Roman Artemev
8a856e440e
[KLIB] Fix linker diagnostic message
2021-05-28 13:37:30 +03:00
Roman Artemev
720edfa6aa
[IR] Fix branch offests
...
Seems logic that right bound of branch is result's right bound,
not condition's.
2021-05-28 13:23:52 +03:00
Andrey Zinovyev
ebf6ce133b
[FIR] Fix kotlin version check in annotations
...
@RequireKotlin has more than one string parameter, so you need to check
'version' only
2021-05-28 12:24:58 +03:00
Nikolay Krasko
9d1a6ebb18
Minor: narrow extracting functions scope
2021-05-27 20:13:07 +03:00
pyos
34878d17eb
JVM: be more careful when removing unused constants
...
1. if an argument of a `pop` cannot be removed, then all other potential
arguments of that `pop` can't be removed either, and the same applies
to other `pop`s that touch them;
2. the same is true for primitive conversions, but this is even trickier
to implement correctly, so I simply did the same thing as with
boxing operators: replace the conversion itself with a `pop` and keep
the argument as-is.
Somehow this actually removes *more* redundant primitive type conversions
than the old code in a couple bytecode text tests, so I've patched them
to kind of use the value, forcing the instructions to stay.
#KT-46921 Fixed
2021-05-27 12:24:22 +02:00
pyos
2f60ce21a0
JVM: remove CHECKCAST handling from PopBackwardPropagationTransformer
...
Redundant CHECKCASTs should've been removed by a previous pass.
2021-05-27 12:24:22 +02:00
pyos
535934dc28
JVM: do not remove NOPs in PopBackwardPropagationTransformer
...
There is a pass that removes NOPs and runs afterwards anyway.
2021-05-27 12:24:22 +02:00
Andrey Zinovyev
c2389a94fa
[FIR] Resolve annotations in when expressions
2021-05-27 12:41:16 +03:00
Anton Bannykh
b3bb033fe4
JS IR: fix plain module reference
2021-05-26 17:53:21 +03:00
pyos
d37ceb47be
JVM_IR: use correct dispatch receiver type in more references
...
#KT-46902 Fixed
2021-05-26 15:23:19 +02:00
Tianyu Geng
61475c48e2
FIR: fix VALUE_ARGUMENTS position strategy
2021-05-26 14:46:18 +03:00
pyos
33ddeffcfd
JVM_IR: box inline class values returned by suspend inline lambdas
...
The call site inside the inline function expects them to return a boxed
value, like FunctionN.invoke would.
#KT-46915 Fixed
2021-05-26 08:33:55 +02:00
pyos
117fad2018
JVM: refactor inline ExpressionLambda initialization
2021-05-26 08:33:55 +02:00
Mads Ager
d023966054
[JVM] Fix various undefined locals issues.
...
CoroutineTransformermethodVisitor attempts to extend the ranges
of local variables in various situations. Probably in an attempt
to give a better debugging experience. However, all of these
range extensions lead to invalid local variable tables where
something is in the local variable table where nothing is in the
corresponding slot.
The code that extends variables to the next suspension point
instead of ending them when they are no longer live has issues
with loops. When resuming and reentering the loop, the locals
table will mention a local that we did not spill and which
is therefore not restored when resuming.
The code that extends local variable table entries if there
are no suspension points between two entries doesn't work
for code such as:
```
var s: String
if (suspendHere() == "OK") {
s = "OK"
} else {
s = "FAIL"
}
```
If the local variable ranges are collapsed into one, one of
the branches will have the local defined in the local variable
table before the slot is initialized.
2021-05-26 08:33:34 +02:00
Ilya Goncharov
c62a965180
[IR] Not try Null constant in fold constant
...
^KT-46859 fixed
2021-05-25 22:29:58 +03:00
Mark Punzalan
af99ad0736
FIR checker: Report VAL_OR_VAR_ON_*_PARAMETER.
2021-05-25 20:39:34 +03:00
Tianyu Geng
71c5c9f6c5
FIR IDE: add quickfix to change function return type
2021-05-25 20:39:32 +03:00
Andrey Zinovyev
ae079d9bdd
[FIR] Move unsigned types constructor evaluation from intrinsics
2021-05-25 19:23:31 +03:00
Andrey Zinovyev
64b45e6d1b
Add comments to skipped FIR tests
2021-05-25 19:23:30 +03:00
Andrey Zinovyev
dce8bd4e62
[FIR] Support constructor call of unsigned in checker
2021-05-25 19:23:29 +03:00
Andrey Zinovyev
7f2eaab02b
[FIR] Support for constructor calls of unsigned types in constants
2021-05-25 19:23:27 +03:00