Dmitry Petrov
c165b8d55c
JVM: Update IR bytecode text and signature tests
2020-05-20 07:19:30 +03:00
Dmitry Petrov
cf70c83ab7
JVM: Update tests
2020-05-20 07:19:29 +03:00
Dmitry Petrov
9615b20e5d
Box inline class return value in lambdas (including suspend lambdas)
2020-04-08 19:56:26 +03:00
Steven Schäfer
6a1e35389c
JVM IR: Mangle interface implementation methods in inline classes
2020-03-16 18:48:16 +01:00
Steven Schäfer
465e9f2d68
JVM IR: Always produce stubs for interface methods in inline classes
...
This matches the behavior of the JVM backend, with the exception of
@JvmDefault methods, which are currently broken on the JVM backend.
2020-02-28 14:48:17 +01:00
Dmitry Petrov
94d20d9176
Update bytecode text tests in JVM_IR
2020-02-17 23:52:48 +03:00
Steven Schäfer
5760c0be9c
JVM IR: Avoid redundant coercions in ExpressionCodegen
2020-02-15 22:32:23 +03:00
Alexander Udalov
6a90dc2efe
Fix bytecode text tests for language version 1.4
...
New null check assertions are generated a bit more efficiently, with a
call to `checkNotNull` instead of IFNONNULL+jump.
2020-01-20 19:12:59 +01:00
Mikhail Zarechenskiy
5c5635ce20
Fix codegen & bytecode tests after unifying exceptions in JVM backend
...
See KT-22275 for details
2020-01-20 16:36:03 +03:00
Alexander Udalov
e9946b21b5
JVM IR: do not hide constructor with inline class types and defaults
...
This corresponds to the ABI generated by the old backend. Moreover, when
compiling the module 'ir.tree' with JVM IR (could not reproduce on a
small sample), this led to a codegen crash when trying to reassign
parameter value to the default stub, which is an error expression and
can't be generated by ExpressionCodegen.
2019-12-02 10:19:55 +01:00
Steven Schäfer
c905209504
JVM IR: Lower IrStringConcatenation
2019-10-18 17:24:53 +02:00
Steven Schäfer
21af7dfbe1
Add tests for constructors taking inline class arguments
2019-10-18 17:20:22 +02:00
pyos
06c00f4d9e
Unmute some JVM_IR inlining tests
2019-10-08 17:19:41 +02:00
Steven Schäfer
ce3ef4e4d0
Add more tests for inline class equality with nullable arguments
2019-09-18 18:52:58 +02:00
Steven Schäfer
49efa5fbc4
Split up Result API boxing tests
2019-09-18 18:52:58 +02:00
Steven Schäfer
b85b2d9af8
Add more tests for inline class equality
2019-09-18 18:52:58 +02:00
Steven Schäfer
cdc5e1347b
JVM: Avoid boxing in inline class equality
2019-09-18 18:52:58 +02:00
Steven Schäfer
f53b28e8a3
JVM: Generate equals-impl0 method for inline classes
2019-09-18 18:52:58 +02:00
Steven Schäfer
475079611d
JVM IR: Avoid parameter null-checks in inline class impl methods
2019-09-18 18:52:58 +02:00
Steven Schäfer
cdd3f82396
JVM IR: Use correct scope owner in JvmInlineClassLowering
2019-09-18 18:52:58 +02:00
Dmitry Petrov
7d49b72b79
JVM_IR: Support 'CHECK_NOT_NULL' intrinsic
...
TODO: migrate to changes related to KT-22275
2019-08-14 11:16:10 +03:00
Steven Schäfer
ac667403ef
(Un)mute and add tests for vararg codegen
2019-08-13 14:24:55 +02:00
Alexander Udalov
2baddb029c
Use Intrinsics.checkNotNullParameter to throw NPE in parameter null checks
...
Similarly to previous commits, this method was unused, so we're changing
its semantics in API version >= 1.4.
#KT-22275 In Progress
2019-08-12 16:09:23 +02:00
Steven Schäfer
9182fe887e
Fix inline class handling in DefaultParameterInjector
2019-08-05 16:48:18 +03:00
Steven Schäfer
79f71f61d5
JVM BE: Add more tests for default arguments
...
- Inline class parameters should not be boxed.
- Empty vararg parameters should not allocate an empty array.
2019-08-05 16:48:18 +03:00
Steven Schäfer
078ccbf077
JVM_IR: Implement name mangling exceptions for Result class.
2019-07-01 15:49:12 +02:00
Steven Schäfer
917ef250cf
Add and (un)mute inline class tests
2019-06-13 12:25:06 +02:00
pyos
6b2d874ccc
JVM_IR: generate non-null assertions for arguments
2019-05-21 18:30:27 +03:00
Mads Ager
3a11322506
Enable bytecode text tests for the JVM_IR backend.
2018-12-21 16:20:45 +01:00
Alexander Udalov
f5ff3d2fa9
Remove directives that have no effect from bytecode text tests
...
All bytecode text tests are run with stdlib in the classpath and only
for JVM backend, therefore directives WITH_RUNTIME, TARGET_BACKEND,
IGNORE_BACKEND are not needed
2018-12-20 12:53:24 +01:00
Mikhail Zarechenskiy
d28488eaed
Remove WITH_UNSIGNED directive from tests
...
#KT-25226 Fixed
2018-11-13 11:48:32 +03:00
Dmitry Petrov
5304754e88
Generate specialized 'toString' for inline classes when possible
...
#KT-25613
2018-10-15 12:21:14 +03:00
Dmitry Petrov
5480bf69e8
Support property delegation to inline class values (KT-27070)
2018-10-03 11:09:46 +03:00
Dmitry Petrov
e3fa785678
Minor: drop irrelevant test case
...
Hiding constructors with inline class type parameters
is tested by bytecodeListing tests
2018-09-10 17:45:05 +03:00
Roman Elizarov
e2713501ce
Rename SuccessOrFailure to Result and hide Failure from ABI
...
* The members of Result are isSuccess, isFailure, exceptionOrNull, getOrNull
* The rest of API is implemented via inline-only extensions
* There are two internal functions to hide detailed mechanics of an internal
Result.Failure class: createFailure and throwOnFailure
* Result.toString is explicit: either Success(v) or Failure(x)
See KT-26538
2018-09-09 11:34:31 +03:00
Dmitry Petrov
cafaa3e13c
Mangle inline class members
...
<IMPL_SUFFIX> for method is a method signature hash,
if method value parameter types contain inline class types,
otherwise 'impl'.
Constructor methods are named as 'constructor-<IMPL_SUFFIX>'.
Synthesized 'box' and 'unbox' methods are named as
'<METHOD_NAME>-<IMPL_SUFFIX>'.
Erased implementations of overriding and non-overriding methods
are named as '<METHOD_NAME>-<IMPL_SUFFIX>'.
Fully specialized implementation of 'equals' will have a special suffix.
2018-09-07 10:25:53 +03:00
Dmitry Petrov
43b4190f7c
Test: visibility of inline class members
...
Also merge in testInlineClassWrapperPrimaryConstructorIsSynthetic
and testInlineClassConstructors.
2018-09-07 09:31:33 +03:00
Dmitry Petrov
d8a6db8774
Mark synthesized box/unbox methods in inline classes as ACC_SYNTHETIC
2018-09-07 09:31:26 +03:00
Dmitry Petrov
0bd1c4d1b7
Make inline class wrapper constructor private
2018-09-07 09:31:26 +03:00
Dmitry Petrov
c094b3a5a2
Drop erased class for inline class
2018-09-07 09:31:26 +03:00
Dmitry Petrov
db13ab59a6
Test: SuccessOrFailure calls don't generate erased class references
2018-09-05 12:20:57 +03:00
Dmitry Petrov
203fd6a5d6
Make inline class wrapper constructor synthetic
2018-09-05 12:20:57 +03:00
Dmitry Petrov
65881dda97
Fix tests after rebase
2018-09-05 12:20:57 +03:00
Dmitry Petrov
1bf8cfca8b
Test: property accessors are called by inline class
2018-09-05 12:20:57 +03:00
Dmitry Petrov
a2900282fd
Call factory method for primary constructors of inner classes
...
We might want to add 'init' blocks later, so now, for the sake of
binary compatibility with 1.3-RC binaries, we have to generate these
'constructor' calls.
Note that in some tests inline class boxing is no longer redundant,
because resulting value is passed to 'constructor' as an argument.
2018-09-05 12:20:57 +03:00
Dmitry Petrov
b1016936b2
'box'/'unbox' methods are called by inline class
2018-09-05 12:20:57 +03:00
Dmitry Petrov
687b492bf9
Test: inline class secondary constructors are called by inline class
2018-09-05 12:20:57 +03:00
Dmitry Petrov
80a67477db
Generate method calls for inline classes through IC, not IC$Erased
...
IC extends IC$Erased, so it should be fine.
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
Dmitry Petrov
583c66a2a7
Don't mangle synthesized 'box' function for inline classes
2018-08-30 16:21:30 +03:00