WEB-76271 PolySymbols: reduce usage of (web) framework across generic APIs

GitOrigin-RevId: bb6ec777139e2c20331a144bd02b8def997ff0a6
This commit is contained in:
Piotr Tomiak
2026-01-10 01:01:12 +00:00
committed by intellij-monorepo-bot
parent d96b1728be
commit 3af3d32a46
28 changed files with 78 additions and 102 deletions
@@ -325,7 +325,6 @@
*f:com.intellij.polySymbols.completion.PolySymbolCodeCompletionItemInsertHandler$Companion
*:com.intellij.polySymbols.context.PolyContext
- *sf:Companion:com.intellij.polySymbols.context.PolyContext$Companion
- sf:KIND_FRAMEWORK:java.lang.String
- sf:PKG_MANAGER_NODE_PACKAGES:java.lang.String
- sf:PKG_MANAGER_RUBY_GEMS:java.lang.String
- sf:PKG_MANAGER_SYMFONY_BUNDLES:java.lang.String
@@ -337,7 +336,6 @@
- a:get(java.lang.String):java.lang.String
- s:get(java.lang.String,com.intellij.openapi.vfs.VirtualFile,com.intellij.openapi.project.Project):java.lang.String
- s:get(java.lang.String,com.intellij.psi.PsiElement):java.lang.String
- getFramework():java.lang.String
*f:com.intellij.polySymbols.context.PolyContext$Companion
- f:create(java.util.Map):com.intellij.polySymbols.context.PolyContext
- f:empty():com.intellij.polySymbols.context.PolyContext
@@ -567,6 +565,7 @@
- f:create(com.intellij.polySymbols.PolySymbol,com.intellij.psi.PsiElement,kotlin.jvm.functions.Function3):com.intellij.polySymbols.documentation.PolySymbolDocumentationTarget
*a:com.intellij.polySymbols.framework.PolySymbolFramework
- *sf:Companion:com.intellij.polySymbols.framework.PolySymbolFramework$Companion
- sf:KIND_FRAMEWORK:java.lang.String
- <init>():V
- sf:get(java.lang.String):com.intellij.polySymbols.framework.PolySymbolFramework
- sf:getAll():java.util.List
@@ -585,6 +584,8 @@
- f:getAll():java.util.List
- f:inLocation(com.intellij.openapi.vfs.VirtualFile,com.intellij.openapi.project.Project):com.intellij.polySymbols.framework.PolySymbolFramework
- f:inLocation(com.intellij.psi.PsiElement):com.intellij.polySymbols.framework.PolySymbolFramework
*f:com.intellij.polySymbols.framework.PolySymbolFrameworkKt
- sf:getFramework(com.intellij.polySymbols.context.PolyContext):java.lang.String
*f:com.intellij.polySymbols.html.HtmlSymbolKinds
- sf:HTML_ATTRIBUTES:com.intellij.polySymbols.PolySymbolKind
- sf:HTML_ATTRIBUTE_VALUES:com.intellij.polySymbols.PolySymbolKind
@@ -825,7 +826,6 @@
- codeCompletionQuery(java.util.List,I,kotlin.jvm.functions.Function1):java.util.List
- a:createPointer():com.intellij.model.Pointer
- a:getContext():com.intellij.polySymbols.context.PolyContext
- getFramework():java.lang.String
- a:getKeepUnresolvedTopLevelReferences():Z
- a:getLocation():com.intellij.psi.PsiElement
- a:getNamesProvider():com.intellij.polySymbols.query.PolySymbolNamesProvider
@@ -882,7 +882,6 @@
- a:addRootScopes(java.util.List):com.intellij.polySymbols.query.PolySymbolQueryExecutorFactory$PolySymbolQueryExecutorBuilder
- a:allowResolve(Z):com.intellij.polySymbols.query.PolySymbolQueryExecutorFactory$PolySymbolQueryExecutorBuilder
- a:create():com.intellij.polySymbols.query.PolySymbolQueryExecutor
- a:setFramework(java.lang.String):com.intellij.polySymbols.query.PolySymbolQueryExecutorFactory$PolySymbolQueryExecutorBuilder
*:com.intellij.polySymbols.query.PolySymbolQueryExecutorListener
- *sf:Companion:com.intellij.polySymbols.query.PolySymbolQueryExecutorListener$Companion
- sf:TOPIC:com.intellij.util.messages.Topic
@@ -892,7 +891,6 @@
*:com.intellij.polySymbols.query.PolySymbolQueryParams
- accept(com.intellij.polySymbols.PolySymbol):Z
- a:getExcludeModifiers():java.util.List
- getFramework():java.lang.String
- a:getQueryExecutor():com.intellij.polySymbols.query.PolySymbolQueryExecutor
- a:getRequiredModifiers():java.util.List
*:com.intellij.polySymbols.query.PolySymbolQueryParams$Builder
@@ -1100,11 +1098,10 @@
- f:unwrapAllDelegates(com.intellij.polySymbols.PolySymbol):com.intellij.polySymbols.PolySymbol
*a:com.intellij.polySymbols.utils.PolySymbolIsolatedMappingScope
- com.intellij.polySymbols.query.PolySymbolScope
- <init>(java.util.Map,java.lang.String,com.intellij.psi.PsiElement):V
- <init>(java.util.Map,com.intellij.psi.PsiElement):V
- pa:acceptSymbol(com.intellij.polySymbols.PolySymbol):Z
- f:equals(java.lang.Object):Z
- getCodeCompletions(com.intellij.polySymbols.PolySymbolQualifiedName,com.intellij.polySymbols.query.PolySymbolCodeCompletionQueryParams,com.intellij.polySymbols.query.PolySymbolQueryStack):java.util.List
- pf:getFramework():java.lang.String
- pf:getLocation():com.intellij.psi.PsiElement
- pf:getMappings():java.util.Map
- getMatchingSymbols(com.intellij.polySymbols.PolySymbolQualifiedName,com.intellij.polySymbols.query.PolySymbolNameMatchQueryParams,com.intellij.polySymbols.query.PolySymbolQueryStack):java.util.List
@@ -12,7 +12,7 @@
*:com.intellij.polySymbols.completion.PolySymbolCodeCompletionItemCustomizer
- *sf:Companion:com.intellij.polySymbols.completion.PolySymbolCodeCompletionItemCustomizer$Companion
- sf:EP_NAME:com.intellij.openapi.extensions.ExtensionPointName
- a:customize(com.intellij.polySymbols.completion.PolySymbolCodeCompletionItem,java.lang.String,com.intellij.polySymbols.PolySymbolKind,com.intellij.psi.PsiElement):com.intellij.polySymbols.completion.PolySymbolCodeCompletionItem
- a:customize(com.intellij.polySymbols.completion.PolySymbolCodeCompletionItem,com.intellij.polySymbols.context.PolyContext,com.intellij.polySymbols.PolySymbolKind,com.intellij.psi.PsiElement):com.intellij.polySymbols.completion.PolySymbolCodeCompletionItem
*f:com.intellij.polySymbols.completion.PolySymbolCodeCompletionItemCustomizer$Companion
*a:com.intellij.polySymbols.completion.PolySymbolsCompletionProviderBase
- com.intellij.codeInsight.completion.CompletionProvider
@@ -24,14 +24,14 @@
- sf:isFurtherCodeCompletionPreventedFor(com.intellij.codeInsight.completion.CompletionParameters,com.intellij.polySymbols.PolySymbolKind[]):Z
- sf:preventFurtherCodeCompletionsFor(com.intellij.codeInsight.completion.CompletionParameters,com.intellij.polySymbols.PolySymbolKind):V
- sf:processCompletionQueryResults(com.intellij.polySymbols.query.PolySymbolQueryExecutor,com.intellij.codeInsight.completion.CompletionResultSet,com.intellij.polySymbols.PolySymbolKind,java.lang.String,I,com.intellij.psi.PsiElement,java.util.List,java.util.Set,kotlin.jvm.functions.Function1,kotlin.jvm.functions.Function1):V
- sf:processPolySymbolCodeCompletionItems(java.util.List,com.intellij.codeInsight.completion.CompletionResultSet,com.intellij.polySymbols.PolySymbolKind,java.lang.String,java.lang.String,com.intellij.psi.PsiElement,java.util.Set,kotlin.jvm.functions.Function1,kotlin.jvm.functions.Function1):V
- sf:processPolySymbolCodeCompletionItems(java.util.List,com.intellij.codeInsight.completion.CompletionResultSet,com.intellij.polySymbols.PolySymbolKind,java.lang.String,com.intellij.polySymbols.context.PolyContext,com.intellij.psi.PsiElement,java.util.Set,kotlin.jvm.functions.Function1,kotlin.jvm.functions.Function1):V
*f:com.intellij.polySymbols.completion.PolySymbolsCompletionProviderBase$Companion
- f:isFurtherCodeCompletionPreventedFor(com.intellij.codeInsight.completion.CompletionParameters,com.intellij.polySymbols.PolySymbolKind[]):Z
- f:preventFurtherCodeCompletionsFor(com.intellij.codeInsight.completion.CompletionParameters,com.intellij.polySymbols.PolySymbolKind):V
- f:processCompletionQueryResults(com.intellij.polySymbols.query.PolySymbolQueryExecutor,com.intellij.codeInsight.completion.CompletionResultSet,com.intellij.polySymbols.PolySymbolKind,java.lang.String,I,com.intellij.psi.PsiElement,java.util.List,java.util.Set,kotlin.jvm.functions.Function1,kotlin.jvm.functions.Function1):V
- bs:processCompletionQueryResults$default(com.intellij.polySymbols.completion.PolySymbolsCompletionProviderBase$Companion,com.intellij.polySymbols.query.PolySymbolQueryExecutor,com.intellij.codeInsight.completion.CompletionResultSet,com.intellij.polySymbols.PolySymbolKind,java.lang.String,I,com.intellij.psi.PsiElement,java.util.List,java.util.Set,kotlin.jvm.functions.Function1,kotlin.jvm.functions.Function1,I,java.lang.Object):V
- f:processPolySymbolCodeCompletionItems(java.util.List,com.intellij.codeInsight.completion.CompletionResultSet,com.intellij.polySymbols.PolySymbolKind,java.lang.String,java.lang.String,com.intellij.psi.PsiElement,java.util.Set,kotlin.jvm.functions.Function1,kotlin.jvm.functions.Function1):V
- bs:processPolySymbolCodeCompletionItems$default(com.intellij.polySymbols.completion.PolySymbolsCompletionProviderBase$Companion,java.util.List,com.intellij.codeInsight.completion.CompletionResultSet,com.intellij.polySymbols.PolySymbolKind,java.lang.String,java.lang.String,com.intellij.psi.PsiElement,java.util.Set,kotlin.jvm.functions.Function1,kotlin.jvm.functions.Function1,I,java.lang.Object):V
- f:processPolySymbolCodeCompletionItems(java.util.List,com.intellij.codeInsight.completion.CompletionResultSet,com.intellij.polySymbols.PolySymbolKind,java.lang.String,com.intellij.polySymbols.context.PolyContext,com.intellij.psi.PsiElement,java.util.Set,kotlin.jvm.functions.Function1,kotlin.jvm.functions.Function1):V
- bs:processPolySymbolCodeCompletionItems$default(com.intellij.polySymbols.completion.PolySymbolsCompletionProviderBase$Companion,java.util.List,com.intellij.codeInsight.completion.CompletionResultSet,com.intellij.polySymbols.PolySymbolKind,java.lang.String,com.intellij.polySymbols.context.PolyContext,com.intellij.psi.PsiElement,java.util.Set,kotlin.jvm.functions.Function1,kotlin.jvm.functions.Function1,I,java.lang.Object):V
*:com.intellij.polySymbols.highlighting.PolySymbolHighlightingCustomizer
- *sf:Companion:com.intellij.polySymbols.highlighting.PolySymbolHighlightingCustomizer$Companion
- sf:EP_NAME:com.intellij.openapi.extensions.ExtensionPointName
@@ -3,7 +3,7 @@ package com.intellij.polySymbols.completion
import com.intellij.openapi.extensions.ExtensionPointName
import com.intellij.polySymbols.PolySymbolKind
import com.intellij.polySymbols.framework.FrameworkId
import com.intellij.polySymbols.context.PolyContext
import com.intellij.psi.PsiElement
import org.jetbrains.annotations.TestOnly
@@ -11,7 +11,7 @@ interface PolySymbolCodeCompletionItemCustomizer {
fun customize(
item: PolySymbolCodeCompletionItem,
framework: FrameworkId?,
context: PolyContext,
kind: PolySymbolKind,
location: PsiElement,
): PolySymbolCodeCompletionItem?
@@ -21,10 +21,10 @@ interface PolySymbolCodeCompletionItemCustomizer {
@TestOnly
@JvmField
val EP_NAME: ExtensionPointName<PolySymbolCodeCompletionItemCustomizer> =
ExtensionPointName.create<PolySymbolCodeCompletionItemCustomizer>("com.intellij.polySymbols.codeCompletionItemCustomizer")
ExtensionPointName.create("com.intellij.polySymbols.codeCompletionItemCustomizer")
internal fun Sequence<PolySymbolCodeCompletionItem>.customizeItems(
framework: FrameworkId?,
context: PolyContext,
kind: PolySymbolKind,
location: PsiElement,
): Sequence<PolySymbolCodeCompletionItem> {
@@ -34,7 +34,7 @@ interface PolySymbolCodeCompletionItemCustomizer {
customizers.foldRight(item) { customizer, acc: PolySymbolCodeCompletionItem? ->
if (acc == null)
null
else customizer.customize(acc, framework, kind, location)
else customizer.customize(acc, context, kind, location)
}
}
else this
@@ -13,7 +13,7 @@ import com.intellij.openapi.util.getAndUpdateUserData
import com.intellij.patterns.StandardPatterns
import com.intellij.polySymbols.PolySymbolKind
import com.intellij.polySymbols.completion.PolySymbolCodeCompletionItemCustomizer.Companion.customizeItems
import com.intellij.polySymbols.framework.FrameworkId
import com.intellij.polySymbols.context.PolyContext
import com.intellij.polySymbols.query.PolySymbolQueryExecutor
import com.intellij.polySymbols.query.PolySymbolQueryExecutorFactory
import com.intellij.polySymbols.query.PolySymbolScope
@@ -88,7 +88,7 @@ abstract class PolySymbolsCompletionProviderBase<T : PsiElement> : CompletionPro
) {
processPolySymbolCodeCompletionItems(
queryExecutor.codeCompletionQuery(kind, name, position).additionalScope(queryContext).run(),
result, kind, name, queryExecutor.framework, location, providedNames, filter, consumer
result, kind, name, queryExecutor.context, location, providedNames, filter, consumer
)
}
@@ -98,7 +98,7 @@ abstract class PolySymbolsCompletionProviderBase<T : PsiElement> : CompletionPro
result: CompletionResultSet,
kind: PolySymbolKind,
name: String,
framework: FrameworkId?,
context: PolyContext,
location: PsiElement,
providedNames: MutableSet<String>? = null,
filter: ((PolySymbolCodeCompletionItem) -> Boolean)? = null,
@@ -109,7 +109,7 @@ abstract class PolySymbolsCompletionProviderBase<T : PsiElement> : CompletionPro
symbols
.asSequence()
.distinctBy { Triple(it.offset, it.name, it.completeAfterInsert) }
.customizeItems(framework, kind, location)
.customizeItems(context, kind, location)
.filter { item ->
(filter == null || filter(item))
&& item.offset <= prefixLength
@@ -9,7 +9,6 @@ import com.intellij.polySymbols.PolyContextKind
import com.intellij.polySymbols.context.PolyContext
import com.intellij.polySymbols.context.PolyContextKindRules
import com.intellij.polySymbols.customElements.json.*
import com.intellij.polySymbols.framework.FrameworkId
import com.intellij.polySymbols.impl.StaticPolySymbolScopeBase
import com.intellij.polySymbols.query.PolySymbolNameConversionRules
import com.intellij.polySymbols.query.PolySymbolNameConversionRulesProvider
@@ -59,7 +58,7 @@ abstract class CustomElementsManifestScopeBase :
override fun getContextRules(): MultiMap<PolyContextKind, PolyContextKindRules> = MultiMap.empty()
override fun getNameConversionRulesProvider(framework: FrameworkId): PolySymbolNameConversionRulesProvider =
override fun getNameConversionRulesProvider(context: PolyContext): PolySymbolNameConversionRulesProvider? =
object : PolySymbolNameConversionRulesProvider {
override fun getNameConversionRules(): PolySymbolNameConversionRules = PolySymbolNameConversionRules.empty()
override fun createPointer(): Pointer<out PolySymbolNameConversionRulesProvider> = Pointer.hardPointer(this)
@@ -11,12 +11,13 @@ import com.intellij.openapi.util.text.StringUtil
import com.intellij.polySymbols.PolyContextKind
import com.intellij.polySymbols.PolyContextName
import com.intellij.polySymbols.context.PolyContext
import com.intellij.polySymbols.context.PolyContext.Companion.KIND_FRAMEWORK
import com.intellij.polySymbols.context.PolyContextKindRules
import com.intellij.polySymbols.context.PolyContextKindRules.DisablementRules
import com.intellij.polySymbols.context.PolyContextKindRules.EnablementRules
import com.intellij.polySymbols.context.PolyContextRulesProvider
import com.intellij.polySymbols.framework.FrameworkId
import com.intellij.polySymbols.framework.PolySymbolFramework.Companion.KIND_FRAMEWORK
import com.intellij.polySymbols.framework.framework
import com.intellij.polySymbols.impl.StaticPolySymbolScopeBase
import com.intellij.polySymbols.query.PolySymbolNameConversionRules
import com.intellij.polySymbols.query.PolySymbolNameConversionRulesProvider
@@ -44,8 +45,8 @@ abstract class WebTypesScopeBase :
abstract override fun createPointer(): Pointer<out WebTypesScopeBase>
override fun getNameConversionRulesProvider(framework: FrameworkId): PolySymbolNameConversionRulesProvider {
return WebTypesSymbolNameConversionRulesProvider(framework, this, nameConversionRulesCache)
override fun getNameConversionRulesProvider(context: PolyContext): PolySymbolNameConversionRulesProvider? {
return context.framework?.let { WebTypesSymbolNameConversionRulesProvider(it, this, nameConversionRulesCache) }
}
override fun getContextRules(): MultiMap<PolyContextKind, PolyContextKindRules> = contextRulesCache.value
@@ -11,6 +11,7 @@ import com.intellij.polySymbols.context.PolyContext
import com.intellij.polySymbols.documentation.PolySymbolDocumentation
import com.intellij.polySymbols.documentation.PolySymbolDocumentationProvider
import com.intellij.polySymbols.documentation.PolySymbolDocumentationTarget
import com.intellij.polySymbols.framework.framework
import com.intellij.polySymbols.html.PROP_HTML_ATTRIBUTE_VALUE
import com.intellij.polySymbols.html.PolySymbolHtmlAttributeValue
import com.intellij.polySymbols.html.htmlAttributeValue
@@ -237,7 +237,7 @@ interface PolySymbol : Symbol, NavigatableSymbol, PolySymbolPrioritizedScope {
/**
* Return `true` if the symbol should be present in the query results
* in the particular context. By default, the current symbol framework is checked.
* in the particular context.
*/
fun matchContext(context: PolyContext): Boolean =
true
@@ -10,15 +10,11 @@ import com.intellij.polySymbols.PolyContextName
import com.intellij.polySymbols.context.impl.PolyContextImpl
import com.intellij.polySymbols.context.impl.PolyContextProviderExtensionCollector
import com.intellij.polySymbols.context.impl.findPolyContext
import com.intellij.polySymbols.framework.FrameworkId
import com.intellij.psi.PsiElement
import org.jetbrains.annotations.TestOnly
interface PolyContext {
val framework: FrameworkId?
get() = this[KIND_FRAMEWORK]
operator fun get(kind: PolyContextKind): PolyContextName?
@Suppress("MayBeConstant")
@@ -29,9 +25,6 @@ interface PolyContext {
val POLY_SYMBOLS_CONTEXT_EP: KeyedExtensionCollector<PolyContextProvider, String> =
PolyContextProviderExtensionCollector(ExtensionPointName("com.intellij.polySymbols.context"))
@JvmField
val KIND_FRAMEWORK: String = "framework"
@JvmField
val VALUE_NONE: String = "none"
@@ -6,13 +6,16 @@ import com.intellij.openapi.util.KeyedExtensionCollector
import com.intellij.openapi.vfs.VirtualFile
import com.intellij.polySymbols.PolySymbolQualifiedName
import com.intellij.polySymbols.context.PolyContext
import com.intellij.polySymbols.context.PolyContext.Companion.KIND_FRAMEWORK
import com.intellij.polySymbols.framework.PolySymbolFramework.Companion.KIND_FRAMEWORK
import com.intellij.polySymbols.query.PolySymbolNamesProvider
import com.intellij.psi.PsiElement
import javax.swing.Icon
typealias FrameworkId = String
val PolyContext.framework: FrameworkId?
get() = this[KIND_FRAMEWORK]
abstract class PolySymbolFramework {
lateinit var id: String
@@ -40,6 +43,8 @@ abstract class PolySymbolFramework {
val all get() = extensions.asSequence().map { it.instance }
}
const val KIND_FRAMEWORK: String = "framework"
@JvmStatic
fun get(id: String): PolySymbolFramework = WEB_FRAMEWORK_EP.findSingle(id) ?: UnregisteredWebFramework(id)
@@ -2,8 +2,8 @@
package com.intellij.polySymbols.impl
import com.intellij.model.Pointer
import com.intellij.polySymbols.context.PolyContext
import com.intellij.polySymbols.context.PolyContextRulesProvider
import com.intellij.polySymbols.framework.FrameworkId
import com.intellij.polySymbols.query.PolySymbolNameConversionRulesProvider
import com.intellij.polySymbols.query.PolySymbolScope
@@ -11,5 +11,5 @@ interface StaticPolySymbolScope : PolySymbolScope, PolyContextRulesProvider {
override fun createPointer(): Pointer<out StaticPolySymbolScope>
fun getNameConversionRulesProvider(framework: FrameworkId): PolySymbolNameConversionRulesProvider
fun getNameConversionRulesProvider(context: PolyContext): PolySymbolNameConversionRulesProvider?
}
@@ -8,6 +8,7 @@ import com.intellij.polySymbols.PolySymbolQualifiedName
import com.intellij.polySymbols.completion.PolySymbolCodeCompletionItem
import com.intellij.polySymbols.context.PolyContext
import com.intellij.polySymbols.framework.FrameworkId
import com.intellij.polySymbols.framework.framework
import com.intellij.polySymbols.patterns.PolySymbolPattern
import com.intellij.polySymbols.query.*
import com.intellij.util.containers.ContainerUtil
@@ -13,7 +13,7 @@ internal class CompletionParameters(
: this(name, params.queryExecutor, params.position)
override fun toString(): String =
"complete: $name (position: $position, framework: $framework)"
"complete: $name (position: $position, context: ${queryExecutor.context})"
fun withPosition(position: Int): CompletionParameters =
CompletionParameters(name, queryExecutor, position)
@@ -12,8 +12,6 @@ internal open class ListParameters(
constructor(params: PolySymbolListSymbolsQueryParams)
: this(params.queryExecutor, params.expandPatterns)
val framework: String? get() = queryExecutor.framework
override fun toString(): String =
"list (framework: $framework)"
"list (context: ${queryExecutor.context})"
}
@@ -12,8 +12,6 @@ internal open class MatchParameters(
constructor(name: String, params: PolySymbolNameMatchQueryParams)
: this(name, params.queryExecutor)
val framework: String? get() = queryExecutor.framework
override fun toString(): String =
"match: $name (framework: $framework)"
"match: $name (context: ${queryExecutor.context})"
}
@@ -8,8 +8,6 @@ import com.intellij.polySymbols.PolySymbolKind
import com.intellij.polySymbols.PolySymbolQualifiedName
import com.intellij.polySymbols.completion.PolySymbolCodeCompletionItem
import com.intellij.polySymbols.context.PolyContext
import com.intellij.polySymbols.context.PolyContext.Companion.KIND_FRAMEWORK
import com.intellij.polySymbols.framework.FrameworkId
import com.intellij.psi.PsiElement
/**
@@ -29,8 +27,6 @@ interface PolySymbolQueryExecutor : ModificationTracker {
val context: PolyContext
val framework: FrameworkId? get() = context[KIND_FRAMEWORK]
@get:JvmName("allowResolve")
val allowResolve: Boolean
@@ -30,8 +30,6 @@ interface PolySymbolQueryExecutorFactory : Disposable {
fun addNameConversionRules(rules: PolySymbolNameConversionRules): PolySymbolQueryExecutorBuilder
fun setFramework(framework: String): PolySymbolQueryExecutorBuilder
fun addPolyContext(kind: PolyContextKind, name: PolyContextName?): PolySymbolQueryExecutorBuilder
fun allowResolve(allowResolve: Boolean): PolySymbolQueryExecutorBuilder
@@ -6,10 +6,6 @@ import com.intellij.polySymbols.PolySymbolModifier
import com.intellij.polySymbols.query.impl.AbstractQueryParamsBuilderImpl
sealed interface PolySymbolQueryParams {
val framework: String?
get() = queryExecutor.framework
val queryExecutor: PolySymbolQueryExecutor
val requiredModifiers: List<PolySymbolModifier>
@@ -5,9 +5,10 @@ import com.intellij.model.Pointer
import com.intellij.openapi.util.ModificationTracker
import com.intellij.polySymbols.PolySymbolKind
import com.intellij.polySymbols.PolySymbolQualifiedName
import com.intellij.polySymbols.context.PolyContext
import com.intellij.polySymbols.css.NAMESPACE_CSS
import com.intellij.polySymbols.framework.FrameworkId
import com.intellij.polySymbols.framework.PolySymbolFramework
import com.intellij.polySymbols.framework.framework
import com.intellij.polySymbols.html.NAMESPACE_HTML
import com.intellij.polySymbols.query.PolySymbolNameConversionRules
import com.intellij.polySymbols.query.PolySymbolNameConverter
@@ -18,7 +19,7 @@ import java.util.*
@ApiStatus.Internal
class PolySymbolNamesProviderImpl(
private val framework: FrameworkId?,
private val context: PolyContext,
private val configuration: List<PolySymbolNameConversionRules>,
private val modificationTracker: ModificationTracker,
) : PolySymbolNamesProvider {
@@ -31,7 +32,7 @@ class PolySymbolNamesProviderImpl(
private val renameProviders: Map<PolySymbolKind, PolySymbolNameConverter>
private val polySymbolFramework get() = framework?.let { PolySymbolFramework.get(it) }
private val polySymbolFramework get() = context.framework?.let { PolySymbolFramework.get(it) }
init {
val canonicalNamesProviders = mutableMapOf<PolySymbolKind, PolySymbolNameConverter>()
@@ -54,18 +55,18 @@ class PolySymbolNamesProviderImpl(
Pointer.hardPointer(this)
override fun hashCode(): Int =
framework.hashCode() * 31 + configuration.hashCode()
context.hashCode() * 31 + configuration.hashCode()
override fun equals(other: Any?): Boolean =
other is PolySymbolNamesProviderImpl
&& other.framework == framework
&& other.context == context
&& other.configuration == configuration
override fun getModificationCount(): Long =
modificationTracker.modificationCount
override fun withRules(rules: List<PolySymbolNameConversionRules>): PolySymbolNamesProvider =
PolySymbolNamesProviderImpl(framework, rules + configuration, modificationTracker)
PolySymbolNamesProviderImpl(context, rules + configuration, modificationTracker)
override fun getNames(qualifiedName: PolySymbolQualifiedName, target: PolySymbolNamesProvider.Target): List<String> =
when (target) {
@@ -4,7 +4,7 @@ package com.intellij.polySymbols.query.impl
import com.intellij.openapi.util.ModificationTracker
import com.intellij.polySymbols.PolyContextKind
import com.intellij.polySymbols.PolyContextName
import com.intellij.polySymbols.context.PolyContext.Companion.KIND_FRAMEWORK
import com.intellij.polySymbols.context.PolyContext
import com.intellij.polySymbols.context.impl.PolyContextImpl
import com.intellij.polySymbols.query.PolySymbolNameConversionRules
import com.intellij.polySymbols.query.PolySymbolQueryExecutor
@@ -12,7 +12,7 @@ import com.intellij.polySymbols.query.PolySymbolQueryExecutorFactory.PolySymbolQ
import com.intellij.polySymbols.query.PolySymbolQueryResultsCustomizer
import com.intellij.polySymbols.query.PolySymbolScope
class PolySymbolQueryExecutorBuilderImpl() : PolySymbolQueryExecutorBuilder {
class PolySymbolQueryExecutorBuilderImpl : PolySymbolQueryExecutorBuilder {
private val rootScopes = mutableListOf<PolySymbolScope>()
private val customizers = mutableListOf<PolySymbolQueryResultsCustomizer>()
private val nameConversionRules = mutableListOf<PolySymbolNameConversionRules>()
@@ -42,10 +42,6 @@ class PolySymbolQueryExecutorBuilderImpl() : PolySymbolQueryExecutorBuilder {
context[kind] = name
}
override fun setFramework(framework: String): PolySymbolQueryExecutorBuilder = apply {
context[KIND_FRAMEWORK] = framework
}
override fun allowResolve(allowResolve: Boolean): PolySymbolQueryExecutorBuilder = apply {
this.allowResolve = allowResolve
}
@@ -54,7 +50,7 @@ class PolySymbolQueryExecutorBuilderImpl() : PolySymbolQueryExecutorBuilder {
PolySymbolQueryExecutorImpl(
null,
rootScopes,
PolySymbolNamesProviderImpl(context[KIND_FRAMEWORK], nameConversionRules, ModificationTracker.NEVER_CHANGED),
PolySymbolNamesProviderImpl(PolyContext.create(context), nameConversionRules, ModificationTracker.NEVER_CHANGED),
PolySymbolCompoundQueryResultsCustomizer(customizers),
PolyContextImpl(context),
allowResolve
@@ -105,7 +105,7 @@ class PolySymbolQueryExecutorFactoryImpl(private val project: Project) : PolySym
nameConversionRules.add(provider.getNameConversionRules())
providers.add(provider.createPointer())
}
return PolySymbolNamesProviderImpl(context.framework, nameConversionRules, createModificationTracker(providers))
return PolySymbolNamesProviderImpl(context, nameConversionRules, createModificationTracker(providers))
}
private fun getCustomScope(context: PsiElement?): List<PolySymbolScope> =
@@ -9,7 +9,6 @@ import com.intellij.polySymbols.PolySymbol
import com.intellij.polySymbols.PolySymbolKind
import com.intellij.polySymbols.PolySymbolQualifiedName
import com.intellij.polySymbols.completion.PolySymbolCodeCompletionItem
import com.intellij.polySymbols.framework.FrameworkId
import com.intellij.polySymbols.query.*
import com.intellij.psi.PsiElement
import com.intellij.psi.util.CachedValueProvider
@@ -19,11 +18,6 @@ import com.intellij.util.applyIf
abstract class PolySymbolIsolatedMappingScope<T : PsiElement>(
protected val mappings: Map<PolySymbolKind, PolySymbolKind>,
/**
* Allows to optimize for symbols with a particular [PolySymbolOrigin.framework].
* If `null` all symbols will be accepted and scope will be queried in all contexts.
*/
protected val framework: FrameworkId?,
/**
* Location for which the isolated query executor should be built.
*/
@@ -39,7 +33,7 @@ abstract class PolySymbolIsolatedMappingScope<T : PsiElement>(
params: PolySymbolCodeCompletionQueryParams,
stack: PolySymbolQueryStack,
): List<PolySymbolCodeCompletionItem> {
if (!params.queryExecutor.allowResolve || (framework != null && params.framework != framework))
if (!params.queryExecutor.allowResolve)
return emptyList()
val sourceKind = mappings[qualifiedName.kind] ?: return emptyList()
var result: List<PolySymbolCodeCompletionItem> = emptyList()
@@ -58,7 +52,7 @@ abstract class PolySymbolIsolatedMappingScope<T : PsiElement>(
params: PolySymbolNameMatchQueryParams,
stack: PolySymbolQueryStack,
): List<PolySymbol> {
if (!params.queryExecutor.allowResolve || (framework != null && params.framework != framework))
if (!params.queryExecutor.allowResolve)
return emptyList()
val sourceKind = mappings[qualifiedName.kind] ?: return emptyList()
var result: List<PolySymbol> = emptyList()
@@ -79,7 +73,7 @@ abstract class PolySymbolIsolatedMappingScope<T : PsiElement>(
params: PolySymbolListSymbolsQueryParams,
stack: PolySymbolQueryStack,
): List<PolySymbol> {
if (!params.queryExecutor.allowResolve || (framework != null && params.framework != framework))
if (!params.queryExecutor.allowResolve)
return emptyList()
val sourceKind = mappings[kind] ?: return emptyList()
var result: List<PolySymbol> = emptyList()
@@ -103,11 +97,10 @@ abstract class PolySymbolIsolatedMappingScope<T : PsiElement>(
|| (other != null
&& other is PolySymbolIsolatedMappingScope<*>
&& other::class.java == this::class.java
&& other.framework == framework
&& other.location == location)
override fun hashCode(): Int =
31 * framework.hashCode() + location.hashCode()
location.hashCode()
private val subQuery by lazy(LazyThreadSafetyMode.PUBLICATION) {
getCachedSubQueryExecutorAndScope().first
@@ -8,15 +8,15 @@ import com.intellij.openapi.components.service
import com.intellij.openapi.extensions.DefaultPluginDescriptor
import com.intellij.openapi.extensions.ExtensionPoint
import com.intellij.openapi.extensions.PluginId
import com.intellij.testFramework.UsefulTestCase
import com.intellij.polySymbols.context.PolyContext.Companion.KIND_FRAMEWORK
import com.intellij.polySymbols.context.impl.PolyContextProviderExtensionPoint
import com.intellij.polySymbols.framework.PolySymbolFramework.Companion.KIND_FRAMEWORK
import com.intellij.polySymbols.html.HtmlSymbolMatchCustomizer
import com.intellij.polySymbols.query.impl.CustomElementsManifestMockScopeImpl
import com.intellij.polySymbols.query.impl.PolySymbolMockQueryExecutorFactory
import com.intellij.polySymbols.query.impl.WebTypesMockScopeImpl
import com.intellij.polySymbols.webTypes.filters.PolySymbolMatchPrefixFilter
import com.intellij.polySymbols.webTypes.impl.PolySymbolFilterEP
import com.intellij.testFramework.UsefulTestCase
import java.io.File
abstract class PolySymbolsMockQueryExecutorTestBase : UsefulTestCase() {
@@ -4,6 +4,7 @@ package com.intellij.polySymbols.query
import com.intellij.model.Pointer
import com.intellij.polySymbols.*
import com.intellij.polySymbols.context.PolyContext
import com.intellij.polySymbols.framework.framework
import com.intellij.polySymbols.html.HTML_ATTRIBUTES
import com.intellij.polySymbols.testFramework.query.doTest
import com.intellij.polySymbols.testFramework.query.printMatches
@@ -5,7 +5,6 @@ import com.intellij.openapi.vfs.VirtualFile
import com.intellij.polySymbols.PolyContextKind
import com.intellij.polySymbols.PolyContextName
import com.intellij.polySymbols.context.PolyContext
import com.intellij.polySymbols.context.PolyContext.Companion.KIND_FRAMEWORK
import com.intellij.polySymbols.query.PolySymbolQueryExecutor
import com.intellij.polySymbols.query.PolySymbolQueryExecutorFactory
import com.intellij.polySymbols.query.PolySymbolQueryResultsCustomizerFactory
@@ -19,20 +18,21 @@ class PolySymbolMockQueryExecutorFactory : PolySymbolQueryExecutorFactory {
val context: MutableMap<PolyContextKind, PolyContextName> = mutableMapOf()
override fun create(location: PsiElement?, allowResolve: Boolean): PolySymbolQueryExecutor =
PolySymbolQueryExecutorImpl(location, scopeList,
PolySymbolNamesProviderImpl(
context[KIND_FRAMEWORK],
context[KIND_FRAMEWORK]?.let { framework ->
scopeList.filterIsInstance<WebTypesMockScopeImpl>().map {
it.getNameConversionRulesProvider(framework).getNameConversionRules()
}
} ?: emptyList(),
createModificationTracker(
scopeList.filterIsInstance<WebTypesMockScopeImpl>().map { it.createPointer() })),
PolySymbolQueryResultsCustomizerFactory.getQueryResultsCustomizer(location, PolyContext.create(context)),
PolyContext.create(context),
allowResolve)
override fun create(location: PsiElement?, allowResolve: Boolean): PolySymbolQueryExecutor {
val polyContext = PolyContext.create(context)
return PolySymbolQueryExecutorImpl(location, scopeList,
PolySymbolNamesProviderImpl(
polyContext,
scopeList.filterIsInstance<WebTypesMockScopeImpl>().mapNotNull {
it.getNameConversionRulesProvider(polyContext)?.getNameConversionRules()
},
createModificationTracker(
scopeList.filterIsInstance<WebTypesMockScopeImpl>().map { it.createPointer() })),
PolySymbolQueryResultsCustomizerFactory.getQueryResultsCustomizer(location,
PolyContext.create(context)),
PolyContext.create(context),
allowResolve)
}
override fun addScope(
scope: PolySymbolScope,
@@ -5,13 +5,14 @@ import com.intellij.codeInsight.completion.CompletionParameters
import com.intellij.codeInsight.completion.CompletionResultSet
import com.intellij.codeInsight.completion.XmlAttributeInsertHandler
import com.intellij.codeInsight.completion.XmlTagInsertHandler
import com.intellij.polySymbols.html.HtmlDescriptorUtils.getStandardHtmlAttributeDescriptors
import com.intellij.polySymbols.html.HtmlFrameworkSymbolsSupport
import com.intellij.polySymbols.html.StandardHtmlSymbol
import com.intellij.polySymbols.PolySymbolModifier
import com.intellij.polySymbols.completion.AsteriskAwarePrefixMatcher
import com.intellij.polySymbols.completion.PolySymbolsCompletionProviderBase
import com.intellij.polySymbols.framework.framework
import com.intellij.polySymbols.html.HTML_ATTRIBUTES
import com.intellij.polySymbols.html.HtmlDescriptorUtils.getStandardHtmlAttributeDescriptors
import com.intellij.polySymbols.html.HtmlFrameworkSymbolsSupport
import com.intellij.polySymbols.html.StandardHtmlSymbol
import com.intellij.polySymbols.query.PolySymbolQueryExecutor
import com.intellij.polySymbols.query.PolySymbolQueryExecutorFactory
import com.intellij.polySymbols.utils.asSingleSymbol
@@ -38,7 +39,7 @@ class HtmlAttributeSymbolsCompletionProvider : PolySymbolsCompletionProviderBase
val providedAttributes = tag.attributes.asSequence().mapNotNull { it.name }.toMutableSet()
val attributesFilter = HtmlFrameworkSymbolsSupport.get(queryExecutor.framework)
val attributesFilter = HtmlFrameworkSymbolsSupport.get(queryExecutor.context.framework)
.getAttributeNameCodeCompletionFilter(tag)
val filteredOutStandardSymbols = getStandardHtmlAttributeDescriptors(tag)
@@ -4,8 +4,8 @@ package com.intellij.polySymbols.html
import com.intellij.polySymbols.PolySymbolKind
import com.intellij.polySymbols.completion.PolySymbolCodeCompletionItem
import com.intellij.polySymbols.completion.PolySymbolCodeCompletionItemCustomizer
import com.intellij.polySymbols.context.PolyContext
import com.intellij.polySymbols.documentation.PolySymbolDocumentationTarget
import com.intellij.polySymbols.framework.FrameworkId
import com.intellij.psi.PsiElement
import com.intellij.util.asSafely
import org.jetbrains.annotations.ApiStatus
@@ -14,12 +14,12 @@ import org.jetbrains.annotations.ApiStatus
class HtmlCodeCompletionItemCustomizer : PolySymbolCodeCompletionItemCustomizer {
override fun customize(
item: PolySymbolCodeCompletionItem,
framework: FrameworkId?,
context: PolyContext,
kind: PolySymbolKind,
location: PsiElement,
): PolySymbolCodeCompletionItem =
when (kind) {
HTML_ELEMENTS -> item.withTypeText{
HTML_ELEMENTS -> item.withTypeText {
item.symbol
?.getDocumentationTarget(null)
?.asSafely<PolySymbolDocumentationTarget>()
@@ -5,6 +5,7 @@ import com.intellij.polySymbols.PolySymbol
import com.intellij.polySymbols.PolySymbolProperty
import com.intellij.polySymbols.context.PolyContext
import com.intellij.polySymbols.framework.FrameworkId
import com.intellij.polySymbols.framework.framework
import com.intellij.polySymbols.html.HtmlFrameworkSymbolsSupport.Companion.PROP_HTML_FRAMEWORK_ID
import com.intellij.polySymbols.utils.unwrapMatchedSymbols
import com.intellij.polySymbols.webTypes.WebTypesSymbol