Always serialize type table (and version requirement table) after
everything else, to prevent bugs like KT-51446 where inline class
underlying type was added to the type table after it has already been
serialized.
#KT-51446 Fixed
Do not generate linenumber for the start of the finally block, because
that is usually where the only word 'finally' is located. Instead,
generate linenumber for the first expression inside the finally block.
Not generating this linenumber fixes an issue in code coverage tools
which would consider such finally uncovered. Although this might be
technically considered as designed, it makes more sense to NOT detect it
as uncovered because semantics of the finally block shouldn't really
differ whether it's executed normally or because an exception happened.
It's also beneficial for the tool support to behave like javac, which
doesn't generate the linenumber either.
#KT-50973 Fixed
Supported IrDefinitelyNotNullType explicitly for now
(later it will be better to handle it at the call sites)
Co-authored-by: Svyatoslav Scherbina <svyatoslav.scherbina@jetbrains.com>
There are two ways how content roots are registered in compiler configuration
in JVM CLI compiler:
1. Directly from arguments
2. From Module, which build from arguments
And there was a problem that both ways used at the same time in some
circumstances (regular compilation without .xml module file) which
caused duplication of all content roots.
Ideal solution for this problem is removal of Module usages at all,
because it looks like redundant abstraction which just complicate
things, but it's too scary to remove it, because it hove some none
trivial usages inside compiler. So to fix problem with duplicated
roots this commit just removes registration of roots from arguments
if Module is used
After this update to have different classpath hash in subprojects,
they should have different sets of plugins applied. But KGP could be
in all of them.
^KT-49227 In Progress
Simplifies and make it aligned with official documentation, which
removes some old workarounds. Additionally, it enables publication of
Gradle metadata file, which is required for plugin variants feature
support.
Instead of using 'gradleApi()' as Gradle API dependency, which provides
build current Gradle version api, now setup is using
"dev.gradleplugins:gradle-api" artifacts with specific Gradle version.
This allows to have more fine-grained Gradle support for removed apis.
^KT-49227 In Progress
When generating synthetic Function{N+1}.invoke implementations for
SuspendFunction{N} subclasses, use SYNTHETIC_OFFSET instead of
suspend invoke function location offsets.
This location is more suitable for generated synthetic functions.
Additionally, this fixes the case when suspend invoke is fake override:
fake overrides use UNDEFINED_OFFSET, so the generated function was
getting UNDEFINED_OFFSET as well, leading to incorrect debug
information.
Fix suspendFunctionAsSupertype.kt and suspendFunctionAsSupertypeCall.kt