Denis.Zharkov
7645663d12
Deprecate (V)::a reference resolution to companion in FE 1.0
...
^KT-45315 Fixed
2021-06-25 18:41:14 +03:00
Anton Bannykh
1006eb0945
IR: fix offsets in constant folding lowering
2021-06-25 00:59:28 +03:00
Anton Bannykh
9d1a8b2d58
IR: fill type parameters in inline class static method delegation call
2021-06-25 00:59:27 +03:00
Anton Bannykh
61a08be6b4
JS IR: don't rename the local declarations
...
IR2JS handles clashing declarations anyway.
2021-06-25 00:59:25 +03:00
Anton Bannykh
a56cc89010
JS IR: fill enum constructor call type parameters
2021-06-25 00:59:24 +03:00
Anton Bannykh
eb0c13793b
JS IR: introduce 'lower per module' mode
...
This mode is closer to how IC supposed to work - reusing work
from dependencies, not re-lowering them.
2021-06-25 00:59:23 +03:00
Anton Bannykh
a4cb70af31
JS IR: gather statement origins in one place
...
Preparing to serialize lowered IR
2021-06-25 00:59:22 +03:00
Anton Bannykh
1b2f4ad071
dumpKotlinLike: add a flag to treat else as true
...
Deserialized IR always has `true` instead of `else` branch.
Dumping `else` as `true` helps comparing regular and serialized IR.
2021-06-25 00:59:20 +03:00
pyos
26e3237b8c
JVM_IR: never rename public/protected fields
...
And if that causes a platform declaration clash, that's not a problem
that can be solved without breaking the ABI anyway.
#KT-47412 Fixed
2021-06-24 17:41:06 +03:00
pyos
88320cbb05
JVM_IR: produce collection stubs in a stable order
...
This means not storing intermediate results in any HashSets.
#KT-47411 Fixed
2021-06-24 14:47:49 +03:00
Dmitry Petrov
0104b1275f
JVM_IR KT-47398 handle @EnhancedNullability String subject as in 1.0
2021-06-23 20:11:24 +03:00
pyos
537ce05bc9
JVM_IR: assume function reference adapters are tail-call
...
Meaning, they never need continuation objects. This shouldn't affect
correctness (if the assumption is valid, the continuation object
should always have been removed in the end), but the phantom
continuation sometimes left behind unused accessors (and in case of
inline function references, those accessors would refer to non-existent
functions) - see the modified test and Kotlin/kotlinx.coroutines#2769 .
2021-06-23 11:18:25 +02:00
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
Georgy Bronnikov
40872dd4ca
JVM_IR: fix parallel compilation
...
Non-static inline functions that return inline
classes need to be tracked when copying files for by-file lowering.
FIXED: KT-45680
2021-06-22 02:22:36 +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
pyos
913ac289ed
JVM_IR: extract boolean-valued DFS on IR elements into a helper
2021-06-21 16:19:24 +03:00
pyos
ee4d9a89ea
JVM_IR: read inline fun bytecode to detect unused property references
...
I.e. optimize `$$delegatedProperties` in the same way as the old
backend. This is more reliable than trying to match bytecode.
2021-06-21 16:19:23 +03:00
pyos
bd6d96114b
JVM_IR: generate shorter bytecode for reflected property references
2021-06-21 16:19:23 +03:00
Jinseong Jeon
4ec745abd7
FIR: relax simple type requirement in AbstractTypeMapper
...
The counterparts in old FE don't have such restriction, so it can
map a type that has a flexible type as a type argument to JVM type,
e.g., Stream<String..String?>
2021-06-21 13:49:40 +03:00
Anton Bannykh
48fe46303d
JS IR: declare intrinsics for lowerings in stdlib
...
- simplifies lowered IR serialization
- removes some hacks in jsOperators.kt
- intrinsics can be directly invoked in stdlib
2021-06-18 15:26:52 +03:00
Roman Artemev
5bc884ce2b
[KLIB] Fix fakeoverride builder
...
Set proper visibility in case of cross-module internal overrides.
TODO: KT-47192
2021-06-16 21:16:53 +03:00
Roman Artemev
0cb23a6e65
[KLIB] Fix serialization of loops with control statements in condition
2021-06-16 21:16:52 +03:00
Roman Artemev
e5c6a5b80d
[IR] Clean up Fake Override builder a bit
2021-06-16 21:16:51 +03:00
Roman Artemev
1831c0a14b
[IR] Support disabling of rendering IrErrorType inner KotlinType
2021-06-16 21:16:50 +03:00
Roman Artemev
2eac442705
[IR] Support stable order in IR dump
...
That mode is need to test deserialization of klibs
2021-06-16 21:16:49 +03:00
Roman Artemev
cb130181a2
[Psi2Ir] Fix overridden symbols of Delegated Properties
2021-06-16 21:16:47 +03:00
Roman Artemev
32bbc3b8ad
[KLIB] Fix SimpleTypeKey in case of type abbreviation
2021-06-16 21:16:46 +03:00
Roman Artemev
2f772c7a7c
[KLIB] Add IrStatementOrigin into IrConstructorCall message
2021-06-16 21:16:45 +03:00
Roman Artemev
16ea3d9ae9
[TEST] Add IrText klib tests
2021-06-16 21:16:44 +03:00
pyos
aa47191de4
JVM: hide ExpressionCodegen in finally block generation during inlining
2021-06-16 12:13:32 +02:00
pyos
108bd01698
JVM: refine the stack spilling around inline calls
...
Not all suspend functions need it - only those with suspension points.
2021-06-16 12:13:32 +02:00
pyos
b136acb185
JVM: move callSiteFile to InlineCallSiteInfo
2021-06-16 12:13:32 +02:00
pyos
6c1a5e1211
JVM: make inline function argument processing a bit shorter
2021-06-16 12:13:32 +02:00
pyos
392e4fba42
JVM: fix inlining of default lambdas of signature (Result) -> Any
...
They have no `invoke` bridge, and the overridden invoke expectes a boxed
`Result` as an argument.
2021-06-16 12:13:32 +02:00
pyos
a0a14d9e25
JVM: remove descriptors from SourceCompilerForInline
...
Printing the call site source on errors isn't really useful anyway - the
old backend points to a specific PsiElement, and JVM_IR wraps the
exception in FunctionCodegen (and printing the source never worked with
JVM_IR anyway).
2021-06-16 12:13:32 +02:00
pyos
32ad747632
JVM: load default lambda method nodes immediately
...
The ones that are not needed are filtered out before DefaultLambda is
even constructed anyway, and this way we need fewer lateinit vars.
2021-06-16 12:13:32 +02:00
pyos
1e953eaf01
JVM: remove contextKind from SourceCompilerForInline
...
Guess what? It's only useful for the old backend's type mapper!
2021-06-16 12:13:32 +02:00
pyos
1109348b6d
JVM: remove lookupLocation from SourceCompilerForInline
2021-06-16 12:13:32 +02:00
pyos
b6e9f64e18
JVM: remove functionDescriptor from InlineCodegen
2021-06-16 12:13:32 +02:00
pyos
d89e2d9f08
JVM: split inline intrinsics into "needed by JVM_IR" and "not"
...
or, alternatively, "suspend" and "not".
2021-06-16 12:13:32 +02:00
pyos
eb4d831d27
JVM_IR: implement typeOf<T> as a codegen intrinsic
...
rather than a fake inline function.
Also, generate more correct instructions for typeOf. Not sure how that
even worked before - `aconst(Boolean)` isn't even valid.
2021-06-16 12:13:32 +02:00
pyos
7dbf08ae1c
JVM: move loadCompiledInlineFunction out of InlineCodegen
2021-06-16 12:13:32 +02:00
pyos
8307367f90
JVM: don't thread callDefault through the inliner
...
It's only used by the old backend, and should be given to
PsiSourceCompilerForInline by PsiInlineCodegen.
2021-06-16 12:13:32 +02:00
Iaroslav Postovalov
0ba3ddcc29
Minor. Fix a typo, change visibility of internal object
2021-06-16 10:22:44 +03:00
Mads Ager
ae03e2983d
[JVM_IR] Keep track of catch variable gaps.
...
This ensures that catch variables are not visible in duplicated
finally blocks generated at an exit within the catch variable
scope.
^KT-46449 Fixed
2021-06-15 15:18:59 +02:00
Victor Petukhov
1b82227308
Don't do new captured type specific checks for old ones in the type checker
...
^KT-47143 Fixed
2021-06-15 10:07:20 +03: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