{ "name": "Swift", "scopeName": "source.swift", "patterns": [ { "include": "#root" } ], "repository": { "attributes": { "patterns": [ { "name": "meta.attribute.available.swift", "begin": "((@)available)(\\()", "end": "\\)", "patterns": [ { "match": "\\b((?:iOS|macOS|OSX|watchOS|tvOS)(?:ApplicationExtension)?)\\b(?:\\s+([0-9]+(?:\\.[0-9]+)*\\b))?", "captures": { "1": { "name": "keyword.other.platform.os.swift" }, "2": { "name": "constant.numeric.swift" } } }, { "begin": "\\b(introduced|deprecated|obsoleted)\\s*(:)\\s*", "end": "(?!\\G)", "patterns": [ { "name": "constant.numeric.swift", "match": "\\b[0-9]+(?:\\.[0-9]+)*\\b" } ], "beginCaptures": { "1": { "name": "keyword.other.swift" }, "2": { "name": "punctuation.separator.key-value.swift" } } }, { "begin": "\\b(message|renamed)\\s*(:)\\s*(?=\")", "end": "(?!\\G)", "patterns": [ { "include": "#literals" } ], "beginCaptures": { "1": { "name": "keyword.other.swift" }, "2": { "name": "punctuation.separator.key-value.swift" } } }, { "match": "(?:(\\*)|\\b(deprecated|unavailable)\\b)\\s*(.*?)(?=[,)])", "captures": { "1": { "name": "keyword.other.platform.all.swift" }, "2": { "name": "keyword.other.swift" }, "3": { "name": "invalid.illegal.character-not-allowed-here.swift" } } } ], "beginCaptures": { "1": { "name": "storage.modifier.attribute.swift" }, "2": { "name": "punctuation.definition.attribute.swift" }, "3": { "name": "punctuation.definition.arguments.begin.swift" } }, "endCaptures": { "0": { "name": "punctuation.definition.arguments.end.swift" } } }, { "name": "meta.attribute.objc.swift", "begin": "((@)objc)(\\()", "end": "\\)", "patterns": [ { "name": "entity.name.function.swift", "match": "\\w*(?::(?:\\w*:)*(\\w*))?", "captures": { "1": { "name": "invalid.illegal.missing-colon-after-selector-piece.swift" } } } ], "beginCaptures": { "1": { "name": "storage.modifier.attribute.swift" }, "2": { "name": "punctuation.definition.attribute.swift" }, "3": { "name": "punctuation.definition.arguments.begin.swift" } }, "endCaptures": { "0": { "name": "punctuation.definition.arguments.end.swift" } } }, { "name": "meta.attribute.swift", "begin": "(@)(?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e)", "end": "(?!\\G\\()", "patterns": [ { "name": "meta.arguments.attribute.swift", "begin": "\\(", "end": "\\)", "patterns": [ { "include": "#expressions" } ], "beginCaptures": { "0": { "name": "punctuation.definition.arguments.begin.swift" } }, "endCaptures": { "0": { "name": "punctuation.definition.arguments.end.swift" } } } ], "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" } } } ] }, "builtin-functions": { "patterns": [ { "name": "support.function.swift", "match": "(?\u003c=\\.)(?: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(?:p|x)))(?=\\s*[({])\\b" }, { "name": "support.function.swift", "match": "(?\u003c=\\.)(?:s(?:ymmetricDifference|t(?:oreBytes|arts|ride)|ortInPlace|u(?:ccessor|ffix|btract(?:ing|InPlace|WithOverflow)?)|quareRoot|amePosition)|h(?:oldsUnique(?:Reference|OrPinnedReference)|as(?:Suffix|Prefix))|ne(?:gate(?:d)?|xt)|c(?:o(?:untByEnumerating|py(?:Bytes)?)|lamp(?:ed)?|reate)|t(?:o(?:IntMax|Opaque|UIntMax)|ake(?:RetainedValue|UnretainedValue)|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(?:Retained|Unretained)|re(?:decessor|fix))|e(?:scape(?:d)?|n(?:code|umerate(?:d)?)|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(?:BackwardFrom|From)?|umingMemoryBound)|d(?:d(?:ing(?:Product)?|Product|WithOverflow)?|vanced(?:By)?)|utorelease|ppend(?:ContentsOf)?|lloc(?:ate)?|bs)|r(?:ound(?:ed)?|e(?:serveCapacity|tain|duce|place(?:Range|Subrange)?|verse(?:d)?|quest(?:NativeBuffer|UniqueMutableBackingBuffer)|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": "(?\u003c=\\.)(?: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*\\()" } ] }, "builtin-global-functions": { "patterns": [ { "begin": "\\b(type)(\\()\\s*(of)(:)", "end": "\\)", "patterns": [ { "include": "#expressions" } ], "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" } }, "endCaptures": { "0": { "name": "punctuation.definition.arguments.end.swift" } } }, { "name": "support.function.swift", "match": "\\b(?:anyGenerator|autoreleasepool)(?=\\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(?:MutablePointer|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(?:MutablePointers|Pointers)|lazy|advance|re(?:flect|move(?:Range|Last|A(?:tIndex|ll))))(?=\\s*\\()" } ] }, "builtin-properties": { "patterns": [ { "name": "support.variable.swift", "match": "(?\u003c=\\bProcess\\.|\\bCommandLine\\.)(arguments|argc|unsafeArgv)" }, { "name": "support.variable.swift", "match": "(?\u003c=\\.)(?: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(?:scription|bugDescription)|u(?:n(?:safelyUnwrapped|icodeScalar(?:s)?|derestimatedCount)|tf(?:16|8(?:Start|C(?:String|odeUnitCount))?)|intValue|ppercaseString|lp(?:OfOne)?)|p(?:i|ointee)|e(?:ndIndex|lements|xponent(?:Bit(?:Count|Pattern))?)|value(?:s)?|keys|quietNaN|f(?:irst(?:ElementAddress(?:IfContiguous)?)?|loatingPointClass)|l(?:ittleEndian|owercaseString|eastNo(?:nzeroMagnitude|rmalMagnitude)|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": "(?\u003c=\\.)(?:boolValue|disposition|end|objectIdentifier|quickLookObject|start|valueType)\\b" }, { "name": "support.variable.swift", "match": "(?\u003c=\\.)(?: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" } ] }, "builtin-types": { "patterns": [ { "include": "#builtin-class-type" }, { "include": "#builtin-enum-type" }, { "include": "#builtin-protocol-type" }, { "include": "#builtin-struct-type" }, { "include": "#builtin-typealias" }, { "name": "support.type.any.swift", "match": "\\bAny\\b" } ], "repository": { "builtin-class-type": { "name": "support.class.swift", "match": "\\b(Managed(Buffer|ProtoBuffer)|NonObjectiveCBase|AnyGenerator)\\b" }, "builtin-enum-type": { "patterns": [ { "name": "support.constant.swift", "match": "\\b(?:CommandLine|Process(?=\\.))\\b" }, { "name": "support.constant.never.swift", "match": "\\bNever\\b" }, { "name": "support.type.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" } ] }, "builtin-protocol-type": { "patterns": [ { "name": "support.type.swift", "match": "\\b(?:Ra(?:n(?:domAccess(?:Collection|Indexable)|geReplaceable(?:Collection|Indexable))|wRepresentable)|M(?:irrorPath|utable(?:Collection|Indexable))|Bi(?:naryFloatingPoint|twiseOperations|directional(?:Collection|Indexable))|S(?:tr(?:ideable|eamable)|igned(?:Number|Integer)|e(?:tAlgebra|quence))|Hashable|C(?:o(?:llection|mparable)|ustom(?:Reflectable|StringConvertible|DebugStringConvertible|PlaygroundQuickLookable|LeafReflectable)|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(?:SequenceProtocol|CollectionProtocol))|A(?:nyObject|bsoluteValuable))\\b" }, { "name": "support.type.swift", "match": "\\b(?:Ran(?:domAccessIndexType|geReplaceableCollectionType)|GeneratorType|M(?:irror(?:Type|PathType)|utable(?:Sliceable|CollectionType))|B(?:i(?:twiseOperationsType|directionalIndexType)|oolean(?:Type|LiteralConvertible))|S(?:tring(?:InterpolationConvertible|LiteralConvertible)|i(?:nkType|gned(?:NumberType|IntegerType))|e(?:tAlgebraType|quenceType)|liceable)|NilLiteralConvertible|C(?:ollectionType|VarArgType)|Inte(?:rvalType|ger(?:Type|LiteralConvertible|ArithmeticType))|O(?:utputStreamType|ptionSetType)|DictionaryLiteralConvertible|Un(?:signedIntegerType|icode(?:ScalarLiteralConvertible|CodecType))|E(?:rrorType|xten(?:sibleCollectionType|dedGraphemeClusterLiteralConvertible))|F(?:orwardIndexType|loat(?:ingPointType|LiteralConvertible))|A(?:nyCollectionType|rrayLiteralConvertible))\\b" } ] }, "builtin-struct-type": { "patterns": [ { "name": "support.type.swift", "match": "\\b(?:R(?:e(?:peat(?:ed)?|versed(?:RandomAccess(?:Collection|Index)|Collection|Index))|an(?:domAccessSlice|ge(?:Replaceable(?:RandomAccessSlice|BidirectionalSlice|Slice)|Generator)?))|Generator(?:Sequence|OfOne)|M(?:irror|utable(?:Ran(?:domAccessSlice|geReplaceable(?:RandomAccessSlice|BidirectionalSlice|Slice))|BidirectionalSlice|Slice)|anagedBufferPointer)|B(?:idirectionalSlice|ool)|S(?:t(?:aticString|ri(?:ng|deT(?:hrough(?:Generator|Iterator)?|o(?:Generator|Iterator)?)))|et(?:I(?:ndex|terator))?|lice)|HalfOpenInterval|C(?:haracter(?:View)?|o(?:ntiguousArray|untable(?:Range|ClosedRange)|llectionOfOne)|OpaquePointer|losed(?:Range(?:I(?:ndex|terator))?|Interval)|VaListPointer)|I(?:n(?:t(?:16|8|32|64)?|d(?:ices|ex(?:ing(?:Generator|Iterator))?))|terator(?:Sequence|OverOne)?)|Zip2(?:Sequence|Iterator)|O(?:paquePointer|bjectIdentifier)|D(?:ictionary(?:I(?:ndex|terator)|Literal)?|ouble|efault(?:RandomAccessIndices|BidirectionalIndices|Indices))|U(?:n(?:safe(?:RawPointer|Mutable(?:RawPointer|BufferPointer|Pointer)|BufferPointer(?:Generator|Iterator)?|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" } ] }, "builtin-typealias": { "patterns": [ { "name": "support.type.swift", "match": "\\b(?:Raw(?:Significand|Exponent|Value)|B(?:ooleanLiteralType|uffer|ase)|S(?:t(?:orage|r(?:i(?:ngLiteralType|de)|eam(?:1|2)))|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(?:lement(?:s)?|x(?:tendedGraphemeCluster(?:Type|LiteralType)|ponent))|V(?:oid|alue)|Key|Float(?:32|LiteralType|64)|AnyClass)\\b" }, { "name": "support.type.swift", "match": "\\b(?:Generator|PlaygroundQuickLook|UWord|Word)\\b" } ] } } }, "code-block": { "begin": "\\{", "end": "\\}", "patterns": [ { "include": "$self" } ], "beginCaptures": { "0": { "name": "punctuation.section.scope.begin.swift" } }, "endCaptures": { "0": { "name": "punctuation.section.scope.end.swift" } } }, "comments": { "patterns": [ { "name": "comment.line.number-sign.swift", "match": "\\A^(#!).*$\\n?", "captures": { "1": { "name": "punctuation.definition.comment.swift" } } }, { "name": "comment.block.documentation.swift", "begin": "/\\*\\*(?!/)", "end": "\\*/", "patterns": [ { "include": "#nested" } ], "beginCaptures": { "0": { "name": "punctuation.definition.comment.begin.swift" } }, "endCaptures": { "0": { "name": "punctuation.definition.comment.end.swift" } } }, { "name": "comment.block.documentation.playground.swift", "begin": "/\\*:", "end": "\\*/", "patterns": [ { "include": "#nested" } ], "beginCaptures": { "0": { "name": "punctuation.definition.comment.begin.swift" } }, "endCaptures": { "0": { "name": "punctuation.definition.comment.end.swift" } } }, { "name": "comment.block.swift", "begin": "/\\*", "end": "\\*/", "patterns": [ { "include": "#nested" } ], "beginCaptures": { "0": { "name": "punctuation.definition.comment.begin.swift" } }, "endCaptures": { "0": { "name": "punctuation.definition.comment.end.swift" } } }, { "name": "invalid.illegal.unexpected-end-of-block-comment.swift", "match": "\\*/" }, { "begin": "(^[ \\t]+)?(?=//)", "end": "(?!\\G)", "patterns": [ { "name": "comment.line.triple-slash.documentation.swift", "begin": "///", "end": "^", "beginCaptures": { "0": { "name": "punctuation.definition.comment.swift" } } }, { "name": "comment.line.double-slash.documentation.swift", "begin": "//:", "end": "^", "beginCaptures": { "0": { "name": "punctuation.definition.comment.swift" } } }, { "name": "comment.line.double-slash.swift", "begin": "//", "end": "^", "beginCaptures": { "0": { "name": "punctuation.definition.comment.swift" } } } ], "beginCaptures": { "1": { "name": "punctuation.whitespace.comment.leading.swift" } } } ], "repository": { "nested": { "begin": "/\\*", "end": "\\*/", "patterns": [ { "include": "#nested" } ] } } }, "compiler-control": { "patterns": [ { "contentName": "comment.block.preprocessor.swift", "begin": "^\\s*(#)(if|elseif)\\s+(false)\\b.*?(?=$|//|/\\*)", "end": "(?=^\\s*(#(elseif|else|endif)\\b))", "beginCaptures": { "0": { "name": "meta.preprocessor.conditional.swift" }, "1": { "name": "punctuation.definition.preprocessor.swift" }, "2": { "name": "keyword.control.preprocessor.conditional.swift" }, "3": { "name": "constant.language.boolean.swift" } } }, { "name": "meta.preprocessor.conditional.swift", "begin": "^\\s*(#)(if|elseif)\\s+", "end": "(?=\\s*(?://|/\\*))|$", "patterns": [ { "name": "keyword.operator.logical.swift", "match": "(\u0026\u0026|\\|\\|)" }, { "name": "constant.language.boolean.swift", "match": "\\b(true|false)\\b" }, { "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.architecture.swift" }, "4": { "name": "punctuation.definition.parameters.end.swift" } } }, { "match": "\\b(os)\\s*(\\()\\s*(?:(macOS|OSX|iOS|tvOS|watchOS|Android|Linux|FreeBSD|Windows|PS4)|\\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" } } }, { "begin": "\\b(swift)\\s*(\\()", "end": "(\\))|$", "patterns": [ { "name": "keyword.operator.comparison.swift", "match": "\u003e=" }, { "name": "constant.numeric.swift", "match": "\\b[0-9]+(?:\\.[0-9]+)*\\b" } ], "beginCaptures": { "1": { "name": "keyword.other.condition.swift" }, "2": { "name": "punctuation.definition.parameters.begin.swift" } }, "endCaptures": { "1": { "name": "punctuation.definition.parameters.end.swift" } } } ], "captures": { "1": { "name": "punctuation.definition.preprocessor.swift" }, "2": { "name": "keyword.control.preprocessor.conditional.swift" } } }, { "name": "meta.preprocessor.conditional.swift", "match": "^\\s*(#)(else|endif)(.*?)(?=$|//|/\\*)", "captures": { "1": { "name": "punctuation.definition.preprocessor.swift" }, "2": { "name": "keyword.control.preprocessor.conditional.swift" }, "3": { "patterns": [ { "name": "invalid.illegal.character-not-allowed-here.swift", "match": "\\S+" } ] } } }, { "name": "meta.preprocessor.sourcelocation.swift", "match": "^\\s*(#)(sourceLocation)((\\()([^)]*)(\\)))(.*?)(?=$|//|/\\*)", "captures": { "1": { "name": "punctuation.definition.preprocessor.swift" }, "2": { "name": "keyword.control.preprocessor.sourcelocation.swift" }, "4": { "name": "punctuation.definition.parameters.begin.swift" }, "5": { "patterns": [ { "begin": "(file)\\s*(:)\\s*(?=\")", "end": "(?!\\G)", "patterns": [ { "include": "#literals" } ], "beginCaptures": { "1": { "name": "support.variable.parameter.swift" }, "2": { "name": "punctuation.separator.key-value.swift" } } }, { "match": "(line)\\s*(:)\\s*([0-9]+)", "captures": { "1": { "name": "support.variable.parameter.swift" }, "2": { "name": "punctuation.separator.key-value.swift" }, "3": { "name": "constant.numeric.integer.swift" } } }, { "name": "punctuation.separator.parameters.swift", "match": "," }, { "name": "invalid.illegal.character-not-allowed-here.swift", "match": "\\S+" } ] }, "6": { "name": "punctuation.definition.parameters.begin.swift" }, "7": { "patterns": [ { "name": "invalid.illegal.character-not-allowed-here.swift", "match": "\\S+" } ] } } } ] }, "declarations": { "patterns": [ { "include": "#function" }, { "include": "#function-initializer" }, { "include": "#import" }, { "include": "#operator" }, { "include": "#precedencegroup" }, { "include": "#protocol" }, { "include": "#type" }, { "include": "#extension" }, { "include": "#typealias" } ], "repository": { "available-types": { "patterns": [ { "include": "#comments" }, { "include": "#builtin-types" }, { "include": "#attributes" }, { "name": "keyword.control.exception.swift", "match": "\\b(?:throws|rethrows)\\b" }, { "name": "storage.modifier.swift", "match": "\\binout\\b" }, { "name": "variable.language.swift", "match": "\\bSelf\\b" }, { "match": "(?\u003c![/=\\-+!*%\u003c\u003e\u0026|\\^~.])(-\u003e)(?![/=\\-+!*%\u003c\u003e\u0026|\\^~.])", "captures": { "1": { "name": "keyword.operator.type.function.swift" } } }, { "match": "(?\u003c![/=\\-+!*%\u003c\u003e\u0026|\\^~.])(\u0026)(?![/=\\-+!*%\u003c\u003e\u0026|\\^~.])", "captures": { "1": { "name": "keyword.operator.type.composition.swift" } } }, { "name": "keyword.operator.type.optional.swift", "match": "[?!]" }, { "name": "keyword.operator.function.variadic-parameter.swift", "match": "\\.\\.\\." }, { "name": "keyword.operator.type.composition.swift", "match": "\\bprotocol\\b" }, { "name": "keyword.operator.type.metatype.swift", "match": "(?\u003c=\\.)(?:Protocol|Type)\\b" }, { "include": "#tuple-type" }, { "include": "#collection-type" }, { "include": "#generic-argument-clause" } ], "repository": { "collection-type": { "begin": "\\[", "end": "\\]|(?=[\u003e){}])", "patterns": [ { "include": "#available-types" }, { "begin": ":", "end": "(?=\\]|[\u003e){}])", "patterns": [ { "name": "invalid.illegal.extra-colon-in-dictionary-type.swift", "match": ":" }, { "include": "#available-types" } ], "beginCaptures": { "0": { "name": "punctuation.separator.key-value.swift" } } } ], "beginCaptures": { "0": { "name": "punctuation.section.collection-type.begin.swift" } }, "endCaptures": { "0": { "name": "punctuation.section.collection-type.end.swift" } } }, "tuple-type": { "begin": "\\(", "end": "\\)|(?=[\u003e\\]{}])", "patterns": [ { "include": "#available-types" } ], "beginCaptures": { "0": { "name": "punctuation.section.tuple-type.begin.swift" } }, "endCaptures": { "0": { "name": "punctuation.section.tuple-type.end.swift" } } } } }, "extension": { "name": "meta.definition.type.$1.swift", "begin": "\\b(extension)\\s+((?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e))", "end": "(?\u003c=\\})", "patterns": [ { "include": "#comments" }, { "include": "#generic-where-clause" }, { "include": "#inheritance-clause" }, { "name": "meta.definition.type.body.swift", "begin": "\\{", "end": "\\}", "patterns": [ { "include": "$self" } ], "beginCaptures": { "0": { "name": "punctuation.definition.type.begin.swift" } }, "endCaptures": { "0": { "name": "punctuation.definition.type.end.swift" } } } ], "beginCaptures": { "1": { "name": "storage.type.$1.swift" }, "2": { "name": "entity.name.type.swift", "patterns": [ { "include": "#available-types" } ] }, "3": { "name": "punctuation.definition.identifier.swift" }, "4": { "name": "punctuation.definition.identifier.swift" } } }, "function": { "name": "meta.definition.function.swift", "begin": "(?x)\n\t\t\t\t\t\t\\b\n\t\t\t\t\t\t(func)\n\t\t\t\t\t\t\\s+\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\t(?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e)\n\t\t\t\t\t\t | (?:\n\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t(?\u003coph\u003e\t\t\t\t\t\t\t\t# operator-head\n\t\t\t\t\t\t\t\t\t\t[/=\\-+!*%\u003c\u003e\u0026|^~?]\n\t\t\t\t\t\t\t\t\t | [\\x{00A1}-\\x{00A7}]\n\t\t\t\t\t\t\t\t\t | [\\x{00A9}\\x{00AB}]\n\t\t\t\t\t\t\t\t\t | [\\x{00AC}\\x{00AE}]\n\t\t\t\t\t\t\t\t\t | [\\x{00B0}-\\x{00B1}\\x{00B6}\\x{00BB}\\x{00BF}\\x{00D7}\\x{00F7}]\n\t\t\t\t\t\t\t\t\t | [\\x{2016}-\\x{2017}\\x{2020}-\\x{2027}]\n\t\t\t\t\t\t\t\t\t | [\\x{2030}-\\x{203E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2041}-\\x{2053}]\n\t\t\t\t\t\t\t\t\t | [\\x{2055}-\\x{205E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2190}-\\x{23FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2500}-\\x{2775}]\n\t\t\t\t\t\t\t\t\t | [\\x{2794}-\\x{2BFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2E00}-\\x{2E7F}]\n\t\t\t\t\t\t\t\t\t | [\\x{3001}-\\x{3003}]\n\t\t\t\t\t\t\t\t\t | [\\x{3008}-\\x{3030}]\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\t\\g\u003coph\u003e\n\t\t\t\t\t\t\t\t\t | (?\u003copc\u003e\t\t\t\t\t\t\t\t# operator-character\n\t\t\t\t\t\t\t\t\t\t\t[\\x{0300}-\\x{036F}]\n\t\t\t\t\t\t\t\t\t\t | [\\x{1DC0}-\\x{1DFF}]\n\t\t\t\t\t\t\t\t\t\t | [\\x{20D0}-\\x{20FF}]\n\t\t\t\t\t\t\t\t\t\t | [\\x{FE00}-\\x{FE0F}]\n\t\t\t\t\t\t\t\t\t\t | [\\x{FE20}-\\x{FE2F}]\n\t\t\t\t\t\t\t\t\t\t | [\\x{E0100}-\\x{E01EF}]\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t)*\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t | ( \\. ( \\g\u003coph\u003e | \\g\u003copc\u003e | \\. )+ )\t\t\t# Dot operators\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t\t\\s*\n\t\t\t\t\t\t(?=\\(|\u003c)\n\t\t\t\t\t", "end": "(?\u003c=\\})|$(?# functions in protocol declarations or generated interfaces have no body)", "patterns": [ { "include": "#comments" }, { "include": "#generic-parameter-clause" }, { "include": "#parameter-clause" }, { "include": "#function-result" }, { "name": "keyword.control.exception.swift", "match": "\\b(?:throws|rethrows)\\b" }, { "include": "#generic-where-clause" }, { "name": "meta.definition.function.body.swift", "begin": "(\\{)", "end": "(\\})", "patterns": [ { "include": "$self" } ], "beginCaptures": { "1": { "name": "punctuation.section.function.begin.swift" } }, "endCaptures": { "1": { "name": "punctuation.section.function.end.swift" } } } ], "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" } } }, "function-initializer": { "name": "meta.definition.function.initializer.swift", "begin": "(?\u003c!\\.)\\b(init[?!]*(?# only one is valid, but we want the in⇥ snippet to produce something that looks good))\\s*(?=\\(|\u003c)", "end": "(?\u003c=\\})|$", "patterns": [ { "include": "#comments" }, { "include": "#generic-parameter-clause" }, { "include": "#parameter-clause" }, { "name": "keyword.control.exception.swift", "match": "\\b(?:throws|rethrows)\\b" }, { "include": "#generic-where-clause" }, { "name": "meta.definition.function.body.swift", "begin": "(\\{)", "end": "(\\})", "patterns": [ { "include": "$self" } ], "beginCaptures": { "1": { "name": "punctuation.section.function.begin.swift" } }, "endCaptures": { "1": { "name": "punctuation.section.function.end.swift" } } } ], "beginCaptures": { "1": { "name": "storage.type.function.swift", "patterns": [ { "name": "invalid.illegal.character-not-allowed-here.swift", "match": "(?\u003c=[?!])[?!]+" } ] } } }, "function-result": { "name": "meta.function-result.swift", "begin": "(?\u003c![/=\\-+!*%\u003c\u003e\u0026|\\^~.])(-\u003e)(?![/=\\-+!*%\u003c\u003e\u0026|\\^~.])\\s*", "end": "(?!\\G)(?=\\{|\\bwhere\\b|;)|$", "patterns": [ { "include": "#available-types" } ], "beginCaptures": { "1": { "name": "keyword.operator.function-result.swift" } } }, "generic-argument-clause": { "name": "meta.generic-argument-clause.swift", "begin": "\u003c", "end": "\u003e|(?=[)\\]{}])", "patterns": [ { "include": "#available-types" } ], "beginCaptures": { "0": { "name": "punctuation.separator.generic-argument-clause.begin.swift" } }, "endCaptures": { "0": { "name": "punctuation.separator.generic-argument-clause.end.swift" } } }, "generic-parameter-clause": { "name": "meta.generic-parameter-clause.swift", "begin": "\u003c", "end": "\u003e|(?=[^\\w\\d:\u003c\u003e\\s,=\u0026`])(?# characters besides these are never valid in a generic param list -- even if it's not really a valid clause, we should stop trying to parse it if we see one of them.)", "patterns": [ { "include": "#comments" }, { "include": "#generic-where-clause" }, { "match": "\\b((?!\\d)\\w[\\w\\d]*)\\b", "captures": { "1": { "name": "variable.language.generic-parameter.swift" } } }, { "name": "punctuation.separator.generic-parameters.swift", "match": "," }, { "name": "meta.generic-parameter-constraint.swift", "begin": "(:)\\s*", "end": "(?=[,\u003e]|(?!\\G)\\bwhere\\b)", "patterns": [ { "name": "entity.other.inherited-class.swift", "begin": "\\G", "end": "(?=[,\u003e]|(?!\\G)\\bwhere\\b)", "patterns": [ { "include": "#type-identifier" } ] } ], "beginCaptures": { "1": { "name": "punctuation.separator.generic-parameter-constraint.swift" } } } ], "beginCaptures": { "0": { "name": "punctuation.separator.generic-parameter-clause.begin.swift" } }, "endCaptures": { "0": { "name": "punctuation.separator.generic-parameter-clause.end.swift" } } }, "generic-where-clause": { "name": "meta.generic-where-clause.swift", "begin": "\\b(where)\\b\\s*", "end": "(?!\\G)$|(?=[\u003e{};\\n]|//|/\\*)", "patterns": [ { "include": "#comments" }, { "include": "#requirement-list" } ], "beginCaptures": { "1": { "name": "keyword.other.generic-constraint-introducer.swift" } }, "repository": { "requirement-list": { "begin": "\\G|,\\s*", "end": "(?=[,\u003e{};\\n]|//|/\\*)", "patterns": [ { "include": "#comments" }, { "include": "#constraint" }, { "include": "#available-types" }, { "name": "meta.generic-where-clause.same-type-requirement.swift", "begin": "(?\u003c![/=\\-+!*%\u003c\u003e\u0026|\\^~.])(==)(?![/=\\-+!*%\u003c\u003e\u0026|\\^~.])", "end": "(?=\\s*[,\u003e{};\\n]|//|/\\*)", "patterns": [ { "include": "#available-types" } ], "beginCaptures": { "1": { "name": "keyword.operator.generic-constraint.same-type.swift" } } }, { "name": "meta.generic-where-clause.conformance-requirement.swift", "begin": "(?\u003c![/=\\-+!*%\u003c\u003e\u0026|\\^~.])(:)(?![/=\\-+!*%\u003c\u003e\u0026|\\^~.])", "end": "(?=\\s*[,\u003e{};\\n]|//|/\\*)", "patterns": [ { "contentName": "entity.other.inherited-class.swift", "begin": "\\G\\s*", "end": "(?=\\s*[,\u003e{};\\n]|//|/\\*)", "patterns": [ { "include": "#available-types" } ] } ], "beginCaptures": { "1": { "name": "keyword.operator.generic-constraint.conforms-to.swift" } } } ] } } }, "import": { "name": "meta.import.swift", "begin": "(?\u003c!\\.)\\b(import)\\s+", "end": "(;)|$\\n?|(?=//|/\\*)", "patterns": [ { "begin": "\\G(?!;|$|//|/\\*)(?:(typealias|struct|class|enum|protocol|var|func)\\s+)?", "end": "(?=;|$|//|/\\*)", "patterns": [ { "name": "entity.name.type.swift", "match": "(?x)\n\t\t\t\t\t\t\t\t\t\t(?\u003c=\\G|\\.)\n\t\t\t\t\t\t\t\t\t\t(?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e)\n\t\t\t\t\t\t\t\t\t", "captures": { "1": { "name": "punctuation.definition.identifier.swift" }, "2": { "name": "punctuation.definition.identifier.swift" } } }, { "name": "entity.name.type.swift", "match": "(?x)\n\t\t\t\t\t\t\t\t\t\t(?\u003c=\\G|\\.)\n\t\t\t\t\t\t\t\t\t\t\\$[0-9]+\n\t\t\t\t\t\t\t\t\t" }, { "name": "entity.name.type.swift", "match": "(?x)\n\t\t\t\t\t\t\t\t\t\t(?\u003c=\\G|\\.)\n\t\t\t\t\t\t\t\t\t\t(?:\n\t\t\t\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\t\t\t(?\u003coph\u003e\t\t\t\t\t\t\t\t# operator-head\n\t\t\t\t\t\t\t\t\t\t\t\t\t[/=\\-+!*%\u003c\u003e\u0026|^~?]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{00A1}-\\x{00A7}]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{00A9}\\x{00AB}]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{00AC}\\x{00AE}]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{00B0}-\\x{00B1}\\x{00B6}\\x{00BB}\\x{00BF}\\x{00D7}\\x{00F7}]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{2016}-\\x{2017}\\x{2020}-\\x{2027}]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{2030}-\\x{203E}]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{2041}-\\x{2053}]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{2055}-\\x{205E}]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{2190}-\\x{23FF}]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{2500}-\\x{2775}]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{2794}-\\x{2BFF}]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{2E00}-\\x{2E7F}]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{3001}-\\x{3003}]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{3008}-\\x{3030}]\n\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\\g\u003coph\u003e\n\t\t\t\t\t\t\t\t\t\t\t\t | (?\u003copc\u003e\t\t\t\t\t\t\t\t# operator-character\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\\x{0300}-\\x{036F}]\n\t\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{1DC0}-\\x{1DFF}]\n\t\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{20D0}-\\x{20FF}]\n\t\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{FE00}-\\x{FE0F}]\n\t\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{FE20}-\\x{FE2F}]\n\t\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{E0100}-\\x{E01EF}]\n\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t)*\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t | ( \\. ( \\g\u003coph\u003e | \\g\u003copc\u003e | \\. )+ )\t\t\t# Dot operators\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t(?=\\.|;|$|//|/\\*|\\s)\n\t\t\t\t\t\t\t\t\t", "captures": { "1": { "patterns": [ { "name": "invalid.illegal.dot-not-allowed-here.swift", "match": "\\." } ] } } }, { "name": "punctuation.separator.import.swift", "match": "\\." }, { "name": "invalid.illegal.character-not-allowed-here.swift", "begin": "(?!\\s*(;|$|//|/\\*))", "end": "(?=\\s*(;|$|//|/\\*))" } ], "beginCaptures": { "1": { "name": "storage.modifier.swift" } } } ], "beginCaptures": { "1": { "name": "keyword.control.import.swift" } }, "endCaptures": { "1": { "name": "punctuation.terminator.statement.swift" } } }, "inheritance-clause": { "name": "meta.inheritance-clause.swift", "begin": "(:)(?=\\s*\\{)|(:)\\s*", "end": "(?!\\G)$|(?=[={}]|(?!\\G)\\bwhere\\b)", "patterns": [ { "begin": "\\bclass\\b", "end": "(?=[={}]|(?!\\G)\\bwhere\\b)", "patterns": [ { "include": "#comments" }, { "include": "#more-types" } ], "beginCaptures": { "0": { "name": "storage.type.class.swift" } } }, { "begin": "\\G", "end": "(?!\\G)$|(?=[={}]|(?!\\G)\\bwhere\\b)", "patterns": [ { "include": "#comments" }, { "include": "#inherited-type" }, { "include": "#more-types" } ] } ], "beginCaptures": { "1": { "name": "invalid.illegal.empty-inheritance-clause.swift" }, "2": { "name": "punctuation.separator.inheritance-clause.swift" } }, "repository": { "inherited-type": { "name": "entity.other.inherited-class.swift", "begin": "(?=[`\\p{L}_])", "end": "(?!\\G)", "patterns": [ { "include": "#type-identifier" } ] }, "more-types": { "name": "meta.inheritance-list.more-types", "begin": ",\\s*", "end": "(?!\\G)(?!//|/\\*)|(?=[,={}]|(?!\\G)\\bwhere\\b)", "patterns": [ { "include": "#comments" }, { "include": "#inherited-type" }, { "include": "#more-types" } ] } } }, "operator": { "name": "meta.definition.operator.swift", "begin": "(?x)\n\t\t\t\t\t\t(?:\n\t\t\t\t\t\t\t\\b(prefix|infix|postfix)\n\t\t\t\t\t\t\t\\s+\n\t\t\t\t\t\t)?\n\t\t\t\t\t\t\\b\n\t\t\t\t\t\t(operator)\n\t\t\t\t\t\t\\s+\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t(?\u003coph\u003e\t\t\t\t\t\t\t\t\t# operator-head\n\t\t\t\t\t\t\t\t\t[/=\\-+!*%\u003c\u003e\u0026|^~?]\n\t\t\t\t\t\t\t\t | [\\x{00A1}-\\x{00A7}]\n\t\t\t\t\t\t\t\t | [\\x{00A9}\\x{00AB}]\n\t\t\t\t\t\t\t\t | [\\x{00AC}\\x{00AE}]\n\t\t\t\t\t\t\t\t | [\\x{00B0}-\\x{00B1}\\x{00B6}\\x{00BB}\\x{00BF}\\x{00D7}\\x{00F7}]\n\t\t\t\t\t\t\t\t | [\\x{2016}-\\x{2017}\\x{2020}-\\x{2027}]\n\t\t\t\t\t\t\t\t | [\\x{2030}-\\x{203E}]\n\t\t\t\t\t\t\t\t | [\\x{2041}-\\x{2053}]\n\t\t\t\t\t\t\t\t | [\\x{2055}-\\x{205E}]\n\t\t\t\t\t\t\t\t | [\\x{2190}-\\x{23FF}]\n\t\t\t\t\t\t\t\t | [\\x{2500}-\\x{2775}]\n\t\t\t\t\t\t\t\t | [\\x{2794}-\\x{2BFF}]\n\t\t\t\t\t\t\t\t | [\\x{2E00}-\\x{2E7F}]\n\t\t\t\t\t\t\t\t | [\\x{3001}-\\x{3003}]\n\t\t\t\t\t\t\t\t | [\\x{3008}-\\x{3030}]\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\\g\u003coph\u003e\n\t\t\t\t\t\t\t\t | \\.\t\t\t\t\t\t\t\t\t# Invalid dot\n\t\t\t\t\t\t\t\t | (?\u003copc\u003e\t\t\t\t\t\t\t\t# operator-character\n\t\t\t\t\t\t\t\t\t\t[\\x{0300}-\\x{036F}]\n\t\t\t\t\t\t\t\t\t | [\\x{1DC0}-\\x{1DFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{20D0}-\\x{20FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE00}-\\x{FE0F}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE20}-\\x{FE2F}]\n\t\t\t\t\t\t\t\t\t | [\\x{E0100}-\\x{E01EF}]\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t)*+\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t | ( \\. ( \\g\u003coph\u003e | \\g\u003copc\u003e | \\. )++ )\t\t\t# Dot operators\n\t\t\t\t\t\t)\n\t\t\t\t\t\t\\s*\n\t\t\t\t\t", "end": "(;)|$\\n?|(?=//|/\\*)", "patterns": [ { "include": "#swift2" }, { "include": "#swift3" }, { "name": "invalid.illegal.character-not-allowed-here.swift", "match": "((?!$|;|//|/\\*)\\S)+" } ], "beginCaptures": { "1": { "name": "storage.modifier.swift" }, "2": { "name": "storage.type.function.operator.swift" }, "3": { "name": "entity.name.function.operator.swift" }, "4": { "patterns": [ { "name": "invalid.illegal.dot-not-allowed-here.swift", "match": "\\." } ] } }, "endCaptures": { "1": { "name": "punctuation.terminator.statement.swift" } }, "repository": { "swift2": { "begin": "\\G(\\{)", "end": "(\\})", "patterns": [ { "include": "#comments" }, { "match": "\\b(associativity)\\s+(left|right)\\b", "captures": { "1": { "name": "storage.modifier.swift" }, "2": { "name": "keyword.other.operator.associativity.swift" } } }, { "match": "\\b(precedence)\\s+([0-9]+)\\b", "captures": { "1": { "name": "storage.modifier.swift" }, "2": { "name": "constant.numeric.integer.swift" } } }, { "match": "\\b(assignment)\\b", "captures": { "1": { "name": "storage.modifier.swift" } } } ], "beginCaptures": { "1": { "name": "punctuation.definition.operator.begin.swift" } }, "endCaptures": { "1": { "name": "punctuation.definition.operator.end.swift" } } }, "swift3": { "match": "\\G(:)\\s*((?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e))", "captures": { "2": { "name": "entity.other.inherited-class.swift", "patterns": [ { "include": "#types-precedencegroup" } ] }, "3": { "name": "punctuation.definition.identifier.swift" }, "4": { "name": "punctuation.definition.identifier.swift" } } } } }, "parameter-clause": { "name": "meta.parameter-clause.swift", "begin": "(\\()", "end": "(\\))", "patterns": [ { "include": "#parameter-list" } ], "beginCaptures": { "1": { "name": "punctuation.definition.parameters.begin.swift" } }, "endCaptures": { "1": { "name": "punctuation.definition.parameters.end.swift" } } }, "parameter-list": { "patterns": [ { "match": "((?\u003cq1\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq1\u003e))\\s+((?\u003cq2\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq2\u003e))(?=\\s*:)", "captures": { "1": { "name": "entity.name.function.swift" }, "2": { "name": "punctuation.definition.identifier.swift" }, "3": { "name": "punctuation.definition.identifier.swift" }, "4": { "name": "variable.parameter.function.swift" }, "5": { "name": "punctuation.definition.identifier.swift" }, "6": { "name": "punctuation.definition.identifier.swift" } } }, { "match": "(((?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e)))(?=\\s*:)", "captures": { "1": { "name": "variable.parameter.function.swift" }, "2": { "name": "entity.name.function.swift" }, "3": { "name": "punctuation.definition.identifier.swift" }, "4": { "name": "punctuation.definition.identifier.swift" } } }, { "begin": ":\\s*(?!\\s)", "end": "(?=[,)])", "patterns": [ { "include": "#available-types" }, { "name": "invalid.illegal.extra-colon-in-parameter-list.swift", "match": ":" }, { "begin": "=", "end": "(?=[,)])", "patterns": [ { "include": "#expressions" } ], "beginCaptures": { "0": { "name": "keyword.operator.assignment.swift" } } } ] } ] }, "precedencegroup": { "name": "meta.definition.precedencegroup.swift", "begin": "\\b(precedencegroup)\\s+((?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e))\\s*(?=\\{)", "end": "(?!\\G)", "patterns": [ { "begin": "\\{", "end": "\\}", "patterns": [ { "include": "#comments" }, { "match": "\\b(higherThan|lowerThan)\\s*:\\s*((?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e))", "captures": { "1": { "name": "storage.modifier.swift" }, "2": { "name": "entity.other.inherited-class.swift", "patterns": [ { "include": "#types-precedencegroup" } ] }, "3": { "name": "punctuation.definition.identifier.swift" }, "4": { "name": "punctuation.definition.identifier.swift" } } }, { "match": "\\b(associativity)\\b(?:\\s*:\\s*(right|left|none)\\b)?", "captures": { "1": { "name": "storage.modifier.swift" }, "2": { "name": "keyword.other.operator.associativity.swift" } } }, { "match": "\\b(assignment)\\b(?:\\s*:\\s*(true|false)\\b)?", "captures": { "1": { "name": "storage.modifier.swift" }, "2": { "name": "constant.language.boolean.swift" } } } ], "beginCaptures": { "0": { "name": "punctuation.definition.precedencegroup.begin.swift" } }, "endCaptures": { "0": { "name": "punctuation.definition.precedencegroup.end.swift" } } } ], "beginCaptures": { "1": { "name": "storage.type.precedencegroup.swift" }, "2": { "name": "entity.name.type.precedencegroup.swift" }, "3": { "name": "punctuation.definition.identifier.swift" }, "4": { "name": "punctuation.definition.identifier.swift" } } }, "protocol": { "name": "meta.definition.type.protocol.swift", "begin": "\\b(protocol)\\s+((?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e))", "end": "(?\u003c=\\})", "patterns": [ { "include": "#comments" }, { "include": "#inheritance-clause" }, { "include": "#generic-where-clause" }, { "name": "meta.definition.type.body.swift", "begin": "\\{", "end": "\\}", "patterns": [ { "include": "#protocol-method" }, { "include": "#protocol-initializer" }, { "include": "#associated-type" }, { "include": "$self" } ], "beginCaptures": { "0": { "name": "punctuation.definition.type.begin.swift" } }, "endCaptures": { "0": { "name": "punctuation.definition.type.end.swift" } } } ], "beginCaptures": { "1": { "name": "storage.type.$1.swift" }, "2": { "name": "entity.name.type.$1.swift" }, "3": { "name": "punctuation.definition.identifier.swift" }, "4": { "name": "punctuation.definition.identifier.swift" } }, "repository": { "associated-type": { "name": "meta.definition.associatedtype.swift", "begin": "\\b(associatedtype)\\s+((?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e))\\s*", "end": "(?!\\G)$|(?=[;}]|$)", "patterns": [ { "include": "#inheritance-clause" }, { "include": "#generic-where-clause" }, { "include": "#typealias-assignment" } ], "beginCaptures": { "1": { "name": "keyword.other.declaration-specifier.swift" }, "2": { "name": "variable.language.associatedtype.swift" }, "3": { "name": "punctuation.definition.identifier.swift" }, "4": { "name": "punctuation.definition.identifier.swift" } } }, "protocol-initializer": { "name": "meta.definition.function.initializer.swift", "begin": "(?\u003c!\\.)\\b(init[?!]*(?# only one is valid, but we want the in⇥ snippet to produce something that looks good))\\s*(?=\\(|\u003c)", "end": "$|(?=;|//|/\\*|\\})", "patterns": [ { "include": "#comments" }, { "include": "#generic-parameter-clause" }, { "include": "#parameter-clause" }, { "name": "keyword.control.exception.swift", "match": "\\b(?:throws|rethrows)\\b" }, { "include": "#generic-where-clause" }, { "name": "invalid.illegal.function-body-not-allowed-in-protocol.swift", "begin": "\\{", "end": "\\}", "patterns": [ { "include": "$self" } ], "beginCaptures": { "0": { "name": "punctuation.section.function.begin.swift" } }, "endCaptures": { "0": { "name": "punctuation.section.function.end.swift" } } } ], "beginCaptures": { "1": { "name": "storage.type.function.swift", "patterns": [ { "name": "invalid.illegal.character-not-allowed-here.swift", "match": "(?\u003c=[?!])[?!]+" } ] } } }, "protocol-method": { "name": "meta.definition.function.swift", "begin": "(?x)\n\t\t\t\t\t\t\t\t\\b\n\t\t\t\t\t\t\t\t(func)\n\t\t\t\t\t\t\t\t\\s+\n\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t(?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e)\n\t\t \t\t\t\t\t\t | (?:\n\t\t \t\t\t\t\t\t\t\t(\n\t\t \t\t\t\t\t\t\t\t\t(?\u003coph\u003e\t\t\t\t\t\t\t\t# operator-head\n\t\t \t\t\t\t\t\t\t\t\t\t[/=\\-+!*%\u003c\u003e\u0026|^~?]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{00A1}-\\x{00A7}]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{00A9}\\x{00AB}]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{00AC}\\x{00AE}]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{00B0}-\\x{00B1}\\x{00B6}\\x{00BB}\\x{00BF}\\x{00D7}\\x{00F7}]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{2016}-\\x{2017}\\x{2020}-\\x{2027}]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{2030}-\\x{203E}]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{2041}-\\x{2053}]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{2055}-\\x{205E}]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{2190}-\\x{23FF}]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{2500}-\\x{2775}]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{2794}-\\x{2BFF}]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{2E00}-\\x{2E7F}]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{3001}-\\x{3003}]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{3008}-\\x{3030}]\n\t\t \t\t\t\t\t\t\t\t\t)\n\t\t \t\t\t\t\t\t\t\t\t(\n\t\t \t\t\t\t\t\t\t\t\t\t\\g\u003coph\u003e\n\t\t \t\t\t\t\t\t\t\t\t | (?\u003copc\u003e\t\t\t\t\t\t\t\t# operator-character\n\t\t \t\t\t\t\t\t\t\t\t\t\t[\\x{0300}-\\x{036F}]\n\t\t \t\t\t\t\t\t\t\t\t\t | [\\x{1DC0}-\\x{1DFF}]\n\t\t \t\t\t\t\t\t\t\t\t\t | [\\x{20D0}-\\x{20FF}]\n\t\t \t\t\t\t\t\t\t\t\t\t | [\\x{FE00}-\\x{FE0F}]\n\t\t \t\t\t\t\t\t\t\t\t\t | [\\x{FE20}-\\x{FE2F}]\n\t\t \t\t\t\t\t\t\t\t\t\t | [\\x{E0100}-\\x{E01EF}]\n\t\t \t\t\t\t\t\t\t\t\t\t)\n\t\t \t\t\t\t\t\t\t\t\t)*\n\t\t \t\t\t\t\t\t\t\t)\n\t\t \t\t\t\t\t\t\t | ( \\. ( \\g\u003coph\u003e | \\g\u003copc\u003e | \\. )+ )\t\t\t# Dot operators\n\t\t \t\t\t\t\t\t\t)\n\t\t \t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\\s*\n\t\t\t\t\t\t\t\t(?=\\(|\u003c)\n\t\t\t\t\t\t\t", "end": "$|(?=;|//|/\\*|\\})", "patterns": [ { "include": "#comments" }, { "include": "#generic-parameter-clause" }, { "include": "#parameter-clause" }, { "include": "#function-result" }, { "name": "keyword.control.exception.swift", "match": "\\b(?:throws|rethrows)\\b" }, { "include": "#generic-where-clause" }, { "name": "invalid.illegal.function-body-not-allowed-in-protocol.swift", "begin": "\\{", "end": "\\}", "patterns": [ { "include": "$self" } ], "beginCaptures": { "0": { "name": "punctuation.section.function.begin.swift" } }, "endCaptures": { "0": { "name": "punctuation.section.function.end.swift" } } } ], "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" } } } } }, "type": { "patterns": [ { "name": "meta.definition.type.$1.swift", "begin": "\\b(class(?!\\s+(?:func|var|let)\\b)|struct)\\s+((?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e))", "end": "(?\u003c=\\})", "patterns": [ { "include": "#comments" }, { "include": "#generic-parameter-clause" }, { "include": "#generic-where-clause" }, { "include": "#inheritance-clause" }, { "name": "meta.definition.type.body.swift", "begin": "\\{", "end": "\\}", "patterns": [ { "include": "$self" } ], "beginCaptures": { "0": { "name": "punctuation.definition.type.begin.swift" } }, "endCaptures": { "0": { "name": "punctuation.definition.type.end.swift" } } } ], "beginCaptures": { "1": { "name": "storage.type.$1.swift" }, "2": { "name": "entity.name.type.$1.swift" }, "3": { "name": "punctuation.definition.identifier.swift" }, "4": { "name": "punctuation.definition.identifier.swift" } } }, { "include": "#type-enum" } ] }, "type-enum": { "name": "meta.definition.type.$1.swift", "begin": "\\b(enum)\\s+((?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e))", "end": "(?\u003c=\\})", "patterns": [ { "include": "#comments" }, { "include": "#generic-parameter-clause" }, { "include": "#generic-where-clause" }, { "include": "#inheritance-clause" }, { "name": "meta.definition.type.body.swift", "begin": "\\{", "end": "\\}", "patterns": [ { "include": "#enum-case-clause" }, { "include": "$self" } ], "beginCaptures": { "0": { "name": "punctuation.definition.type.begin.swift" } }, "endCaptures": { "0": { "name": "punctuation.definition.type.end.swift" } } } ], "beginCaptures": { "1": { "name": "storage.type.$1.swift" }, "2": { "name": "entity.name.type.$1.swift" }, "3": { "name": "punctuation.definition.identifier.swift" }, "4": { "name": "punctuation.definition.identifier.swift" } }, "repository": { "associated-values": { "begin": "\\G\\(", "end": "\\)", "patterns": [ { "include": "#comments" }, { "match": "(?x)\n\t\t\t\t\t\t\t\t\t\t((?\u003cq1\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*\\k\u003cq1\u003e)\n\t\t\t\t\t\t\t\t\t\t\\s+\n\t\t\t\t\t\t\t\t\t\t(((?\u003cq2\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*\\k\u003cq2\u003e))\n\t\t\t\t\t\t\t\t\t\t\\s*(:)", "end": "(?=[,)\\]])", "captures": { "1": { "name": "invalid.illegal.distinct-labels-not-allowed.swift" }, "3": { "name": "entity.name.function.swift" }, "4": { "name": "variable.parameter.function.swift" }, "6": { "name": "punctuation.separator.argument-label.swift" } } }, { "begin": "(((?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*\\k\u003cq\u003e))\\s*(:)", "end": "(?=[,)\\]])", "patterns": [ { "include": "#available-types" } ], "beginCaptures": { "1": { "name": "entity.name.function.swift" }, "2": { "name": "variable.parameter.function.swift" }, "4": { "name": "punctuation.separator.argument-label.swift" } } }, { "begin": "(?![,)\\]])(?=\\S)", "end": "(?=[,)\\]])", "patterns": [ { "include": "#available-types" }, { "name": "invalid.illegal.extra-colon-in-parameter-list.swift", "match": ":" } ] } ], "beginCaptures": { "0": { "name": "punctuation.definition.parameters.begin.swift" } }, "endCaptures": { "0": { "name": "punctuation.definition.parameters.end.swift" } } }, "enum-case": { "begin": "(?x)((?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e))\\s*", "end": "(?\u003c=\\))|(?![=(])", "patterns": [ { "include": "#comments" }, { "include": "#associated-values" }, { "include": "#raw-value-assignment" } ], "beginCaptures": { "1": { "name": "constant.other.swift" } } }, "enum-case-clause": { "begin": "\\b(case)\\b\\s*", "end": "(?=[;}])|(?!\\G)(?!//|/\\*)(?=[^\\s,])", "patterns": [ { "include": "#comments" }, { "include": "#enum-case" }, { "include": "#more-cases" } ], "beginCaptures": { "1": { "name": "storage.type.enum.case.swift" } } }, "more-cases": { "name": "meta.enum-case.more-cases", "begin": ",\\s*", "end": "(?!\\G)(?!//|/\\*)(?=[;}]|[^\\s,])", "patterns": [ { "include": "#comments" }, { "include": "#enum-case" }, { "include": "#more-cases" } ] }, "raw-value-assignment": { "begin": "(=)\\s*", "end": "(?!\\G)", "patterns": [ { "include": "#comments" }, { "include": "#literals" } ], "beginCaptures": { "1": { "name": "keyword.operator.assignment.swift" } } } } }, "type-identifier": { "begin": "((?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e))\\s*", "end": "(?!\u003c)", "patterns": [ { "begin": "(?=\u003c)", "end": "(?!\\G)", "patterns": [ { "include": "#generic-argument-clause" } ] } ], "beginCaptures": { "1": { "name": "meta.type-name.swift", "patterns": [ { "include": "#builtin-types" } ] }, "2": { "name": "punctuation.definition.identifier.swift" }, "3": { "name": "punctuation.definition.identifier.swift" } } }, "typealias": { "name": "meta.definition.typealias.swift", "begin": "\\b(typealias)\\s+((?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e))\\s*", "end": "(?!\\G)$|(?=;|//|/\\*|$)", "patterns": [ { "begin": "\\G(?=\u003c)", "end": "(?!\\G)", "patterns": [ { "include": "#generic-parameter-clause" } ] }, { "include": "#typealias-assignment" } ], "beginCaptures": { "1": { "name": "keyword.other.declaration-specifier.swift" }, "2": { "name": "entity.name.type.typealias.swift" }, "3": { "name": "punctuation.definition.identifier.swift" }, "4": { "name": "punctuation.definition.identifier.swift" } } }, "typealias-assignment": { "begin": "(=)\\s*", "end": "(?!\\G)$|(?=;|//|/\\*|$)", "patterns": [ { "include": "#available-types" } ], "beginCaptures": { "1": { "name": "keyword.operator.assignment.swift" } } }, "types-precedencegroup": { "patterns": [ { "name": "support.type.swift", "match": "\\b(?:BitwiseShift|Assignment|RangeFormation|Casting|Addition|NilCoalescing|Comparison|LogicalConjunction|LogicalDisjunction|Default|Ternary|Multiplication|FunctionArrow)Precedence\\b" } ] } } }, "expressions": { "patterns": [ { "include": "#comments" }, { "include": "#code-block" }, { "include": "#attributes" }, { "include": "#closure-parameter" }, { "include": "#literals" }, { "include": "#operators" }, { "include": "#builtin-types" }, { "include": "#builtin-functions" }, { "include": "#builtin-global-functions" }, { "include": "#builtin-properties" }, { "include": "#compound-name" }, { "include": "#keywords" }, { "include": "#function-call-expression" }, { "include": "#subscript-expression" }, { "include": "#parenthesized-expression" }, { "include": "#member-reference" }, { "include": "#availability-condition" }, { "name": "support.variable.discard-value.swift", "match": "\\b_\\b" } ], "repository": { "availability-condition": { "begin": "\\B(#available)(\\()", "end": "\\)", "patterns": [ { "match": "\\s*\\b((?:iOS|macOS|OSX|watchOS|tvOS)(?:ApplicationExtension)?)\\b(?:\\s+([0-9]+(?:\\.[0-9]+)*\\b))", "captures": { "1": { "name": "keyword.other.platform.os.swift" }, "2": { "name": "constant.numeric.swift" } } }, { "match": "(\\*)\\s*(.*?)(?=[,)])", "captures": { "1": { "name": "keyword.other.platform.all.swift" }, "2": { "name": "invalid.illegal.character-not-allowed-here.swift" } } }, { "name": "invalid.illegal.character-not-allowed-here.swift", "match": "[^\\s,)]+" } ], "beginCaptures": { "1": { "name": "support.function.availability-condition.swift" }, "2": { "name": "punctuation.definition.arguments.begin.swift" } }, "endCaptures": { "0": { "name": "punctuation.definition.arguments.end.swift" } } }, "closure-parameter": { "name": "variable.language.closure-parameter.swift", "match": "\\$[0-9]+" }, "compound-name": { "match": "(?x)\n\t\t\t\t\t\t((?\u003cq1\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq1\u003e)) \t\t# function name\n\t\t\t\t\t\t\\(\n\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t((?\u003cq2\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq2\u003e)) \t# argument label\n\t\t\t\t\t\t\t\t\t:\t\t\t\t\t\t\t\t\t\t\t\t# colon\n\t\t\t\t\t\t\t\t)+\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\\)\n\t\t\t\t\t", "captures": { "1": { "name": "entity.name.function.compound-name.swift" }, "2": { "name": "punctuation.definition.entity.swift" }, "3": { "name": "punctuation.definition.entity.swift" }, "4": { "patterns": [ { "name": "entity.name.function.compound-name.swift", "match": "(?\u003cq\u003e`?)(?!_:)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e):", "captures": { "1": { "name": "punctuation.definition.entity.swift" }, "2": { "name": "punctuation.definition.entity.swift" } } } ] } } }, "expression-element-list": { "patterns": [ { "include": "#comments" }, { "begin": "((?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e))\\s*(:)", "end": "(?=[,)\\]])", "patterns": [ { "include": "#expressions" } ], "beginCaptures": { "1": { "name": "support.function.any-method.swift" }, "2": { "name": "punctuation.definition.identifier.swift" }, "3": { "name": "punctuation.definition.identifier.swift" }, "4": { "name": "punctuation.separator.argument-label.swift" } } }, { "begin": "(?![,)\\]])(?=\\S)", "end": "(?=[,)\\]])", "patterns": [ { "include": "#expressions" } ] } ] }, "function-call-expression": { "patterns": [ { "name": "meta.function-call.swift", "begin": "((?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e))\\s*(\\()", "end": "\\)", "patterns": [ { "include": "#expression-element-list" } ], "beginCaptures": { "1": { "name": "support.function.any-method.swift" }, "2": { "name": "punctuation.definition.identifier.swift" }, "3": { "name": "punctuation.definition.identifier.swift" }, "4": { "name": "punctuation.definition.arguments.begin.swift" } }, "endCaptures": { "0": { "name": "punctuation.definition.arguments.end.swift" } } }, { "name": "meta.function-call.swift", "begin": "(?\u003c=[`\\])}\u003e\\p{L}_\\p{N}\\p{M}])\\s*(\\()", "end": "\\)", "patterns": [ { "include": "#expression-element-list" } ], "beginCaptures": { "1": { "name": "punctuation.definition.arguments.begin.swift" } }, "endCaptures": { "0": { "name": "punctuation.definition.arguments.end.swift" } } } ] }, "member-reference": { "patterns": [ { "match": "(?\u003c=\\.)((?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e))", "captures": { "1": { "name": "variable.other.swift" }, "2": { "name": "punctuation.definition.identifier.swift" }, "3": { "name": "punctuation.definition.identifier.swift" } } } ] }, "parenthesized-expression": { "begin": "\\(", "end": "\\)", "patterns": [ { "include": "#expression-element-list" } ], "beginCaptures": { "0": { "name": "punctuation.section.tuple.begin.swift" } }, "endCaptures": { "0": { "name": "punctuation.section.tuple.end.swift" } } }, "subscript-expression": { "name": "meta.subscript-expression.swift", "begin": "(?\u003c=[`\\p{L}_\\p{N}\\p{M}])\\s*(\\[)", "end": "\\]", "patterns": [ { "include": "#expression-element-list" } ], "beginCaptures": { "1": { "name": "punctuation.definition.arguments.begin.swift" } }, "endCaptures": { "0": { "name": "punctuation.definition.arguments.end.swift" } } } } }, "keywords": { "patterns": [ { "name": "keyword.control.branch.swift", "match": "(?\u003c!\\.)\\b(?:if|else|guard|where|switch|case|default|fallthrough)\\b" }, { "name": "keyword.control.transfer.swift", "match": "(?\u003c!\\.)\\b(?:continue|break|fallthrough|return)\\b" }, { "name": "keyword.control.loop.swift", "match": "(?\u003c!\\.)\\b(?:while|for|in)\\b" }, { "match": "(?\u003c!\\.)\\b(repeat)\\b(\\s*)", "captures": { "1": { "name": "keyword.control.loop.swift" }, "2": { "name": "punctuation.whitespace.trailing.repeat.swift" } } }, { "name": "keyword.control.defer.swift", "match": "(?\u003c!\\.)\\bdefer\\b" }, { "name": "keyword.control.exception.swift", "match": "(?\u003c!\\.)\\b(?:catch|throws?|rethrows|try)\\b|\\btry[?!]\\B" }, { "match": "(?\u003c!\\.)\\b(do)\\b(\\s*)", "captures": { "1": { "name": "keyword.control.exception.swift" }, "2": { "name": "punctuation.whitespace.trailing.do.swift" } } }, { "name": "keyword.other.declaration-specifier.swift", "match": "(?\u003c!\\.)\\b(?:associatedtype|let|operator|typealias|var)\\b" }, { "name": "storage.type.$1.swift", "match": "(?\u003c!\\.)\\b(class|enum|extension|precedencegroup|protocol|struct)\\b" }, { "name": "storage.modifier.swift", "match": "(?\u003c!\\.)\\b(?:inout|static|final|lazy|mutating|nonmutating|optional|indirect|required|override|dynamic|convenience|infix|prefix|postfix)\\b" }, { "name": "storage.type.function.swift", "match": "\\binit[?!]|\\binit\\b|(?\u003c!\\.)\\b(?:func|deinit|subscript|didSet|get|set|willSet)\\b" }, { "name": "keyword.other.declaration-specifier.accessibility.swift", "match": "(?\u003c!\\.)\\b(?:fileprivate|private|internal|public|open)\\b" }, { "name": "keyword.other.capture-specifier.swift", "match": "(?\u003c!\\.)\\b(?:weak|unowned)\\b|\\bunowned\\((?:safe|unsafe)\\)" }, { "match": "(?\u003c=\\.)(?:(dynamicType|self)|(Protocol|Type))\\b", "captures": { "1": { "name": "keyword.operator.type.swift" }, "2": { "name": "keyword.operator.type.metatype.swift" } } }, { "name": "variable.language.swift", "match": "(?\u003c!\\.)\\b(?:super|self|Self)\\b" }, { "name": "support.variable.swift", "match": "\\B(?:#file|#line|#column|#function|#dsohandle)\\b|\\b(?:__FILE__|__LINE__|__COLUMN__|__FUNCTION__|__DSO_HANDLE__)\\b" }, { "name": "keyword.control.import.swift", "match": "(?\u003c!\\.)\\bimport\\b" } ] }, "literals": { "patterns": [ { "include": "#boolean" }, { "include": "#numeric" }, { "include": "#string" }, { "name": "constant.language.nil.swift", "match": "\\bnil\\b" }, { "name": "support.function.object-literal.swift", "match": "\\B#(colorLiteral|imageLiteral|fileLiteral)\\b" }, { "name": "support.function.key-path.swift", "match": "\\B#keyPath\\b" }, { "begin": "\\B(#selector)(\\()(?:\\s*(getter|setter)\\s*(:))?", "end": "\\)", "patterns": [ { "include": "#expressions" } ], "beginCaptures": { "1": { "name": "support.function.selector-reference.swift" }, "2": { "name": "punctuation.definition.arguments.begin.swift" }, "3": { "name": "support.variable.parameter.swift" }, "4": { "name": "punctuation.separator.argument-label.swift" } }, "endCaptures": { "0": { "name": "punctuation.definition.arguments.end.swift" } } } ], "repository": { "boolean": { "name": "constant.language.boolean.swift", "match": "\\b(true|false)\\b" }, "numeric": { "patterns": [ { "name": "constant.numeric.float.decimal.swift", "match": "(\\B\\-|\\b)(?\u003c![\\[\\](){}\\p{L}_\\p{N}\\p{M}]\\.)[0-9][0-9_]*(?=\\.[0-9]|[eE])(?:\\.[0-9][0-9_]*)?(?:[eE][-+]?[0-9][0-9_]*)?\\b(?!\\.[0-9])" }, { "name": "constant.numeric.float.hexadecimal.swift", "match": "(\\B\\-|\\b)(?\u003c![\\[\\](){}\\p{L}_\\p{N}\\p{M}]\\.)(0x[0-9a-fA-F][0-9a-fA-F_]*)(?:\\.[0-9a-fA-F][0-9a-fA-F_]*)?[pP][-+]?[0-9][0-9_]*\\b(?!\\.[0-9])" }, { "name": "invalid.illegal.numeric.float.invalid-exponent.swift", "match": "(\\B\\-|\\b)(?\u003c![\\[\\](){}\\p{L}_\\p{N}\\p{M}]\\.)(0x[0-9a-fA-F][0-9a-fA-F_]*)(?:\\.[0-9a-fA-F][0-9a-fA-F_]*)?(?:[pP][-+]?\\w*)\\b(?!\\.[0-9])" }, { "name": "invalid.illegal.numeric.float.missing-exponent.swift", "match": "(\\B\\-|\\b)(?\u003c![\\[\\](){}\\p{L}_\\p{N}\\p{M}]\\.)(0x[0-9a-fA-F][0-9a-fA-F_]*)\\.[0-9][\\w.]*" }, { "name": "invalid.illegal.numeric.float.missing-leading-zero.swift", "match": "(?\u003c=\\s|^)\\-?\\.[0-9][\\w.]*" }, { "name": "invalid.illegal.numeric.leading-underscore.swift", "match": "(\\B\\-|\\b)0[box]_[0-9a-fA-F_]*(?:[pPeE][+-]?\\w+)?[\\w.]+" }, { "match": "(?\u003c=[\\[\\](){}\\p{L}_\\p{N}\\p{M}]\\.)[0-9]+\\b" }, { "name": "constant.numeric.integer.binary.swift", "match": "(\\B\\-|\\b)(?\u003c![\\[\\](){}\\p{L}_\\p{N}\\p{M}]\\.)0b[01][01_]*\\b(?!\\.[0-9])" }, { "name": "constant.numeric.integer.octal.swift", "match": "(\\B\\-|\\b)(?\u003c![\\[\\](){}\\p{L}_\\p{N}\\p{M}]\\.)0o[0-7][0-7_]*\\b(?!\\.[0-9])" }, { "name": "constant.numeric.integer.decimal.swift", "match": "(\\B\\-|\\b)(?\u003c![\\[\\](){}\\p{L}_\\p{N}\\p{M}]\\.)[0-9][0-9_]*\\b(?!\\.[0-9])" }, { "name": "constant.numeric.integer.hexadecimal.swift", "match": "(\\B\\-|\\b)(?\u003c![\\[\\](){}\\p{L}_\\p{N}\\p{M}]\\.)0x[0-9a-fA-F][0-9a-fA-F_]*\\b(?!\\.[0-9])" }, { "name": "invalid.illegal.numeric.other.swift", "match": "(\\B\\-|\\b)[0-9][\\w.]*" } ] }, "string": { "patterns": [ { "name": "string.quoted.double.block.swift", "begin": "\"\"\"", "end": "\"\"\"", "patterns": [ { "name": "invalid.illegal.content-after-opening-delimiter.swift", "match": "\\G.+(?=\"\"\")|\\G.+" }, { "name": "constant.character.escape.newline.swift", "match": "\\\\\\s*\\n" }, { "include": "#string-guts" }, { "name": "invalid.illegal.content-before-closing-delimiter.swift", "match": "\\S((?!\\\\\\().)*(?=\"\"\")" } ], "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.swift" } }, "endCaptures": { "0": { "name": "punctuation.definition.string.end.swift" } } }, { "name": "string.quoted.double.single-line.swift", "begin": "\"", "end": "\"", "patterns": [ { "name": "invalid.illegal.returns-not-allowed.swift", "match": "\\r|\\n" }, { "include": "#string-guts" } ], "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.swift" } }, "endCaptures": { "0": { "name": "punctuation.definition.string.end.swift" } } } ], "repository": { "string-guts": { "patterns": [ { "name": "constant.character.escape.swift", "match": "\\\\[0\\\\tnr\"']" }, { "name": "constant.character.escape.unicode.swift", "match": "\\\\u\\{[0-9a-fA-F]{1,8}\\}" }, { "name": "meta.embedded.line.swift", "contentName": "source.swift", "begin": "\\\\\\(", "end": "(\\))", "patterns": [ { "include": "$self" }, { "begin": "\\(", "end": "\\)" } ], "beginCaptures": { "0": { "name": "punctuation.section.embedded.begin.swift" } }, "endCaptures": { "0": { "name": "punctuation.section.embedded.end.swift" }, "1": { "name": "source.swift" } } }, { "name": "invalid.illegal.escape-not-recognized", "match": "\\\\." } ] } } } } }, "operators": { "patterns": [ { "name": "keyword.operator.type-casting.swift", "match": "\\b(is\\b|as([!?]\\B|\\b))" }, { "begin": "(?x)\n\t\t\t\t\t\t(?=\n\t\t\t\t\t\t\t(?\u003coph\u003e\t\t\t\t\t\t\t\t# operator-head\n\t\t\t\t\t\t\t\t[/=\\-+!*%\u003c\u003e\u0026|^~?]\n\t\t\t\t\t\t\t | [\\x{00A1}-\\x{00A7}]\n\t\t\t\t\t\t\t | [\\x{00A9}\\x{00AB}]\n\t\t\t\t\t\t\t | [\\x{00AC}\\x{00AE}]\n\t\t\t\t\t\t\t | [\\x{00B0}-\\x{00B1}\\x{00B6}\\x{00BB}\\x{00BF}\\x{00D7}\\x{00F7}]\n\t\t\t\t\t\t\t | [\\x{2016}-\\x{2017}\\x{2020}-\\x{2027}]\n\t\t\t\t\t\t\t | [\\x{2030}-\\x{203E}]\n\t\t\t\t\t\t\t | [\\x{2041}-\\x{2053}]\n\t\t\t\t\t\t\t | [\\x{2055}-\\x{205E}]\n\t\t\t\t\t\t\t | [\\x{2190}-\\x{23FF}]\n\t\t\t\t\t\t\t | [\\x{2500}-\\x{2775}]\n\t\t\t\t\t\t\t | [\\x{2794}-\\x{2BFF}]\n\t\t\t\t\t\t\t | [\\x{2E00}-\\x{2E7F}]\n\t\t\t\t\t\t\t | [\\x{3001}-\\x{3003}]\n\t\t\t\t\t\t\t | [\\x{3008}-\\x{3030}]\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t | \\.\n\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\\g\u003coph\u003e\t\t\t\t\t\t\t# operator-head\n\t\t\t\t\t\t\t | \\.\n\t\t\t\t\t\t\t | [\\x{0300}-\\x{036F}]\t\t\t\t# operator-character\n\t\t\t\t\t\t\t | [\\x{1DC0}-\\x{1DFF}]\n\t\t\t\t\t\t\t | [\\x{20D0}-\\x{20FF}]\n\t\t\t\t\t\t\t | [\\x{FE00}-\\x{FE0F}]\n\t\t\t\t\t\t\t | [\\x{FE20}-\\x{FE2F}]\n\t\t\t\t\t\t\t | [\\x{E0100}-\\x{E01EF}]\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t", "end": "(?!\\G)", "patterns": [ { "match": "(?x)\n\t\t\t\t\t\t\t\t\\G\t\t\t\t\t\t\t\t\t\t# Matching from the beginning ensures\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t# that we start with operator-head\n\t\t\t\t\t\t\t\t(?\u003c=^|[\\s(\\[{,;:])\n\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t(?!(//|/\\*|\\*/))\n\t\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\t[/=\\-+!*%\u003c\u003e\u0026|^~?]\t\t\t\t# operator-head\n\t\t\t\t\t\t\t\t\t | [\\x{00A1}-\\x{00A7}]\n\t\t\t\t\t\t\t\t\t | [\\x{00A9}\\x{00AB}]\n\t\t\t\t\t\t\t\t\t | [\\x{00AC}\\x{00AE}]\n\t\t\t\t\t\t\t\t\t | [\\x{00B0}-\\x{00B1}\\x{00B6}\\x{00BB}\\x{00BF}\\x{00D7}\\x{00F7}]\n\t\t\t\t\t\t\t\t\t | [\\x{2016}-\\x{2017}\\x{2020}-\\x{2027}]\n\t\t\t\t\t\t\t\t\t | [\\x{2030}-\\x{203E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2041}-\\x{2053}]\n\t\t\t\t\t\t\t\t\t | [\\x{2055}-\\x{205E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2190}-\\x{23FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2500}-\\x{2775}]\n\t\t\t\t\t\t\t\t\t | [\\x{2794}-\\x{2BFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2E00}-\\x{2E7F}]\n\t\t\t\t\t\t\t\t\t | [\\x{3001}-\\x{3003}]\n\t\t\t\t\t\t\t\t\t | [\\x{3008}-\\x{3030}]\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t | [\\x{0300}-\\x{036F}]\t\t\t\t# operator-character\n\t\t\t\t\t\t\t\t\t | [\\x{1DC0}-\\x{1DFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{20D0}-\\x{20FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE00}-\\x{FE0F}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE20}-\\x{FE2F}]\n\t\t\t\t\t\t\t\t\t | [\\x{E0100}-\\x{E01EF}]\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t)++\n\t\t\t\t\t\t\t\t(?![\\s)\\]},;:]|\\z)\n\t\t\t\t\t\t\t", "captures": { "0": { "patterns": [ { "name": "keyword.operator.increment-or-decrement.swift", "match": "\\G(\\+\\+|\\-\\-)$" }, { "name": "keyword.operator.arithmetic.unary.swift", "match": "\\G(\\+|\\-)$" }, { "name": "keyword.operator.logical.not.swift", "match": "\\G!$" }, { "name": "keyword.operator.bitwise.not.swift", "match": "\\G~$" }, { "name": "keyword.operator.custom.prefix.swift", "match": ".+" } ] } } }, { "match": "(?x)\n\t\t\t\t\t\t\t\t\\G\t\t\t\t\t\t\t\t\t\t# Matching from the beginning ensures\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t# that we start with operator-head\n\t\t\t\t\t\t\t\t(?\u003c!^|[\\s(\\[{,;:])\n\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t(?!(//|/\\*|\\*/))\n\t\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\t[/=\\-+!*%\u003c\u003e\u0026|^~?]\t\t\t\t# operator-head\n\t\t\t\t\t\t\t\t\t | [\\x{00A1}-\\x{00A7}]\n\t\t\t\t\t\t\t\t\t | [\\x{00A9}\\x{00AB}]\n\t\t\t\t\t\t\t\t\t | [\\x{00AC}\\x{00AE}]\n\t\t\t\t\t\t\t\t\t | [\\x{00B0}-\\x{00B1}\\x{00B6}\\x{00BB}\\x{00BF}\\x{00D7}\\x{00F7}]\n\t\t\t\t\t\t\t\t\t | [\\x{2016}-\\x{2017}\\x{2020}-\\x{2027}]\n\t\t\t\t\t\t\t\t\t | [\\x{2030}-\\x{203E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2041}-\\x{2053}]\n\t\t\t\t\t\t\t\t\t | [\\x{2055}-\\x{205E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2190}-\\x{23FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2500}-\\x{2775}]\n\t\t\t\t\t\t\t\t\t | [\\x{2794}-\\x{2BFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2E00}-\\x{2E7F}]\n\t\t\t\t\t\t\t\t\t | [\\x{3001}-\\x{3003}]\n\t\t\t\t\t\t\t\t\t | [\\x{3008}-\\x{3030}]\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t | [\\x{0300}-\\x{036F}]\t\t\t\t# operator-character\n\t\t\t\t\t\t\t\t\t | [\\x{1DC0}-\\x{1DFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{20D0}-\\x{20FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE00}-\\x{FE0F}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE20}-\\x{FE2F}]\n\t\t\t\t\t\t\t\t\t | [\\x{E0100}-\\x{E01EF}]\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t)++\n\t\t\t\t\t\t\t\t(?=[\\s)\\]},;:]|\\z)\n\t\t\t\t\t\t\t", "captures": { "0": { "patterns": [ { "name": "keyword.operator.increment-or-decrement.swift", "match": "\\G(\\+\\+|\\-\\-)$" }, { "name": "keyword.operator.increment-or-decrement.swift", "match": "\\G!$" }, { "name": "keyword.operator.custom.postfix.swift", "match": ".+" } ] } } }, { "match": "(?x)\n\t\t\t\t\t\t\t\t\\G\t\t\t\t\t\t\t\t\t\t# Matching from the beginning ensures\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t# that we start with operator-head\n\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t(?!(//|/\\*|\\*/))\n\t\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\t[/=\\-+!*%\u003c\u003e\u0026|^~?]\t\t\t\t# operator-head\n\t\t\t\t\t\t\t\t\t | [\\x{00A1}-\\x{00A7}]\n\t\t\t\t\t\t\t\t\t | [\\x{00A9}\\x{00AB}]\n\t\t\t\t\t\t\t\t\t | [\\x{00AC}\\x{00AE}]\n\t\t\t\t\t\t\t\t\t | [\\x{00B0}-\\x{00B1}\\x{00B6}\\x{00BB}\\x{00BF}\\x{00D7}\\x{00F7}]\n\t\t\t\t\t\t\t\t\t | [\\x{2016}-\\x{2017}\\x{2020}-\\x{2027}]\n\t\t\t\t\t\t\t\t\t | [\\x{2030}-\\x{203E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2041}-\\x{2053}]\n\t\t\t\t\t\t\t\t\t | [\\x{2055}-\\x{205E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2190}-\\x{23FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2500}-\\x{2775}]\n\t\t\t\t\t\t\t\t\t | [\\x{2794}-\\x{2BFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2E00}-\\x{2E7F}]\n\t\t\t\t\t\t\t\t\t | [\\x{3001}-\\x{3003}]\n\t\t\t\t\t\t\t\t\t | [\\x{3008}-\\x{3030}]\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t | [\\x{0300}-\\x{036F}]\t\t\t\t# operator-character\n\t\t\t\t\t\t\t\t\t | [\\x{1DC0}-\\x{1DFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{20D0}-\\x{20FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE00}-\\x{FE0F}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE20}-\\x{FE2F}]\n\t\t\t\t\t\t\t\t\t | [\\x{E0100}-\\x{E01EF}]\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t)++\n\t\t\t\t\t\t\t", "captures": { "0": { "patterns": [ { "name": "keyword.operator.assignment.swift", "match": "\\G=$" }, { "name": "keyword.operator.assignment.compound.swift", "match": "\\G(\\+|\\-|\\*|/|%|\u003c\u003c|\u003e\u003e|\u0026|\\^|\\||\u0026\u0026|\\|\\|)=$" }, { "name": "keyword.operator.arithmetic.swift", "match": "\\G(\\+|\\-|\\*|/)$" }, { "name": "keyword.operator.arithmetic.overflow.swift", "match": "\\G\u0026(\\+|\\-|\\*)$" }, { "name": "keyword.operator.arithmetic.remainder.swift", "match": "\\G%$" }, { "name": "keyword.operator.comparison.swift", "match": "\\G(==|!=|\u003e|\u003c|\u003e=|\u003c=|~=)$" }, { "name": "keyword.operator.coalescing.swift", "match": "\\G\\?\\?$" }, { "name": "keyword.operator.logical.swift", "match": "\\G(\u0026\u0026|\\|\\|)$" }, { "name": "keyword.operator.bitwise.swift", "match": "\\G(\u0026|\\||\\^|\u003c\u003c|\u003e\u003e)$" }, { "name": "keyword.operator.bitwise.swift", "match": "\\G(===|!==)$" }, { "name": "keyword.operator.ternary.swift", "match": "\\G\\?$" }, { "name": "keyword.operator.custom.infix.swift", "match": ".+" } ] } } }, { "match": "(?x)\n\t\t\t\t\t\t\t\t\\G\t\t\t\t\t\t\t\t\t\t# Matching from the beginning ensures\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t# that we start with operator-head\n\t\t\t\t\t\t\t\t(?\u003c=^|[\\s(\\[{,;:])\n\t\t\t\t\t\t\t\t\\.\t\t\t\t\t\t\t\t\t\t# dot\n\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t(?!(//|/\\*|\\*/))\n\t\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\t\\.\t\t\t\t\t\t\t\t# dot\n\t\t\t\t\t\t\t\t\t | [/=\\-+!*%\u003c\u003e\u0026|^~?]\t\t\t\t# operator-head\n\t\t\t\t\t\t\t\t\t | [\\x{00A1}-\\x{00A7}]\n\t\t\t\t\t\t\t\t\t | [\\x{00A9}\\x{00AB}]\n\t\t\t\t\t\t\t\t\t | [\\x{00AC}\\x{00AE}]\n\t\t\t\t\t\t\t\t\t | [\\x{00B0}-\\x{00B1}\\x{00B6}\\x{00BB}\\x{00BF}\\x{00D7}\\x{00F7}]\n\t\t\t\t\t\t\t\t\t | [\\x{2016}-\\x{2017}\\x{2020}-\\x{2027}]\n\t\t\t\t\t\t\t\t\t | [\\x{2030}-\\x{203E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2041}-\\x{2053}]\n\t\t\t\t\t\t\t\t\t | [\\x{2055}-\\x{205E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2190}-\\x{23FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2500}-\\x{2775}]\n\t\t\t\t\t\t\t\t\t | [\\x{2794}-\\x{2BFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2E00}-\\x{2E7F}]\n\t\t\t\t\t\t\t\t\t | [\\x{3001}-\\x{3003}]\n\t\t\t\t\t\t\t\t\t | [\\x{3008}-\\x{3030}]\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t | [\\x{0300}-\\x{036F}]\t\t\t\t# operator-character\n\t\t\t\t\t\t\t\t\t | [\\x{1DC0}-\\x{1DFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{20D0}-\\x{20FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE00}-\\x{FE0F}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE20}-\\x{FE2F}]\n\t\t\t\t\t\t\t\t\t | [\\x{E0100}-\\x{E01EF}]\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t)++\n\t\t\t\t\t\t\t\t(?![\\s)\\]},;:]|\\z)\n\t\t\t\t\t\t\t", "captures": { "0": { "patterns": [ { "name": "keyword.operator.custom.prefix.dot.swift", "match": ".+" } ] } } }, { "match": "(?x)\n\t\t\t\t\t\t\t\t\\G\t\t\t\t\t\t\t\t\t\t# Matching from the beginning ensures\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t# that we start with operator-head\n\t\t\t\t\t\t\t\t(?\u003c!^|[\\s(\\[{,;:])\n\t\t\t\t\t\t\t\t\\.\t\t\t\t\t\t\t\t\t\t# dot\n\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t(?!(//|/\\*|\\*/))\n\t\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\t\\.\t\t\t\t\t\t\t\t# dot\n\t\t\t\t\t\t\t\t\t | [/=\\-+!*%\u003c\u003e\u0026|^~?]\t\t\t\t# operator-head\n\t\t\t\t\t\t\t\t\t | [\\x{00A1}-\\x{00A7}]\n\t\t\t\t\t\t\t\t\t | [\\x{00A9}\\x{00AB}]\n\t\t\t\t\t\t\t\t\t | [\\x{00AC}\\x{00AE}]\n\t\t\t\t\t\t\t\t\t | [\\x{00B0}-\\x{00B1}\\x{00B6}\\x{00BB}\\x{00BF}\\x{00D7}\\x{00F7}]\n\t\t\t\t\t\t\t\t\t | [\\x{2016}-\\x{2017}\\x{2020}-\\x{2027}]\n\t\t\t\t\t\t\t\t\t | [\\x{2030}-\\x{203E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2041}-\\x{2053}]\n\t\t\t\t\t\t\t\t\t | [\\x{2055}-\\x{205E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2190}-\\x{23FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2500}-\\x{2775}]\n\t\t\t\t\t\t\t\t\t | [\\x{2794}-\\x{2BFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2E00}-\\x{2E7F}]\n\t\t\t\t\t\t\t\t\t | [\\x{3001}-\\x{3003}]\n\t\t\t\t\t\t\t\t\t | [\\x{3008}-\\x{3030}]\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t | [\\x{0300}-\\x{036F}]\t\t\t\t# operator-character\n\t\t\t\t\t\t\t\t\t | [\\x{1DC0}-\\x{1DFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{20D0}-\\x{20FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE00}-\\x{FE0F}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE20}-\\x{FE2F}]\n\t\t\t\t\t\t\t\t\t | [\\x{E0100}-\\x{E01EF}]\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t)++\n\t\t\t\t\t\t\t\t(?=[\\s)\\]},;:]|\\z)\n\t\t\t\t\t\t\t", "captures": { "0": { "patterns": [ { "name": "keyword.operator.custom.postfix.dot.swift", "match": ".+" } ] } } }, { "match": "(?x)\n\t\t\t\t\t\t\t\t\\G\t\t\t\t\t\t\t\t\t\t# Matching from the beginning ensures\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t# that we start with operator-head\n\t\t\t\t\t\t\t\t\\.\t\t\t\t\t\t\t\t\t\t# dot\n\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t(?!(//|/\\*|\\*/))\n\t\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\t\\.\t\t\t\t\t\t\t\t# dot\n\t\t\t\t\t\t\t\t\t | [/=\\-+!*%\u003c\u003e\u0026|^~?]\t\t\t\t# operator-head\n\t\t\t\t\t\t\t\t\t | [\\x{00A1}-\\x{00A7}]\n\t\t\t\t\t\t\t\t\t | [\\x{00A9}\\x{00AB}]\n\t\t\t\t\t\t\t\t\t | [\\x{00AC}\\x{00AE}]\n\t\t\t\t\t\t\t\t\t | [\\x{00B0}-\\x{00B1}\\x{00B6}\\x{00BB}\\x{00BF}\\x{00D7}\\x{00F7}]\n\t\t\t\t\t\t\t\t\t | [\\x{2016}-\\x{2017}\\x{2020}-\\x{2027}]\n\t\t\t\t\t\t\t\t\t | [\\x{2030}-\\x{203E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2041}-\\x{2053}]\n\t\t\t\t\t\t\t\t\t | [\\x{2055}-\\x{205E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2190}-\\x{23FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2500}-\\x{2775}]\n\t\t\t\t\t\t\t\t\t | [\\x{2794}-\\x{2BFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2E00}-\\x{2E7F}]\n\t\t\t\t\t\t\t\t\t | [\\x{3001}-\\x{3003}]\n\t\t\t\t\t\t\t\t\t | [\\x{3008}-\\x{3030}]\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t | [\\x{0300}-\\x{036F}]\t\t\t\t# operator-character\n\t\t\t\t\t\t\t\t\t | [\\x{1DC0}-\\x{1DFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{20D0}-\\x{20FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE00}-\\x{FE0F}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE20}-\\x{FE2F}]\n\t\t\t\t\t\t\t\t\t | [\\x{E0100}-\\x{E01EF}]\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t)++\n\t\t\t\t\t\t\t", "captures": { "0": { "patterns": [ { "name": "keyword.operator.range.swift", "match": "\\G\\.\\.[.\u003c]$" }, { "name": "keyword.operator.custom.infix.dot.swift", "match": ".+" } ] } } } ] }, { "name": "keyword.operator.ternary.swift", "match": ":" } ] }, "root": { "patterns": [ { "include": "#compiler-control" }, { "include": "#declarations" }, { "include": "#expressions" } ] } } }