[angular] WEB-72193 Support for inputBinding, outputBinding and twoWayBinding - improve error messages - reuse referencing Web Symbol name as the reference display name

(cherry picked from commit ad2d73618df1ca1e6e26c5d5945b1d56249667d9)

IJ-CR-158672

GitOrigin-RevId: 9aa4af56283843889ae094d1bb085213d0b00409
This commit is contained in:
Piotr Tomiak
2025-03-27 13:39:53 +01:00
committed by intellij-monorepo-bot
parent 39d4a4d067
commit 8e4f6c6bee
5 changed files with 26 additions and 4 deletions

View File

@@ -817,6 +817,7 @@
- a:createPointer():com.intellij.model.Pointer
- a:getContext():com.intellij.webSymbols.context.WebSymbolsContext
- getFramework():java.lang.String
- a:getKeepUnresolvedTopLevelReferences():Z
- a:getLocation():com.intellij.psi.PsiElement
- a:getNamesProvider():com.intellij.webSymbols.query.WebSymbolNamesProvider
- a:getResultsCustomizer():com.intellij.webSymbols.query.WebSymbolsQueryResultsCustomizer
@@ -838,6 +839,7 @@
- bs:runNameMatchQuery$default(com.intellij.webSymbols.query.WebSymbolsQueryExecutor,com.intellij.webSymbols.WebSymbolQualifiedName,Z,Z,Z,java.util.List,I,java.lang.Object):java.util.List
- bs:runNameMatchQuery$default(com.intellij.webSymbols.query.WebSymbolsQueryExecutor,java.lang.String,java.lang.String,java.lang.String,Z,Z,Z,java.util.List,I,java.lang.Object):java.util.List
- bs:runNameMatchQuery$default(com.intellij.webSymbols.query.WebSymbolsQueryExecutor,java.util.List,Z,Z,Z,java.util.List,I,java.lang.Object):java.util.List
- a:setKeepUnresolvedTopLevelReferences(Z):V
- a:withNameConversionRules(java.util.List):com.intellij.webSymbols.query.WebSymbolsQueryExecutor
*:com.intellij.webSymbols.query.WebSymbolsQueryExecutorFactory
- com.intellij.openapi.Disposable

View File

@@ -34,6 +34,8 @@ interface WebSymbolsQueryExecutor : ModificationTracker {
val resultsCustomizer: WebSymbolsQueryResultsCustomizer
var keepUnresolvedTopLevelReferences: Boolean
fun createPointer(): Pointer<WebSymbolsQueryExecutor>
fun runNameMatchQuery(namespace: SymbolNamespace,

View File

@@ -40,6 +40,8 @@ class WebSymbolsQueryExecutorImpl(
private val rootScope: List<WebSymbolsScope> = initializeCompoundScopes(rootScope)
private var nestingLevel: Int = 0
override var keepUnresolvedTopLevelReferences: Boolean = false
override fun hashCode(): Int =
Objects.hash(location, rootScope, context, namesProvider, resultsCustomizer)
@@ -161,9 +163,18 @@ class WebSymbolsQueryExecutorImpl(
.asSequence()
.flatMap { scope ->
ProgressManager.checkCanceled()
scope.getMatchingSymbols(qualifiedName, params, Stack(finalContext))
val prev = keepUnresolvedTopLevelReferences
keepUnresolvedTopLevelReferences = false
try {
scope.getMatchingSymbols(qualifiedName, params, Stack(finalContext))
} finally {
keepUnresolvedTopLevelReferences = prev
}
}
.filter {
keepUnresolvedTopLevelReferences
|| it !is WebSymbolMatch || it.nameSegments.size > 1 || (it.nameSegments.isNotEmpty() && it.nameSegments[0].problem == null)
}
.filter { it !is WebSymbolMatch || it.nameSegments.size > 1 || (it.nameSegments.isNotEmpty() && it.nameSegments[0].problem == null) }
.distinct()
.toList()
.customizeMatches(params.strictScope, qualifiedName)
@@ -300,7 +311,13 @@ class WebSymbolsQueryExecutorImpl(
val scopeSymbols = scope
.takeLastUntilExclusiveScopeFor(qName.qualifiedKind)
.flatMap {
it.getMatchingSymbols(qName, contextQueryParams, Stack(scope))
val prev = keepUnresolvedTopLevelReferences
keepUnresolvedTopLevelReferences = false
try {
it.getMatchingSymbols(qName, contextQueryParams, Stack(scope))
} finally {
keepUnresolvedTopLevelReferences = prev
}
}
scopeSymbols.flatMapTo(scope) {
it.queryScope

View File

@@ -52,7 +52,7 @@ class ReferencingWebSymbol private constructor(
}.toTypedArray()
)), false,
WebSymbolsPatternFactory.createPatternSequence(
WebSymbolsPatternFactory.createSymbolReferencePlaceholder(),
WebSymbolsPatternFactory.createSymbolReferencePlaceholder(name),
)
)

View File

@@ -43,6 +43,7 @@ class WebSymbolHtmlAttributeValueReferenceProvider : PsiWebSymbolReferenceProvid
?.asSingleSymbol()
else
queryExecutor
.also { it.keepUnresolvedTopLevelReferences = true }
.runNameMatchQuery(WebSymbol.HTML_ATTRIBUTE_VALUES.withName(name))
.takeIf {
it.isNotEmpty()