Dmitry Petrov
05daa21657
Fix inline class secondary constructor call generation
...
Don't generate NEW+DUP for inline class constructor calls.
2018-09-05 12:20:57 +03:00
Dmitry Petrov
3080b65f7d
Inline (wrapper) class IC extends erased inline class IC$Erased
2018-09-05 12:20:57 +03:00
Alexander Udalov
ac14c5e74f
Fix KType.javaType for suspend function return type
...
#KT-26293 Fixed
2018-08-30 16:47:48 +02:00
Ilmir Usmanov
f3879af9f6
Implement suspend lambdas of big arity
...
Suspend functions and callable references to suspend lambdas are already
supported.
Support callSuspendBy of suspend function of big arity.
#KT-24854: Fixed
2018-08-30 17:29:09 +03:00
Ilmir Usmanov
22f9a6ce08
Add coroutines debug metadata: compiler
...
#KT-25557 Fixed
#KT-25559 Fixed
2018-08-30 16:19:41 +03:00
Ilmir Usmanov
fe451dce31
Implement correct is check for SuspendFunction
...
Add test for suspend functions with language version 1.2.
Minor edit in SuspendFunction docs.
2018-08-30 16:17:46 +03:00
Dmitry Petrov
a205019156
Additional tests and fixes for function name mangling
2018-08-30 14:58:54 +03:00
Dmitry Petrov
a56d1d3ce8
Mangle function names with inline class parameters
...
Avoid name clashes in cases such as
inline class Login(val login: String)
inline class Password(val password: String)
fun validate(login: Login) { ... }
fun validate(password: Password) { ... }
2018-08-30 14:58:50 +03:00
Ilmir Usmanov
e93683621a
Implement callSuspend and callSuspendBy functions as KCallable's
...
extension methods.
Also make isSuspend a member of KCallable.
#KT-21972: Fixed
2018-08-30 14:57:48 +03:00
Alexander Udalov
ceb909d261
Inherit KType from KAnnotatedElement, implement KType.annotations
...
#KT-16795 Fixed
2018-08-30 14:56:57 +03:00
Alexander Udalov
b55fc818d1
Support JvmName on annotation constructor parameters
...
#KT-25372 Fixed
2018-08-30 14:56:42 +03:00
Alexander Udalov
dc1f4c7d5b
Generate get-targeted annotations on annotation constructor parameters
...
This change would also make NotNull annotations to be generated on
non-primitive annotation methods, but we skip this deliberately because
annotation methods never return null on JVM anyway
#KT-25287 Fixed
2018-08-30 14:56:40 +03:00
Alexander Udalov
cbc92bc9a1
Add KClass.sealedSubclasses to get direct subclasses of sealed class
...
#KT-14657 Fixed
2018-08-30 14:56:21 +03:00
Alexander Udalov
877dfd8ff4
Fix generic signature of FunctionN type visible from Java
2018-08-30 14:55:56 +03:00
Mikhail Zarechenskiy
d94b47bcd3
Support other kinds of translation for unsigned literals
2018-08-30 14:55:34 +03:00
Alexander Udalov
c369e67e9f
Revert "Ignore tests on big function types until master is 1.3"
...
This reverts commit f03dc62173 .
2018-08-30 14:52:38 +03:00
Roman Artemev
cc14442be1
Add tests for primitive companion object
...
Update test data
2018-08-24 14:58:42 +03:00
Dmitry Petrov
2a524920a5
Don't remap inline function args requiring inline class boxing/unboxing
...
Same as for primitives: inline lambda expects to see a boxed value,
so, even if an argument is a local variable, it can't be remapped,
because it contains unboxed representation.
2018-08-24 14:52:29 +03:00
Dmitry Petrov
6e2d05cd94
Fix argument original type order in InlineCodegen
...
Arguments are put on stack in the direct order, and then stored into
local variables for inlining in the reversed order:
<arg0>
<arg1>
<arg2>
store <param2>
store <param1>
store <param0>
Original value parameter types were taken in direct order, though.
2018-08-24 14:52:29 +03:00
Ilmir Usmanov
0559cfb724
Move SuspendFunction{N} interfaces to kotlin.coroutines package
...
#KT-25824: Fixed
2018-08-22 16:21:30 +03:00
Ilmir Usmanov
4a7703ed66
Implement correct is check for SuspendFunction
...
Let callable references implement SuspendFunction
Do not generate CHECKCAST SuspendFunction when LV is 1.2
#KT-25825: Fixed
2018-08-22 16:21:27 +03:00
Dmitry Petrov
533f87ac33
Use proper KotlinType for prefix increment/decrement
...
Otherwise inline class values (such as UByte) are boxed incorrectly,
see KT-26219.
2018-08-22 12:24:50 +03:00
Alexander Udalov
1c2a9e4b21
Map annotation target TYPE -> TYPE_USE if JVM target >= 1.8
...
And TYPE_PARAMETER -> TYPE_PARAMETER similarly
#KT-23857 Fixed
2018-08-21 12:38:05 +02:00
Dmitry Petrov
7d4dfc87b1
Use proper KotlinType in get/set methods for property reference
2018-08-21 08:43:12 +03:00
Ilmir Usmanov
d3dbcae7a4
Get rid of typed create and invoke wherever possible
...
in coroutine lambdas.
#KT-26243 Fixed
2018-08-20 21:33:24 +03:00
Dmitry Petrov
b6e3218ca2
Use mapping mode for inline class underlying type without wrapping
2018-08-16 15:03:50 +03:00
Dmitry Petrov
8e95ecb821
Use underlying type when computing type mapping mode for inline classes
2018-08-15 15:37:46 +03:00
Ilmir Usmanov
a470fd21ca
Eliminate only first {ASTORE, ALOAD} in locals elimination
...
of ALOAD.
#KT-25912: Fixed.
2018-08-15 13:45:24 +03:00
Dmitry Petrov
ebf8ec455d
Box/unbox nullable inline class values with null check
...
When we have a nullable inline class value with non-null underlying
type, corresponding value in unboxed representation is nullable. E.g.:
inline class Str(val value: String)
fun test(s: Str?) = listOf(s)
Here 'test(s: Str?)' accepts nullable 'java.lang.String' as a parameter.
When boxing/unboxing nullable values of such inline classes, take care
of nulls.
#KT-26052 Fixed Target versions 1.3-M2
2018-08-14 10:22:07 +03:00
Dmitry Petrov
0af33462ef
Fix code generation for Array<C> element access where C is inline class
2018-08-13 08:49:04 +03:00
Dmitry Petrov
4f6aa50417
Fix == for inline classes with boxes
...
TODO generalize code generating object vs primitive equality
#KT-25914 Fixed
#KT-25981 Fixed
#KT-25983 Fixed
2018-08-10 10:34:57 +03:00
Mikhail Zarechenskiy
be38263fc7
Introduce conversions from signed pure constants to unsigned ones
...
#KT-24717 In Progress
#KT-25996 Open
#KT-25997 Open
2018-08-09 09:47:48 +03:00
Roman Artemev
efec82c0eb
Update test data
...
* add new tests for coroutines
* add copy of some tests without dependency on stdlib
2018-08-08 18:33:41 +03:00
Mikhail Zarechenskiy
55e7def3c1
Fix coercion for stack value property in case of inline classes
...
#KT-25771 Fixed
2018-08-06 17:45:20 +03:00
Mikhail Zarechenskiy
6d4d244c28
Generate function from Any for inline classes same as for data classes
...
#KT-24873 Fixed
#KT-25293 Fixed
#KT-25299 Fixed
2018-08-06 10:56:01 +03:00
Mikhail Zarechenskiy
043ce1cb27
Support secondary constructors for inline classes
...
#KT-25614 Fixed
#KT-25246 Fixed
KT-25599 Will be fixed after recompilation of unsigned classes
2018-08-06 10:55:57 +03:00
Dmitry Petrov
1bfb75a51b
Generate intrinsic-based numeric comparison only for FP types
2018-08-03 09:34:59 +03:00
Ilmir Usmanov
0c867b4804
Disable callable references to suspend functions in 1.2
...
#KT-25604: Fixed
2018-08-02 18:55:49 +03:00
Mikhael Bogdanov
cb53e86183
Move ir box test under "box/ir"
2018-08-02 09:52:48 +02:00
Alexander Udalov
0c8b231fde
Add tests on coercion to Unit for callable references
...
#KT-11723
2018-08-01 16:26:07 +02:00
Alexander Udalov
9babd90999
Support default arguments and varargs for callable references
...
#KT-8834
#KT-19869
#KT-25514
2018-08-01 16:26:06 +02:00
Dmitry Petrov
566b5856ec
Constructor call normalization mode depends on language version
2018-07-27 09:52:29 +03:00
Roman Artemev
14b1f0ef6a
Fix issue #KT-24475
...
* count coroutine metadata references during RemoveUnusedImport pass in JsInliner
* add cases to test usage of stdlib symbols in inlined functions
2018-07-26 19:23:06 +03:00
Roman Artemev
dec307799a
Fix infinite loop in suspend function in case of return from finally [#KT-21961]
...
* add test
2018-07-25 23:04:57 +03:00
Roman Artemev
eb420a1e0f
Fix [#KT-23921]
...
* make name collector in inliner process handle JsCatch
* visit JsParameter during live analyser in coroutine transformer
2018-07-25 14:22:11 +03:00
Roman Artemev
5241b37ad9
Fix fallthrough in suspendable switch [#KT-22694, #KT-23687]
...
* do not explicitly put break for each case
* add test for related cases
2018-07-24 20:19:35 +03:00
Alexander Udalov
20ddbc9698
Do not generate generic signature for SAM wrapper methods
...
#KT-23870 Fixed
2018-07-24 13:35:47 +02:00
Dmitry Petrov
86e863951e
Compare FP numbers properly when determining if field initializer needed
2018-07-20 17:53:25 +03:00
Mikhail Zarechenskiy
045058c29a
Support inline class values inside string templates through boxing
...
#KT-25626 Fixed
#KT-25613 Open
2018-07-20 13:58:31 +03:00
Mikhail Zarechenskiy
ec9d8e580e
Leave boxing for compareTo/areEqual methods for inline classes
...
Inline classes can override methods and thus introduce side effects
2018-07-20 11:51:34 +03:00