IJPL-162853 more utilities for SyntaxElementTypeSet

GitOrigin-RevId: 2c898262f6c425dea65ebdecfebe76ae9340ef7c
This commit is contained in:
Max Medvedev
2025-05-12 16:33:16 +00:00
committed by intellij-monorepo-bot
parent c9c5a844e6
commit c7cfcdeb3d
2 changed files with 20 additions and 0 deletions
@@ -32,8 +32,11 @@
- containsAll(java.util.Collection):Z
- f:containsNullable(com.intellij.platform.syntax.SyntaxElementType):Z
- getSize():I
- f:intersect(com.intellij.platform.syntax.SyntaxElementTypeSet):com.intellij.platform.syntax.SyntaxElementTypeSet
- isEmpty():Z
- iterator():java.util.Iterator
- f:minus(com.intellij.platform.syntax.SyntaxElementType):com.intellij.platform.syntax.SyntaxElementTypeSet
- f:minus(java.lang.Iterable):com.intellij.platform.syntax.SyntaxElementTypeSet
- f:plus(com.intellij.platform.syntax.SyntaxElementType):com.intellij.platform.syntax.SyntaxElementTypeSet
- f:plus(java.lang.Iterable):com.intellij.platform.syntax.SyntaxElementTypeSet
- remove(java.lang.Object):Z
@@ -68,4 +68,21 @@ class SyntaxElementTypeSet internal constructor(
if (other in this) return this
return setOf(*tokens, other).asSyntaxElementTypeSet()
}
operator fun minus(other: Iterable<SyntaxElementType>): SyntaxElementTypeSet {
val newSet = tokens.toSet() - other.toSet()
if (newSet.size == size) return this // no removed elements
return newSet.asSyntaxElementTypeSet()
}
operator fun minus(other: SyntaxElementType): SyntaxElementTypeSet {
if (other !in this) return this
return (setOf(*tokens) - other).asSyntaxElementTypeSet()
}
fun intersect(other: SyntaxElementTypeSet): SyntaxElementTypeSet {
val newSet = tokens.toSet().intersect(other)
if (newSet.size == size) return this // no removed elements
return newSet.asSyntaxElementTypeSet()
}
}