Commit Graph

101500 Commits

Author SHA1 Message Date
Denis.Zharkov a9352abb93 K2: Optimize JvmMappedScope.processFunctionsByName for final classes 2023-05-30 10:44:41 +00:00
Denis.Zharkov 6683e229b4 K2: Simplify JvmMappedScope-related code a bit
JvmMappedScope.Signatures became mostly irrelevant and only
"useful" for checking if we really need to have the scope mapped

Now, the check is rewritten according to K1 semantics

^KT-57694 Fixed
2023-05-30 10:44:41 +00:00
Denis.Zharkov 6b1d9c4d56 K2: Adjust how additional built-in constructors from JDK are handled
This change is both makes code more consistent with K1 version
and fixes some issues introduced by previous changes

Before this fix, the test
FirPsiOldFrontendDiagnosticsTestGenerated$Tests$Modifiers$Const.testKCallable_after
was failing

^KT-57694 In Progress
2023-05-30 10:44:41 +00:00
Denis.Zharkov e4480a1c52 K2: Refine mapping of primitive arrays to JVM descriptor
Earlier, it wasn't really important but after the previous commit
when JvmMappedScope semantics has been changed, we erroneously
started loading `toCharArray` as a member to String because
its jvmDescriptor was computed to "toCharArray()Lkotlin/CharArray",
while hardcoded information that prevents it from loading expect
"toCharArray()[C" there.

^KT-57694 In progress
2023-05-30 10:44:41 +00:00
Denis.Zharkov 2e5b783cc6 K2: Refine how JDK members are mapped to built-in classes
Previously, the semantic was more-or-less correct for most of the cases
but some corner one, like `sort` in MutableList didn't work properly.

Namely, `sort` should be marked there in a way to forbid to call it
everywhere beside super-calls.
Also, overriding it should be allowed.

Mostly, the logic was re-written to K2 model from K1-related
JvmBuiltInsCustomizer.

^KT-57694 In progress
^KT-57269 Fixed
2023-05-30 10:44:41 +00:00
Dmitriy Dolovov 161fe1d2ca [IR] Don't produce gaps for skipped IR declarations during serialization 2023-05-30 10:14:08 +00:00
Kirill Rakhman a4c9a4f150 [FIR] Use optimized stdlib version of reversed list 2023-05-30 09:22:50 +00:00
Alexander Korepanov 8066f1b7d2 [JS IR] Do not copy interface method if base class inherits it
^KT-58599 Fixed
2023-05-30 08:22:43 +00:00
Kirill Rakhman 9ca9fc9c68 [FIR2IR] Set type arguments on annotation calls
#KT-58553 Fixed
2023-05-30 07:58:03 +00:00
Brian Norman 8091aebbc7 [FIR] Create checker for simple enum entries with missing overrides
Complex enum entries (those with bodies) with missing overrides
are covered by an existing checker that checks all types of classes. But
simple enum entries (those without bodies) were not covered and require
a separate checker for missing overrides.

#KT-58637 Fixed
2023-05-29 16:34:44 +00:00
Vladimir Sukharev 5bf51318eb [K2/N] Exit compilation on errors at first stage
^KT-56855

Merge-request: KT-MR-10344
Merged-by: Vladimir Sukharev <Vladimir.Sukharev@jetbrains.com>
2023-05-29 10:38:28 +00:00
Sergej Jaskiewicz 28ead4118c [test] Unmute a couple of irText tests that no longer fail on K2 2023-05-29 09:24:43 +00:00
Igor Chevdar d9b0f2a75c [K/N] Refactored RedundantCoercionsCleaner
#KT-58654 Fixed
2023-05-29 06:13:09 +00:00
Igor Chevdar 1ae0350ca5 [K/N][tests] Added some file-check tests on KT-58654 2023-05-29 06:13:09 +00:00
Dmitrii Gridin 870527a4a3 [LL FIR] fix testData
The test was introduced in 4b1dc4eee6 and conflicts with 0ac02be534

^KT-56551
2023-05-27 16:17:33 +02:00
Anna Kozlova faedea6aea [psi] get type text based on provided stubs 2023-05-27 12:22:23 +00:00
Anna Kozlova 71844f81f4 [psi] decompiled code doesn't have function bodies
otherwise AST for decompiled code would be loaded by findChildByClass call

^ KTIJ-25047
2023-05-27 12:22:23 +00:00
Anna Kozlova 360e7d6156 [psi] decompiled code doesn't have documentation
otherwise AST for decompiled code would be loaded by allChildren call

^ KTIJ-25047
2023-05-27 12:22:23 +00:00
Dmitrii Gridin 72f30d78d6 [LL FIR] cache import scopes during compiler required annotations phase
In LL FIR file is always already resolved to import phase, so we can
cache the result

^KT-56551
2023-05-27 08:47:13 +00:00
Dmitrii Gridin dabc4e34ff [LL FIR] drop global lock from compiler required annotations phase
^KT-56551
2023-05-27 08:47:13 +00:00
Dmitrii Gridin 8f82649529 [LL FIR] rewrite compiler required annotations transformer to avoid lazy resolve under locks
^KT-56551
2023-05-27 08:47:13 +00:00
Dmitrii Gridin 4b1dc4eee6 [LL FIR] add more lazy resolve tests on compiler required annotations
^KT-56551
2023-05-27 08:47:13 +00:00
Dmitrii Gridin 8d151df252 [FIR] COMPILER_REQUIRED_ANNOTATIONS phase: drop redundant transformation of super type refs
We should transform only top-level annotations. Nested/type annotations
we can ignore

^KT-56551
2023-05-27 08:47:13 +00:00
Dmitriy Novozhilov d8b542c68d [Test] Allow testcases with number 0 in spec test
There was a hidden bug which was uncovered by KT-58936
2023-05-26 18:26:45 +03:00
Dmitriy Novozhilov 0c34b20e3d Advance bootstrap to 1.9.20-dev-2357 2023-05-26 18:26:44 +03:00
Vladimir Dolzhenko 984ab0a4b9 Revert "Drop KtStubElementTypes#FILE"
This reverts commit ae4b0c6fe1.
2023-05-26 15:13:25 +00:00
Alexander Shabalin 4ddc94bc8d [Gradle][MPP] DEPRECATE_ERROR for deprecated targets in tests ^KT-58822 2023-05-26 14:47:45 +00:00
Alexander Shabalin 1ef198ead4 [Gradle][MPP] Promote several K/N targets deprecation level to error 2023-05-26 14:47:45 +00:00
Vladimir Sukharev 1b1cfd45a0 [K2/N] Turn off IR verification for failed test interop_objc_smoke
This reverts commit 62901e22ec.

^KT-57716

Merge-request: KT-MR-10351
Merged-by: Vladimir Sukharev <Vladimir.Sukharev@jetbrains.com>
2023-05-26 14:11:16 +00:00
Dmitriy Dolovov a01a6b64ad [PL] Fix: Don't use locations in compiler messages
^KT-58837
2023-05-26 14:03:33 +00:00
Yahor Berdnikau 9f12dae117 [repo] fix KGP pom has multiple dependencies on KGP-api 2023-05-26 13:20:41 +00:00
Yahor Berdnikau 8c8f1718b9 [repo] KGP: more fine-grained AGP dependency
Removed unneeded transitive dependencies
2023-05-26 13:20:40 +00:00
Yahor Berdnikau e2801c366b [repo] KGP: remove compiler dependencies coming transitively 2023-05-26 13:20:40 +00:00
Yahor Berdnikau ec01e037f3 [repo] KGP: depend on :kotlin-compiler-runner-unshaded for compileOnly 2023-05-26 13:20:40 +00:00
Yahor Berdnikau 6ddc7ce23f [repo] KGP: remove kotlin-project-model dependency
It is coming transitively from KGP-api
2023-05-26 13:20:40 +00:00
Yahor Berdnikau 83a3e7f8a1 [repo] KGP: drop some android dependencies 2023-05-26 13:20:40 +00:00
Yahor Berdnikau 4ee0a97ddd [repo] KGP: drop guava dependency
It was unused.
2023-05-26 13:20:40 +00:00
Yahor Berdnikau f7e2b8b516 [repo] KGP: drop groovy-all dependency
Add ported from Groovy escapeJavaStyleString method into our
codebase.
2023-05-26 13:20:40 +00:00
Yahor Berdnikau 99dd2517c4 [repo] KGP: remove transitive dependencies coming from KGP-API 2023-05-26 13:20:40 +00:00
Yahor Berdnikau 2de4495711 [repo] migrate KGP to compiler options DSL 2023-05-26 13:20:40 +00:00
Andrei Klunnyi 3d1e5bb548 [KT-58817] Compiler defect workaround
Base method `RawFirBuilder.Visitor.convertElement` has a parameter with
default value, its overridden one in `VisitorWithReplacement` is not
allowed to declare default. So far so good.
During its work the compiler throws an exception:
`java.lang.IllegalArgumentException: No argument for parameter`.
2023-05-26 12:55:01 +00:00
Andrei Klunnyi 6535278bd3 [KT-58817] Implicit receiver for code completion
Prior to this commit code completion for .kts files was supported only
partially. Script has an implicit receiver - base class representing a
script itself, the point where its basic API resides. The knowledge of
this receiver was missing.

There are at least two context where this knowledge is crucial:
1. Code highlighting (worked fine)
2. Code completion (failed)

`FirScriptConfiguratorExtension` is responsible for filling
`FirScriptBuilder` with base script class (in addition to other
properties). See usages of [1] in its implementation.

The thing is that resolution during the completion works a bit
different. Instead of converting the entire `KtFile` it's interested
in `KtScript` only. See usages of [2].
`RawFirBuilder.Visitor.visitScript` is where implicit receivers were
missing.

Code completion and inspections applied to `.kts` files already have
`FirScript` and don't require its full reconstruction with expensive
`FirScriptConfiguratorExtension`. `RawFirBuilder.Visitor` was modified
to support sometimes already existing `FirElement`.

----------------------------------------------------------------
[1]: ScriptCompilationConfiguration.baseClass
[2]: RawFirBuilder.Visitor.convertScript
2023-05-26 12:55:01 +00:00
Andrei Klunnyi 2a1d4a42ae [KT-58817] Implicit import issues cannot be reported
To be reported with [1] imports require source. It was missing for
implicit script imports.

`FirScriptConfiguratorExtensionImpl` was extended and now adds fake
source elements (users don't see imports in the source code).

Since diagnostics for implicit import statements are meaningless for
IDE, they are suppressed in `LLFirDiagnosticReporter`.

----------------------------------------------------------------------
[1]: DiagnosticReporter.reportOn()
2023-05-26 12:55:00 +00:00
Andrei Klunnyi 28ff94533a [KT-58817] Add script-related extensions for FIR session
The following two registrars were missing:
- FirScriptingCompilerExtensionIdeRegistrar
- FirScriptingSamWithReceiverExtensionRegistrar

`FirScriptingCompilerExtensionIdeRegistrar` was introduced as a copy of
`FirScriptingCompilerExtensionRegistrar` adapted for usage from IDE.

`FirRegisteredPluginAnnotations` and `FirJvmTypeMapper` are mandatory at
`FirExtensionService.registerExtensions` and reported as missing at
runtime.
2023-05-26 12:55:00 +00:00
Andrei Klunnyi 1b8fd01969 [KT-58817] Star-imports are not handled
Default imports coming from script configuration can be of "star" type.
Prior to this commit they were effectively ignored due to a bug at FQN
assembly.

Before: org.gradle.dsl.* => org.gradle.dsl.
After: org.gradle.dsl.* => org.gradle.dsl
2023-05-26 12:55:00 +00:00
Andrei Klunnyi 6255efa7f7 [KT-58817] Publish K2 script compiler artifact
With this commit kotlin script compiler (as a plugin) becomes
available for IDE.
2023-05-26 12:55:00 +00:00
Troels Bjerre Lund 1ef3561caa [K/N] custom alloc: pre-fault OS pages ^KT-55364
On linux, some memory access patterns cause a cascade of page faults. By
asking mmap for MAP_POPULATE on linux, the page faults happen up front
in a much more efficient manner.


Co-authored-by: Troels Lund <troels@google.com>

Merge-request: KOTLIN-MR-697
Merged-by: Alexander Shabalin <alexander.shabalin@jetbrains.com>
2023-05-26 12:44:36 +00:00
Kirill Rakhman 0ac02be534 [FIR] Generate annotations to data class copy method parameters
#KT-57003 Fixed
2023-05-26 11:29:13 +00:00
Mikhail Glukhikh 5ae3a93084 FE approximator conf: simplify typeVariable/HandleAsTypeVariable
Related to KT-58618
2023-05-26 11:13:39 +00:00
Mikhail Glukhikh 6e58ba8f33 FE: don't approximate type variable based types for public/local declarations
#KT-58618 Fixed
2023-05-26 11:13:39 +00:00