Dmitry Petrov
4ec369ac5b
JVM_IR fix special bridge generation for inline classes
2021-02-01 17:57:58 +03:00
Alexander Udalov
8172ae5d89
Fix codegen test classLiteralWithExpectedType.kt on Android
...
Similar to changes in d022bb0248 , this test started to fail because
`AnnotationTarget.TYPE` is mapped to `ElementType.TYPE_USE` if JVM
target is >= 1.8. In codegen tests on Android, we're running the
emulator of version 19 which is less than 26, where `TYPE_USE` has first
appeared.
2021-02-01 15:54:01 +01:00
pyos
ad53fc931e
JVM: optimize temporary kotlin.jvm.internal.Refs as well
...
i.e. remove the condition that there must be an LVT entry. Such
temporary `Ref`s can be created, for example, by the JVM_IR backend
if a lambda inlined at an IR level (e.g. argument to `assert`/`Array`)
is the target of a non-local return from a function inlined at bytecode
level (e.g. `run`):
IntArray(n) { i ->
intOrNull?.let { return@IntArray it }
someInt
}
->
val `tmp$0` = IntArray(n)
for (i in 0 until `tmp$0`.size) {
var `tmp$1`: Int
do {
intOrNull?.let {
`tmp$1` = it // causes `tmp$1` to become an IntRef
break
}
`tmp$1` = someInt
} while (false)
`tmp$0`[i] = `tmp$1`
}
2021-02-01 15:51:31 +01:00
pyos
0f2ca5d84c
JVM_IR: support non-local break/continue in the inliner
...
Not in the frontend or psi2ir, though, so this not a complete
implementation of KT-1436, but rather a part of it that is currently
useful to make other code compile. In particular, lambdas passed to
array constructors and JVM-style `assert` are inlined as IR returnable
blocks, which are then converted into `do { ... } while (false)` loops,
so non-local returns from them become non-local `break`s.
2021-02-01 15:51:31 +01:00
Alexander Udalov
d022bb0248
Switch default JVM target to 1.8
...
#KT-29405 Fixed
2021-02-01 11:54:04 +01:00
Mikhael Bogdanov
9f9c8e3d77
Mute stream api test on Android
2021-01-29 18:22:16 +01:00
Mikhael Bogdanov
be9ef8f3c8
Remove obsolete DxChecker
2021-01-29 17:47:37 +01:00
Dmitry Petrov
5d7dc5fa39
JVM_IR indy-SAM conversions: minor updates
...
See: KT-44575 KT-44577
KT-44278 KT-26060 KT-42621
2021-01-29 12:59:48 +03:00
Dmitry Petrov
f34224ecee
JVM_IR indy-SAM conversions: tests for function references equality
...
(SAM conversion using LambdaMetafactory is not used for function refs).
KT-44278 KT-26060 KT-42621
2021-01-29 12:59:48 +03:00
Dmitry Petrov
f0abd8bc68
JVM_IR indy-SAM conversions: prohibit in crossinline lambdas
...
KT-44278 KT-26060 KT-42621
2021-01-29 12:59:47 +03:00
Dmitry Petrov
ad1d80d700
JVM_IR indy-SAM conversions: add more tests
...
KT-44278 KT-26060 KT-42621
2021-01-29 12:59:47 +03:00
Dmitry Petrov
98b0c07b18
JVM_IR indy-SAM conversions: inline funs and lambdas
...
KT-44278 KT-26060 KT-42621
2021-01-29 12:59:47 +03:00
Dmitry Petrov
4da2f3d9d4
JVM_IR indy-SAM conversions: use old scheme for suspend funs
...
KT-44278 KT-26060 KT-42621
2021-01-29 12:59:46 +03:00
Dmitry Petrov
1f16b96796
JVM_IR indy-SAM conversions: inline classes
...
KT-44278 KT-26060 KT-42621
2021-01-29 12:59:46 +03:00
Dmitry Petrov
f30e25aa52
JVM_IR indy-SAM conversions: more cases
...
KT-44278 KT-26060 KT-42621
2021-01-29 12:59:45 +03:00
Dmitry Petrov
3140cca050
JVM_IR indy-SAM conversions, 1st passing tests
...
KT-44278 KT-26060 KT-42621
2021-01-29 12:59:45 +03:00
Denis.Zharkov
7e6abffb62
FIR: Fix incorrectly serialized type
...
See the test added: there's a non-denotable T!! type inside flexible type
that wasn't handled before.
ConeKotlinType::contains handles flexible types content and some other cases
Also, it has better asymptotics
2021-01-29 10:50:23 +03:00
Denis.Zharkov
5c62ee4ba8
FIR2IR: Fix complex cases of smart cast expressions used as dispatch receiver
...
It might be not only <ExpressionWithSmartCast>(a).foo(), but also
id(<ExpressionWithSmartCast>(a)).foo() and many other cases
2021-01-29 10:50:22 +03:00
Denis.Zharkov
b1b89e6f5f
FIR2IR: Fix smart-cast approximation implicit receiver
...
Previously, it was always cast to the first type of smart cast variants list
independently of callee symbol that might be present in the member scope
of a different type
2021-01-29 10:50:22 +03:00
Mikhael Bogdanov
1c612376dd
Disable some android box test
2021-01-28 18:30:48 +01:00
Mikhael Bogdanov
0ad24f5346
Enable Android box test
2021-01-28 18:01:21 +01:00
Mikhael Bogdanov
b16b1b3b78
Test for obsolete KT-26360
...
#KT-26360
2021-01-28 18:01:21 +01:00
Mikhail Glukhikh
1c80c5610d
FIR: fix serialization of accessor with source-level annotations
2021-01-28 13:21:16 +03:00
Victor Petukhov
670f029bdf
Allow passing non-spread arrays into a vararg parameter after sam properly, through propagating vararg element type to a sam adapter from the original parameter descriptor
2021-01-28 13:19:31 +03:00
Victor Petukhov
af3eaf5d71
Add explicit disabling ProhibitVarargAsArrayAfterSamArgument feature in tests as it's enabled by default in 1.5
2021-01-28 13:19:31 +03:00
Victor Petukhov
e39bbcd937
Unmute test which checks the evaluation order of value arguments with varargs.
...
The corresponding feature (UseCorrectExecutionOrderForVarargArguments) is enabled by default in 1.5.
2021-01-28 13:19:31 +03:00
Dmitriy Novozhilov
6a2796b067
[Test] Fix source maps in testdata according to KT-37704
2021-01-28 13:19:29 +03:00
Mikhail Glukhikh
ce1f9882df
FIR2IR: Fix mapping for intersection overrides of deserialized functions
2021-01-27 15:42:04 +03:00
Mikhail Glukhikh
76c2288e21
IrInterpreter: interpret IrGetField properly
2021-01-26 16:19:14 +03:00
Mikhail Glukhikh
b311e95487
FIR2IR: don't generate IR getter for const library properties
2021-01-26 16:10:09 +03:00
Dmitry Petrov
708e6914bd
JVM JVM_IR hide sealed class constructors
2021-01-25 17:29:38 +03:00
Dmitriy Novozhilov
f61a318c9d
[Test] Migrate AbstractBytecodeTextTest to new test infrastructure
2021-01-25 17:11:21 +03:00
Dmitriy Novozhilov
98c22f9e59
[TD] Add forgotten bytecode dump
2021-01-25 17:08:32 +03:00
Dmitriy Novozhilov
5c0cfa87ba
[Test] Support some jvm codegen specific configuration directives
2021-01-25 17:08:31 +03:00
Denis.Zharkov
3a3d2ee3e9
FIR2IR: Fix mapping for intersection overrides of deserialized properties
2021-01-25 12:29:31 +03:00
Mikhail Glukhikh
94e613dd01
FIR: support custom annotation-based type attributes
2021-01-23 10:56:42 +03:00
Mikhail Glukhikh
4cd6266bce
FIR: fix suspend type serialization
2021-01-23 10:56:40 +03:00
Mikhail Glukhikh
afe335e504
FIR: serialize ExtensionFunctionType attribute
2021-01-23 10:56:37 +03:00
pyos
4a76ea6ecb
JVM: regenerate objects if they have been regenerated in parent contexts
...
This is a hack to work around the fact that type mappings should not be
inherited by inlining contexts for lambdas called from anonymous
objects. As the lambda can call the inline function again, this could
produce a reference to the original object, which is remapped to a new
type in the parent context. Unfortunately, there are many redundant
`MethodRemapper`s between the lambda and the class file, so simply
editing `TypeRemapper` does not work. Hence, this hack. For now.
(Issue found by compiling IntelliJ IDEA BTW.)
2021-01-22 13:39:20 +01:00
Mads Ager
ef36b81c67
[JVM_IR] Reduce the amount of super suffixes on accesibility bridges.
...
The super suffix was used for any static field/method that needed
an accessor. We should only use it when that field or method is
inherited.
2021-01-22 13:20:25 +01:00
Dmitriy Novozhilov
c423750962
[TD] Fix incorrect module structure directives in test data file
2021-01-22 13:51:34 +03:00
Dmitriy Novozhilov
6a7cd0c811
[Test] Add ability to specify applicability of diagnostic to module or file
2021-01-22 13:51:19 +03:00
Denis.Zharkov
5f0d00a83f
FIR: Use proper tower data contexts for postponed callable references
...
E.g., it should contain local scopes of containing lambdas
2021-01-21 18:53:03 +03:00
Denis.Zharkov
ad30c6c380
FIR: Fix callable references resolution when they're being returned from lambdas
2021-01-21 18:53:03 +03:00
Ilmir Usmanov
704366e531
JVM: Mark suspend lambda receiver as used if callable reference
...
accesses it.
#KT-44131 Fixed
2021-01-21 12:47:59 +01:00
Mikhael Bogdanov
de00f72fa3
Generate linenumber for inline call site in case of implicit iterator/hasNext/next calls in for loop
...
Otherwise -1 is generated in smap
2021-01-21 12:04:09 +01:00
Ilmir Usmanov
952576e98f
JVM_IR: Do not unbox Result parameter if it not only one inline class
...
parameter, since in this case, the compiler generates a bridge, where
the result is unboxed.
2021-01-20 18:30:00 +01:00
Ilmir Usmanov
d48f92775b
JVM_IR: Do not unbox Result parameter in invoke if there is a bridge
...
since the bridge unboxes it.
#KT-44141 Fixed
2021-01-20 18:29:58 +01:00
Ilya Goncharov
0ddb603eaa
[JS IR] Fix of test with method in abstract class calling extension on super type
2021-01-20 20:01:42 +03:00
Mikhael Bogdanov
91717cdcdd
Perform inline checks in IR tests
2021-01-20 15:23:09 +01:00