Commit Graph

88700 Commits

Author SHA1 Message Date
Ilmir Usmanov 549ea1a3b9 If fun interface methods are already mangled, do not mangle them twice
There are two possible scenarios, when fun interface method with inline
class parameter can be compiled.

First is when we compile fun interface itself before SAM adapter. In
that case, fun interface is lowered before we lower SAM adapter. Thus,
its method is mangled and mangling in the second time is an error.

Second is when we compile SAM adapter before the fun interface. In that
case, fun interface is not lowered, and we have to mangle the method.

The only way to distinguish there two cases I can think of is to check
whether the overridden method is already mangled, in other words, check,
whether the overridden method's suffix is doubled.

 #KT-48499: Fixed
2021-12-28 17:35:12 +01:00
Sergej Jaskiewicz 71732afae0 [JS IR] Copy JS artifacts to the build directory if the compiler crashes
Previously in 3fb1096c18 we've implemented
dumping the IR after each phase when running JS IR box tests.

However, because those dumps are saved to a temporary directory,
they can be lost in case we never make it to
`jsArtifactsHandlersStep` where files from that temporary
directory were copied to the `build/out` directory.
This could happen if, for example, the compiler crashed.
In that case, having IR dumps is even more useful, as they can help
investigate the crash.

Here we make `JsArtifactsDumpHandler` an `AfterAnalysisChecker` so that
it runs no matter what.
2021-12-28 14:42:04 +00:00
Alexander Udalov 9a9a8f1999 Restore support of language version 1.3
#KT-50251 Fixed

(cherry picked from commit a0004ed03adc9f50f26c8b11d178afcc2abf2a9c)
2021-12-28 13:21:18 +01:00
Alexander Udalov 92c80873ba Revert "JVM: remove support for disabling NoConstantValueAttributeForNonConstVals"
This is a partial revert of e857966edb.

Specifically, behavior is restored in the old backend, which will allow
to support language version 1.3, where this language feature was not
enabled yet. There are no changes in the JVM IR backend, because to
enable JVM IR with LV 1.3, you need to pass the compiler argument
`-Xuse-ir` which is not stable and we don't guarantee anything about it.

 #KT-50251
2021-12-28 13:21:18 +01:00
Alexander Likhachev 5097d426c1 [Gradle] Mark MetricsWriter with Serializable interface
#KT-50549 Fixed
2021-12-28 12:05:09 +00:00
Alexander Likhachev 426faf4ca6 [Gradle] Add test for KT-50549 2021-12-28 12:05:08 +00:00
Sergey Igushkin cb9dfc8e01 KT-50509: Optimize the performance of whenEvaluated { ... } wrapper
The Gradle API `pluginManager.withPlugin(id) { ... }` turned out to have
a significant performance footprint due to operations on underlying
immutable collections.

We can replace calls to `withPlugin` with checks of `hasPlugin` running
on each applied plugin.

Issue #KT-50509 Verification pending
2021-12-28 10:09:42 +00:00
Roman Artemev 723ef8f1fb [KLIB] Deserialize backing field initializers of const in IB-only mode
Missing const initializer leads to crash in property accessors inline
lowering during IC recompilation on JS.

 - fix #KT-50512
 - add test for JS IR IC
2021-12-27 23:43:43 +03:00
mvicsokolova 188d073cc3 kotlinx.atomicfu compiler plugin (JS): tracing supported. (#4691)
* kotlinx.atomicfu compiler plugin (JS): tracing supported.

* Erasing trace invocations from both IrBlock and IrBlockBody.
2021-12-27 23:20:08 +03:00
Victor Petukhov 29f174f074 Revert "Revert "Temporary workaround for failing tests on teamcity.""
This reverts commit 2c51799e0a.
2021-12-27 22:56:01 +03:00
Victor Petukhov 9c225c5b56 Revert "[Compiler CLI] Use LanguageVersion.LATEST_STABLE instead of KotlinVersion.CURRENT for java type enhancement settings to prevent dependency on kotlin version."
This reverts commit 0689d74353.
2021-12-27 22:56:00 +03:00
Martin Petrov 50250ccf65 [Native] Escape the module name in the C adapter.
This previously failed if the module name contaned dots or dashes, e.g.

```
kotlinc-native ~/test.kt -produce static -module-name="foo-bar.baz"
```

This change espaces `-` and `.` similar to `ObjCExportNamer`'s `abbreviate`.
2021-12-27 19:45:14 +03:00
Yahor Berdnikau f895e92b11 Bump Gradle 7.3 version to 7.3.3
^KT-45745 In Progress
2021-12-27 15:19:19 +01:00
Yahor Berdnikau 3fca808b63 Revert "Revert "Set minimal supported Gradle version to 6.7.1.""
This reverts commit 2aa1c187d9.

^KT-49733 Fixed
2021-12-27 15:19:15 +01:00
Ilya Kirillov 4d7af4beae Analysis: fix imports and module names 2021-12-27 16:23:46 +03:00
Ilya Kirillov ec0123663b Fix analysisAllTests task name 2021-12-27 16:23:28 +03:00
Ilya Kirillov 4c94e2958e Analysis: add more run configurations 2021-12-27 16:23:22 +03:00
Ilya Kirillov 62c9a7888b Analysis: remove // FIR_COMPARISON form LC testdata as LC tests are moved from IJ 2021-12-27 16:23:21 +03:00
Ilya Kirillov 4e58dc3467 Fix small compilation problems in LC testdata which should not influence LC results 2021-12-27 16:23:21 +03:00
Ilya Kirillov 02f9f116b2 Analysis: ignore failing LC test 2021-12-27 16:23:20 +03:00
Ilya Kirillov db31e0292c Analysis: add LC testdata with current behaviour 2021-12-27 16:23:20 +03:00
Ilya Kirillov 0b3a0fd799 Analysis: fix LC test environment 2021-12-27 16:23:19 +03:00
Ilya Kirillov 2c80a53a73 Analysis: generate symbol LC tests 2021-12-27 16:23:18 +03:00
Ilya Kirillov 40fdb26569 Analysis LC: introduce Symbol LC tests 2021-12-27 16:23:18 +03:00
Ilya Kirillov abf7a4c5ac Introduce ConcurrentMapBasedCache 2021-12-27 16:23:17 +03:00
Ilya Kirillov 1bba3b2256 Migrate decompiled light classes factories from IJ 2021-12-27 16:23:17 +03:00
Jinseong Jeon 09f5ec7bd3 FIR LC: add supports for decompiled declarations 2021-12-27 16:23:16 +03:00
Ilya Kirillov aa87524513 Migrate stub and psi builders by classfiles form IJ repository 2021-12-27 16:23:16 +03:00
Ilya Kirillov 0efc819e48 Fix invalid repeatable annotations loading in sutb builder 2021-12-27 16:23:16 +03:00
Ilya Kirillov d2832697d9 Move stub building test generation to analysis generator 2021-12-27 16:23:15 +03:00
Ilya Kirillov 1e9764c639 Move stub building from psi module to analysis module 2021-12-27 16:23:14 +03:00
Ilya Kirillov cd3905e400 Fix dependencies to intellij modules after gradle dependency DSL update 2021-12-27 16:23:13 +03:00
Ilya Kirillov b563824b35 Migrate LightMemberOriginForCompiledElement from IJ repository 2021-12-27 16:23:13 +03:00
Ilya Kirillov 764ad8b9fa Move light classes for decompiled declarations from IJ repository 2021-12-27 16:23:12 +03:00
Ilya Kirillov fceb46924e Move decompiler from IJ repository
This commit just moves files and fixes imports
2021-12-27 16:23:11 +03:00
Ilya Kirillov a367fee5cf Add newly added modules to the list of compiler modules 2021-12-27 16:23:11 +03:00
Ilya Kirillov 3779acbc3d Add testdata from intellij for cls stub building tests and generate tests 2021-12-27 16:23:11 +03:00
Ilya Kirillov 02d68d7b12 Introduce cls stub building tests (mostly migrated from intellij) 2021-12-27 16:23:10 +03:00
Ilya Kirillov 127dc7670e Move IDEKotlinBinaryClassCache from intellij 2021-12-27 16:23:10 +03:00
Ilya Kirillov b222bf88a0 Move DirectoryBasedClassFinder and DirectoryBasedDataFinder from intellij 2021-12-27 16:23:10 +03:00
Ilya Kirillov dbb3ebb8df Implement AnnotationLoaderForClassFileStubBuilder 2021-12-27 16:23:09 +03:00
Ilya Kirillov b9b0bb309d Move KotlinClsStubBuilder from intellij repository
This commit is just move, without any modifications
2021-12-27 16:23:09 +03:00
Ilya Kirillov 78db89b46b Extract AbstractBinaryClassAnnotationLoader to be used without FE1.0 2021-12-27 16:23:08 +03:00
Ilya Kirillov 52baf7338e Move KotlinBinaryClassCache to separate module, so it can be used outside FE1.0 2021-12-27 16:23:08 +03:00
Ilya Kirillov 25fe14b514 Move PerformanceCounter to runtime utils, so it can be used outside FE1.0 2021-12-27 16:23:07 +03:00
Ilya Kirillov 3686fc109d Extract AnnotationLoader from AnnotationAndConstantLoader, so it can be used without FE1.0 2021-12-27 16:23:07 +03:00
Ilya Kirillov 49e9c47071 Move DynamicTypeDeserializer.id from IR module to common module
So, it can be used from cls-psi-stub-builder module
2021-12-27 16:23:06 +03:00
Ilya Kirillov 53346e0aa6 Merge KotlinFileStubImpl and KotlinFileStubForIde into KotlinFileStubImpl
as the only difference is additional fields in KotlinFileStubForIde
2021-12-27 16:23:05 +03:00
Ilya Kirillov a9d7e5db72 Move stub builder stuff from intellij
This is mechanical moving without fixing compilation errors,
just packages are changes
2021-12-27 16:21:51 +03:00
Igor Chevdar af09fb51ac [K/N][IR] Made the compiler pipeline to do per file lowerings 2021-12-27 14:28:29 +05:00