Commit Graph

2988 Commits

Author SHA1 Message Date
Dmitry Savvinov 182f5fafad Take dependsOn-graph from corresponding property for MPP.M3 2019-10-02 16:52:39 +03:00
Dmitry Savvinov 958a7d9315 Refactor MPP versioning
- Use 'null' as indicator of non-MPP version. Consequently, remove
useless 'isMpp' method, and lift all methods to extensions (to be able
to call them on nullable 'facetSettings.mppVersion')

- Change semantics of extensions to check for exact equality rather than
for "at least specified version"

- Deprecate old MPP-versioning in favour of 'facetSettings.mppVersion'
2019-10-02 16:52:39 +03:00
Nikolay Krasko 343502125b Rename ResolveInWriteActionManager -> ResolveInDispatchThreadManager 2019-10-02 15:58:44 +03:00
Natalia Selezneva fac49df177 Invoke in CompilerSettingsListeners in invokeLater
script templates that are loaded from compiler settings are subscribed on this topic.
When ScriptTemplatesFromCompilerSettingsProvider invokes KotlinCompilerSettings.getInstance, deadlock may happen if those settings aren't initialized yet.

^KT-25373
2019-10-02 10:25:18 +03:00
Denis Zharkov 67410f7a57 Parametrize behavior of DescriptorEquivalenceForOverrides::areCallableDescriptorsEquivalent
The changes introduced 471134d31e are only needed
for the case of HMPP project while for other cases it might break the behavior
a bit like in KT-34027

See org.jetbrains.kotlin.resolve.calls.results.OverloadingConflictResolver#filterOutEquivalentCalls

Before 471134d we were comparing
"fun foo(x: String)" with "[substituted] fun foo(x: String)"
and areCallableDescriptorsEquivalent returned false for such case.
Thus, both overrides were left in the resulting set.

After 471134d, those two descriptors
becamed considered as equal thus having a possibility to remove any of them.

The problem is that "areCallableDescriptorsEquivalent" has kind of
unclear contract. Effectively it checks whether two descriptors match
to the same declaration

But straightforward fixing of this exact call-site (using original descriptors)
doesn't help: behavior might change in a very subtle way (see org.jetbrains.kotlin.spec.checkers.DiagnosticsTestSpecGenerated.NotLinked.Dfa.Pos#test72)

So, the main idea is changing the contract for areCallableDescriptorsEquivalent
only when project is HMPP one.

^KT-34027 In Progress
2019-09-30 20:09:42 +03:00
Dmitry Gridin 57d25fc5f5 Create actual: add type accessibility checker
#KT-28740 Fixed
2019-09-26 20:21:54 +07:00
Dmitry Gridin 773e4764b1 TypeAccessibilityCheckerImpl: fix incorrectTypes for KtNamedDeclaration 2019-09-26 20:21:54 +07:00
Vladimir Dolzhenko 750a677366 Register manually IDEKotlinBinaryClassCache for AbstractLoadJavaClsStubTest.kt 2019-09-25 14:49:17 +02:00
Vladimir Dolzhenko a98c610958 Fix KotlinCodeStyleSettings and IDEKotlinBinaryClassCache.kt 191 compilation 2019-09-24 22:01:05 +02:00
Vladimir Dolzhenko a8c72b7e84 Do not resolve services in static initializers in IDEKotlinBinaryClassCache, KT-33973 2019-09-24 16:47:49 +02:00
Dmitry Savvinov e3b7b41544 Minor: rename globalFacade -> facadeForModules 2019-09-24 17:05:05 +03:00
Dmitry Savvinov bef33e971f Make ResolverForProject own BuiltInsCache
Previously, BuiltInsCache was a separate abstraction with its own
lifecycle. In particular, it had a CachedValue inside, which uses
SoftReference to hold the computed data. This is bad, because this might
lead to disalignment of lifetimes with respective ResolverForProject,
leading to potential exceptions in analysis, see KT-33504 for details.

This commit fixes it by making root ResolverForProject own BuiltInsCache
and removing any logic about invalidation from BuiltInsCache. So, now,
BuiltInsCache is disposed iff corresponding ResolverForProject is
disposed

^KT-33504 Fixed
2019-09-24 17:05:05 +03:00
Dmitry Savvinov bfacc1a3c5 Introduce AbstractResolverForProject
Previously, ResolverForProjectImpl had multiple callbacks in
constructor. Some of those callbacks were used only to overcome module
visibility and provide an ability to inject IDE-specific logic into
compiler (ResolverForProject is in the 'compiler'-module)

This commit introduces abstract class which implements
environment-independent logic (previously, this logic had been stored in
ResolverForProjectImpl) with several abstract met hods (previously,
callbacks). Then, we provide few concrete implementations of
AbstractResolverForProject with clear semantics:

- IdeaResolverForProject: resolver used in IDE, where we have indices,
  oracles, multiple modules, etc.
- ResolverForSingleModuleProject: resolver for project with only one
  module, commonly used for CLI compiler/tests
- one anonymous implementation for MultimoduleTests

This refactoring achieves several things:
- now it is easier to see what kinds of ResolverForProject you might see
  in some particular environment (previously, one had to inspect all
  call-sites of constructor)
- we can easily add IDE-specific logic in IdeaResolverForProject without
  adding noisy callbacks (which most probably wouldn't have any other
  non-trivial implementations)
2019-09-24 17:05:05 +03:00
Dmitry Savvinov 1e288c03c3 Minor: fix typos in KDoc 2019-09-24 17:05:04 +03:00
Dmitry Savvinov 4f700f5df3 Minor: drop unused parameter from createFacadeForScriptDependencies 2019-09-24 17:05:04 +03:00
Vladimir Dolzhenko 8b0aeb9a55 Do not resolve services in non-default ctors 2019-09-24 15:15:37 +02:00
Igor Yakovlev fc70fd05fc Enable kotlin.collections support for UL classes
Removed restriction for classes derived from Kotlin collections
Added type erasure for java collection overrided methods
2019-09-23 17:30:15 +03:00
Nikolay Krasko ee4ab967a4 Force resolve check for dispatch thread instead of isWriteAccessAllowed
isWriteAccessAllowed = dispatch thread + write lock
2019-09-23 16:54:35 +03:00
Vladimir Dolzhenko 3a1d649b30 Don't trigger refresh of vfs in 'getOutsiderFileOrigin' (EA-209420) 2019-09-18 10:23:34 -07:00
Nikolay Krasko 220a8f2872 Clear internal caches in PerModulePackageCacheService on dispose (KT-33802) 2019-09-18 11:30:02 +03:00
Denis Zharkov b3e96a1fcf FIR: Merge FirTopLevelDeclaredMemberScope into FirSelfImportingScope
It's strange that those scopes have similar semantics but belong
to different level (that might change semantics a bit)
2019-09-18 10:03:55 +07:00
Denis Zharkov fb4b6b8290 FIR: Move constructor processing from scopes to tower resolvers 2019-09-18 10:03:28 +07:00
Dmitriy Novozhilov e70c1d6959 [FIR] Remove default visited hierarchy 2019-09-17 18:09:18 +03:00
Mikhail Glukhikh 20c45a8382 FIR general refactoring: get rid of ConeSymbols 2019-09-16 16:55:42 +03:00
Vladimir Dolzhenko c3265a8bf0 Decrease Light classes code generation in multithreaded cases by guarding KotlinClassInnerStuffCache, LightClassDataHolder.ForClass cache values calculation with lock 2019-09-13 15:10:09 +02:00
Igor Yakovlev 2b7dee6f8d Add CodegenApplicabilityCheckerExtension and use it to fallback to Heavy LigthClasses
+ Fixed #KT-33584
2019-09-11 15:29:12 +03:00
Nikolay Krasko d3f03cc607 Remove deprecated usage of BulkFileListener.Adapter 2019-09-11 12:40:26 +03:00
Nikolay Krasko edb700b898 Switch to 192 platform 2019-09-06 11:28:25 +03:00
Dmitry Gridin 650a6e5cc4 MakeOverriddenMemberOpenFix: should update actual members
#KT-32586 Fixed
2019-09-06 15:25:01 +07:00
Natalia Selezneva fb01f7be5e Rename ScriptDependenciesManager to ScriptConfigurationManager 2019-09-06 10:52:59 +03:00
Natalia Selezneva fa6b5b567b Fix org.jetbrains.kotlin.idea.script.ScriptConfigurationHighlightingTestGenerated.Highlighting.testThrowingResolver 2019-09-06 10:52:30 +03:00
Natalia Selezneva 961e8c2c74 Refactor the mechanism how script configurations are updated
Introduce file attributes cache, which is only applicable when no dependencies are cached in memory cache
Refactor ScriptDependenciesCache to memory cache that is able to get configuration from cache and checks if it is up to date
Move all public methods to ScriptDependenciesManager
Introduce ScriptClassRootsManager that checks if root change event should be called after script configuration update
2019-09-06 10:52:17 +03:00
Natalia Selezneva dc46f73ecf Rewrite scripting related API to PsiFile instead of VirtualFile
There were several places where we converted virtualFile to PsiFile. This operation need a read access and may throw ProcessCanceledException,
so we want to minimize its usages in IDE
2019-09-06 10:51:26 +03:00
Mikhail Glukhikh 91f39a0ecf FIR [optimization]: eliminate some unnecessary ScopeSessions 2019-09-06 09:29:19 +03:00
Dmitry Gridin c4a1101600 KtSimpleNameReference: add root prefix support to bindToFqName function 2019-09-05 18:01:23 +07:00
Dmitry Gridin 2e781a7a27 KtSimpleNameReference: cleanup code 2019-09-05 18:01:22 +07:00
Dmitry Gridin 4224d109e2 AnalysisFlags: add flag ideMode for IDE specific analysis 2019-09-05 18:01:22 +07:00
Andrey Uskov 4642127c28 Introduce versioning of multiplatform in KotlinFacetSettings 2019-09-05 13:58:51 +03:00
Roman Golyshev 870dbd158c KT-28910: Add tooltips for toolbar checkboxes in .kts scratch editor
- make `ScratchFileAutoRunner.AUTO_RUN_DELAY_IN_SECONDS` public
- remove `Show preview only` mode button from the toolbar
- ^KT-28910 Fixed
2019-09-04 10:56:41 +03:00
Roman Golyshev f0f2fd5684 KT-28910: Extract labels from scratch editor to KotlinBundle messages 2019-09-04 10:56:41 +03:00
Nikolay Krasko 63f43d9b2e Revert "Use lazySync instead of lazyPub to avoid raise on creation LightClasses"
The commit causes deadlock in 183 branch in KotlinLintTestGenerated test.

This reverts commit d6c54b84
2019-09-03 12:42:56 +03:00
Igor Yakovlev 79a603768a UltraLight implementation for local and anonymous declarations 2019-09-02 17:42:50 +03:00
Vladimir Dolzhenko d6c54b845b Use lazySync instead of lazyPub to avoid raise on creation LightClasses 2019-09-02 15:30:08 +02:00
Nikolay Krasko edb83f4ed9 Remove IconExtensionChooser and png icons after removing 182
#KT-33536 Fixed
2019-08-30 12:14:25 +03:00
Nikolay Krasko 888a93115f Use function icon from the platform after removing 182
#KT-33536 Fixed
2019-08-30 12:14:21 +03:00
Nikolay Krasko 4d0fc1dc22 Remove 182 support
#KT-33536 Fixed
2019-08-30 12:13:44 +03:00
Nikolay Krasko 1c4ee6bd79 Remove as33 support
#KT-33536 Fixed
2019-08-30 12:13:09 +03:00
Vladimir Dolzhenko a2fcefd456 Added fallback for LightClasses getOwnFields, getOwnMethods if dummy resolve failed (KT-27243, KT-33561) 2019-08-29 15:46:57 +02:00
Dmitry Gridin 3c6da0bfe6 TypeAccessibilityChecker: rename existingFqNames to existingTypeNames and add comments 2019-08-27 17:26:10 +07:00
Dmitry Gridin 35d64f85f8 TypeAccessibilityCheckerImpl: explicitParameters change return type to Sequence 2019-08-27 17:26:10 +07:00