Yan Zhulanow
0657a3d399
New evaluator that doesn't depend on the 'extract function' refactoring (KT-28192, KT-25220, KT-25222, KT-21650)
2019-02-25 14:43:57 +03:00
Yan Zhulanow
b4002accfb
Extract label name calculation from 'recordCallLabelForLambdaArgument()'
2019-02-25 14:43:56 +03:00
Yan Zhulanow
eaed6855ac
Minor: Add proper nullability check in generateExtensionReceiver()
2019-02-25 14:43:56 +03:00
Yan Zhulanow
d039e3b1c0
Hide synthetic variables for local functions and destructured lambda parameters (Kotlin variables)
2019-02-25 14:43:56 +03:00
Yan Zhulanow
488418d960
Change mangling for local functions
2019-02-25 14:43:56 +03:00
Yan Zhulanow
aca3be12e9
Change illegal local variable mangling rules
2019-02-25 14:43:56 +03:00
Yan Zhulanow
47f0b68a8c
Change mangling for destructured lambda parameters
2019-02-25 14:43:56 +03:00
Yan Zhulanow
f6cc686095
Minor: Extract a const for continuation variable name
2019-02-25 14:43:55 +03:00
Yan Zhulanow
ea462091c4
Support new convention for local variables name mangling: '$receiver' -> '$this$<label>' (KT-26913)
2019-02-25 14:43:53 +03:00
Yan Zhulanow
b5f9149702
Minor: Get rid of some magic constants
2019-02-25 14:43:53 +03:00
Ilmir Usmanov
1777849ff3
Generate correct linenumber for the debugger to see the return value
...
of suspend function.
#KT-20322 Fixed
2019-02-22 17:37:32 +03:00
Ilmir Usmanov
ec7315e6da
Add $completion entry to suspend functions' LVT
...
#KT-28810 Fixed
2019-02-22 13:50:35 +03:00
Ilya Chernikov
cc4aedb807
Move the rest of script descriptor implementation details to plugin, cleanup
2019-02-21 15:59:48 +01:00
Ilmir Usmanov
6e120b2173
Do not generate state-machines for suspend lambdas, which capture any
...
crossinline lambda, not only suspend.
#KT-29912 Fixed
2019-02-21 17:44:41 +03:00
Natalia Selezneva
254374c619
Use ModuleInfo in VirtualFileFinder to add script dependencies in search scope
...
Otherwise it prevent to inline functions from those dependencies during scratch compilation
2019-02-20 18:36:38 +03:00
Alexander Udalov
d267f1e875
JVM IR: generate synthetic $annotations methods for properties
2019-02-19 17:25:47 +01:00
Alexander Udalov
c357967c2c
JVM IR: generate Kotlin metadata
...
Introduce MetadataSource as a way to store the original descriptor for
any element (before any lowerings) and maintain it until the end of the
codegen where it's used in generating the metadata. Note that JVM
signatures written to the metadata are formed from the _resulting_
generated elements, not by mapping the original descriptors.
Some corner cases are not supported yet, namely properties declared in
companion objects, synthetic methods for property annotations,
JvmPackageName, etc.
#KT-29119 Fixed
2019-02-19 16:37:47 +01:00
Alexander Udalov
3d1858a8c5
Refactor and rename CodegenUtil.getDeclarationsToGenerate
...
Move logic regarding expect classes to the only relevant call site at
PackageCodegenImpl, and return the list of members to remove code
duplication at remaining call sites
2019-02-19 16:37:46 +01:00
Mikhael Bogdanov
3b57ceeafe
Don't generate annotations on $default methods
...
#KT-29965 Fixed
2019-02-19 10:51:37 +01:00
Ilmir Usmanov
1e4b7e1ef1
Put $assertionDisabled field into inline-site's class
...
The generated code is more inline with java, and we avoid the error of
accessing package-private field outside of the package.
However, this changes semantics a bit. Now, a user should set assertion
status of inline-site's package, instead of inline function's one.
#KT-28317: Fixed
2019-02-18 12:39:03 +03:00
Ilmir Usmanov
19d2262cf1
Generate call of throwOnFailure instead of manual check
...
whether coroutine is resumed with exception.
#KT-28015 Fixed
2019-02-14 18:33:17 +03:00
Ilmir Usmanov
440cccae73
Loosen tail call check
...
Check that any source of ARETURN is inside a suspension point, not all
of them.
#KT-27190 Fixed
2019-02-14 12:21:44 +03:00
Denis Zharkov
abad408d7b
Do not implicitly propagate deprecations originated in Java
...
^KT-29604 Fixed
2019-02-13 16:21:05 +03:00
Ilya Chernikov
dafb2a7519
Drop unused classes and references
2019-02-10 13:31:55 +01:00
Alexander Udalov
c2968b6a68
Minor, use kotlin.Pair in JvmSerializationBindings.FIELD_FOR_PROPERTY
2019-02-07 23:33:29 +01:00
Alexander Udalov
8ae03b54d9
JVM IR: generate correct .kotlin_module files
2019-02-07 21:23:02 +01:00
Alexander Udalov
aa0882a74f
Refactor .kotlin_module-writing code, simplify PackagePartRegistry
2019-02-07 21:23:01 +01:00
Mikhael Bogdanov
b2606735c5
Properly capture local delegated properties in object constructor
...
#KT-23117 Fixed
2019-02-05 16:14:51 +01:00
Mikhael Bogdanov
9ab6062295
Properly capture extension receiver for array convention expressions in object constructor
...
#KT-19389 Fixed
2019-02-05 16:14:50 +01:00
Alexander Udalov
db487a622a
Add -Xsanitize-parentheses to workaround ASM 6.1 issue in frame computation
...
#KT-29475 Fixed
2019-01-31 15:47:43 +01:00
Mikhael Bogdanov
a122cba862
Switch Kotlin project to jvm-target 1.8
...
#KT-29405
2019-01-31 07:43:05 +01:00
Alexander Udalov
a419112c25
Refactor class lookup methods in KotlinBuiltIns
...
Remove external usages of get*Nullable methods, inline/remove other
methods to simplify the API facade
2019-01-28 15:18:52 +01:00
Sergey Rostov
0f2fb4ff82
Build: remove intellijCore/annotations.jar usages
2019-01-28 13:43:08 +03:00
Sergey Rostov
c716ef112e
Got rid of @TestOnly usages on fields
2019-01-28 13:43:08 +03:00
Alexander Udalov
a2f4efbc2a
Report error on state in multi-file class with -Xmultifile-parts-inherit
...
Simplify MultifileClassPartCodegen, remove related tests and change some
tests to use const val instead of val because backing fields for const
properties are stored in the facade, not parts
#KT-23701 Fixed
2019-01-25 15:57:13 +01:00
Alexander Udalov
6b5a16884c
Refactor inheritMultifileParts to be a JVM analysis flag
...
Instead of a JVMConfigurationKeys key. This will allow to use it in a
checker in 'frontend.java'
2019-01-25 15:57:13 +01:00
Dmitry Petrov
ae8a90f7b4
KT-29144 Interface companion object field should always be ACC_PUBLIC
2019-01-22 15:05:51 +03:00
Dmitry Petrov
360bfcaf6a
KT-29340 Provide effective modality for enum class in IR
...
* if enum class has abstract members, then it is ABSTRACT
* otherwise, if enum class has entries with members, then it is OPEN
* otherwise, it is FINAL.
2019-01-22 10:52:54 +03:00
Denis Zharkov
efdb4e1d5d
Fix assertion caused by wrong equality of DescriptorBasedFunctionHandleForJvm
...
In case of the same class defined in different modules they contain
different descriptors instances in their scope that might lead
to failing assertion in findConcreteSuperDeclaration
because there are overridden from different modules
It might happen even in the compiler because of different built-in modules
defined for sources-module and for dependencies' one
^KT-29320 Fixed
2019-01-22 09:48:42 +03:00
Alexander Udalov
4daee6d282
Extract JVM IR backend module out of compiler/backend
...
The old backend does not depend on IR modules anymore
2019-01-21 19:06:41 +01:00
Ilmir Usmanov
e8c52e0a8f
Do not mark fake inliner variables as alive
...
This prevents them from spilling.
#KT-29317 Fixed
2019-01-18 13:45:20 +03:00
Ilmir Usmanov
dc6bb4cd08
Revert "Simplify tail-call optimisation check"
...
This reverts commit a5bcd3495e .
#KT-27190: Open
#KT-29327: Fixed
2019-01-18 13:44:05 +03:00
Dmitry Petrov
c1de845d29
Generate switch instruction for 'when' with unsigned subject
2019-01-17 13:49:39 +03:00
Ilmir Usmanov
76e9b574cd
Put default value to vars iff they are not boxed
...
#KT-24672 Fixed
2019-01-16 20:40:29 +03:00
Dmitry Petrov
08abf5f2a2
Specialize unsigned range and progression iterator calls
2019-01-16 11:00:23 +03:00
Dmitry Petrov
723e739960
Minor: convert ProgressionIteratorBasicValue to Kotlin
2019-01-16 11:00:23 +03:00
Mikhail Zarechenskiy
01ab4965b1
[NI] Support SAM conversions in backend for special expressions
2019-01-15 13:14:41 +03:00
Denis Zharkov
2a156fe90c
Do not check target when generating bridges with default impl
...
In many other places, e.g. org.jetbrains.kotlin.codegen.ClassBodyCodegen#generateDelegatesToDefaultImpl
we implicitly assume that whenever we use a default interface method
our target is 1.8
But here, we don't and it might lead to exception in org.jetbrains.kotlin.backend.common.bridges.BridgesKt#findConcreteSuperDeclaration
when actual target is 1.6 and we extend some AbstractMap implementation
with JDK8 (i.e., with @PlatformDependent getOrDefault)
2019-01-14 14:54:18 +03:00
Denis Zharkov
5ec93f2718
Avoid assertion in bridges-generation for light classes
...
^KT-11656
2019-01-14 14:54:18 +03:00
Denis Zharkov
e0ff7281b4
Minor. Introduce FunctionHandle::mightBeIncorrectCode
2019-01-14 14:54:18 +03:00