Dmitry Petrov
c77884f067
Refactor SAM type handling, replace non-approximated arguments with *
2021-06-22 21:13:56 +03:00
Victor Petukhov
4aeabb6b0f
Use upper bound aware type approximator for intersection types inside sam types in contravariant positions to build proper types in terms of subtyping
2021-06-22 21:13:55 +03:00
Dmitry Petrov
c19792e7c5
JVM_IR KT-47326 downcast field receiver on JvmField lowering
2021-06-21 19:17:54 +03:00
pyos
cf660cf24a
JVM_IR: expect unboxed return value from suspend default stubs
...
#KT-47206 Fixed
2021-06-21 18:53:31 +03:00
Dmitry Petrov
ce107d06d4
JVM_IR add test for KT-47300
2021-06-17 21:40:30 +03:00
pyos
6c1a5e1211
JVM: make inline function argument processing a bit shorter
2021-06-16 12:13:32 +02:00
Mads Ager
6b6ba77869
[JVM_IR] Trim the expression test string for null assertions.
...
^KT-47166 Fixed.
2021-06-11 21:54:04 +03:00
Dmitry Petrov
bf077b893c
PSI2IR KT-47245 handle declaration statements in control structures
2021-06-11 16:42:31 +03:00
pyos
1f9db7cf25
FE: properly clear the deferred generator stack
...
Before this commit the stack wasn't cleared for read variable case.
#KT-47168 Fixed
2021-06-11 15:56:20 +03:00
Andrey Zinovyev
ddc9c1bd1b
[FIR] Fix extension property reference resolution
...
On type with star projection
#KT-44372 Fixed
2021-06-09 15:15:28 +03:00
Dmitry Petrov
81b09ca09f
KT-46267 JVM_IR don't generate unnecessary ATHROW in lateinit var read
2021-06-07 20:02:24 +03:00
pyos
0bd8d16fe2
JVM_IR: fix Result types in continuations & remove more codegen hacks
...
#KT-47129 Fixed
2021-06-07 09:57:42 +02:00
Dmitry Petrov
7fd033adae
JVM_IR KT-47073 use type parameter upper bound for default value
2021-06-04 20:54:01 +03:00
Victor Petukhov
1e5998e0ba
Add constraints between two different stub variables instead of creating constraint error due to T1 isn't subtype of T2
...
^KT-44241 Fixed
2021-06-03 19:18:09 +03:00
Victor Petukhov
19c07e048a
Don't check suitability of a builder inference call if unrestricted builder inference is enabled
...
^KT-42139 Fixed
2021-06-03 17:28:40 +03:00
Victor Petukhov
124a14c8df
Use separate constraint position during call substitution as part of inferring postponed type variables
...
^KT-47052 Fixed
^KT-47082 Fixed
2021-06-03 12:37:17 +03:00
Ilmir Usmanov
7a2ecc58d4
Minor. Regenerate tests
2021-06-03 12:35:26 +03:00
pyos
d5d3d9f112
Add regression tests for KT-46890 and other stuff
2021-06-03 12:35:25 +03:00
Dmitry Petrov
7a43c2de79
JVM remove dead code during constant condition elimination
...
This avoids an extra call to 'analyze', which is rather costly.
Update debugger testData: Constant condition
elimination now performs DCE more consistently.
2021-06-03 00:08:27 +03:00
Mads Ager
0b5ec5535c
[JVM_IR] Add String.plus(Any) to intrinsics list.
...
This filters it out for use in SAM wrapper generation with
invoke-dynamic.
The intrinsic is not actually used for code generation so
it is added to the list of intrinsics that should have been
lowered away before codegen.
^KT-45779 Fixed
2021-06-03 00:04:47 +03:00
Mads Ager
f846dd8ea2
[JVM_IR] Avoid using special names in static inline class replacements.
...
Fixes KT-46952
2021-06-01 16:22:14 +02:00
Dmitry Petrov
9091ca7b51
JVM_IR KT-46864 handle "unused" LDC instructions properly
2021-05-31 21:12:35 +03:00
Mads Ager
886ce055f5
[JVM_IR] Do not use invoke-dynamic for targeting inline-only methods.
...
Fixes https://youtrack.jetbrains.com/issue/KT-46962
2021-05-31 18:11:50 +03:00
pyos
5c2753b5d1
JVM_IR: use substituted return type in function reference invoke
...
#KT-46982 Fixed
2021-05-31 16:01:22 +03:00
Alexander Udalov
96f0b53761
IR: get overridden directly from IrProperty when resolving fake override
...
The previous way of getting them either via getter or setter failed on
Java properties which only have a backing field. Now that IrProperty has
overriddenSymbols (after 53c1de172f ), it makes sense to use it directly
instead. Use it only in SyntheticAccessorLowering though to avoid
breaking Kotlin/Native (see KT-47019).
#KT-46900 Fixed
2021-05-28 17:24:20 +02:00
Victor Petukhov
bd7fb56a24
Fix builder inference tests
2021-05-28 15:36:23 +03:00
Victor Petukhov
fd5169186e
Update test for the builder inference and add new ones
2021-05-28 15:36:21 +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
Andrey Zinovyev
c2389a94fa
[FIR] Resolve annotations in when expressions
2021-05-27 12:41:16 +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
Ilya Goncharov
c62a965180
[IR] Not try Null constant in fold constant
...
^KT-46859 fixed
2021-05-25 22:29:58 +03:00
Dmitry Petrov
261b42f5c5
JVM_IR KT-46822 don't generate too deep StringBuilder.append trees
2021-05-21 22:28:54 +03:00
Dmitry Petrov
ba00709e4d
JVM_IR KT-46839 lower varargs for *arrayOf function references
2021-05-21 22:06:52 +03:00
Dmitry Petrov
c0fbdb1535
JVM_IR KT-46840 don't generate special function references with indy
2021-05-20 21:13:17 +03:00
Steven Schäfer
984e912f8d
JVM IR: Do not unbox Results in suspend lambda invoke methods (KT-46813)
2021-05-20 14:40:00 +02:00
pyos
f1f13b6e97
JVM_IR: do not evaluate receiver of static calls if it is pure
...
#KT-46802 Fixed
2021-05-19 16:22:59 +03:00
Ilmir Usmanov
9fe503eeb3
Minor. Add regression test
...
#KT-45685 Fixed
2021-05-19 12:45:26 +02:00
Dmitriy Novozhilov
e08df2c530
[Test] Add diagnostics and codegen tests with hmpp module structure
2021-05-19 00:52:31 +03:00
Dmitry Petrov
851980e36f
JVM_IR KT-45103 optimize direct invoke for lambdas and callable refs
2021-05-18 22:20:12 +03:00
Steven Schäfer
60bc0f4baf
IR: Lower shared variables in enum entries (KT-46605)
2021-05-18 16:55:38 +02:00
Victor Petukhov
0d6764efc5
Process raw types during erasion properly
...
^KT-46670 Fixed
^KT-46476 Fixed
2021-05-18 17:38:52 +03:00
Dmitry Petrov
3a0e3798ec
JVM_IR KT-46597 fix receiver type for inlined callable reference
...
Receiver type is used by SyntheticAccessorLowering to determine class in
which a synthetic accessor should be generated.
2021-05-17 20:12:58 +03:00
Dmitry Petrov
d1322280dd
JVM_IR KT-46578 resolve fake overrides for fields
2021-05-14 16:20:22 +03:00
Alexander Udalov
8991ce53f4
Regenerate tests
2021-05-13 19:16:09 +02:00
Steven Schäfer
b2378620c3
JVM IR: Fix handling of anonymous initializers in inline classes ( #4372 )
...
Fixes KT-46554
2021-05-13 18:40:26 +02:00
Steven Schäfer
6aaff9dfb7
JVM IR: Handle overloaded values functions in MappedEnumWhenLowering
...
Fixes KT-46579.
2021-05-13 13:24:32 +02:00
Alexander Udalov
e079fb665e
JVM IR: fix inheritance from mutable collections of Int
...
For subclasses of `AbstractMutableList<Int>` which are not inline
classes, the special bridge `remove` had a parameter of type `Int`
(mapped to JVM primitive int) before this fix. The hack in
`MethodSignatureMapper` changed this type to `Int?`, yet the body of the
special bridge still loaded it as non-nullable, which resulted in
incorrect bytecode.
It looks like a part of this hack in `BridgeLowering` was made only for
inline classes which are subclasses of mutable collections. Supposedly
it should be extended to non-inline classes, so that `remove` special
bridge would have consistent IR by the time it reaches codegen.
#KT-46516 Fixed
2021-05-12 13:58:40 +02:00
Mads Ager
2c5a4dcb98
[JVM IR] Fix constant folding to use basic types always.
...
Fixes KT-46540.
2021-05-12 11:57:20 +02:00
pyos
a37db99841
JVM_IR: remove a hack from InlineCallableReferenceToLambda
...
It breaks other things, the same problem is hit by FunctionReference,
and it's the translation layer's fault anyway.
#KT-46555 Fixed
2021-05-12 11:37:47 +03:00
Mads Ager
d397efb2bd
[JVM IR] Copy attributes for JVM_STATIC_WRAPPERS.
2021-05-11 16:26:04 +02:00