Commit Graph
100 Commits
Author SHA1 Message Date
Vladimir Dolzhenko c1b70a7303 Move under debug log message when nested class is not found
To avoid freezes and useless reporting calculations

#KTIJ-25465 Fixed


Merge-request: KT-MR-10996
Merged-by: Vladimir Dolzhenko <Vladimir.Dolzhenko@jetbrains.com>
2023-07-08 07:18:09 +00:00
Vladimir Dolzhenko 3c8c20f8d2 Do not do unnecessary writeBooleanAttribute
Merge-request: KT-MR-10945
Merged-by: Vladimir Dolzhenko <Vladimir.Dolzhenko@jetbrains.com>
2023-07-05 09:27:04 +00:00
Vladimir Dolzhenko 4a7aea0dc6 Change the order of final properties initialization and ctor
To avoid case with NPE due to race-condition on publishing
non-fully initialized object in ctor via
`TypeRefinementSupport.Enabled(this)`

#KT-59852

Merge-request: KT-MR-10917
Merged-by: Vladimir Dolzhenko <Vladimir.Dolzhenko@jetbrains.com>
2023-07-03 10:51:53 +00:00
Vladimir Dolzhenko 7e9a897ef3 Provide equals/hashCode based on psiElementSource
#KT-59445
2023-06-22 14:14:18 +00:00
Vladimir Dolzhenko d0477a6a30 Provide equals/hashCode based on original PSI to avoid potential PCEs
#KT-59445
2023-06-22 14:14:18 +00:00
Vladimir Dolzhenko 05652e7d8d Improve exception handling and reporting
#KT-59445
2023-06-22 14:14:18 +00:00
Vladimir Dolzhenko f9d67feb05 Fix the owner list
Merge-request: KT-MR-10559
Merged-by: Vladimir Dolzhenko <Vladimir.Dolzhenko@jetbrains.com>
2023-06-12 07:26:17 +00:00
Vladimir Dolzhenko 7f74950993 Adjust name of IntelliJ Kotlin Plugin team
Merge-request: KT-MR-10425
Merged-by: Vladimir Dolzhenko <Vladimir.Dolzhenko@jetbrains.com>
2023-06-06 07:10:22 +00:00
Vladimir Dolzhenko 984ab0a4b9 Revert "Drop KtStubElementTypes#FILE"
This reverts commit ae4b0c6fe1.
2023-05-26 15:13:25 +00:00
Vladimir Dolzhenko 4a1552e907 Use nameSequence instead of file extensions to reduce memory allocations
#KTIJ-25470
2023-05-17 12:45:19 +00:00
Vladimir Dolzhenko 37c493f593 Add missed DOT_DEFAULT_EXTENSION
#KTIJ-25470
2023-05-17 12:45:19 +00:00
Vladimir Dolzhenko 8ad781987e Optimize file extensions usage
#KTIJ-25470

Merge-request: KT-MR-10135
Merged-by: Vladimir Dolzhenko <Vladimir.Dolzhenko@jetbrains.com>
2023-05-15 13:59:24 +00:00
Vladimir Dolzhenko ae4b0c6fe1 Drop KtStubElementTypes#FILE
It has been marked as deprecated for a while and targeted to be deleted in 1.9.0

#KT-53781

Merge-request: KT-MR-10082
Merged-by: Vladimir Dolzhenko <Vladimir.Dolzhenko@jetbrains.com>
2023-05-11 09:56:55 +00:00
Vladimir Dolzhenko 451daaa7c5 Do not publish non fully initialized descriptors
Leaking of a reference (via publishing to binding trace) of not fully
initialized object could lead to unpredicted and unexpected NPEs
iff some exception (like PCE or InvalidPsiAccess) happens between
the publishing and initialization.

#KT-57514
#KT-56388
#KT-56364

Merge-request: KT-MR-10052
Merged-by: Vladimir Dolzhenko <Vladimir.Dolzhenko@jetbrains.com>
2023-05-10 11:40:44 +00:00
Vladimir Dolzhenko adc5fe6e4e rr/vd/KT-57514
Revert "Create SimpleFunctionDescriptorImpl under nonCancelableSection"

This reverts commit d959b3a289b24487dba2e36da94a34a0dbb4661e.

Revert "Create PropertyDescriptorImpl under nonCancelableSection"

This reverts commit 362e8c2151c8e18009463fd51b995cce27ac8eb5.

Merge-request: KT-MR-9772
Merged-by: Vladimir Dolzhenko <Vladimir.Dolzhenko@jetbrains.com>
2023-04-29 06:39:59 +00:00
Vladimir Dolzhenko e10e821cd4 Fix onTheFlyDiagnosticsCallback
KtNamedFunction, KtClass etc are KtAnnotated.
Annotation recursion could happen within onTheFlyDiagnosticsCallback if
KtAnnotated has some annotations.

#KTIJ-25219

Merge-request: KT-MR-9652
Merged-by: Vladimir Dolzhenko <Vladimir.Dolzhenko@jetbrains.com>
2023-04-18 19:44:00 +00:00
Vladimir Dolzhenko 8528519d96 Improve container error reporting with containerId
Merge-request: KT-MR-8965
Merged-by: Vladimir Dolzhenko <Vladimir.Dolzhenko@jetbrains.com>
2023-03-22 16:34:22 +00:00
Vladimir Dolzhenko 3e99807436 Add ability to provide specific AbsentDescriptorHandler
#EA-457188

Merge-request: KT-MR-8900
Merged-by: Vladimir Dolzhenko <Vladimir.Dolzhenko@jetbrains.com>
2023-02-22 12:44:46 +00:00
Vladimir Dolzhenko b04b3d389f Add ability for DeclarationDescriptor validation
Not fully initialized DeclarationDescriptor could leak to bindingTrace.
It is hard to detect the outcome of that kind of leakage due to
possibility to have not fully initialized instances if PCE happens in
the middle of publication and instance full initialization.

#KT-56364
#KT-56388
#KT-54085
#KT-55150
2023-02-07 17:40:42 +00:00
Vladimir Dolzhenko a049fda75b Create SimpleFunctionDescriptorImpl under nonCancelableSection
SimpleFunctionDescriptorImpl initialization consists of two phases:
ctor + initialize.
When SimpleFunctionDescriptorImpl is created wrapped descriptor
(e.g. ValueParameterDescriptorImpl) is leaked through bindingTrace
with not fully initialized `containingDeclaration` (that is
SimpleFunctionDescriptorImpl).
If PCE happens after this unsafe publication prior to `initialize` then
it will be case with NPE on fully initialized instance reading.

#KT-56364 Fixed
2023-02-07 17:40:41 +00:00
Vladimir Dolzhenko 9be4aa2e02 Create PropertyDescriptorImpl under nonCancelableSection
PropertyDescriptorImpl initialization consists of two phases:
ctor + setType.
When PropertyDescriptorImpl is created wrapped descriptor
(e.g. WithDestructuringDeclaration) is leaked through bindingTrace
with not fully initialized `containingDeclaration` (that is
PropertyDescriptorImpl).
If PCE happens after this unsafe publication prior to `setType` then it
will be case with NPE on fully initialized instance reading.

#KT-56388 Fixed
2023-02-07 17:40:41 +00:00
Vladimir Dolzhenko d3fcd965ba Get rid of recordToTrace
recordToTrace is a bad practice as instance could be initialized out of
our control (e.g. in other plugins)

#KTIJ-22182
2023-02-01 15:59:04 +00:00
Vladimir Dolzhenko 79b8954814 Prevent unsafe publication of not fully initialized instance
#KT-54085 Fixed
#EA-757831
2023-02-01 15:59:04 +00:00
Vladimir Dolzhenko edf9c3a2f5 Add more diagnostic info
Resolver could be GCed if there is no any valid hard reference to it.
Some impl of PackageFragmentProvider (like DelegatingPackageFragmentProvider)
keep hard ref to resolver.
For the sake of investigation it is worth to know what kind of PFP is there.

#EA-725255

Merge-request: KT-MR-8581
Merged-by: Vladimir Dolzhenko <Vladimir.Dolzhenko@jetbrains.com>
2023-01-31 09:09:28 +00:00
Vladimir Dolzhenko ca31307941 [AA] Add expectForActual
#KT-54864

Merge-request: KT-MR-8222
Merged-by: Vladimir Dolzhenko <Vladimir.Dolzhenko@jetbrains.com>
2023-01-13 21:36:04 +00:00
Vladimir Dolzhenko 4466b2c980 Mark KtStubElementTypes#FILE will be deleted in 1.9.0
#KT-53781
2023-01-08 21:43:26 +01:00
Vladimir Dolzhenko 4542b3947b Clean up: rename Jet* to Kt* 2023-01-03 16:36:53 +01:00
Vladimir Dolzhenko d6e587171e Optimize isDefinitelyNotSamInterface
Do not generate intermediate garbage and no reason to iterate over
all non-SAM candidates when more than one found

#KTIJ-23032
2023-01-03 14:36:01 +00:00
Vladimir Dolzhenko 511e05adec Fix test data
Test data had to be adjusted together with a main change

#KTIJ-912
2023-01-03 11:46:20 +00:00
Vladimir Dolzhenko f9f0f561d7 Add ability to decompile multifile classes
A side effect of KotlinClassFileDecompiler#KotlinDecompiledFileViewProvider@factory
that multifile java classes like FilesKt__FilePathComponentsKt.class
becomes not visible with Kotlin plugin as file
jar://..../kotlin-stdlib.jar!/kotlin/io/FilesKt__FilePathComponentsKt.class
is considered as Kotlin internal compiled file and therefore no PsiFile
for this virtualFile

#KTIJ-912

Merge-request: KT-MR-8146
Merged-by: Vladimir Dolzhenko <Vladimir.Dolzhenko@jetbrains.com>
2023-01-02 15:31:19 +00:00
Vladimir Dolzhenko b4aa2aef00 Add ability to invalidate AbstractResolverForProject
#KTIJ-23785

Merge-request: KT-MR-7900
Merged-by: Vladimir Dolzhenko <Vladimir.Dolzhenko@jetbrains.com>
2022-12-09 12:04:50 +00:00
Vladimir Dolzhenko ebf24c2d24 Add default impl of getCanonicalText
#KTIJ-11270
2022-12-02 18:28:41 +00:00
Vladimir Dolzhenko f54e7abe1d Reduce memory footprint
#KTIJ-23785
2022-11-29 21:01:43 +00:00
Vladimir Dolzhenko af08e4121d Fix fragment element types class hierarchy.
They must not extend `IStubFileElementType`.

#KT-55160 Fixed
2022-11-28 15:44:37 +00:00
Vladimir Dolzhenko e751b11b5e Add extra checks
#EA-721785
2022-11-28 15:20:29 +00:00
Vladimir Dolzhenko a8bef8ac81 Prevent unsafe publication of not full initialized instance
#KTIJ-22182
2022-11-22 15:24:38 +00:00
Vladimir Dolzhenko 2ec07b861b Add languageSetting provider
Access to facets could be heavy

#KTIJ-23501
2022-11-07 17:20:21 +00:00
Vladimir Dolzhenko 5dc2442872 Safe reporting PSI elements in KEWA 2022-11-03 17:27:11 +00:00
Vladimir Dolzhenko 2ff97271e0 Fix addDeclaration in case of neigbour PsiErrorElement
Relates to #KTIJ-20214
2022-11-01 12:00:34 +00:00
Vladimir Dolzhenko 34779029f3 Avoid recursive type refinement
Recursion happens in kotlinx.serialization project https://github.com/Kotlin/kotlinx.serialization/blob/5e8ccad1f70a9457e0ffe6ae6b10a0bd0eaaa618/formats/json-tests/commonTest/src/kotlinx/serialization/json/JsonCustomSerializersTest.kt#L37

@Serializable
data class C(@Id(1) val a: Int = 31, @Id(2) val b: Int = 42) {
    @Serializer(forClass = C::class)
    companion object : KSerializer<C> {
        override fun serialize(encoder: Encoder, value: C) {
            //
        }
    }
}

#KT-53157
2022-09-29 15:02:55 +00:00
Vladimir Dolzhenko bd085fbf43 Optimize isDefinitelyNotSamInterface
Do not generate intermediate garbage and no reason to iterate over
all non-SAM candidates when more than one found

#KTIJ-23032
2022-09-27 15:17:27 +00:00
Vladimir Dolzhenko b2b88662d8 Clean up
#KTIJ-23032
2022-09-27 15:17:27 +00:00
Vladimir Dolzhenko a32c660a67 Optimize contributedDescriptors
Take kindFilters into account on early stage.

#KTIJ-23032
2022-09-27 15:17:26 +00:00
Vladimir Dolzhenko fc8cb40a0d Make KtFileElementType#INSTANCE final
#KT-53781
2022-09-19 20:34:35 +00:00
Vladimir Dolzhenko 8804742220 Revert back and deprecate KtStubElementTypes#FILE
Due to usages in some external tooling

#KT-53781
2022-09-19 20:34:35 +00:00
Vladimir Dolzhenko da86e536ad Do not swallow exception throwing IOOBE
#KTIJ-22746
2022-09-15 21:30:34 +00:00
Vladimir Dolzhenko 298494fa08 Drop KtStubElementTypes.FILE
FILE elements are always registered eagerly on parser definition load
and should not be mentioned in stubElementTypeHolder interfaces.
KtFileElementType.INSTANCE was defined in 2 places, first as
getFileNodeType of KotlinParserDefinition and second is
KtStubElementTypes. In order to ensure that there are no conflicts
in stubs the platform needs to recheck these 2 declarations,
and it triggers loading of KtStubElementTypes fields. We do not need
to declare FILE element in KtStubElementTypes and may just remove this
declaration as excessive. This will delay init of KtStubElementTypes
to the moment when Kotlin files appear in indexes.

#KT-53781
2022-09-15 10:35:05 +00:00
Vladimir Dolzhenko 584eb9dfa9 Move TokenSet from KtStubElementTypes
KtStubElementTypes has to have only KtStubElementType fields to provide
ability to initialize stub element types lazily.

#KT-53781
2022-09-15 10:35:04 +00:00
Vladimir Dolzhenko e0c2813a37 Increment version due to externalId change
#KT-53781
2022-09-09 08:17:50 +00:00
Vladimir Dolzhenko 79d1ca0504 Align externalId
externalId for any field in stubElementTypeHolder has to be prefix (`kotlin`) + dot (`.`) + field name

#KT-53781
2022-09-06 10:52:33 +00:00
Vladimir Dolzhenko efd5beb49b IJ file type optimizations based on extension
#KTIJ-21668

Merge-request: KT-MR-6288
Merged-by: Vladimir Dolzhenko <Vladimir.Dolzhenko@jetbrains.com>
2022-05-17 14:46:00 +00:00
Vladimir Dolzhenko 918a91dbdf Escape special names with backticks in test data
#KT-51248
2022-02-10 21:20:47 +00:00
Vladimir Dolzhenko 4de9de5fc5 Escape special Name used as parameter, custom function names etc
#EA-209929
#KT-51248 Fixed
2022-02-10 21:20:47 +00:00
Vladimir Dolzhenko 289b838d77 [kotlin] Optimize file.fileType calculation
#KTIJ-20095
2022-01-31 08:31:33 +00:00
Vladimir Dolzhenko 1c634ee6e2 [CHERRY PICKED FROM IJ] [kotlin] i18n kotlin jps
GitOrigin-RevId: 7aad0a02ca6511dbbe659c2933acf535a587c268
Original commit: https://github.com/JetBrains/intellij-community/commit/c62ec25b24dcb2933394f90a36f352a4a69622ff
2022-01-12 15:10:59 +01:00
Vladimir Dolzhenko 91f34662e4 [CHERRY PICKED FROM IJ] [kotlin] revert kotlin jps i18n
GitOrigin-RevId: 364e32312675500087616e41bf651b8ed29d3cfd
Original commit: https://github.com/JetBrains/intellij-community/commit/ca5307ef2e2254289eed8c94aaa970cb79ddccb2
2022-01-12 15:10:58 +01:00
Vladimir Dolzhenko cb0955a82d [CHERRY PICKED FROM IJ] [kotlin] i18n
GitOrigin-RevId: 0a55f4d8b088328c83e1af233f7f34ffd51e2382
Original commit: https://github.com/JetBrains/intellij-community/commit/3b2e2d8afdaafde31d52eb32cffae9c4aae6704b
2022-01-12 15:10:58 +01:00
Vladimir Dolzhenko 988d65c82f [CHERRY PICKED FROM IJ] Drop deprecated ServiceManager.getService
GitOrigin-RevId: 6306778c910fcb6c6c63bc38369435c3cd235db5
Original commit: https://github.com/JetBrains/intellij-community/commit/bac13e569558071e720d900add84c6c29b950ac4
2022-01-12 15:10:55 +01:00
Vladimir Dolzhenko f701cdcc97 [CHERRY PICKED FROM IJ] Trigger face change event to address facet change save
GitOrigin-RevId: 952c9e6f3270f75d6a293e71d33f958e24ff3c2a
Original commit: https://github.com/JetBrains/intellij-community/commit/18c931145f22fd69826e480bfe596e75ec05bab0
2022-01-12 15:10:52 +01:00
Vladimir Dolzhenko 3acd977a36 [CHERRY PICKED FROM IJ] Disable tests those directly use compiler test data
GitOrigin-RevId: 3714ee17fbe02ee8a2809709eeb481ddfa07e086
Original commit: https://github.com/JetBrains/intellij-community/commit/a52130d32ca8dc364912e390dd2747ae1df0aa66
2022-01-12 15:10:45 +01:00
Vladimir Dolzhenko 0495ba2495 avoid unnecessary collection copying 2021-11-25 02:22:44 +03:00
Vladimir Dolzhenko 42837415f0 Use nameFilter if all descriptors have not calculated
#KT-49821 Fixed
2021-11-25 02:22:40 +03:00
Vladimir Dolzhenko eaff4c6026 Reset elementFinders on clearPackageCaches()
Clean up references on a plugin unload to avoid class leakage

Relates to #KT-49475

Merge-request: KT-MR-4891
2021-11-01 14:21:15 +00:00
Vladimir Dolzhenko 714773fdf8 Add DiagnosticSink.setCallbackIfNotSet and deprecate DiagnosticSink.setCallback
#EA-258953 Fixed
2021-10-18 21:38:48 +03:00
Vladimir Dolzhenko b2afb602c5 Add InvalidModuleNotifier capability
Relates to #KT-48977
2021-10-02 14:29:25 +02:00
Vladimir Dolzhenko 2c8d583d8b Added ad-hoc KtValueArgument.stringTemplateExpression
Use only stub stringTemplateExpression if it is present and don't use ast nodes as it could be unbounded

#KT-47034 Fixed
2021-06-10 21:14:32 +00:00
Vladimir Dolzhenko 1eb04d5440 Support Kotlin 1.5 / 1.6 language versions come from external sources
#KTIJ-15743 Fixed

Original commit: 784f77a2b98b0c9719f4919e45a193f35d7d9875
2021-06-10 13:12:36 +00:00
Vladimir Dolzhenko de76aeb9d1 Optimize SdkInfo lookup for a huge monorepo with no SdkInfo
DFS of SdkInfo on moduleInfo and reuse cached libraryInfo dependencies
fix traverse order

#KT-47065 Fixed
Relates to #KT-46622
2021-06-09 08:31:46 +00:00
Vladimir Dolzhenko b01478746c Cache all module dependencies to avoid O(n^2) calc complexity
Quite noticeable when there is a big module that has 100+ libraries and many modules depends on it

#KT-46622 Fixed
2021-05-18 09:20:18 +00:00
Vladimir Dolzhenko c98dba6aea Do not set diagnostics callback if it is already set
Relates to #KT-37702
2021-05-10 09:59:16 +02:00
Vladimir Dolzhenko cf5e6b242b Wrap exception with file details
Relates to #KT-39776
2021-05-07 23:48:12 +02:00
Vladimir Dolzhenko 590a8d088d Refine locking to avoid dead lock
#KT-46215 Fixed
2021-04-21 11:01:12 +00:00
Vladimir Dolzhenko 613eda5016 Fix PackageFragmentProvider#isEmpty(FqName) for REPL 2021-04-09 21:06:32 +03:00
Vladimir Dolzhenko 3034d9d791 Temporary (partial) rollback optimize in PackageFragmentProvider#isEmpty(FqName) 2021-04-09 15:10:47 +02:00
Vladimir Dolzhenko 0761c4bf94 Optimize KtFile.getScript 2021-04-09 14:45:20 +02:00
Vladimir Dolzhenko 04268a720f Optimize KtFile.isScript 2021-04-09 12:17:51 +02:00
Vladimir Dolzhenko e511eec90e Added optimized PackageFragmentProvider#isEmpty(FqName) 2021-04-09 09:27:39 +00:00
Vladimir Dolzhenko 51393d2d0f Fix compilation 2021-03-25 16:23:01 +01:00
Vladimir Dolzhenko 88058ca2c8 Fix non-default constructors for service and extension class violation 2021-03-25 12:57:07 +01:00
Vladimir Dolzhenko ae4dd80254 Regenerate missed test
Relates to #KT-45339
2021-03-25 10:19:24 +01:00
Vladimir Dolzhenko 8068a5439f Fix handling non ctor elements in SECONDARY_CONSTRUCTOR_DELEGATION_CALL
#KT-45339 Fixed
2021-03-24 12:27:53 +00:00
Vladimir Dolzhenko 3d236b7171 Simplify reportOnElement
Relates to #KT-38959
2021-03-24 12:27:52 +00:00
Vladimir Dolzhenko 462b752763 Mark flaky test 2021-03-16 11:03:05 +01:00
Vladimir Dolzhenko fbe18164b4 Filter KtAnnotated on-the-fly diagnostic elements
Relates to #KTIJ-1760
Relates to #KT-45254
2021-03-11 08:43:36 +00:00
Vladimir Dolzhenko 36ff952a0f Ignore when failed to get file text
Relates to #KTIJ-706
2021-03-05 17:12:56 +01:00
Vladimir Dolzhenko cb92474af9 Use highlight visitor instead of custom general like highlighting pass
#KTIJ-1760 Fixed
#KT-45254 Fixed
2021-03-04 07:11:58 +00:00
Vladimir Dolzhenko 72322646cc Temporary disable assertion
Relates to #KT-37702
2021-03-03 14:15:50 +01:00
Vladimir Dolzhenko 81efdab4e4 Do not swallow any exceptions apart FNFE
Relates to #KT-39776
2021-02-24 11:06:49 +00:00
Vladimir Dolzhenko b8d1bbdd0d Do not swallow PCE
#KT-39776 Fixed
2021-02-19 15:04:45 +00:00
Vladimir Dolzhenko 8783ebc352 Report highlight errors to WolfTheProblemSolver
Relates to #KT-37702
#KTIJ-1246 Fixed

Original commit: bd222a5255c2fd6f4abfce3115f81733ef9a39f3
2021-02-19 05:46:04 +00:00
Vladimir Dolzhenko 6352814d45 Fix NPE
#KTIJ-898 Fixed

Original commit: 12d8e88b846f29598ca3904b49996bd6a9891ccd
2021-02-16 14:21:40 +00:00
Vladimir Dolzhenko 98ba379e07 Fixed NPE on StandaloneScriptRootsCache instantiation
Relates to ^EA-218043
#KTIJ-1137 Fixed

Original commit: 1d63a1b48d480b958ff44676c42b698a8ca5f64a
2021-02-16 14:21:39 +00:00
Vladimir Dolzhenko bf9fa4c9da Lightweight hashCode calc for LibraryInfo
#EA-6040509 Fixed
2021-02-13 21:25:46 +01:00
Vladimir Dolzhenko 9afe8a0a39 Make checker tests independent of plugin version
Relates to #KT-37702 #KTI-433
2021-02-09 22:52:17 +01:00
Vladimir Dolzhenko 872effc21e Check declaration modifier for actual method to avoid freeze
Checking modifier aims to get rid of unnecessary resolve for methods in non MPP (the most) cases

Relates to #KTIJ-1200
2021-02-08 14:43:19 +00:00
Vladimir Dolzhenko 391f53154a Fix NPE in Kotlin facets tab 2021-02-05 21:28:33 +01:00
Vladimir Dolzhenko 913c298be8 Kotlin highlight passes are reworked
#KT-37702 Fixed
2021-02-01 13:18:38 +00:00
Vladimir Dolzhenko 558338f997 Lazy diagnostics API in frontend
Relates to #KT-37702
2021-02-01 13:18:37 +00:00
Vladimir Dolzhenko 8019dbe06c Do not leak LowMemoryWatcher on plugin unload
#KT-44543 Fixed
2021-01-26 13:55:47 +00:00
Vladimir Dolzhenko 6331a135c8 Add LightClassUtil.getLightClassMethodsByName to avoid resolving all lightClassMethods and filtration later on 2021-01-18 11:13:16 +00:00