Dmitry Petrov
ade1a346e1
JVM: add test for KT-40123
2020-09-07 16:09:42 +03:00
Dmitry Petrov
dd016b759e
JVM_IR: write raw types as raw in JVM generic signatures
2020-09-04 10:21:49 +03:00
Dmitry Petrov
714ab7c37f
Handle java raw types in IR
...
Raw type Q is represented as a flexible type
Q<B1, ... Bn> .. Q<*, ... *>
where Bi is a representative upper bound of the corresponding ith type
parameter of Q.
When mapping generic signature, JVM takes type arguments of lower bound
(which is 'Q<B1, ..., Bn>').
There is still some difference in how JVM and JVM_IR handle raw type in
signature. It requires additional investigation.
2020-09-04 10:21:48 +03:00
Alexander Udalov
b8d16f3d46
Add EnclosingMethod information to bytecode listing tests
2020-09-02 16:46:05 +02:00
Alexander Udalov
d4ecde5cb0
Minor, don't use token COROUTINES_PACKAGE in bytecode listing tests
...
Most of the tests that are run both for 1.2 and 1.3 coroutines have
different expectation .txt files anyway.
2020-09-02 16:46:05 +02:00
Dmitry Petrov
8cb8284957
EnhancedNullability annotation in IR
...
Fixes KT-40115 & KT-40117.
Move FlexibleNullability annotation to 'kotlin.internal.ir'.
2020-09-01 16:06:03 +03:00
Alexander Udalov
a639915a34
JVM IR: do not mangle property accessors of unsigned types in annotations
...
Before this change, we incorrectly mangled the names of annotation
methods (e.g. `getI-pVg5ArA` instead of `i`) because the isSpecial
condition was false.
2020-08-31 14:19:14 +02:00
Steven Schäfer
02e78bcd76
JVM IR: Use package visibility for fields of captured variables
2020-08-28 20:03:19 +02:00
Dmitry Petrov
8f0aecce58
JVM_IR: KT-40330 Unify field names for captured 'this' with JVM
...
NB some cases such as captured extension receiver for an extension
lambda are not supported yet; to be discussed, to what extent should we
actually follow JVM code shape here.
2020-08-19 11:07:41 +03:00
Ilmir Usmanov
31e4ddafd1
Minor. Add test with boolean parameter
2020-08-13 15:52:53 +02:00
Ilmir Usmanov
bcbb050326
Use fields for spilled variables for lambda parameters as well
...
In other words, do not generate p$ fields if we can use L$ fields,
which are being cleaned up.
#KT-16222 Fixed
2020-08-13 15:52:51 +02:00
Ilmir Usmanov
405c9743ef
Do not spill dispatch receiver of suspend functions if it is not used
...
#KT-20571
2020-08-04 15:42:36 +02:00
Dmitry Petrov
e11c90f26c
JVM_IR: KT-40293 Box return type for DefaultImpls methods if required
2020-07-31 14:48:12 +03:00
Ilmir Usmanov
60875f96b4
Do not take LVT into account when calculating liveness of variables
2020-07-29 00:01:09 +02:00
Alexander Udalov
b9243aad24
Minor, fix test data in bytecodeListing/specialBridges
2020-07-28 12:12:39 +02:00
Dmitry Petrov
43fcb2330e
JVM_IR: fix source file name for mutlifile class facades
2020-07-27 19:13:37 +03:00
Dmitry Petrov
89a0b3e944
Check class source in bytecode listing tests
2020-07-27 19:13:37 +03:00
Steven Schäfer
9d63412b3e
JVM IR: Produce correct generic signatures for special bridge methods
2020-07-27 17:02:24 +02:00
Dmitry Petrov
e2a4ca10d6
JVM_IR: fix inner class attributes for private class in interface
2020-07-23 19:13:28 +03:00
Dmitry Petrov
0741781462
Compare inner class access flags in bytecode listing tests
2020-07-23 19:13:28 +03:00
Dmitry Petrov
1272162a7f
JVM_IR: generate "safe" names for functions in init blocks
2020-07-22 19:49:48 +03:00
Dmitry Petrov
d93885e71c
Add tests for deprecated properties
2020-07-21 22:25:44 +03:00
Dmitry Petrov
e84339a0d3
JVM_IR: fields for deprecated enum entries have ACC_DEPRECATED flag
...
'Deprecated' annotation can't be applied to field itself.
2020-07-21 22:25:44 +03:00
Dmitry Petrov
2e31f95554
Update testData
2020-07-20 20:04:32 +03:00
Kristoffer Andersen
8d79a6ae03
[JVM IR] Copy inline class constructor annotations
2020-07-13 11:50:34 +03:00
Dmitry Petrov
b75de60afb
Minor: mute failing test
2020-07-06 10:47:10 +03:00
Dmitry Petrov
17c15cfe0a
JVM, JVM_IR: update bytecode listing testData for inline classes
2020-07-02 22:39:06 +03:00
Dmitry Petrov
d37b616e1f
JVM_IR: Fix enum classes ABI
...
1. Enum entry fields don't have nullability annotations.
2. Enum class special methods (values, valueOf) are not 'final'
(although they probably should be, javac generates corresponding
methods without ACC_FINAL flag).
3. Enum class special methods don't have nullability annotations.
4. Don't generate synthetic accessor for enum entry class constructor.
KT-37019 KT-37020 KT-37021
2020-06-30 18:24:25 +03:00
Dmitry Petrov
e4198466b8
JVM_IR: No nullability annotations on static lambda instances
2020-06-29 19:32:03 +03:00
Dmitry Petrov
eefa621c56
JVM_IR KT-37006: InlineOnly property accessors are private in bytecode
2020-06-29 19:08:58 +03:00
Alexander Udalov
b94a4d9fc3
Render more information on inner classes in bytecode listing tests
2020-06-29 17:33:39 +02:00
Dmitry Petrov
2137a4b1e5
JVM, JVM_IR: no nullability annotations on private and synthetic methods
...
NB it looks like it doesn't cover all cases, e.g., some synthetic
methods generated for suspend functions.
2020-06-26 18:51:35 +03:00
Dmitry Petrov
64e47265e1
JVM, JVM_IR: no nullability annotations on lateinit backing fields
2020-06-26 15:08:23 +03:00
Dmitry Petrov
3f266aafb4
JVM: no nullability annotations on private and synthetic fields
2020-06-25 22:31:12 +03:00
Kristoffer Andersen
b95d3e711e
[JVM IR] KT-36985: $default respects @Deprecated
...
$default dispatch methods gains @Deprecated if the original function
with default arguments has it.
2020-06-25 18:43:45 +03:00
Dmitry Petrov
4e92c79bc4
JVM_IR: don't generate nullability annotations on synthetic declarations
...
Fixes KT-36993 and some other related issues.
2020-06-23 20:51:48 +03:00
Dmitry Petrov
5bfec7f6bc
JVM: don't generate nullability annotations on property delegate fields
...
Such fields are private, so these annotations are redundant.
They were incorrect, anyway (property type was used instead of delegate
type).
2020-06-23 20:18:42 +03:00
Mikhail Bogdanov
41511898a1
Deprecate DefaultImpl methods in compatibility mode
2020-06-23 18:59:04 +02:00
Dmitry Petrov
e9231b5624
JVM: Generate object and companion object INSTANCE fields as @NotNull
2020-06-22 16:28:00 +03:00
Dmitry Petrov
a493b21c7c
JVM_IR: Deprecation cycle for companion object instance visibility
2020-06-19 20:41:54 +03:00
Mikhail Bogdanov
e93bcc55ae
Revert "Deprecate DefaultImpl methods in compatibility mode"
...
This reverts commit 6c9c2a28
2020-06-19 12:58:46 +02:00
Mikhail Bogdanov
6c9c2a287d
Deprecate DefaultImpl methods in compatibility mode
2020-06-19 12:23:05 +02:00
Mikhail Bogdanov
9c0b96af71
Report error on missed specialization in compatibility mode
...
#KT-39603 Fixed
2020-06-19 11:57:36 +02:00
Mikhail Bogdanov
b8f0ad2111
Generate nullability annotations on this receiver in DefaultImpls. Don't generate nullability annotations in private methods
...
#KT-36969 Fixed
2020-06-19 11:57:35 +02:00
Mikhail Bogdanov
5bdf3d5757
Don't generate compatibility stubs for @JvmDefaultWithoutCompatibility
2020-06-19 11:57:35 +02:00
Dmitry Petrov
4739adb6dc
KT-36992 Do not generate annotations on synthetic accessors
...
Also, do not generate nullability annotations on synthetic methods.
2020-06-17 23:54:51 +03:00
Ilmir Usmanov
d9821412d0
Do not generate fields for unused suspend lambda parameters
...
This also allows us to not spill them in the lambda.
But, disable this optimization for local named functions.
#KT-16222 In progress
2020-06-17 12:00:25 +02:00
Dmitry Petrov
02f6a03ff7
JVM_IR: fix nullability annotations on synthetic marker parameters
...
Synthetic marker parameters (of type
Lkotlin/jvm/internal/DefaultConstructorMarker;) don't have annotations
(including nullability annotations).
Also, for constructor accessors corresponding parameter should be
nullable (since we pass 'null' as an argument there).
KT-36966
2020-06-16 21:29:52 +03:00
Steven Schäfer
3291cf7a6e
JVM IR: Mark lateinit fields as NotNull
...
This is needed for compatibility with the JVM backend.
2020-06-04 17:52:56 +02:00
Alexander Udalov
5647a935a2
JVM IR: do not generate DefaultImpls delegate for collection fake overrides
...
In the newly added test, prior to this change, JVM IR was generating
DefaultImpls classes with calls to things like
`kotlin/collections/MutableList$DefaultImpls.spliterator` and other
default methods present in JDK 8+. This obviously didn't make much
sense. Although these weren't explicitly mentioned anywhere in the
bytecode, they caused some validation tools to report errors (e.g.
animalsniffer used in arrow).
2020-06-04 14:27:46 +02:00