Commit Graph

29085 Commits

Author SHA1 Message Date
Alexander Udalov 0681231e99 Introduce AdaptedFunctionReference runtime class
It's used as a superclass for anonymous classes for adapted function
references. Its main feature is that it _doesn't_ inherit from KFunction
(as opposed to FunctionReference), as per the decision to postpone
reflection support for adapted function references in KT-36024.

 #KT-36024 Fixed
2020-04-08 19:15:38 +02:00
Dmitry Petrov d1c5a42124 KT-36024 Generate adapted callable references as lambdas
Make sure both JVM and JVM_IR use the same information to determine
whether a callable reference requires argument adaptation.
2020-04-08 19:02:33 +02:00
Dmitry Petrov ddf7f53118 Add more tests on inline class boxing in covariant overrides 2020-04-08 19:56:26 +03:00
Dmitry Petrov 9615b20e5d Box inline class return value in lambdas (including suspend lambdas) 2020-04-08 19:56:26 +03:00
simon.ogorodnik f573719cc1 [FIR] Fix missing receiver type if anonymous function without label 2020-04-08 14:56:17 +03:00
simon.ogorodnik d2fd377605 [FIR] Add rendering of delegating constructor calls to html dump 2020-04-08 14:56:16 +03:00
Anton Bannykh 998218716d IR: make lateinit lowering traverse local classes 2020-04-08 14:44:25 +03:00
pyos 0037d5a7c8 JVM: erase conditional suspension markers from inline-only functions
Otherwise, the generated bytecode is unnecessarily suboptimal in some
(arguably weird) cases.

In the JVM backend, this was an accidental regression in #3260, as I had
not noticed that effectively inline-only functions were handled by a
separate branch in FunctionCodegen. In JVM_IR, I'm pretty sure the
redundant markers have always been there as `isSuspensionPoint` in
ExpressionCodegen never checked for effectively-inline-only-ness.
2020-04-08 12:31:23 +02:00
Dmitry Petrov 0c21d63290 Box inline class return value in covariant override of suspend fun 2020-04-08 10:50:58 +03:00
Dmitriy Novozhilov 8a2b39d647 [FIR] Add checking receivers of callable references 2020-04-08 10:38:45 +03:00
Igor Chevdar b54148a6f1 Added a test on lateinit var inside a local class 2020-04-08 10:33:14 +03:00
Mikhail Bogdanov 1772f20d48 Minor. Add smap test for multifile facade 2020-04-08 07:26:55 +02:00
pyos 9334327bbf JVM_IR: unmute two more tests fixed by #3106 2020-04-08 07:04:16 +02:00
pyos b3e124ad66 Add a test where classes call inline functions from each other 2020-04-08 07:04:16 +02:00
pyos 9ed73439f8 JVM_IR: delay writes to the source map until generateMethod
`generateMethodNode` should not have any side effects for the output to
be stable under incremental compilation.
2020-04-08 07:04:16 +02:00
pyos 495cefe65d Dump bytecode in a test that shows the effect of recompiling inline funs 2020-04-08 07:04:16 +02:00
pyos f765963056 Split JVM backend diagnostics test into IR and non-IR versions
The IR backend no longer generates redundant INLINE_CALL_CYCLEs.
2020-04-08 07:04:16 +02:00
pyos 82899e6243 JVM_IR: reuse MethodNodes for inline functions in same module
This fixes the weird cases when a class gets overwritten by an imperfect
copy, reduces the number of classes in the output if an inline function
contains an inline call that causes it to have regenerated anonymous
objects, and makes inlining of same module functions a bit faster in
general. On the other hand, this may increase memory footprint a bit
because classes cannot be flushed to the output jar, as the inliner
would not be able to locate classes for anonymous objects if they have
already been unloaded from memory.
2020-04-08 07:04:16 +02:00
Alexander Gorshenev 97be5617ca Renamed -Xklib-mpp to -Xexpect-actual-linker to reduce user confusion 2020-04-08 05:23:12 +03:00
Mikhail Zarechenskiy 86fd4da567 [UAST] Fix mapping types containing type aliases
#KT-27935 Fixed
2020-04-08 01:25:14 +03:00
Mikhail Zarechenskiy 73e1ddc505 Allow Result as a return type if one enabled inline classes explicitly
#KT-38042 Fixed
2020-04-08 01:25:13 +03:00
Svyatoslav Kuzmich 3ec13d5bd6 [JS IR BE] Support companion objects in external interfaces
These objects are referenced but value is not actually used.
Replace access to these references with null literals.
2020-04-07 21:19:14 +03:00
Svyatoslav Kuzmich f4b94ccbc8 Update klib metadata version to 1.4.0 2020-04-07 21:19:14 +03:00
Kevin Bierhoff 7448761dfd only stub default constructor when compiling against .java source files 2020-04-07 17:48:39 +02:00
Denis Zharkov c83860187c FIR: Add abstract equals/hashCode to ConeKotlinType
Otherwise they are incosistent when being added to sets of constraints
during type inference
2020-04-07 17:54:55 +03:00
Denis Zharkov 65e90743df FIR: Fix hanging inference case with intersection types 2020-04-07 17:54:55 +03:00
Denis Zharkov 81d9cf76f2 FIR: Add java.io.Serializable as supertypes to built-in classes 2020-04-07 17:54:55 +03:00
Denis Zharkov 168c7f306f FIR: Fix ambiguity for invoke candidates on qualifier receiver 2020-04-07 17:54:55 +03:00
Denis Zharkov 4cd93a9fec FIR: Add test for discrepancy in call resolution for qualifiers with old FE
^KT-38031 Open
2020-04-07 17:54:55 +03:00
Mads Ager 03fb49bb38 [JVM_IR] Improve debugging behavior of inline functions
Specifically, this commit improves the stepping behavior of the IR
backend around functions with defaults.

  - Improved line numbers in the default handler itself for better
    stepping when inlined.

  - Improved source information on default arguments

  - Improved test coverage of stepping behavior in old and IR backends.

Improves the stepping behaviour around inline methods with default
arguments. In particular, we now accurately step through the
evaluation of default arguments, but do _not_ spuriously show the exit
from the $default handler.
2020-04-07 16:52:45 +02:00
pyos 516692008f JVM: add tests fixed by the last two commits
One was broken on JVM, the other on JVM_IR.
2020-04-07 15:42:41 +02:00
pyos 829343cf6f JVM: surround captured lambdas with conditional suspension markers 2020-04-07 15:42:41 +02:00
pyos c650c9570f JVM: use conditional suspension point markers 2020-04-07 15:42:41 +02:00
simon.ogorodnik 42a48ef312 [FIR] Improve constraint errors rendering in html dump 2020-04-07 16:24:59 +03:00
simon.ogorodnik 2c8a9bf437 [FIR] Fix nullability rendering for class like types in html dump 2020-04-07 16:24:59 +03:00
simon.ogorodnik bd826f38bc [FIR] Fix specificity comparision for unsigned integers 2020-04-07 16:24:58 +03:00
simon.ogorodnik 851e2dbb68 [FIR] Implement equals & hashCode for candidates 2020-04-07 16:24:58 +03:00
simon.ogorodnik 7d3b2558f0 [FIR] Improve rendering for unsigned literals in html dump 2020-04-07 16:24:58 +03:00
Victor Turansky 103fd093e1 KT-34770 JS. Configurable properties. IR 2020-04-07 16:14:21 +03:00
Dmitry Petrov dae8872aba KT-37779 Treat named value arguments in vararg as arguments with '*' 2020-04-07 15:40:43 +03:00
Jinseong Jeon fa9d79392f [FIR] Handle lateinit local variable properly 2020-04-07 14:06:38 +03:00
Victor Petukhov 6eb2875690 [FIR-TEST] Actualize test added in 661812b255 2020-04-07 13:51:36 +03:00
Igor Chevdar ae906c163d [IR] Added possibility to customize inline functions resolver 2020-04-07 13:25:46 +03:00
Victor Petukhov 661812b255 NI: add test for KT-37628 2020-04-07 11:31:29 +03:00
Mikhail Bogdanov f966ce2431 Minor. Updated used JDKs in test for different JDKs 2020-04-07 09:43:46 +02:00
Ilya Matveev f7f7d237e0 [KLIB] Support unpacked klibs with dots in names in ToolingResolve 2020-04-07 12:47:54 +07:00
Mikhail Glukhikh 565340667c Fix black box test data generation (IGNORE_BACKEND_FIR) 2020-04-06 18:25:04 +03:00
Dmitriy Dolovov 4c6bddf6be KLIB: Fix reading property lists in Properties.propertyList()
1. If property is absent, or contains empty string or a string consisting only of whitespace characters, Properties.propertyList() should always return empty List<String>.
2. If property starts or ends with whitespace characters, Properties.propertyList() should not include empty-string values for whitespace prefix or suffix.
2020-04-06 21:36:26 +07:00
Mikhail Glukhikh 32748ea741 [FIR] Change char constant rendering to prevent encoding inconsistencies 2020-04-06 16:41:58 +03:00
Mikhail Glukhikh 4cb4aae7ee [FIR2IR] Move backing field creation in Fir2IrDeclarationStorage 2020-04-06 16:41:58 +03:00