Denis Zharkov
cd51658976
Replace JvmTarget with GenerationState in DescriptorBasedFunctionHandleForJvm
2019-01-14 14:54:18 +03:00
Denis Zharkov
949214c10b
Refactor bridges generation for JVM
...
Make a separate subclass for DescriptorBasedFunctionHandle
to allow customize the behavior without complex abstract concepts
like `areDeclarationAndDefinitionSame`
2019-01-14 14:54:18 +03:00
Denis Zharkov
5cc242e878
Refactor FunctionHandle::isInterfaceDeclaration
...
- Give it more clear name mayBeUsedAsSuperImplementation
because defining if it can be used as super-implementation
this is what it used for
- The meaning is negated, so it's needed to negate its usages and impls
- Also, reuse it in findSuperImplementationForStubDelegation
2019-01-14 14:54:18 +03:00
Roman Artemev
d35b20f764
[JS IR BE] Implement private members lowering to extract private methods from class and transform them into static function
...
* fix kotlin.Long
* update tests
2019-01-11 20:28:04 +03:00
Roman Artemev
75996b1c8e
[JS IR BE] Fix class generator
2019-01-11 20:28:04 +03:00
Roman Artemev
23fc950ae6
[JS IR BE] Fix suspend function lowering
2019-01-11 20:28:04 +03:00
Roman Artemev
c725f4ce32
[JS IR BE] Secondary constructors lowering refactoring
...
* make it per-file
2019-01-11 16:13:26 +03:00
Igor Chevdar
e640f01b4e
Fixed bug with IR parameter copying.
...
Constructors don't have their own type parameters
but rather inherit them from the parent.
2019-01-10 14:35:11 +03:00
Igor Chevdar
1bef26c80e
[JS IR] Fixed bug with constructors type parameters
2019-01-10 14:35:11 +03:00
Igor Chevdar
1eaf2d2c42
Typo fix
2019-01-10 14:35:11 +03:00
Igor Chevdar
2c0f93b133
IR: Supported special coroutine intrinsic
...
See https://youtrack.jetbrains.com/issue/KT-26317 for details
2019-01-10 14:35:11 +03:00
Igor Chevdar
621a9bd1df
Removed a Native specific lowering
2019-01-10 14:35:10 +03:00
Igor Chevdar
9fee03ca81
IR: Fixed some parents
2019-01-10 14:35:10 +03:00
Igor Chevdar
a78b80f8bf
IR fixes to help symbolization of K/N
2019-01-10 14:35:10 +03:00
Roman Artemev
d363763420
Fix wrapped descriptors
2019-01-10 14:35:10 +03:00
Mads Ager
57489febf0
JVM IR: simplify chains of negations in if conditions.
...
Introduce lowering phase that turns !!exp -> exp for the boolean
'not' builtin. This makes sure that code such as
```
if (!!!!!booleanValue) {
doStuff()
}
```
generates only one branch.
2019-01-08 12:09:23 +01:00
Mads Ager
864b90f8c0
JVM_IR: Do not materialize negated boolean for branches.
...
Instead, flip the branch targets. This generates java byte code
such as:
L2
IFNE L3
ALOAD 0
INVOKEVIRTUAL A.getX ()F
GOTO L4
L3
instead of:
L2
IFNE L3
ICONST_1
GOTO L4
L3
ICONST_0
L4
IFEQ L5
ALOAD 0
INVOKEVIRTUAL A.getX ()F
GOTO L6
L5
2019-01-03 08:21:31 +01:00
Mikhael Bogdanov
02d9c526e2
Proper resort variables on inlining lowered ir closures
...
Original problem is that lowered ir closures doesn't meet inliner expectations
about captured variable position in inlining method.
E.g.: Call 'foo(valueParam) { capturedParam }' to
inline function 'foo' with declaration
inline fun foo(valueParam: Foo, inlineParamWithCaptured: Bar.() ->) ....
is reorganized through inlining to equivalent call foo(valueParam, capturedParam1, cp2 ...).
But lowered closure for lambda parameter has totally different parameters order:
fun loweredLambda$x(extensionReceiver, captured1, cp2..., valueParam1, vp2...)
So before inlining lowered closure should be transformed to
fun loweredLambda$x(extensionReceiver, valueParam1, vp2..., captured1, cp2..)
#KT-28547 Fixed
2019-01-03 07:57:36 +01:00
Dmitry Petrov
57c12476d7
Provide parent reference for temporary variables immediately
2018-12-20 15:57:31 +03:00
Mikhael Bogdanov
026ac1bee6
Inline API constant
2018-12-20 12:55:11 +01:00
Dmitry Petrov
e5d946a96c
Parent for thisReceiver of IrLazyClass is the corresponding class
...
Fixes issue in Kotlin/Native.
2018-12-19 15:48:07 +03:00
Dmitry Petrov
85f55dec9a
Support SAM conversion in psi2ir
...
SAM conversion takes a function value (function type or a subtype),
and produces a SAM interface value.
2018-12-19 10:58:34 +03:00
Roman Artemev
e436e7cf61
[JS IR BE] Support call super with default parameters
2018-12-18 15:55:09 +03:00
Roman Artemev
256317da15
[IR BE] Fix SharedVariableLowering
...
* make it able to detect shared vars under any declaration kind, not only IrFunction
* Add & update tests
2018-12-18 15:19:17 +03:00
Georgy Bronnikov
3b16fa6af9
Do not generate interface delegation for default parameter stubs
2018-12-18 13:57:23 +03:00
Mikhail Zarechenskiy
c924a6efe8
Fix unbound class literals for inline classes
...
#KT-28361 Fixed
2018-12-18 11:35:36 +03:00
Mikhail Zarechenskiy
e8a8318ead
[NI] Fix input/output types for callable reference atom
...
Input and output types are crucial for type variable fixation order and
analysis of postponed arguments (callable references, lambdas).
Specifically, if there is non-fixed type variable inside input types of
a callable reference, then we'll postpone resolution for such callable
reference.
Initial example with the expected type `KMutableProperty1<*, F>` caused
problems because input types were computed incorrectly (while there
aren't input types here)
#KT-25431 Fixed
2018-12-11 11:33:29 +03:00
Georgy Bronnikov
5dd9cfca4d
Repair after merge
2018-12-10 17:26:55 +03:00
Georgy Bronnikov
a695e21e44
Introduce IrLazyProperty
2018-12-10 17:26:55 +03:00
Georgy Bronnikov
f4a189fe82
Change order of arguments in IrValueParameter.copyTo
2018-12-10 17:26:55 +03:00
Georgy Bronnikov
c018109bca
React to review comments
2018-12-10 17:26:55 +03:00
Georgy Bronnikov
c9343c89bc
Mark java external declarations in IrFunction.origin
2018-12-10 17:26:55 +03:00
Georgy Bronnikov
1764423860
JVM_IR. Mostly remove descriptors from InterfaceDelegationLowering
2018-12-10 17:26:55 +03:00
Georgy Bronnikov
cbc46fe6e4
JVM_IR. Mostly remove descriptors from InterfaceLowering
...
Descriptors are only used to generate a new method name via a call to
KotlinTypeMapper.
2018-12-10 17:26:55 +03:00
Georgy Bronnikov
55b65546fa
IR. Take care of type parameters for calls in DefaultArgumentStubGenerator
2018-12-10 17:26:55 +03:00
Georgy Bronnikov
bba711a189
JVM_IR. Remove descriptors from ConstAndJvmFieldPropertiesLowering
2018-12-10 17:26:55 +03:00
Georgy Bronnikov
41da078de5
IR. Create IrAnonymousInitializerSymbolImpl using a class symbol
2018-12-10 17:26:55 +03:00
Georgy Bronnikov
481bef9799
JVM_IR. Copy annotations properly in MoveCompanionObjectFieldsLowering
2018-12-10 17:26:55 +03:00
Georgy Bronnikov
a5fea34f12
Remove some dead code
2018-12-10 17:26:55 +03:00
Georgy Bronnikov
bf4f552478
IR. Remove descriptors from KCallableNamePropertyLowering
2018-12-10 17:26:55 +03:00
Roman Artemev
eff81525d3
Make IrField be IrDeclarationParent
...
* fix parent in TypeOperatorLowering
2018-12-07 17:58:20 +03:00
Roman Artemev
ce70e5850f
[JS IR BE] New Inliner from native
2018-12-07 17:58:20 +03:00
Dmitry Petrov
0561cb6c0d
Fix KT-24804 PSI2IR Crashes on loop with two labels
2018-12-07 10:51:55 +03:00
Dmitry Petrov
f8582c1929
psi2ir: ersatz type approximation for intersection types
...
Emulate old JVM back-end behavior for intersection type mapping.
IrType renderer should render the IR type, not the original Kotlin type.
2018-12-07 10:51:55 +03:00
Roman Artemev
30cc5f6d3c
Support Ir Validation in phaser
2018-12-04 19:45:15 +03:00
Roman Artemev
de1cbc396e
Implement JS IR Phaser
2018-12-04 19:45:15 +03:00
Roman Artemev
2d9d9484b3
Refactored Common & JVM IR Phaser
2018-12-04 19:45:15 +03:00
Svyatoslav Kuzmich
8359887696
[JS IR BE] Fix inline classes workarounds
...
- Remove uninitialized return type check
- Remove unbound classifier symbol check
2018-12-03 13:07:41 +03:00
Svyatoslav Kuzmich
59032c384e
[JS IR BE] Validate parents
2018-11-29 15:36:57 +03:00
Svyatoslav Kuzmich
39cdee8d6c
[JS IR BE] Enable IrValidator
2018-11-29 15:36:56 +03:00