Dmitry Petrov
19fb7ebfd5
JVM_IR fix local class names for files with @JvmPackageName
2021-04-02 00:08:55 +03:00
Alexander Udalov
ce0c0ad2e3
JVM IR: get rid of toIrBasedKotlinType in MethodSignatureMapper
...
Commonize (in terms of TypeSystemCommonBackendContext implementations
for KotlinType/IrType) code that computes optimal TypeMappingMode to
apply to different positions where inline class types can be present.
2021-04-01 20:17:45 +02:00
Alexander Udalov
b59ac5d8f6
JVM IR: do not use old KotlinTypeMapper when coercing inline classes
...
KotlinTypeMapper.mapInlineClassTypeAsDeclaration and
mapUnderlyingTypeOfInlineClassType invoked mapType which is defined in
descriptorBasedTypeSignatureMapping.kt and works on KotlinType.
It didn't lead to any problems, other than the fact that we were
constructing IrBasedClassDescriptor in JVM IR, and then KotlinType to
pass it to mapType, on each call to StackValue.boxInlineClass or
unboxInlineClass, which seems wasteful.
Instead of this, refactor these utilities to use type markers instead,
pass IrType and IrTypeMapper directly from JVM IR, and move the "static
type mapper" logic (which is used only in the old backend) out of
KotlinTypeMapper.
2021-04-01 20:17:45 +02:00
Ilya Goncharov
368ac36204
[IR] Remove IrExpressionWithCopy and replace with shallowCopy method
2021-03-31 20:14:55 +03:00
Ilya Goncharov
084d824984
[IR] Use deepCopyWithSymbols in IrTypeOperatorCall
2021-03-31 20:14:54 +03:00
Ilya Goncharov
7046f9badd
[IR] canHaveSideEffects more robust
...
By default copyable (IrExpressionWithCopy) declarations is considered as side-effects.
^KT-45655 fixed
[IR] isTrivial more robust
By default copyable (IrExpressionWithCopy) declarations is considered as trivials.
[IR] Use one source of truth for triviality of IrExpression
2021-03-31 20:14:53 +03:00
Ilya Goncharov
47f1a8a0bb
[IR] Make IrTypeOperatorCall copyable
...
^KT-45655 fixed
2021-03-31 20:14:52 +03:00
Dmitry Petrov
9bf7f3af04
JVM_IR KT-45697 reference classes from sources before IR generation
2021-03-31 16:40:49 +03:00
pyos
66429cfb43
JVM_IR: do not inline @JvmStatic into their static proxies
2021-03-31 00:08:40 +02:00
pyos
a518a9407d
JVM_IR: remap calls to protected @JvmStatic in companions
...
Protected functions on unrelated classes cannot be called from outside
the current package, so in general, we can only call the static proxy,
not the original companion method.
This has an ABI compatibility implication in that removing `@JvmStatic`
from a protected companion method will require recompiling Kotlin use
sites (of course, this is already source- and binary-incompatible from
Java perspective).
#KT-12063 Fixed
2021-03-31 00:08:40 +02:00
pyos
85aa6383ad
JVM_IR: cast bound property receivers to original type
...
Because the receiver type is used for determining where to put
accessors, and the type of fake overrides' receivers is the same as for
the original declaration, casting to the type of the parameter leads to
assertion errors.
#KT-44658 Fixed
2021-03-30 23:09:28 +02:00
Shagen Ogandzhanian
e0e2715864
[js] Fix constant folding for unsigned aithmetic in IR
...
this resolves KT-44138
2021-03-30 16:53:12 +02:00
Steven Schäfer
a7f8f0d903
JVM IR: Avoid IndexOutOfBounds exceptions in TypeOperatorLowering
...
The code didn't account for SYNTHETIC_OFFSETs (KT-45688) and could
throw on IR containing broken line numbers (KT-44910).
2021-03-29 19:44:11 +03:00
Dmitry Petrov
466e7b60b0
JVM_IR fix receiver type for fake overrides
2021-03-29 19:04:42 +03:00
Victor Petukhov
bbf5c4412e
Do subtyping between self types with captured type in special way
2021-03-29 16:30:58 +03:00
Alexander Udalov
c17b6c59f8
JVM IR: add isInlineClassType, use it instead of isInlined
2021-03-26 18:57:01 +01:00
Ilya Chernikov
2f49e8e0af
Fix parameter index on IR script generation in REPL scenario
...
Before it, the wrong index lead to the validation error when repl
script definition had c-tor parameters (see test)
2021-03-26 11:41:24 +01:00
Ilmir Usmanov
5e6f52009f
JVM IR: IC coroutines: return boxed type from suspend function if
...
the function overrides function, returning type argument
#KT-45451 Fixed
2021-03-25 16:21:55 +01:00
Ivan Kylchik
77539fe2db
Add visitExpressionBody method to IrCompileTimeChecker
...
This method is needed to explicitly indicate that IrExpressionBody can
be interpreted in any evaluation mode.
2021-03-24 21:24:17 +01:00
Igor Chevdar
246a907753
[FE][PSI2IR] Generalized SamType
...
Operations regarding <fun interface> are common for all backends
2021-03-24 20:42:40 +05:00
Dmitriy Novozhilov
50f2666eba
[IR] Properly render type arguments in error messages
2021-03-24 12:56:14 +03:00
Dmitry Petrov
4f250ed498
JVM_IR KT-45377 rewrite constants again after AddContinuationLowering
2021-03-23 16:05:24 +03:00
Alexander Udalov
b5f9b1dfc0
JVM IR: support inline classes with private constructors from other modules
...
#KT-44723 Fixed
2021-03-22 21:57:07 +01:00
Ilya Goncharov
f85ad41674
[IR] Check pureness in inlining lowering after transformation
2021-03-19 21:52:51 +03:00
Ilya Goncharov
8ac8dbdab8
[JS IR] Type operator call pureness
2021-03-19 21:52:51 +03:00
Ilya Goncharov
47d050c420
[JS IR] Correct pureness of expressions for arrayLiteral
2021-03-19 21:52:50 +03:00
Ilya Goncharov
f890156dde
[JS IR] arrayConcat not use additional slice
2021-03-19 21:52:50 +03:00
Ilya Goncharov
76005813ff
[JS IR] Fix for pureness of vararg
2021-03-19 21:52:50 +03:00
Ilya Goncharov
278a8c27fc
[JS IR] Not create temporary variable for pure expressions on inline
2021-03-19 21:52:50 +03:00
Ilya Goncharov
ece0e200d5
[JS IR] Not nullize external varargs if it is not on the end of call
2021-03-19 21:52:50 +03:00
Ilya Goncharov
b8d5712bc0
[JS IR] Not use double slice for external varargs
2021-03-19 21:52:50 +03:00
Ilya Goncharov
120b5b9e05
[JS IR] Move isPure check to backend.common and add platform-specific check on calls with side effects
2021-03-19 21:52:50 +03:00
Ilya Goncharov
7bbb5b77db
[JS IR] Concat varargs with non varargs on compile time for function w/o receiver
2021-03-19 21:52:50 +03:00
Ilya Goncharov
fc559ab0cd
[JS IR] Unite varargs and non varargs before vararg
2021-03-19 21:52:49 +03:00
Dmitry Petrov
9e30ddd12e
JVM_IR KT-45581 generate H_INVOKEINTERFACE for interface method handles
2021-03-19 18:57:21 +03:00
Dmitry Petrov
73d4fa65ea
JVM_IR KT-45431 don't optimize out $$delegatedProperties in companion
...
Corresponding delegates are initialized in the host class, using
'$$delegatedProperties'.
TODO figure out proper code generation scheme for delegated properties
in companions (KT-45580)
2021-03-19 18:54:01 +03:00
Dmitry Petrov
f6baabd98e
JVM_IR KT-45408 rewrite static calls recursively
2021-03-19 18:53:59 +03:00
Alexander Udalov
e5f218859b
JVM IR: minor, improve error messages for inline classes
...
It will help in diagnosing problems like KT-44723.
2021-03-19 16:33:42 +01:00
Ilya Goncharov
88abb3d6c9
[JS IR] Fix creating of classes extended from nested one
...
[JS IR] Extract getClassRef method
^KT-44950 fixed
2021-03-18 21:14:00 +03:00
Dmitry Petrov
17da240910
JVM_IR KT-45195 generate non-static annotation members as ACC_ABSTRACT
2021-03-18 19:41:24 +03:00
Steven Schäfer
d0424465b8
JVM IR: Resolve fake overrides when calculating return types (KT-44867)
2021-03-18 16:02:35 +01:00
Roman Artemev
44d03bc727
[Psi2Ir] Fix generation of property references for synthetic java props
...
- Declare it on use-site
- Fix export checker for that case
- Fix KT-45297
2021-03-18 16:50:31 +03:00
Dmitry Petrov
ac6232b4ba
JVM_IR KT-36853 patch parents after tailrecPhase
2021-03-18 15:19:24 +03:00
Svyatoslav Kuzmich
6bd34db725
[JS IR] Fix kotlin.js.js with complex constant expressions
...
Use IR interpreter to evaluate complex constexprs
2021-03-17 15:12:18 +03:00
Steven Schäfer
bf2942b5cc
JVM IR: Add Object.clone to JvmSymbols
...
The `clone` function is not available in the builtin classes created
from fir.
2021-03-16 21:30:18 +01:00
Steven Schäfer
99a4779c6b
JVM IR: Don't produce line numbers in synthetic Enum members
2021-03-16 21:30:18 +01:00
Steven Schäfer
5be00cfa04
JVM IR: Don't use null checks in Enum.valueOf
2021-03-16 21:30:18 +01:00
Steven Schäfer
bea1a8c422
JVM IR: Use Object.clone in Enum.values
2021-03-16 21:30:18 +01:00
Georgy Bronnikov
bff6e9b972
IR: document lock priority.
2021-03-16 19:49:31 +03:00
Georgy Bronnikov
42279c3b5b
IR: introduce IrLock
...
Use a single lock object for synchronization to avoid deadlocks.
2021-03-16 19:49:30 +03:00