Ilya Chernikov
c83614386e
[minor] FIR: (temporarily) fix testdata due to different builtins behavior
2021-07-16 02:24:45 +03:00
Ilya Chernikov
c9b6847d83
FIR: Add test on delegated member with default param in overridden...
...
sensitive to the file processing order, therefore failing on the
current fir2ir at least with the new irBuiltIns
2021-07-16 02:24:36 +03:00
Ilya Chernikov
5b2acea98f
FIR: Add analysis flag for loading IR builtins from sources
2021-07-16 02:24:32 +03:00
Ilya Chernikov
8f5d5c3ace
FIR: Fixes in testdata after implementing FIR-specific IrBuiltIns
2021-07-16 02:24:29 +03:00
Mikhael Bogdanov
f080dbb78c
Update resolveAnnotations tests in new infrastructure
2021-07-15 17:08:17 +00:00
Mikhael Bogdanov
3aeb9291fe
Move resolveAnnotations tests into diagnostics tests
2021-07-15 17:08:16 +00:00
Dmitry Petrov
8ea4916d64
JVM_IR KT-47739 recognize fake override external stubs
2021-07-15 19:20:39 +03:00
Ivan Kochurkin
dd54338ec0
[FIR] Fix positioning and detecting of WRONG_NUMBER_OF_TYPE_ARGUMENTS
...
Refactor code and fix compilation errors caused by changes to symbol.fir
2021-07-15 19:02:58 +03:00
Ivan Kochurkin
0c25d280ee
[FIR] Fix calculating of source of TypeArgumentList, add source to FirQualifierPart
...
Fix positioning for TYPE_ARGUMENTS_NOT_ALLOWED
2021-07-15 19:02:54 +03:00
Ivan Kochurkin
28a6928873
[FIR] Check rest OUTER_CLASS_ARGUMENTS_REQUIRED diagnostics on checkers stage
...
Add FirOuterClassArgumentsRequiredChecker
2021-07-15 19:02:45 +03:00
Ivan Kochurkin
0fc8be4d60
[FIR] Implement OUTER_CLASS_ARGUMENTS_REQUIRED diagnostics
2021-07-15 19:02:40 +03:00
Georgy Bronnikov
28bff2ba4f
JVM_IR: add test for calling monitorEnter/Exit from serialized code.
2021-07-14 21:20:38 +03:00
Georgy Bronnikov
fa4efd3303
JVM_IR: fix deserialization of Java static field symbols
2021-07-14 21:20:35 +03:00
Georgy Bronnikov
7bbc04b6a2
JVM_IR: reconstruct fake overrides after IR deserialization.
...
We need to keep track of local signatures for deserialized symbols.
2021-07-14 21:20:29 +03:00
Georgy Bronnikov
96ce124268
JVM_IR: serialize fake overrides in IR
2021-07-14 21:20:21 +03:00
Georgy Bronnikov
b2617199bc
JVM_IR: call serialization for IR.
...
Serializer for IR is called when -Xserialize-ir flag is set.
2021-07-14 21:20:04 +03:00
Mikhail Glukhikh
113d2653aa
Drop deprecated -Xexperimental flag from compiler and tests
2021-07-14 21:18:23 +03:00
pyos
07cb3a5ff8
JVM: do not reify methods of objects in lambdas
...
All type parameters used in them are not from the inline function
anyway.
2021-07-14 10:11:05 +02:00
pyos
100d2d629c
JVM: inline default lambda coercions from bridge invoke
...
The type of the default lambda may be a subtype of the parameter type,
so we can't really generate our own coercions at all as we don't know
the precise Kotlin type of the `invoke` method.
2021-07-14 10:11:05 +02:00
Dmitry Petrov
dc16d66fb1
Minor: regenerate tests
2021-07-13 21:23:17 +03:00
pyos
3dc7b6c3ee
IR: preserve argument evaluation order more carefully
...
1. receivers should be evaluated before named arguments;
2. just because an argument has no side effects doesn't mean it is not
affected by the other arguments' side effects - in that case it
should still be evaluated in source order.
#KT-47660 Fixed
2021-07-13 21:23:15 +03:00
Dmitriy Novozhilov
47b0071560
[FE 1.0] Properly handle intersection types in check if cast possible or not
...
^KT-47685 Fixed
2021-07-13 10:35:03 +03:00
Dmitriy Novozhilov
7b5a5f5682
[FE 1.0] Report USELESS_IS_CHECK if is expression is always false
...
^KT-47684 Fixed
2021-07-13 10:35:01 +03:00
Dmitriy Novozhilov
4deb935f76
[FIR] Mark value classes as inline in raw fir building
2021-07-13 10:31:23 +03:00
pyos
d988853c11
JVM_IR: optimize out redundant delegated property receiver fields
...
Now this:
class C {
val x = something
val y by x::property
}
is *exactly* the same as this:
class C {
val x = something
val y get() = x.property
}
(plus a `getY$delegate` method)
2021-07-12 22:38:45 +02:00
pyos
6897e89bbc
JVM: add tests for optimized getDelegate
2021-07-12 22:38:45 +02:00
pyos
5d0102a966
JVM_IR: generate $delegate methods for val x by ::y
2021-07-12 22:38:44 +02:00
pyos
7ae4303e1b
JVM_IR: slightly refactor JvmPropertiesLowering
...
to make it easier to generate different kinds of synthetic methods.
#KT-47609 Fixed
2021-07-12 22:38:44 +02:00
pyos
e49410e07b
JVM_IR: optimize delegation by property references
...
E.g. a statement like
var x by ::y
is semantically equivalent to
var x
get() = y
set(value) { y = value }
and thus does not need a full property reference object, or even a field
if the receiver is not bound.
#KT-39054 Fixed
#KT-47102 Fixed
2021-07-12 22:38:43 +02:00
Ivan Kochurkin
66e052b9b3
[FIR] Implement SPREAD_OF_NULLABLE
2021-07-12 23:16:47 +03:00
Mikhail Glukhikh
a997a98054
Commend -Xopt-in deprecation warning (due to bootstrap problems)
2021-07-12 21:26:21 +03:00
Mikhail Glukhikh
a92ab1bc86
Deprecate EXPERIMENTAL_IS_NOT_ENABLED diagnostic #KT-47638 Fixed
2021-07-12 21:26:20 +03:00
Mikhail Glukhikh
5871f3d663
CLI: support -option=value syntax for non-advanced flags #KT-47640 Fixed
2021-07-12 21:26:19 +03:00
Mikhail Glukhikh
d8417fd622
Introduce -opt-in stable compiler option instead of -Xopt-in
...
#KT-47099 Fixed
2021-07-12 21:26:18 +03:00
Mikhail Glukhikh
195b6d1fb1
Deprecate -Xuse-experimental #KT-47623 Fixed
2021-07-12 21:26:16 +03:00
Mikhail Glukhikh
d9531f0c61
Don't report EXPERIMENTAL_ANNOTATION_ON_WRONG_TARGET for forbidden targets
...
#KT-47589 Fixed
2021-07-12 21:26:15 +03:00
Ilmir Usmanov
ac7538a269
Set receivers for inline class default function stub calls
...
Default function stubs have dispatch and receiver parameters, but
inline class methods are static by design with receivers as ordinary
parameters. So, take these parameters and set them as receivers during
lowerings.
#KT-46230: Fixed
2021-07-12 19:46:09 +03:00
Victor Petukhov
33a281c637
Introduce separate compiler flag for unrestricted builder inference
2021-07-12 13:57:13 +03:00
Dmitry Petrov
1f8d6d6edb
JVM additional DCE tests
2021-07-12 11:09:30 +03:00
Victor Petukhov
a8e28e4b69
Update compiler tests
2021-07-09 19:21:28 +03:00
Victor Petukhov
584facc95f
Fix fir-related problems and tests for inferring self types
2021-07-09 19:21:25 +03:00
Victor Petukhov
9e48ef85ea
Add tests for inferring self types from Java
2021-07-09 19:21:22 +03:00
Victor Petukhov
3b16865152
Don't approximate captured types while substitute them in upper bound position
2021-07-09 19:21:17 +03:00
Victor Petukhov
3787099a38
Put the type inference on calls with self types under the compiler flag
2021-07-09 19:20:56 +03:00
Victor Petukhov
51c5a54e31
Support type inference for self type materialization calls
2021-07-09 19:20:54 +03:00
Mikhail Zarechenskiy
44cf4be1e5
Inference for some kind of self types
2021-07-09 19:20:52 +03:00
Alexander Udalov
d43ed1cf75
Minor, add test on typeOf with intersection type
2021-07-09 14:53:57 +02:00
Alexander Udalov
a7e48c3af1
Improve toString of platform types created by typeOf
...
In the stdlib implementation, render "!" if the type is only
nullability-flexible. Otherwise, render "($lower..$upper)".
Note that full kotlin-reflect has a much more complicated logic (see
`DescriptorRendererImpl.renderFlexibleType`) that renders things like
`(Mutable)List` and so on. It is not a goal of the stdlib implementation
to replicate all of that, since it requires copying a large amount of
code, namely the entirety of `JavaToKotlinClassMap` to map Java class
names to Kotlin.
2021-07-09 14:53:56 +02:00
Alexander Udalov
ddfa94e7e9
Support Nothing type in typeOf
...
The proper support will come in KT-15518, but that would be a breaking
change even for stable Kotlin without kotlin-reflect. Before that issue
is fixed, represent Nothing in types with the Void class, and use a flag
in the no-reflect implementation to remember that it's not actually the
Void class itself.
#KT-39166 Fixed
2021-07-09 14:40:05 +02:00
Alexander Udalov
02774fae0c
Report error on non-reified type parameter with recursive bound in typeOf
...
Instead of throwing an exception.
#KT-40173
2021-07-09 14:31:52 +02:00