Commit Graph

26554 Commits

Author SHA1 Message Date
pyos ce0fb662c0 JVM_IR: fold inline lambdas when computing OUTERCLASS
so that the enclosing method of objects defined inside lambdas is the
one they are declared in.

Note that this does not fix *all* enclosingInfo tests because JVM_IR
currently follows the KT-28064 proposal, i.e. does not regenerate
objects defined inside lambdas under any circumstances. For example,
this causes test boxInline/enclosingInfo/inlineChain2.kt to fail because
the enclosing method of objects is _2Kt.box instead of (non-existent in
source code) `_2Kt$box$inlined$call$1.invoke` or whatever. What's more
important is that OUTERCLASS no longer points to a non-existent
`box$lambda-N` and therefore `.enclosingMethod` no longer throws.
2019-11-12 12:44:46 +01:00
pyos f906524d76 Mark a SAM conversion test as JVM-only 2019-11-12 12:24:55 +01:00
Mikhail Glukhikh c66b6b6a3a FIR visibility check: support companion private members correctly 2019-11-12 11:24:31 +03:00
Mikhail Glukhikh e96aeb77a6 FIR visibility check: support private class members 2019-11-12 11:24:25 +03:00
Mikhail Glukhikh a5ad05083a Add some stubs for FIR visibility checking 2019-11-12 11:24:24 +03:00
Mikhail Glukhikh 7e07b88eab Code cleanup: FirCallResolver 2019-11-12 11:03:59 +03:00
Mikhail Glukhikh ac13a8c8b2 Cone conflict resolver: extract JVM equivalent call filtering to a separate class 2019-11-12 11:03:58 +03:00
Mikhail Glukhikh 96c5003a13 Cone conflict resolver: filter equivalent top-level callables 2019-11-12 11:03:58 +03:00
Mark Punzalan dc10d25661 Ensure ForLoopsLowering only handles the CharSequence.iterator()
extension function from the standard library (kotlin.text.iterator()).
2019-11-12 08:09:30 +01:00
Simon Ogorodnik 1bd861c5eb Save use_ni key state to log 2019-11-11 20:32:07 +03:00
Alexander Udalov 57a674e9e6 Make fast class files reading mode default in compiler tests
This makes sense because this mode is the default in the production
compiler. Forgetting to enable it where necessary led to different
bizarre test failures, see for example changes around 3fee84b966 and
KT-34826
2019-11-11 15:40:49 +01:00
Mikhail Glukhikh dde2d08cfc FIR resolve: add extra test for generic with bounds in Java 2019-11-11 17:07:58 +03:00
Mikhail Glukhikh f66b2ca772 FIR resolve: add forgotten constraint subsystem from generic qualified access
This fixes exception in resolve of an attached test
2019-11-11 17:07:57 +03:00
Mikhail Glukhikh 26281bfe89 FIR Java: use different names for anonymous parameters (p0, p1, p2, ...) 2019-11-11 17:07:57 +03:00
Mikhail Glukhikh c657d46437 FIR Java: add nullable (instead of not-null) type parameter bounds 2019-11-11 17:07:57 +03:00
Mikhail Glukhikh db11c14fee FIR Java: don't add type parameter bounds multiple times 2019-11-11 17:07:57 +03:00
pyos 82fb5c4d19 JVM_IR: move lambda captures to end of signature when inlining
For example, a lambda `{ param -> captured }` of type `E.(T) -> U` will
be transformed by LocalDeclarationsLowering into a private static method

    fun f$lambda-0($this: E, $captured: U, param: T) = $captured

The reason for such an ordering is that a lambda looks the same as a
local function, and local function can have default arguments, and those
arguments can reference captured variables; thus, captured variables
must come before actual declared arguments.

However, this is not the order that the inliner wants. Moreover, since
it was written to handle lambdas represented as `invoke` methods of
anonymous objects, it does not expect the actual callable method to have
any parameters corresponding to captured variables at all. This results
in it attempting to generate a temporary node with descriptor

    (LE;LU;LT;LU;)LU;

while still using locals 1 and 2 as `param` and `$captured` respectively.
In the example above, this is not critical, as they both have reference
type and the lambda will eventually be pasted into a different node
anyway; however, if it happens that one of them is a primitive, or both
are primitives of different types, the bytecode will use incorrect
instructions, causing verification errors. The correct descriptor is

    (LE;LT;LU;)LU;
2019-11-11 13:46:42 +01:00
pyos 433e0e4740 JVM_IR: remember facade fqnames of imported classes
Necessary to support importing file classes annotated @JvmPackageName,
since the actual package fragment they are a part of has the name from
the `package` declaration.
2019-11-11 13:31:57 +01:00
Alexander Udalov de54e549af Refactor CHECK_BYTECODE_LISTING directive for JVM IR tests
Create a separate _ir.txt bytecode listing file for JVM IR, to avoid
duplicate tests and to fix "Codegent tests on different JDKs"
configuration where this test is muted but passes because only execution
is checked there, not bytecode listing.
2019-11-11 12:10:31 +01:00
Alexander Udalov ce09be3f59 Add TargetBackend.isIR, simplify JVM IR test configuration 2019-11-11 12:10:29 +01:00
Sergey Bogolepov 608885d118 [Linker] Extend KotlinIrLinker infrastructure to support libraries that
doesn't contain IR. Also bump ABI version because of addition of `ir_provider` property
2019-11-11 15:55:36 +07:00
Yan Zhulanow f3770314c5 Pill: Fix reflect dependency in compiler/fir.resolve module 2019-11-11 17:13:58 +09:00
Dmitriy Novozhilov 0c190f6040 Enable -Xuse-mixed-named-arguments feature for compiler project 2019-11-10 11:46:22 +03:00
Alexander Udalov f9b66d57cf Fix test data for -Xuse-mixed-named-arguments
Remove incorrect jar clash warning and avoid unrelated unused parameter
warnings
2019-11-08 20:52:22 +01:00
Alexander Udalov 228fdb4436 Don't optimize null checks for unsafe primitive type boxes as well
#KT-34829 Fixed
2019-11-08 18:54:33 +01:00
Steven Schäfer b80e157381 JVM, JVM IR: Don't optimize null-checks based on nullability information
Since Java interop allows us to circumvent the Kotlin type system we
cannot rely on nullability information.
2019-11-08 18:28:07 +01:00
Alexander Udalov de082543f1 Minor, ignore another test with java.util.function on JDK 6 2019-11-08 17:50:10 +01:00
Alexander Udalov 9b3e64257f Minor, ignore test with java.util.function on JDK 6 2019-11-08 17:46:43 +01:00
Mikhail Glukhikh 93aba85f51 Fix FIR built-ins test 2019-11-08 15:54:21 +03:00
Dmitriy Novozhilov 5313c964c6 [FIR] Fix SOF in fir consistency checker 2019-11-08 15:30:55 +03:00
Dmitriy Novozhilov bc453e5917 [FIR] Fix testdata forgotten in e910653d 2019-11-08 15:30:55 +03:00
Dmitriy Novozhilov e6b005a7dc Disable -Xuse-mixed-named-arguments feature for compiler project 2019-11-08 15:30:50 +03:00
Dmitriy Novozhilov 45523a5767 Fix -Xuse-mixed-named-arguments compiler arg 2019-11-08 15:30:04 +03:00
Kristoffer Andersen 8561f08f06 [JVM_IR] Reintroduce non-IEEE comparisons
- Ieee754Equality and PrimitiveComparisons intrinsics
  respects absence of -Xproper-ieee754-comparisons, unmuted tests to
  show.
2019-11-08 12:58:31 +01:00
Alexander Udalov 0675b54e11 Minor, add regression test for KT-34766 2019-11-08 12:29:08 +01:00
Roman Artemev ea543eac13 [IC KLIB] Fix after rebase 2019-11-08 14:14:59 +03:00
Roman Artemev a91ed694bf [IC KLIB] Use new klib argument 2019-11-08 14:14:59 +03:00
Alexey Tsvetkov d776e92111 Use Klib JS serializer protocol for IC 2019-11-08 14:14:58 +03:00
Alexey Tsvetkov 6e9cd85b54 Exclude some proto messages from proto comparison in IC 2019-11-08 14:14:58 +03:00
Alexey Tsvetkov ac9b7fa268 Exclude some proto fields from proto comparison in IC 2019-11-08 14:14:58 +03:00
Alexey Tsvetkov 83f060ad3e Minor: add functions to distinguish initial and incremental builds when debugging IC tests 2019-11-08 14:14:57 +03:00
Alexey Tsvetkov 537199e0fa Minor: replace UsefulTestCase with KtUsefulTestCase
UsefulTestCase does not resolve in IDE for some reason
2019-11-08 14:14:57 +03:00
Roman Artemev 72c4be785d [JS IR] Add proper extension point in FE to customize incremental data loading
- fix IC klib
2019-11-08 14:14:57 +03:00
Alexander Gorshenev 21c436c64c Klib metadata cached package fragment and package fragment provider 2019-11-08 14:14:57 +03:00
Roman Artemev 1bced5d2a2 [KLIB IC] Fix file index allocation, make them stable between recompilations 2019-11-08 14:14:57 +03:00
Steven Schäfer ab506c1579 Frontend: Avoid retypechecking the right hand side of assignment operators 2019-11-08 14:02:56 +03:00
Mikhail Glukhikh 41c81d25a0 FIR body resolve: use nested classifier scopes only via member scopes 2019-11-08 13:42:42 +03:00
Mikhail Glukhikh f0130d0460 FIR (minor): remove unnecessary withScopeCleanup call 2019-11-08 13:39:45 +03:00
Steven Schäfer 7c9578116b JVM IR: Fix types in LateInitLowering
On the JVM backend the throwUninitializedPropertyAccessException
function is implemented in Java and has a return type of Unit instead of
Nothing. In order to make the types match up we have to wrap its call in
a block with an additional IrThrow.
2019-11-08 11:20:43 +01:00
Dmitriy Novozhilov 3ee013aac6 Change compiler flag for enabling mixed named argumetns in compiler project
It's neccessary to avoid useless warnings until build
2019-11-08 12:12:39 +03:00