tm-grammars
Version:
Collecton of TextMate grammars in JSON
1,460 lines (1,459 loc) • 134 kB
JSON
{
"displayName": "Swift",
"fileTypes": [
"swift"
],
"firstLineMatch": "^#!/.*\\bswift",
"name": "swift",
"patterns": [
{
"include": "#root"
}
],
"repository": {
"async-throws": {
"captures": {
"1": {
"name": "invalid.illegal.await-must-precede-throws.swift"
},
"2": {
"name": "storage.modifier.exception.swift"
},
"3": {
"name": "storage.modifier.async.swift"
}
},
"match": "\\b(?:((?:throws\\s+|rethrows\\s+)async)|((?:|re)throws)|(async))\\b"
},
"attributes": {
"patterns": [
{
"begin": "((@)available)(\\()",
"beginCaptures": {
"1": {
"name": "storage.modifier.attribute.swift"
},
"2": {
"name": "punctuation.definition.attribute.swift"
},
"3": {
"name": "punctuation.definition.arguments.begin.swift"
}
},
"end": "\\)",
"endCaptures": {
"0": {
"name": "punctuation.definition.arguments.end.swift"
}
},
"name": "meta.attribute.available.swift",
"patterns": [
{
"captures": {
"1": {
"name": "keyword.other.platform.os.swift"
},
"2": {
"name": "constant.numeric.swift"
}
},
"match": "\\b(swift|(?:iOS|macOS|OSX|watchOS|tvOS|visionOS|UIKitForMac)(?:ApplicationExtension)?)\\b(?:\\s+([0-9]+(?:\\.[0-9]+)*)\\b)?"
},
{
"begin": "\\b((?:introduc|deprecat|obsolet)ed)\\s*(:)\\s*",
"beginCaptures": {
"1": {
"name": "keyword.other.swift"
},
"2": {
"name": "punctuation.separator.key-value.swift"
}
},
"end": "(?!\\G)",
"patterns": [
{
"match": "\\b[0-9]+(?:\\.[0-9]+)*\\b",
"name": "constant.numeric.swift"
}
]
},
{
"begin": "\\b(message|renamed)\\s*(:)\\s*(?=\")",
"beginCaptures": {
"1": {
"name": "keyword.other.swift"
},
"2": {
"name": "punctuation.separator.key-value.swift"
}
},
"end": "(?!\\G)",
"patterns": [
{
"include": "#literals"
}
]
},
{
"captures": {
"1": {
"name": "keyword.other.platform.all.swift"
},
"2": {
"name": "keyword.other.swift"
},
"3": {
"name": "invalid.illegal.character-not-allowed-here.swift"
}
},
"match": "(?:(\\*)|\\b(deprecated|unavailable|noasync)\\b)\\s*(.*?)(?=[),])"
}
]
},
{
"begin": "((@)objc)(\\()",
"beginCaptures": {
"1": {
"name": "storage.modifier.attribute.swift"
},
"2": {
"name": "punctuation.definition.attribute.swift"
},
"3": {
"name": "punctuation.definition.arguments.begin.swift"
}
},
"end": "\\)",
"endCaptures": {
"0": {
"name": "punctuation.definition.arguments.end.swift"
}
},
"name": "meta.attribute.objc.swift",
"patterns": [
{
"captures": {
"1": {
"name": "invalid.illegal.missing-colon-after-selector-piece.swift"
}
},
"match": "\\w*(?::(?:\\w*:)*(\\w*))?",
"name": "entity.name.function.swift"
}
]
},
{
"begin": "(@)(?<q>`?)[_\\p{L}][_\\p{L}\\p{N}\\p{M}]*(\\k<q>)",
"beginCaptures": {
"0": {
"name": "storage.modifier.attribute.swift"
},
"1": {
"name": "punctuation.definition.attribute.swift"
},
"2": {
"name": "punctuation.definition.identifier.swift"
},
"3": {
"name": "punctuation.definition.identifier.swift"
}
},
"end": "(?!\\G\\()",
"name": "meta.attribute.swift",
"patterns": [
{
"begin": "\\(",
"beginCaptures": {
"0": {
"name": "punctuation.definition.arguments.begin.swift"
}
},
"end": "\\)",
"endCaptures": {
"0": {
"name": "punctuation.definition.arguments.end.swift"
}
},
"name": "meta.arguments.attribute.swift",
"patterns": [
{
"include": "#expressions"
}
]
}
]
}
]
},
"builtin-functions": {
"patterns": [
{
"match": "(?<=\\.)(?:s(?:ort(?:ed)?|plit)|contains|index|partition|f(?:i(?:lter|rst)|orEach|latMap)|with(?:MutableCharacters|CString|U(?:nsafe(?:Mutable(?:BufferPointer|Pointer(?:s|To(?:Header|Elements)))|BufferPointer)|TF8Buffer))|m(?:in|a[px]))(?=\\s*[({])\\b",
"name": "support.function.swift"
},
{
"match": "(?<=\\.)(?:s(?:ymmetricDifference|t(?:oreBytes|arts|ride)|ortInPlace|u(?:ccessor|ffix|btract(?:ing|InPlace|WithOverflow)?)|quareRoot|amePosition)|h(?:oldsUnique(?:|OrPinned)Reference|as(?:Suf|Pre)fix)|ne(?:gated?|xt)|c(?:o(?:untByEnumerating|py(?:Bytes)?)|lamp(?:ed)?|reate)|t(?:o(?:IntMax|Opaque|UIntMax)|ake(?:R|Unr)etainedValue|r(?:uncatingRemainder|a(?:nscodedLength|ilSurrogate)))|i(?:s(?:MutableAndUniquelyReferenced(?:OrPinned)?|S(?:trictSu(?:perset(?:Of)?|bset(?:Of)?)|u(?:perset(?:Of)?|bset(?:Of)?))|Continuation|T(?:otallyOrdered|railSurrogate)|Disjoint(?:With)?|Unique(?:Reference|lyReferenced(?:OrPinned)?)|Equal|Le(?:ss(?:ThanOrEqualTo)?|adSurrogate))|n(?:sert(?:ContentsOf)?|tersect(?:ion|InPlace)?|itialize(?:Memory|From)?|dex(?:Of|ForKey)))|o(?:verlaps|bjectAt)|d(?:i(?:stance(?:To)?|vide(?:d|WithOverflow)?)|e(?:s(?:cendant|troy)|code(?:CString)?|initialize|alloc(?:ate(?:Capacity)?)?)|rop(?:First|Last))|u(?:n(?:ion(?:InPlace)?|derestimateCount|wrappedOrError)|p(?:date(?:Value)?|percased))|join(?:ed|WithSeparator)|p(?:op(?:First|Last)|ass(?:R|Unr)etained|re(?:decessor|fix))|e(?:scaped?|n(?:code|umerated?)|lementsEqual|xclusiveOr(?:InPlace)?)|f(?:orm(?:Remainder|S(?:ymmetricDifference|quareRoot)|TruncatingRemainder|In(?:tersection|dex)|Union)|latten|rom(?:CString(?:RepairingIllFormedUTF8)?|Opaque))|w(?:i(?:thMemoryRebound|dth)|rite(?:To)?)|l(?:o(?:wercased|ad)|e(?:adSurrogate|xicographical(?:Compare|lyPrecedes)))|a(?:ss(?:ign(?:(?:Backward|)From)?|umingMemoryBound)|d(?:d(?:ing(?:Product)?|Product|WithOverflow)?|vanced(?:By)?)|utorelease|ppend(?:ContentsOf)?|lloc(?:ate)?|bs)|r(?:ound(?:ed)?|e(?:serveCapacity|tain|duce|place(?:(?:R|Subr)ange)?|versed?|quest(?:Native|UniqueMutableBacking)Buffer|lease|m(?:ove(?:Range|Subrange|Value(?:ForKey)?|First|Last|A(?:tIndex|ll))?|ainder(?:WithOverflow)?)))|ge(?:nerate|t(?:Objects|Element))|m(?:in(?:imum(?:Magnitude)?|Element)|ove(?:Initialize(?:Memory|BackwardFrom|From)?|Assign(?:From)?)?|ultipl(?:y(?:WithOverflow)?|ied)|easure|a(?:ke(?:Iterator|Description)|x(?:imum(?:Magnitude)?|Element)))|bindMemory)(?=\\s*\\()",
"name": "support.function.swift"
},
{
"match": "(?<=\\.)(?:s(?:uperclassMirror|amePositionIn|tartsWith)|nextObject|c(?:haracterAtIndex|o(?:untByEnumeratingWithState|pyWithZone)|ustom(?:Mirror|PlaygroundQuickLook))|is(?:EmptyInput|ASCII)|object(?:Enumerator|ForKey|AtIndex)|join|put|keyEnumerator|withUnsafeMutablePointerToValue|length|getMirror|m(?:oveInitializeAssignFrom|ember))(?=\\s*\\()",
"name": "support.function.swift"
}
]
},
"builtin-global-functions": {
"patterns": [
{
"begin": "\\b(type)(\\()\\s*(of)(:)",
"beginCaptures": {
"1": {
"name": "support.function.dynamic-type.swift"
},
"2": {
"name": "punctuation.definition.arguments.begin.swift"
},
"3": {
"name": "support.variable.parameter.swift"
},
"4": {
"name": "punctuation.separator.argument-label.begin.swift"
}
},
"end": "\\)",
"endCaptures": {
"0": {
"name": "punctuation.definition.arguments.end.swift"
}
},
"patterns": [
{
"include": "#expressions"
}
]
},
{
"match": "\\ba(?:nyGenerator|utoreleasepool)(?=\\s*[({])\\b",
"name": "support.function.swift"
},
{
"match": "\\b(?:s(?:tride(?:of(?:Value)?)?|izeof(?:Value)?|equence|wap)|numericCast|transcode|is(?:UniquelyReferenced(?:NonObjC)?|KnownUniquelyReferenced)|zip|d(?:ump|ebugPrint)|unsafe(?:BitCast|Downcast|Unwrap|Address(?:Of)?)|pr(?:int|econdition(?:Failure)?)|fatalError|with(?:Unsafe(?:Mutable|)Pointer|ExtendedLifetime|VaList)|a(?:ssert(?:ionFailure)?|lignof(?:Value)?|bs)|re(?:peatElement|adLine)|getVaList|m(?:in|ax))(?=\\s*\\()",
"name": "support.function.swift"
},
{
"match": "\\b(?:s(?:ort|uffix|pli(?:ce|t))|insert|overlaps|d(?:istance|rop(?:First|Last))|join|prefix|extend|withUnsafe(?:Mutable|)Pointers|lazy|advance|re(?:flect|move(?:Range|Last|A(?:tIndex|ll))))(?=\\s*\\()",
"name": "support.function.swift"
}
]
},
"builtin-properties": {
"patterns": [
{
"match": "(?<=(?:^|\\W)(?:Process\\.|CommandLine\\.))(arguments|argc|unsafeArgv)",
"name": "support.variable.swift"
},
{
"match": "(?<=\\.)(?:s(?:t(?:artIndex|ri(?:ngValue|de))|i(?:ze|gn(?:BitIndex|ificand(?:Bit(?:Count|Pattern)|Width)?|alingNaN)?)|u(?:perclassMirror|mmary|bscriptBaseAddress))|h(?:eader|as(?:hValue|PointerRepresentation))|n(?:ulTerminatedUTF8|ext(?:Down|Up)|a(?:n|tiveOwner))|c(?:haracters|ount(?:TrailingZeros)?|ustom(?:Mirror|PlaygroundQuickLook)|apacity)|i(?:s(?:S(?:ign(?:Minus|aling(?:NaN)?)|ubnormal)|N(?:ormal|aN)|Canonical|Infinite|Zero|Empty|Finite|ASCII)|n(?:dices|finity)|dentity)|owner|de(?:|bugDe)scription|u(?:n(?:safelyUnwrapped|icodeScalars?|derestimatedCount)|tf(?:16|8(?:Start|C(?:String|odeUnitCount))?)|intValue|ppercaseString|lp(?:OfOne)?)|p(?:i|ointee)|e(?:ndIndex|lements|xponent(?:Bit(?:Count|Pattern))?)|values?|keys|quietNaN|f(?:irst(?:ElementAddress(?:IfContiguous)?)?|loatingPointClass)|l(?:ittleEndian|owercaseString|eastNo(?:nzero|rmal)Magnitude|a(?:st|zy))|a(?:l(?:ignment|l(?:ocatedElementCount|Zeros))|rray(?:PropertyIsNativeTypeChecked)?)|ra(?:dix|wValue)|greatestFiniteMagnitude|m(?:in|emory|ax)|b(?:yteS(?:ize|wapped)|i(?:nade|tPattern|gEndian)|uffer|ase(?:Address)?))\\b",
"name": "support.variable.swift"
},
{
"match": "(?<=\\.)(?:boolValue|disposition|end|objectIdentifier|quickLookObject|start|valueType)\\b",
"name": "support.variable.swift"
},
{
"match": "(?<=\\.)(?:s(?:calarValue|i(?:ze|gnalingNaN)|o(?:und|me)|uppressed|prite|et)|n(?:one|egative(?:Subnormal|Normal|Infinity|Zero))|c(?:ol(?:or|lection)|ustomized)|t(?:o(?:NearestOr(?:Even|AwayFromZero)|wardZero)|uple|ext)|i(?:nt|mage)|optional|d(?:ictionary|o(?:uble|wn))|u(?:Int|p|rl)|p(?:o(?:sitive(?:Subnormal|Normal|Infinity|Zero)|int)|lus)|e(?:rror|mptyInput)|view|quietNaN|float|a(?:ttributedString|wayFromZero)|r(?:ectangle|ange)|generated|minus|b(?:ool|ezierPath))\\b",
"name": "support.variable.swift"
}
]
},
"builtin-types": {
"patterns": [
{
"include": "#builtin-types-builtin-class-type"
},
{
"include": "#builtin-types-builtin-enum-type"
},
{
"include": "#builtin-types-builtin-protocol-type"
},
{
"include": "#builtin-types-builtin-struct-type"
},
{
"include": "#builtin-types-builtin-typealias"
},
{
"match": "\\bAny\\b",
"name": "support.type.any.swift"
}
]
},
"builtin-types-builtin-class-type": {
"match": "\\b(Managed((?:|Proto)Buffer)|NonObjectiveCBase|AnyGenerator)\\b",
"name": "support.class.swift"
},
"builtin-types-builtin-enum-type": {
"patterns": [
{
"match": "\\b(?:CommandLine|Process(?=\\.))\\b",
"name": "support.constant.swift"
},
{
"match": "\\bNever\\b",
"name": "support.constant.never.swift"
},
{
"match": "\\b(?:ImplicitlyUnwrappedOptional|Representation|MemoryLayout|FloatingPointClassification|SetIndexRepresentation|SetIteratorRepresentation|FloatingPointRoundingRule|UnicodeDecodingResult|Optional|DictionaryIndexRepresentation|AncestorRepresentation|DisplayStyle|PlaygroundQuickLook|Never|FloatingPointSign|Bit|DictionaryIteratorRepresentation)\\b",
"name": "support.type.swift"
},
{
"match": "\\b(?:MirrorDisposition|QuickLookObject)\\b",
"name": "support.type.swift"
}
]
},
"builtin-types-builtin-protocol-type": {
"patterns": [
{
"match": "\\b(?:Ra(?:n(?:domAccess(?:Collection|Indexable)|geReplaceable(?:Collection|Indexable))|wRepresentable)|M(?:irrorPath|utable(?:Collection|Indexable))|Bi(?:naryFloatingPoint|twiseOperations|directional(?:Collection|Indexable))|S(?:tr(?:ide|eam)able|igned(?:Number|Integer)|e(?:tAlgebra|quence))|Hashable|C(?:o(?:llection|mparable)|ustom(?:Reflecta|StringConverti|DebugStringConverti|PlaygroundQuickLooka|LeafReflecta)ble|VarArg)|TextOutputStream|I(?:n(?:teger(?:Arithmetic)?|dexable(?:Base)?)|teratorProtocol)|OptionSet|Un(?:signedInteger|icodeCodec)|E(?:quatable|rror|xpressibleBy(?:BooleanLiteral|String(?:Interpolation|Literal)|NilLiteral|IntegerLiteral|DictionaryLiteral|UnicodeScalarLiteral|ExtendedGraphemeClusterLiteral|FloatLiteral|ArrayLiteral))|FloatingPoint|L(?:osslessStringConvertible|azy(?:Sequence|Collection)Protocol)|A(?:nyObject|bsoluteValuable))\\b",
"name": "support.type.swift"
},
{
"match": "\\b(?:Ran(?:domAccessIndex|geReplaceableCollection)Type|GeneratorType|M(?:irror(?:|Path)Type|utable(?:Sliceable|CollectionType))|B(?:i(?:twiseOperations|directionalIndex)Type|oolean(?:Type|LiteralConvertible))|S(?:tring(?:Interpolation|Literal)Convertible|i(?:nk|gned(?:Numb|Integ)er)Type|e(?:tAlgebra|quence)Type|liceable)|NilLiteralConvertible|C(?:ollection|VarArg)Type|Inte(?:rvalType|ger(?:Type|LiteralConvertible|ArithmeticType))|O(?:utputStream|ptionSet)Type|DictionaryLiteralConvertible|Un(?:signedIntegerType|icode(?:ScalarLiteralConvertible|CodecType))|E(?:rrorType|xten(?:sibleCollectionType|dedGraphemeClusterLiteralConvertible))|F(?:orwardIndexType|loat(?:ingPointType|LiteralConvertible))|A(?:nyCollectionType|rrayLiteralConvertible))\\b",
"name": "support.type.swift"
}
]
},
"builtin-types-builtin-struct-type": {
"patterns": [
{
"match": "\\b(?:R(?:e(?:peat(?:ed)?|versed(?:RandomAccess(?:Collection|Index)|Collection|Index))|an(?:domAccessSlice|ge(?:Replaceable(?:RandomAccess|Bidirectional|)Slice|Generator)?))|Generator(?:Sequence|OfOne)|M(?:irror|utable(?:Ran(?:domAccess|geReplaceable(?:RandomAccess|Bidirectional|))|Bidirectional|)Slice|anagedBufferPointer)|B(?:idirectionalSlice|ool)|S(?:t(?:aticString|ri(?:ng|deT(?:hrough(?:(?:Gen|It)erator)?|o(?:(?:Gen|It)erator)?)))|et(?:I(?:ndex|terator))?|lice)|HalfOpenInterval|C(?:haracter(?:View)?|o(?:ntiguousArray|untable(?:|Closed)Range|llectionOfOne)|OpaquePointer|losed(?:Range(?:I(?:ndex|terator))?|Interval)|VaListPointer)|I(?:n(?:t(?:16|8|32|64)?|d(?:ices|ex(?:ing(?:Gen|It)erator)?))|terator(?:Sequence|OverOne)?)|Zip2(?:Sequence|Iterator)|O(?:paquePointer|bjectIdentifier)|D(?:ictionary(?:I(?:ndex|terator)|Literal)?|ouble|efault(?:RandomAccess|Bidirectional|)Indices)|U(?:n(?:safe(?:RawPointer|Mutable(?:Raw|Buffer|)Pointer|BufferPointer(?:(?:Gen|It)erator)?|Pointer)|icodeScalar(?:View)?|foldSequence|managed)|TF(?:16(?:View)?|8(?:View)?|32)|Int(?:16|8|32|64)?)|Join(?:Generator|ed(?:Sequence|Iterator))|PermutationGenerator|E(?:numerate(?:Generator|Sequence|d(?:Sequence|Iterator))|mpty(?:Generator|Collection|Iterator))|Fl(?:oat(?:80)?|atten(?:Generator|BidirectionalCollection(?:Index)?|Sequence|Collection(?:Index)?|Iterator))|L(?:egacyChildren|azy(?:RandomAccessCollection|Map(?:RandomAccessCollection|Generator|BidirectionalCollection|Sequence|Collection|Iterator)|BidirectionalCollection|Sequence|Collection|Filter(?:Generator|BidirectionalCollection|Sequence|Collection|I(?:ndex|terator))))|A(?:ny(?:RandomAccessCollection|Generator|BidirectionalCollection|Sequence|Hashable|Collection|I(?:ndex|terator))|utoreleasingUnsafeMutablePointer|rray(?:Slice)?))\\b",
"name": "support.type.swift"
},
{
"match": "\\b(?:R(?:everse(?:RandomAccess(?:Collection|Index)|Collection|Index)|awByte)|Map(?:Generator|Sequence|Collection)|S(?:inkOf|etGenerator)|Zip2Generator|DictionaryGenerator|Filter(?:Generator|Sequence|Collection(?:Index)?)|LazyForwardCollection|Any(?:RandomAccessIndex|BidirectionalIndex|Forward(?:Collection|Index)))\\b",
"name": "support.type.swift"
}
]
},
"builtin-types-builtin-typealias": {
"patterns": [
{
"match": "\\b(?:Raw(?:Significand|Exponent|Value)|B(?:ooleanLiteralType|uffer|ase)|S(?:t(?:orage|r(?:i(?:ngLiteralType|de)|eam[12]))|ubSequence)|NativeBuffer|C(?:hild(?:ren)?|Bool|S(?:hort|ignedChar)|odeUnit|Char(?:16|32)?|Int|Double|Unsigned(?:Short|Char|Int|Long(?:Long)?)|Float|WideChar|Long(?:Long)?)|I(?:n(?:t(?:Max|egerLiteralType)|d(?:ices|ex(?:Distance)?))|terator)|Distance|U(?:n(?:icodeScalar(?:Type|Index|View|LiteralType)|foldFirstSequence)|TF(?:16(?:Index|View)|8Index)|IntMax)|E(?:lements?|x(?:tendedGraphemeCluster(?:|Literal)Type|ponent))|V(?:oid|alue)|Key|Float(?:32|LiteralType|64)|AnyClass)\\b",
"name": "support.type.swift"
},
{
"match": "\\b(?:Generator|PlaygroundQuickLook|UWord|Word)\\b",
"name": "support.type.swift"
}
]
},
"code-block": {
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.section.scope.begin.swift"
}
},
"end": "}",
"endCaptures": {
"0": {
"name": "punctuation.section.scope.end.swift"
}
},
"patterns": [
{
"include": "$self"
}
]
},
"comments": {
"patterns": [
{
"captures": {
"1": {
"name": "punctuation.definition.comment.swift"
}
},
"match": "\\A^(#!).*$\\n?",
"name": "comment.line.number-sign.swift"
},
{
"begin": "/\\*\\*(?!/)",
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.begin.swift"
}
},
"end": "\\*/",
"endCaptures": {
"0": {
"name": "punctuation.definition.comment.end.swift"
}
},
"name": "comment.block.documentation.swift",
"patterns": [
{
"include": "#comments-nested"
}
]
},
{
"begin": "/\\*:",
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.begin.swift"
}
},
"end": "\\*/",
"endCaptures": {
"0": {
"name": "punctuation.definition.comment.end.swift"
}
},
"name": "comment.block.documentation.playground.swift",
"patterns": [
{
"include": "#comments-nested"
}
]
},
{
"begin": "/\\*",
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.begin.swift"
}
},
"end": "\\*/",
"endCaptures": {
"0": {
"name": "punctuation.definition.comment.end.swift"
}
},
"name": "comment.block.swift",
"patterns": [
{
"include": "#comments-nested"
}
]
},
{
"match": "\\*/",
"name": "invalid.illegal.unexpected-end-of-block-comment.swift"
},
{
"begin": "(^[\\t ]+)?(?=//)",
"beginCaptures": {
"1": {
"name": "punctuation.whitespace.comment.leading.swift"
}
},
"end": "(?!\\G)",
"patterns": [
{
"begin": "///",
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.swift"
}
},
"end": "$",
"name": "comment.line.triple-slash.documentation.swift"
},
{
"begin": "//:",
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.swift"
}
},
"end": "$",
"name": "comment.line.double-slash.documentation.swift"
},
{
"begin": "//",
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.swift"
}
},
"end": "$",
"name": "comment.line.double-slash.swift"
}
]
}
]
},
"comments-nested": {
"begin": "/\\*",
"end": "\\*/",
"patterns": [
{
"include": "#comments-nested"
}
]
},
"compiler-control": {
"patterns": [
{
"begin": "^\\s*(#)(if|elseif)\\s+(false)\\b.*?(?=$|//|/\\*)",
"beginCaptures": {
"0": {
"name": "meta.preprocessor.conditional.swift"
},
"1": {
"name": "punctuation.definition.preprocessor.swift"
},
"2": {
"name": "keyword.control.import.preprocessor.conditional.swift"
},
"3": {
"name": "constant.language.boolean.swift"
}
},
"contentName": "comment.block.preprocessor.swift",
"end": "(?=^\\s*(#(e(?:lseif|lse|ndif)))\\b)"
},
{
"begin": "^\\s*(#)(if|elseif)\\s+",
"captures": {
"1": {
"name": "punctuation.definition.preprocessor.swift"
},
"2": {
"name": "keyword.control.import.preprocessor.conditional.swift"
}
},
"end": "(?=\\s*/[*/])|$",
"name": "meta.preprocessor.conditional.swift",
"patterns": [
{
"match": "(&&|\\|\\|)",
"name": "keyword.operator.logical.swift"
},
{
"match": "\\b(true|false)\\b",
"name": "constant.language.boolean.swift"
},
{
"captures": {
"1": {
"name": "keyword.other.condition.swift"
},
"2": {
"name": "punctuation.definition.parameters.begin.swift"
},
"3": {
"name": "support.constant.platform.architecture.swift"
},
"4": {
"name": "punctuation.definition.parameters.end.swift"
}
},
"match": "\\b(arch)\\s*(\\()\\s*(?:(arm|arm64|powerpc64|powerpc64le|i386|x86_64|s390x)|\\w+)\\s*(\\))"
},
{
"captures": {
"1": {
"name": "keyword.other.condition.swift"
},
"2": {
"name": "punctuation.definition.parameters.begin.swift"
},
"3": {
"name": "support.constant.platform.os.swift"
},
"4": {
"name": "punctuation.definition.parameters.end.swift"
}
},
"match": "\\b(os)\\s*(\\()\\s*(?:(macOS|OSX|iOS|tvOS|watchOS|visionOS|Android|Linux|FreeBSD|Windows|PS4)|\\w+)\\s*(\\))"
},
{
"captures": {
"1": {
"name": "keyword.other.condition.swift"
},
"2": {
"name": "punctuation.definition.parameters.begin.swift"
},
"3": {
"name": "entity.name.type.module.swift"
},
"4": {
"name": "punctuation.definition.parameters.end.swift"
}
},
"match": "\\b(canImport)\\s*(\\()([_\\p{L}][_\\p{L}\\p{N}\\p{M}]*)(\\))"
},
{
"begin": "\\b(targetEnvironment)\\s*(\\()",
"beginCaptures": {
"1": {
"name": "keyword.other.condition.swift"
},
"2": {
"name": "punctuation.definition.parameters.begin.swift"
}
},
"end": "(\\))|$",
"endCaptures": {
"1": {
"name": "punctuation.definition.parameters.end.swift"
}
},
"patterns": [
{
"match": "\\b(simulator|UIKitForMac)\\b",
"name": "support.constant.platform.environment.swift"
}
]
},
{
"begin": "\\b(swift|compiler)\\s*(\\()",
"beginCaptures": {
"1": {
"name": "keyword.other.condition.swift"
},
"2": {
"name": "punctuation.definition.parameters.begin.swift"
}
},
"end": "(\\))|$",
"endCaptures": {
"1": {
"name": "punctuation.definition.parameters.end.swift"
}
},
"patterns": [
{
"match": ">=|<",
"name": "keyword.operator.comparison.swift"
},
{
"match": "\\b[0-9]+(?:\\.[0-9]+)*\\b",
"name": "constant.numeric.swift"
}
]
}
]
},
{
"captures": {
"1": {
"name": "punctuation.definition.preprocessor.swift"
},
"2": {
"name": "keyword.control.import.preprocessor.conditional.swift"
},
"3": {
"patterns": [
{
"match": "\\S+",
"name": "invalid.illegal.character-not-allowed-here.swift"
}
]
}
},
"match": "^\\s*(#)(e(?:lse|ndif))(.*?)(?=$|//|/\\*)",
"name": "meta.preprocessor.conditional.swift"
},
{
"captures": {
"1": {
"name": "punctuation.definition.preprocessor.swift"
},
"2": {
"name": "keyword.control.import.preprocessor.sourcelocation.swift"
},
"4": {
"name": "punctuation.definition.parameters.begin.swift"
},
"5": {
"patterns": [
{
"begin": "(file)\\s*(:)\\s*(?=\")",
"beginCaptures": {
"1": {
"name": "support.variable.parameter.swift"
},
"2": {
"name": "punctuation.separator.key-value.swift"
}
},
"end": "(?!\\G)",
"patterns": [
{
"include": "#literals"
}
]
},
{
"captures": {
"1": {
"name": "support.variable.parameter.swift"
},
"2": {
"name": "punctuation.separator.key-value.swift"
},
"3": {
"name": "constant.numeric.integer.swift"
}
},
"match": "(line)\\s*(:)\\s*([0-9]+)"
},
{
"match": ",",
"name": "punctuation.separator.parameters.swift"
},
{
"match": "\\S+",
"name": "invalid.illegal.character-not-allowed-here.swift"
}
]
},
"6": {
"name": "punctuation.definition.parameters.begin.swift"
},
"7": {
"patterns": [
{
"match": "\\S+",
"name": "invalid.illegal.character-not-allowed-here.swift"
}
]
}
},
"match": "^\\s*(#)(sourceLocation)((\\()([^)]*)(\\)))(.*?)(?=$|//|/\\*)",
"name": "meta.preprocessor.sourcelocation.swift"
}
]
},
"conditionals": {
"patterns": [
{
"begin": "(?<!\\.)\\b(if|guard|switch|for)\\b",
"beginCaptures": {
"1": {
"patterns": [
{
"include": "#keywords"
}
]
}
},
"end": "(?=\\{)",
"patterns": [
{
"include": "#expressions-without-trailing-closures"
}
]
},
{
"begin": "(?<!\\.)\\b(while)\\b",
"beginCaptures": {
"1": {
"patterns": [
{
"include": "#keywords"
}
]
}
},
"end": "(?=\\{)|$",
"patterns": [
{
"include": "#expressions-without-trailing-closures"
}
]
}
]
},
"declarations": {
"patterns": [
{
"include": "#declarations-function"
},
{
"include": "#declarations-function-initializer"
},
{
"include": "#declarations-function-subscript"
},
{
"include": "#declarations-typed-variable-declaration"
},
{
"include": "#declarations-import"
},
{
"include": "#declarations-operator"
},
{
"include": "#declarations-precedencegroup"
},
{
"include": "#declarations-protocol"
},
{
"include": "#declarations-type"
},
{
"include": "#declarations-extension"
},
{
"include": "#declarations-typealias"
},
{
"include": "#declarations-macro"
}
]
},
"declarations-available-types": {
"patterns": [
{
"include": "#comments"
},
{
"include": "#builtin-types"
},
{
"include": "#attributes"
},
{
"match": "\\basync\\b",
"name": "storage.modifier.async.swift"
},
{
"match": "\\b(?:|re)throws\\b",
"name": "storage.modifier.exception.swift"
},
{
"match": "\\bsome\\b",
"name": "keyword.other.operator.type.opaque.swift"
},
{
"match": "\\bany\\b",
"name": "keyword.other.operator.type.existential.swift"
},
{
"match": "\\b(?:repeat|each)\\b",
"name": "keyword.control.loop.swift"
},
{
"match": "\\b(?:inout|isolated|borrowing|consuming)\\b",
"name": "storage.modifier.swift"
},
{
"match": "\\bSelf\\b",
"name": "variable.language.swift"
},
{
"captures": {
"1": {
"name": "keyword.operator.type.function.swift"
}
},
"match": "(?<![-!%\\&*+./<=>^|~])(->)(?![-!%\\&*+./<=>^|~])"
},
{
"captures": {
"1": {
"name": "keyword.operator.type.composition.swift"
}
},
"match": "(?<![-!%\\&*+./<=>^|~])(&)(?![-!%\\&*+./<=>^|~])"
},
{
"match": "[!?]",
"name": "keyword.operator.type.optional.swift"
},
{
"match": "\\.\\.\\.",
"name": "keyword.operator.function.variadic-parameter.swift"
},
{
"match": "\\bprotocol\\b",
"name": "keyword.other.type.composition.swift"
},
{
"match": "(?<=\\.)(?:Protocol|Type)\\b",
"name": "keyword.other.type.metatype.swift"
},
{
"include": "#declarations-available-types-tuple-type"
},
{
"include": "#declarations-available-types-collection-type"
},
{
"include": "#declarations-generic-argument-clause"
}
]
},
"declarations-available-types-collection-type": {
"begin": "\\[",
"beginCaptures": {
"0": {
"name": "punctuation.section.collection-type.begin.swift"
}
},
"end": "]|(?=[)>{}])",
"endCaptures": {
"0": {
"name": "punctuation.section.collection-type.end.swift"
}
},
"patterns": [
{
"include": "#declarations-available-types"
},
{
"include": "#literals-numeric"
},
{
"match": "\\b_\\b",
"name": "support.variable.inferred.swift"
},
{
"match": "(?<=\\s)\\bof\\b(?=\\s+[(\\[_\\p{L}\\d\\p{N}\\p{M}])",
"name": "keyword.other.inline-array.swift"
},
{
"begin": ":",
"beginCaptures": {
"0": {
"name": "punctuation.separator.key-value.swift"
}
},
"end": "(?=[])>{}])",
"patterns": [
{
"match": ":",
"name": "invalid.illegal.extra-colon-in-dictionary-type.swift"
},
{
"include": "#declarations-available-types"
}
]
}
]
},
"declarations-available-types-tuple-type": {
"begin": "\\(",
"beginCaptures": {
"0": {
"name": "punctuation.section.tuple-type.begin.swift"
}
},
"end": "\\)|(?=[]>{}])",
"endCaptures": {
"0": {
"name": "punctuation.section.tuple-type.end.swift"
}
},
"patterns": [
{
"include": "#declarations-available-types"
}
]
},
"declarations-extension": {
"begin": "\\b(extension)\\s+",
"beginCaptures": {
"1": {
"name": "storage.type.$1.swift"
}
},
"end": "(?<=})",
"name": "meta.definition.type.$1.swift",
"patterns": [
{
"begin": "\\G(?!\\s*[\\n:{])",
"end": "(?=\\s*[\\n:{])|(?!\\G)(?=\\s*where\\b)",
"name": "entity.name.type.swift",
"patterns": [
{
"include": "#declarations-available-types"
}
]
},
{
"include": "#comments"
},
{
"include": "#declarations-generic-where-clause"
},
{
"include": "#declarations-inheritance-clause"
},
{
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.type.begin.swift"
}
},
"end": "}",
"endCaptures": {
"0": {
"name": "punctuation.definition.type.end.swift"
}
},
"name": "meta.definition.type.body.swift",
"patterns": [
{
"include": "$self"
}
]
}
]
},
"declarations-function": {
"begin": "\\b(func)\\s+((?<q>`?)[_\\p{L}][_\\p{L}\\p{N}\\p{M}]*(\\k<q>)|(?:((?<oph>[-!%\\&*+/<-?^|~¡-§©«¬®°±¶»¿×÷‖‗†-‧‰-‾⁁-⁓⁕-⁞←-⏿─-❵➔-⯿⸀-、。〃〈-〰])(\\g<oph>|(?<opc>[̀-ͯ᷀-᷿⃐-︀-️︠-︯\\x{E0100}-\\x{E01EF}]))*)|(\\.(\\g<oph>|\\g<opc>|\\.)+)))\\s*(?=[(<])",
"beginCaptures": {
"1": {
"name": "storage.type.function.swift"
},
"2": {
"name": "entity.name.function.swift"
},
"3": {
"name": "punctuation.definition.identifier.swift"
},
"4": {
"name": "punctuation.definition.identifier.swift"
}
},
"end": "(?<=})|$",
"name": "meta.definition.function.swift",
"patterns": [
{
"include": "#comments"
},
{
"include": "#declarations-generic-parameter-clause"
},
{
"include": "#declarations-parameter-clause"
},
{
"include": "#declarations-function-result"
},
{
"include": "#async-throws"
},
{
"include": "#declarations-generic-where-clause"
},
{
"begin": "(\\{)",
"beginCaptures": {
"1": {
"name": "punctuation.section.function.begin.swift"
}
},
"end": "(})",
"endCaptures": {
"1": {
"name": "punctuation.section.function.end.swift"
}
},
"name": "meta.definition.function.body.swift",
"patterns": [
{
"include": "$self"
}
]
}
]
},
"declarations-function-initializer": {
"begin": "(?<!\\.)\\b(init[!?]*)\\s*(?=[(<])",
"beginCaptures": {
"1": {
"name": "storage.type.function.swift",
"patterns": [
{
"match": "(?<=[!?])[!?]+",
"name": "invalid.illegal.character-not-allowed-here.swift"
}
]
}
},
"end": "(?<=})|$",
"name": "meta.definition.function.initializer.swift",
"patterns": [
{
"include": "#comments"
},
{
"include": "#declarations-generic-parameter-clause"
},
{
"include": "#declarations-parameter-clause"
},
{
"include": "#async-throws"
},
{
"include": "#declarations-generic-where-clause"
},
{
"begin": "(\\{)",
"beginCaptures": {
"1": {
"name": "punctuation.section.function.begin.swift"
}
},
"end": "(})",
"endCaptures": {
"1": {
"name": "punctuation.section.function.end.swift"
}
},
"name": "meta.definition.function.body.swift",
"patterns": [
{
"include": "$self"
}
]
}
]
},
"declarations-function-result": {
"begin": "(?<![-!%\\&*+./<=>^|~])(->)(?![-!%\\&*+./<=>^|~])\\s*",
"beginCaptures": {
"1": {
"name": "keyword.operator.function-result.swift"
}
},
"end": "(?!\\G)(?=\\{|\\bwhere\\b|[;=])|$",
"name": "meta.function-result.swift",
"patterns": [
{
"match": "\\bsending\\b",
"name": "storage.modifier.swift"
},
{
"include": "#declarations-available-types"
}
]
},
"declarations-function-subscript": {
"begin": "(?<!\\.)\\b(subscript)\\s*(?=[(<])",
"beginCaptures": {
"1": {
"name": "storage.type.function.swift"
}
},
"end": "(?<=})|$",
"name": "meta.definition.function.subscript.swift",
"patterns": [
{
"include": "#comments"
},
{
"include": "#declarations-generic-parameter-clause"
},
{
"include": "#declarations-parameter-clause"
},
{
"include": "#declarations-function-result"
},
{
"include": "#async-throws"
},
{
"include": "#declarations-generic-where-clause"
},
{
"begin": "(\\{)",
"beginCaptures": {
"1": {
"name": "punctuation.section.function.begin.swift"
}
},
"end": "(})",
"endCaptures": {
"1": {
"name": "punctuation.section.function.end.swift"
}
},
"name": "meta.definition.function.body.swift",
"patterns": [
{
"include": "$self"
}
]
}
]
},
"declarations-generic-argument-clause": {
"begin": "<",
"beginCaptures": {
"0": {
"name": "punctuation.separator.generic-argument-clause.begin.swift"
}
},
"end": ">|(?=[]){}])",
"endCaptures": {
"0": {
"name": "punctuation.separator.generic-argument-clause.end.swift"
}
},
"name": "meta.generic-argument-clause.swift",
"patterns": [
{
"include": "#literals-numeric"
},
{
"include": "#declarations-available-types"
}
]
},
"declarations-generic-parameter-clause": {
"begin": "<",
"beginCaptures": {
"0": {
"name": "punctuation.separator.generic-parameter-clause.begin.swift"
}
},
"end": ">|(?=[^\\&,:<=>`\\w\\d\\s])",
"endCaptures": {
"0": {
"name": "punctuation.separator.generic-parameter-clause.end.swift"
}
},
"name": "meta.generic-parameter-clause.swift",
"patterns": [
{
"include": "#comments"
},
{
"include": "#declarations-generic-where-clause"
},
{
"match": "\\blet\\b",
"name": "keyword.other.declaration-specifier.swift"
},
{
"match": "\\beach\\b",
"name": "keyword.control.loop.swift"
},
{
"captures": {
"1": {
"name": "variable.language.generic-parameter.swift"
}
},
"match": "\\b((?!\\d)\\w[\\w\\d]*)\\b"
},
{
"match": ",",
"name": "punctuation.separator.generic-parameters.swift"
},
{
"begin": "(:)\\s*",
"beginCaptures": {
"1": {
"name": "punctuation.separator.generic-parameter-constraint.swift"
}
},
"end": "(?=[,>]|(?!\\G)\\bwhere\\b)",
"name": "meta.generic-parameter-constraint.swift",
"patterns": [
{
"begin": "\\G",
"end": "(?=[,>]|(?!\\G)\\bwhere\\b)",
"name": "entity.other.inherited-class.swift",
"patterns": [
{
"include": "#declarations-type-identifier"
},
{
"include": "#declarations-type-operators"
}
]
}
]
}
]
},
"declarations-generic-where-clause": {
"begin": "\\b(where)\\b\\s*",
"beginCaptures": {
"1": {
"name": "keyword.other.generic-constraint-introducer.swift"
}
},
"end": "(?!\\G)$|(?=[\\n;>{}]|//|/\\*)",
"name": "meta.generic-where-clause.swift",
"patterns": [
{
"include": "#comments"
},
{
"include": "#declarations-generic-where-clause-requirement-list"
}
]
},
"declarations-generic-where-clause-requirement-list": {
"begin": "\\G|,\\s*",
"end": "(?=[\\n,;>{}]|//|/\\*)",
"patterns": [
{
"include": "#comments"
},
{
"include": "#constraint"
},
{
"include": "#declarations-available-types"
},
{
"begin": "(?<![-!%\\&*+./<=>^|~])(==)(?![-!%\\&*+./<=>^|~])",
"beginCaptures": {
"1": {
"name": "keyword.operator.generic-constraint.same-type.swift"
}
},
"end": "(?=\\s*[\\n,;>{}]|//|/\\*)",
"name": "meta.generic-where-clause.same-type-requirement.swift",
"patterns": [
{
"include": "#declarations-available-types"
}
]
},
{
"begin": "(?<![-!%\\&*+./<=>^|~])(:)(?![-!%\\&*+./<=>^|~])",
"beginCaptures": {
"1": {
"name": "keyword.operator.generic-constraint.conforms-to.swift"
}
},
"end": "(?=\\s*[\\n,;>{}]|//|/\\*)",
"name": "meta.generic-where-clause.conformance-requirement.swift",
"patterns": [
{
"begin": "\\G\\s*",
"contentName": "entity.other.inherited-class.swift",
"end": "(?=\\s*[\\n,;>{}]|//|/\\*)",
"patterns": [
{
"include": "#declarations-available-types"
}
]
}
]
}
]
},
"declarations-import": {
"begin": "(?<!\\.)\\b(import)\\s+",
"beginCaptures": {
"1": {
"name": "keyword.control.import.swift"
}
},
"end": "(;)|$\\n?|(?=/[*/])",
"endCaptures": {
"1": {
"name": "punctuation.terminator.statement.swift"
}
},
"name": "meta.import.swift",
"patterns": [
{
"begin": "\\G(?!;|$|//|/\\*)(?:(typealias|struct|class|actor|enum|protocol|var|func)\\s+)?",
"beginCaptures": {
"1": {
"name": "storage.modifier.swift"
}
},
"end": "(?=;|$|//|/\\*)",
"patterns": [
{
"captures": {
"1": {
"name": "punctuation.definition.identifier.swift"
},
"2": {
"name": "punctuation.definition.identifier.swift"
}
},
"match": "(?<=\\G|\\.)(?<q>`?)[_\\p{L}][_\\p{L}\\p{N}\\p{M}]*(\\k<q>)",
"name": "entity.name.type.swift"
},
{
"match": "(?<=\\G|\\.)\\$[0-9]+",
"name": "entity.name.type.swift"
},
{
"captures": {
"1": {
"patterns": [
{
"match": "\\.",
"name": "invalid.illegal.dot-not-allowed-here.swift"
}
]
}
},
"match": "(?<=\\G|\\.)(?:((?<oph>[-!%\\&*+/<-?^|~¡-§©«¬®°±¶»¿×÷‖‗†-‧‰-‾⁁-⁓⁕-⁞←-⏿─-❵➔-⯿⸀-、。〃〈-〰])(\\g<oph>|(?<opc>[̀-ͯ᷀-᷿⃐-︀-️︠-︯\\x{E0100}-\\x{E01EF}]))*)|(\\.(\\g<oph>|\\g<opc>|\\.)+))(?=[.;]|$|//|/\\*|\\s)",
"name": "entity.name.type.swift"
},
{
"match": "\\.",
"name": "punctuation.separator.import.swift"
},
{
"begin": "(?!\\s*(;|$|//|/\\*))",
"end": "(?=\\s*(;|$|//|/\\*))",
"name": "invalid.illegal.character-not-allowed-here.swift"
}
]
}
]
},
"declarations-inheritance-clause": {
"begin": "(:)(?=\\s*\\{)|(:)\\s*",
"beginCaptures": {
"1": {
"name": "invalid.illegal.empty-inheritance-clause.swift"
},
"2": {
"name": "punctuation.separator.inheritance-clause.swift"
}
},
"end": "(?!\\G)$|(?=[={}]|(?!\\G)\\bwhere\\b)",
"name": "meta.inheritance-clause.swift",
"patterns": [
{
"begin": "\\bclass\\b",
"beginCaptures": {
"0": {
"name": "storage.type.class.swift"
}
},
"end": "(?=[={}]|(?!\\G)\\bwhere\\b)",
"patterns": [
{
"include": "#comments"
},
{
"include": "#declarations-inheritance-clause-more-types"
}
]
},
{
"begin": "\\G",
"end": "(?!\\G)$|(?=[={}]|(?!\\G)\\bwhere\\b)",
"patterns": [
{
"include": "#attributes"
},
{