pyos
862197d713
JVM_IR: create temporaries for complex SAM conversion arguments
...
To avoid bytecode sequences like
new _1Kt$sam$i$java_lang_Runnable$0
dup
new _1Kt$f$1
dup
invokespecial _1Kt$f$1.<init>()V
invokespecial _1Kt$sam$i$java_lang_Runnable$0.<init>(...)V
as the different order of `new` and `<init>` confuses the inliner.
2019-11-06 15:54:40 +01:00
pyos
4fc1bd9ec5
Support inlining functions with KT-28064 style objects
...
Namely, anonymous objects defined in lambdas that have all captured
variables as loose fields instead of a single reference to the parent.
The question is, when a lambda inside an inline function defines an
anonymous object, and that object is not regenerated during codegen for
the inline function itself, but then has to be regenerated at call site
anyway, do we use an outer `this` or loose capture fields? For example,
before KT-28064:
inline fun f1(g: () -> Unit) = object { g() }
// -> f1$1 { $g: () -> Unit }
inline fun f2(g: () -> Unit) = f1 { object { g() } }
// -> f2$$inlined$f1$1 { $g: () -> Unit }
// f2$$inlined$f1$1$lambda$1 { this$0: f2$$inlined$f1$1 }
inline fun f3(g: () -> Unit) = f2 { object { g() } }
// -> f3$$inlined$f2$1 { $g: () -> Unit }
// f3$$inlined$f2$1$1 { this$0: f3$$inlined$f2$1 }
// f3$$inlined$f2$1$1$lambda$1 { this$0: f3$$inlined$f2$1$1 }
After KT-28064:
inline fun f2(g: () -> Unit) = f1 { object { g() } }
// -> f2$$inlined$f1$1 { $g: () -> Unit }
// f2$1$1 { $g: () -> Unit }
inline fun f3(g: () -> Unit) = f2 { object { g() } }
// -> f3$$inlined$f2$1 { $g: () -> Unit }
// f3$$inlined$f2$2 { ??? }
// f3$1$1 { $g: () -> Unit }
Should `???` be `this$0: f3$$inlined$f2$1` or `$g: () -> Unit`? This
commit chooses the latter for KT-28064 bytecode and keeps `this$0` when
inlining the old bytecode.
2019-11-06 13:11:44 +01:00
pyos
a835f07d51
JVM_IR: don't regenerate objects in lambdas inlined into objects
2019-10-31 09:09:54 +01:00
Mikhael Bogdanov
63b115abb6
Workaround for KT-34656: temporary disable assertion
2019-10-29 09:48:49 +01:00
pyos
d3992826e4
JVM_IR: discard parameter annotations in anonymous object constructors
2019-10-14 14:54:44 +02:00
pyos
06c00f4d9e
Unmute some JVM_IR inlining tests
2019-10-08 17:19:41 +02:00
Georgy Bronnikov
7ede26e8f4
IrCompileKotlinAgainstInlineKotlin tests
2019-09-06 09:19:57 +03:00
Mikhael Bogdanov
1eda42cb88
JVM_IR. Generate SMAP information for anonymous classes
...
#KT-28092 Fixed
2019-08-08 12:02:50 +02:00
Mikhael Bogdanov
971d36837a
JVM_IR. Don't generate annotations and signature on synthetic methods
2019-08-05 15:00:51 +02:00
Steven Schäfer
efb938a7c8
(Un)mute tests
2019-07-31 11:18:44 +02:00
pyos
90f11211d3
JVM_IR: wrap performInline in enterIntoInlining/exitFromInliningOf
2019-05-06 16:23:28 +02:00
pyos
b74586f84e
JVM_IR: implement single-abstract-method conversions
2019-04-04 09:45:00 +02:00
pyos
8c55376f0c
Unmute almost all JVM_IR tests that use property references
2019-03-19 12:00:29 +01:00
Mikhael Bogdanov
9ab6062295
Properly capture extension receiver for array convention expressions in object constructor
...
#KT-19389 Fixed
2019-02-05 16:14:50 +01:00
Mikhael Bogdanov
f7ce8c18c6
Add tests for Obsolete issues
...
#KT-18977 Obsolete
2019-01-09 10:20:54 +01:00
Mikhael Bogdanov
9a059809bf
Add test for Obsolete issues
...
#KT-15956 Obsolete
#KT-15751 Obsolete
#KT-16417 Obsolete
#KT-21787 Obsolete
2019-01-08 13:52:47 +01:00
Mikhael Bogdanov
f59b6a350f
Specify JVM target backend for other java related tests
2018-12-21 16:09:11 +01:00
Mikhael Bogdanov
1217d3591b
Specify JVM target backend for test with '::class.java' usage
2018-12-21 16:09:04 +01:00
Pavel Punegov
2ff6047845
Update ignore tag for Native backend
2018-08-28 13:48:43 +03:00
Mikhael Bogdanov
a7d706f693
Unmute jvm ir-tests
2018-08-09 16:30:32 +03:00
Mikhael Bogdanov
357359b1dd
Unmute ir-tests after CR support
2018-08-09 14:22:50 +03:00
Mikhael Bogdanov
06b16a6459
Unmute ir-tests after prev commit
2018-08-09 14:22:46 +03:00
Mikhael Bogdanov
9ccb25789b
Unmute jvm-ir inline tests
2018-08-02 13:19:24 +02:00
Mikhael Bogdanov
e149cbe852
Mute failed jvm ir tests
2018-06-28 12:26:41 +02:00
Mikhael Bogdanov
c1c8660e55
Don't try to transform sam wrappers in same module
...
#KT-22304 Fixed
2018-03-08 11:50:08 +01:00
Mikhael Bogdanov
d732f0e160
Never delete types from inline functions during inline transformations
...
#KT-19399 Fixed
2018-02-16 16:48:53 +01:00
Mikhael Bogdanov
0954d1ab1b
Don't generate hash in sam wrapper class name
...
#KT-17091 Fixed
2018-02-08 10:11:48 +01:00
Mikhael Bogdanov
edefb45585
Copy sam wrappers during inline
...
#KT-21671 Fixed
2017-12-07 12:57:43 +01:00
Mikhael Bogdanov
8af7a25f8e
Update maxStack on synthetic instruction insertion
...
#KT-19723 Fixed
2017-08-17 20:02:29 +02:00
Mikhael Bogdanov
15f401a473
Copy annotation and attributes on class transformation during inline
2017-08-08 09:50:42 +02:00
Mikhael Bogdanov
3f7bf8467a
Process non-aload0 outer access in constructor during inline
...
#KT-17972 Fixed
2017-05-26 09:24:10 +02:00
Ilya Matveev
a5e4e0284e
Mute some box tests for native backend
...
This patch mutes the following test categories:
* Tests with java dependencies (System class,
java stdlib, jvm-oriented annotations etc).
* Coroutines tests.
* Reflection tests.
* Tests with an inheritance from the standard
collections.
2017-03-10 19:59:37 +03:00
Mikhael Bogdanov
4d47c0fd63
Partial fix for KT-16193: Incremental compilation generates invalid bytecode for crossinlined functions; avoid IllegalAccessError
2017-03-01 14:45:11 +01:00
Denis Zharkov
e16b0524b6
Fix inline codegen on local functions inside inlined lambda
...
The problem was that anonymous classes wasn't regenerated
although they capture another anonymous class that is a subject
for regeneration
#KT-8689 Fixed
2017-02-17 13:48:19 +03:00
Mikhael Bogdanov
1040c97196
Fix for: KT-14011 Compiler crash when inlining: lateinit property allRecapturedParameters has not been initialized
...
#KT-14011 Fixed
2016-12-22 09:44:26 +01:00
Michael Bogdanov
a12d7b6019
Check lambda inlining in package part files in test framework
2016-09-07 12:01:47 +03:00
Michael Bogdanov
7325baa06a
Fix for KT-13374: CompilationException: Inline function call with anonymous object implementing an interface by delegation
...
#KT-13374 Fixed
2016-08-16 10:47:01 +03:00
Michael Bogdanov
9b9abb2e10
Fix for KT-13182: Regression: compiler internal error at inline
...
#KT-13182 Fixed
2016-07-26 16:16:37 +03:00
Michael Bogdanov
99cdc41ab6
Fix for KT-13133: Incorrect InnerClasses attribute value for anonymous object copied from an inline function
...
#KT-13133 Fixed
2016-07-26 16:16:36 +03:00
Michael Bogdanov
f5166b7aef
Support test directives in inline tests
2016-04-04 12:07:46 +03:00
Michael Bogdanov
d0aac74e72
Fix for KT-11590: IllegalAccessError: SAM adapter generated with invalid accessibility for inline function
...
#KT-11590 Fixed
2016-03-24 14:11:25 +01:00
Michael Bogdanov
00cb2705da
Add a test verifying anonymous object transform is performed correctly with ClassBuilder.
2016-03-21 18:37:28 +03:00
Michael Bogdanov
bec6126b06
Support when mapping transformation on inlining
2016-03-14 11:24:39 +03:00
Alexander Udalov
cc84aabdcf
Migrate boxInline tests to new multi-file framework
2016-02-27 15:40:05 +03:00
Michael Bogdanov
bf16783fb7
Fix for KT-9591: Exception on inlining
...
#KT-9591 Fixed
2016-01-21 18:44:05 +03:00
Michael Bogdanov
3da463be27
Fix for KT-10137: Internal error: couldn't inline method call on lambda taking extension function parameter
...
#KT-10137 Fixed
2015-11-24 16:32:06 +03:00
Michael Bogdanov
d4369c1df9
Keep inline transformation invariant: all captured parameters stored in topmost lambda/object
...
Fix for KT-8668: java.lang.ClassFormatError: Duplicate field name&signature (based on property access)
#KT-8668 Fixed
2015-11-24 16:32:05 +03:00
Michael Bogdanov
0619ef47ac
Fix for KT-9877: CompilationError: Cannot pop operand of empty stack
...
#KT-9877 Fixed
2015-11-06 11:46:13 +03:00
Michael Bogdanov
33bf314518
Fix for KT-6552 IllegalAccessError in inline function with "when" over enum across modules
...
#KT-6552 Fixed
2015-10-30 09:39:09 +03:00
Michael Bogdanov
f4d3ecf8e6
Generate public constructor for anonymous objects if it inside inline fun
...
#KT-9331 Fixed
2015-10-21 17:12:17 +03:00