mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-03-22 06:50:54 +07:00
WEB-70567 WEB-70386 WebSymbols: improve handling of directive selectors
(cherry picked from commit 57b9daad05afbc14ac06f27102e11d592c80374c) IJ-CR-150932 GitOrigin-RevId: 5ca21996635ac3f2b639f371b092961a44d75ced
This commit is contained in:
committed by
intellij-monorepo-bot
parent
c2121af7a3
commit
be045e02bd
@@ -122,3 +122,5 @@ f:com.intellij.webSymbols.utils.WebSymbolUtils
|
||||
- sf:withMatchedName(com.intellij.webSymbols.WebSymbol,java.lang.String):com.intellij.webSymbols.WebSymbol
|
||||
- sf:withNavigationTarget(com.intellij.webSymbols.WebSymbol,com.intellij.psi.PsiElement):com.intellij.webSymbols.WebSymbol
|
||||
- sf:withOffset(java.util.List,I):java.util.List
|
||||
- sf:withSegments(com.intellij.webSymbols.query.WebSymbolMatch,java.util.List):com.intellij.webSymbols.query.WebSymbolMatch
|
||||
- sf:withSymbols(com.intellij.webSymbols.WebSymbolNameSegment,java.util.List):com.intellij.webSymbols.WebSymbolNameSegment
|
||||
|
||||
@@ -57,6 +57,10 @@ class WebSymbolNameSegmentImpl internal constructor(
|
||||
WebSymbolNameSegmentImpl(start, end, symbols, problem, displayName,
|
||||
matchScore, forcedSymbolKinds, explicitApiStatus, explicitPriority, explicitProximity)
|
||||
|
||||
internal fun withSymbols(symbols: List<WebSymbol>) =
|
||||
WebSymbolNameSegmentImpl(start, end, symbols, problem, displayName,
|
||||
matchScore, forcedSymbolKinds, explicitApiStatus, explicitPriority, explicitProximity)
|
||||
|
||||
internal fun copy(
|
||||
apiStatus: WebSymbolApiStatus?,
|
||||
priority: WebSymbol.Priority?,
|
||||
|
||||
@@ -168,6 +168,9 @@ internal open class WebSymbolMatchImpl private constructor(
|
||||
|
||||
override fun hashCode(): Int = name.hashCode()
|
||||
|
||||
internal fun withSegments(segments: List<WebSymbolNameSegment>): WebSymbolMatch =
|
||||
create(matchedName, segments, namespace, kind, origin, explicitPriority, explicitProximity)
|
||||
|
||||
class ReverseListIterator<T>(list: List<T>) : Iterator<T> {
|
||||
|
||||
private val iterator = list.listIterator(list.size)
|
||||
@@ -191,7 +194,7 @@ internal open class WebSymbolMatchImpl private constructor(
|
||||
origin: WebSymbolOrigin,
|
||||
explicitPriority: Priority?,
|
||||
explicitProximity: Int?): WebSymbolMatch =
|
||||
if (nameSegments.all { it.start == it.end || (it.symbols.isNotEmpty() && it.symbols.all { symbol -> symbol is PsiSourcedWebSymbol }) })
|
||||
if (nameSegments.all { it.start == it.end || (it.symbols.isNotEmpty() && it.symbols.any { symbol -> symbol is PsiSourcedWebSymbol }) })
|
||||
PsiSourcedWebSymbolMatch(matchedName, nameSegments, namespace, kind, origin,
|
||||
explicitPriority, explicitProximity)
|
||||
else WebSymbolMatchImpl(matchedName, nameSegments, namespace, kind, origin,
|
||||
|
||||
@@ -20,11 +20,13 @@ import com.intellij.util.containers.Stack
|
||||
import com.intellij.webSymbols.*
|
||||
import com.intellij.webSymbols.completion.WebSymbolCodeCompletionItem
|
||||
import com.intellij.webSymbols.html.WebSymbolHtmlAttributeValue
|
||||
import com.intellij.webSymbols.impl.WebSymbolNameSegmentImpl
|
||||
import com.intellij.webSymbols.impl.sortSymbolsByPriority
|
||||
import com.intellij.webSymbols.impl.withOffset
|
||||
import com.intellij.webSymbols.impl.withRange
|
||||
import com.intellij.webSymbols.patterns.impl.applyIcons
|
||||
import com.intellij.webSymbols.query.*
|
||||
import com.intellij.webSymbols.query.impl.WebSymbolMatchImpl
|
||||
import com.intellij.webSymbols.references.WebSymbolReferenceProblem.ProblemKind
|
||||
import java.util.*
|
||||
import javax.swing.Icon
|
||||
@@ -118,6 +120,12 @@ fun WebSymbol.unwrapMatchedSymbols(): Sequence<WebSymbol> =
|
||||
}
|
||||
}
|
||||
|
||||
fun WebSymbolNameSegment.withSymbols(symbols: List<WebSymbol>): WebSymbolNameSegment =
|
||||
(this as WebSymbolNameSegmentImpl).withSymbols(symbols)
|
||||
|
||||
fun WebSymbolMatch.withSegments(segments: List<WebSymbolNameSegment>): WebSymbolMatch =
|
||||
(this as WebSymbolMatchImpl).withSegments(segments)
|
||||
|
||||
fun WebSymbol.match(nameToMatch: String,
|
||||
params: WebSymbolsNameMatchQueryParams,
|
||||
context: Stack<WebSymbolsScope>): List<WebSymbol> {
|
||||
|
||||
Reference in New Issue
Block a user