UNPKG

tm-grammars

Version:
1,549 lines (1,548 loc) 41.5 kB
{ "displayName": "Cadence", "name": "cadence", "patterns": [ { "include": "#comments" }, { "include": "#declarations" }, { "include": "#keywords" }, { "include": "#code-block" }, { "include": "#expressions" }, { "include": "#composite" }, { "include": "#event" } ], "repository": { "code-block": { "begin": "\\{", "beginCaptures": { "0": { "name": "punctuation.section.scope.begin.cadence" } }, "end": "}", "endCaptures": { "0": { "name": "punctuation.section.scope.end.cadence" } }, "patterns": [ { "include": "$self" } ] }, "comments": { "patterns": [ { "captures": { "1": { "name": "punctuation.definition.comment.cadence" } }, "match": "\\A^(#!).*$\\n?", "name": "comment.line.number-sign.cadence" }, { "begin": "/\\*\\*(?!/)", "beginCaptures": { "0": { "name": "punctuation.definition.comment.begin.cadence" } }, "end": "\\*/", "endCaptures": { "0": { "name": "punctuation.definition.comment.end.cadence" } }, "name": "comment.block.documentation.cadence", "patterns": [ { "include": "#nested" } ] }, { "begin": "/\\*:", "beginCaptures": { "0": { "name": "punctuation.definition.comment.begin.cadence" } }, "end": "\\*/", "endCaptures": { "0": { "name": "punctuation.definition.comment.end.cadence" } }, "name": "comment.block.documentation.playground.cadence", "patterns": [ { "include": "#nested" } ] }, { "begin": "/\\*", "beginCaptures": { "0": { "name": "punctuation.definition.comment.begin.cadence" } }, "end": "\\*/", "endCaptures": { "0": { "name": "punctuation.definition.comment.end.cadence" } }, "name": "comment.block.cadence", "patterns": [ { "include": "#nested" } ] }, { "match": "\\*/", "name": "invalid.illegal.unexpected-end-of-block-comment.cadence" }, { "begin": "(^[\\t ]+)?(?=//)", "beginCaptures": { "1": { "name": "punctuation.whitespace.comment.leading.cadence" } }, "end": "(?!\\G)", "patterns": [ { "begin": "///", "beginCaptures": { "0": { "name": "punctuation.definition.comment.cadence" } }, "end": "$", "name": "comment.line.triple-slash.documentation.cadence" }, { "begin": "//:", "beginCaptures": { "0": { "name": "punctuation.definition.comment.cadence" } }, "end": "$", "name": "comment.line.double-slash.documentation.cadence" }, { "begin": "//", "beginCaptures": { "0": { "name": "punctuation.definition.comment.cadence" } }, "end": "$", "name": "comment.line.double-slash.cadence" } ] } ], "repository": { "nested": { "begin": "/\\*", "end": "\\*/", "patterns": [ { "include": "#nested" } ] } } }, "composite": { "begin": "\\b((?:struct|resource|contract|attachment)(?:\\s+interface)?|enum)\\s+([_\\p{L}][_\\p{L}\\p{N}\\p{M}]*)", "beginCaptures": { "1": { "name": "storage.type.$1.cadence" }, "2": { "name": "entity.name.type.$1.cadence" } }, "end": "(?<=})|(?=\\s*\\Z)", "name": "meta.definition.type.composite.cadence", "patterns": [ { "include": "#comments" }, { "include": "#conformance-clause" }, { "begin": "\\{", "beginCaptures": { "0": { "name": "punctuation.section.type.begin.cadence" } }, "end": "}", "endCaptures": { "0": { "name": "punctuation.section.type.end.cadence" } }, "name": "meta.definition.type.body.cadence", "patterns": [ { "include": "$self" } ] } ] }, "conformance-clause": { "begin": "(:)(?=\\s*\\{)|(:)\\s*", "beginCaptures": { "1": { "name": "invalid.illegal.empty-conformance-clause.cadence" }, "2": { "name": "punctuation.separator.conformance-clause.cadence" } }, "end": "(?!\\G)$|(?=[={}])", "name": "meta.conformance-clause.cadence", "patterns": [ { "begin": "\\G", "end": "(?!\\G)$|(?=[={}])", "patterns": [ { "include": "#comments" }, { "include": "#type" } ] } ] }, "declarations": { "patterns": [ { "include": "#var-let-declaration" }, { "include": "#function" }, { "include": "#initializer" }, { "include": "#prepare-execute" }, { "include": "#execute-phase" }, { "include": "#pre-post" }, { "include": "#transaction" } ] }, "event": { "begin": "\\b(event)\\b\\s+([_\\p{L}][_\\p{L}\\p{N}\\p{M}]*)\\s*", "beginCaptures": { "1": { "name": "storage.type.event.cadence" }, "2": { "name": "entity.name.type.event.cadence" } }, "end": "(?<=\\))", "name": "meta.definition.type.event.cadence", "patterns": [ { "include": "#comments" }, { "include": "#parameter-clause" } ] }, "execute-phase": { "begin": "(?<!\\.)\\b(execute)\\b\\s*(?=\\{)", "beginCaptures": { "1": { "name": "storage.modifier.phase.cadence" } }, "end": "(?<=})", "name": "meta.definition.transaction.phase.cadence", "patterns": [ { "include": "#comments" }, { "begin": "\\{", "beginCaptures": { "0": { "name": "punctuation.section.phase.begin.cadence" } }, "end": "}", "endCaptures": { "0": { "name": "punctuation.section.phase.end.cadence" } }, "patterns": [ { "include": "$self" } ] } ] }, "expression-element-list": { "patterns": [ { "include": "#comments" }, { "begin": "([_\\p{L}][_\\p{L}\\p{N}\\p{M}]*)\\s*(:)", "beginCaptures": { "1": { "name": "variable.parameter.function-call.cadence" }, "2": { "name": "punctuation.separator.argument-label.cadence" } }, "end": "(?=[]),])", "patterns": [ { "include": "#expressions" } ] }, { "begin": "(?![]),])(?=\\S)", "end": "(?=[]),])", "patterns": [ { "include": "#expressions" } ] } ] }, "expressions": { "patterns": [ { "include": "#comments" }, { "include": "#keywords" }, { "include": "#language-variables" }, { "include": "#function-expression" }, { "include": "#path-literals" }, { "begin": "(?!\\b(?:if|while|for|return|create|destroy|emit|as)\\b)([_\\p{L}][_\\p{L}\\p{N}\\p{M}]*)\\s*(<)(?=[\\&(@\\[_{\\p{Lu}]|auth\\b|\\s*$)", "beginCaptures": { "1": { "name": "entity.name.function.cadence" }, "2": { "name": "punctuation.definition.type-arguments.begin.cadence" } }, "end": "(>)(?!\\s*[<=>])", "endCaptures": { "1": { "name": "punctuation.definition.type-arguments.end.cadence" } }, "name": "meta.type.arguments.cadence", "patterns": [ { "include": "#type" }, { "match": ",", "name": "punctuation.separator.type-argument.cadence" } ] }, { "begin": "(\\()", "beginCaptures": { "1": { "name": "punctuation.definition.arguments.begin.cadence" } }, "end": "(\\))", "endCaptures": { "1": { "name": "punctuation.definition.arguments.end.cadence" } }, "name": "meta.group.cadence", "patterns": [ { "include": "#expression-element-list" } ] }, { "begin": "(?<=\\.)([_\\p{L}][_\\p{L}\\p{N}\\p{M}]*)\\s*(\\()", "beginCaptures": { "1": { "name": "entity.name.function.cadence" }, "2": { "name": "punctuation.definition.arguments.begin.cadence" } }, "end": "(\\))", "endCaptures": { "1": { "name": "punctuation.definition.arguments.end.cadence" } }, "name": "meta.function-call.method.cadence", "patterns": [ { "include": "#expression-element-list" } ] }, { "match": "(?<=\\.)[_\\p{L}][_\\p{L}\\p{N}\\p{M}]*", "name": "variable.other.member.cadence" }, { "include": "#function-call-expression" }, { "match": "(?<!\\.)\\b(?!(?:contract|struct|resource|event|enum|attachment|entitlement|import|fun|let|var|if|else|switch|case|default|while|for|in|break|continue|return|emit|as|create|destroy|attach|to|remove|from|pub|priv|access|all|self|view|auth|transaction|prepare|execute|pre|post|init|true|false|nil|Type|Int|UInt|Int8|Int16|Int32|Int64|Int128|Int256|UInt8|UInt16|UInt32|UInt64|UInt128|UInt256|Word8|Word16|Word32|Word64|Fix64|Fix128|UFix64|UFix128|String|Character|Bool|Address|Void|AnyStruct|AnyResource|Any|Never|mapping|include)\\b)[_\\p{L}][_\\p{L}\\p{N}\\p{M}]*\\b", "name": "variable.other.readwrite.cadence" }, { "include": "#literals" }, { "include": "#operators" } ] }, "function": { "begin": "\\b(fun)\\b\\s+([_\\p{L}][_\\p{L}\\p{N}\\p{M}]*)\\s*", "beginCaptures": { "1": { "name": "storage.type.function.cadence" }, "2": { "name": "entity.name.function.cadence" } }, "end": "(?<=})|;|(?=}\\s*$)|$", "name": "meta.definition.function.cadence", "patterns": [ { "include": "#comments" }, { "include": "#parameter-clause" }, { "include": "#function-result" }, { "begin": "(\\{)", "beginCaptures": { "1": { "name": "punctuation.section.function.begin.cadence" } }, "end": "(})", "endCaptures": { "1": { "name": "punctuation.section.function.end.cadence" } }, "name": "meta.definition.function.body.cadence", "patterns": [ { "include": "$self" } ] } ] }, "function-call-expression": { "patterns": [ { "begin": "(?<!\\.)\\b(?!set|init|transaction|prepare|execute|access|auth)([_\\p{L}][_\\p{L}\\p{N}\\p{M}]*)\\s*(\\()", "beginCaptures": { "1": { "name": "entity.name.function.cadence" }, "2": { "name": "punctuation.definition.arguments.begin.cadence" } }, "end": "(\\))", "endCaptures": { "1": { "name": "punctuation.definition.arguments.end.cadence" } }, "name": "meta.function-call.cadence", "patterns": [ { "include": "#expression-element-list" } ] } ] }, "function-expression": { "begin": "(?<!\\.)\\b(?:(view)\\s+)?(fun)\\b(?=\\s*\\()", "beginCaptures": { "1": { "name": "storage.modifier.view.cadence" }, "2": { "name": "storage.type.function.cadence" } }, "end": "(?<=})|$", "name": "meta.function.expression.cadence", "patterns": [ { "include": "#comments" }, { "include": "#parameter-clause" }, { "include": "#function-result" }, { "begin": "(\\{)", "beginCaptures": { "1": { "name": "punctuation.section.function.begin.cadence" } }, "end": "(})", "endCaptures": { "1": { "name": "punctuation.section.function.end.cadence" } }, "name": "meta.definition.function.body.cadence", "patterns": [ { "include": "$self" } ] } ] }, "function-result": { "begin": "(?<![-!%\\&*+./<=>^|~])(:)(?![-!%\\&*+./<=>^|~])\\s*", "beginCaptures": { "1": { "name": "keyword.operator.function-result.cadence" } }, "end": "(?<![\\&<@\\[])(?!\\G)(?=\\s*\\{)|(?=;|(?<!\\{)})|$", "name": "meta.function-result.cadence", "patterns": [ { "include": "#type" } ] }, "initializer": { "begin": "(?<!\\.)\\b(init)\\s*(?=[(<])", "beginCaptures": { "1": { "name": "storage.type.function.cadence" } }, "end": "(?<=})|$", "name": "meta.definition.function.initializer.cadence", "patterns": [ { "include": "#comments" }, { "include": "#parameter-clause" }, { "begin": "(\\{)", "beginCaptures": { "1": { "name": "punctuation.section.function.begin.cadence" } }, "end": "(})", "endCaptures": { "1": { "name": "punctuation.section.function.end.cadence" } }, "name": "meta.definition.function.body.cadence", "patterns": [ { "include": "$self" } ] } ] }, "keywords": { "patterns": [ { "match": "(?<!\\.)\\bvar\\b", "name": "storage.type.var.cadence" }, { "match": "(?<!\\.)\\blet\\b", "name": "storage.type.let.cadence" }, { "begin": "(?<!\\.)\\b(entitlement)\\s+(mapping)\\s+([_\\p{L}][_\\p{L}\\p{N}\\p{M}]*)\\s*(\\{)", "beginCaptures": { "1": { "name": "keyword.declaration.entitlement.cadence" }, "2": { "name": "keyword.other.mapping.cadence" }, "3": { "name": "entity.name.type.entitlement-mapping.cadence" }, "4": { "name": "punctuation.definition.type.begin.cadence" } }, "end": "(})", "endCaptures": { "1": { "name": "punctuation.definition.type.end.cadence" } }, "name": "meta.definition.entitlement-mapping.cadence", "patterns": [ { "include": "#comments" }, { "match": "\\binclude\\b", "name": "keyword.other.mapping.include.cadence" }, { "captures": { "1": { "name": "entity.name.type.entitlement-mapping.cadence" } }, "match": "(?<=\\binclude)\\s+([_\\p{L}][._\\p{L}\\p{N}\\p{M}]*)" }, { "match": "[_\\p{L}][._\\p{L}\\p{N}\\p{M}]*", "name": "entity.name.type.entitlement.cadence" }, { "match": "->", "name": "punctuation.separator.mapping.cadence" } ] }, { "captures": { "1": { "name": "keyword.declaration.entitlement.cadence" }, "2": { "name": "entity.name.type.entitlement.cadence" } }, "match": "(?<!\\.)\\b(entitlement)\\b\\s+([_\\p{L}][_\\p{L}\\p{N}\\p{M}]*)" }, { "begin": "(?<!\\.)\\b(access)\\b\\s*(\\()", "beginCaptures": { "1": { "name": "storage.modifier.access.cadence" }, "2": { "name": "punctuation.section.group.begin.cadence" } }, "end": "(\\))", "endCaptures": { "1": { "name": "punctuation.section.group.end.cadence" } }, "name": "meta.access.modifier.cadence", "patterns": [ { "include": "#comments" }, { "match": "\\bmapping\\b", "name": "keyword.other.mapping.cadence" }, { "captures": { "1": { "name": "entity.name.type.entitlement-mapping.cadence" } }, "match": "(?<=\\bmapping)\\s+([_\\p{L}][._\\p{L}\\p{N}\\p{M}]*)" }, { "match": "\\b(?:all|self|contract|account)\\b", "name": "constant.language.access.audience.cadence" }, { "match": ",", "name": "punctuation.separator.entitlement.cadence" }, { "match": "\\|", "name": "punctuation.separator.entitlement.cadence" }, { "match": "[_\\p{L}][._\\p{L}\\p{N}\\p{M}]*", "name": "entity.name.type.entitlement.cadence" } ] }, { "match": "(?<!\\.)\\b(?:if|else|switch|case|default)\\b", "name": "keyword.control.branch.cadence" }, { "match": "(?<!\\.)\\b(?:return|continue|break)\\b", "name": "keyword.control.transfer.cadence" }, { "match": "(?<!\\.)\\b(?:while|for|in)\\b", "name": "keyword.control.loop.cadence" }, { "match": "(?<!\\.)\\b(?:create|destroy|emit|attach|to|remove|from)\\b", "name": "keyword.other.cadence" }, { "match": "(?<!\\.)\\b(p(?:ub|riv))\\b", "name": "invalid.deprecated.keyword.cadence" }, { "match": "(?<!\\.)\\bview\\b", "name": "storage.modifier.view.cadence" }, { "match": "(?<!\\.)\\b(auth)\\b", "name": "keyword.other.auth.cadence" }, { "begin": "(?<!\\.)\\b(import)\\b", "beginCaptures": { "1": { "name": "keyword.control.import.cadence" } }, "end": "(?=$|//|/\\*|;)", "name": "meta.import.cadence", "patterns": [ { "match": "\\bfrom\\b", "name": "keyword.control.import.cadence" }, { "include": "#literals" }, { "match": "\\b[_\\p{L}][_\\p{L}\\p{N}\\p{M}]*\\b", "name": "variable.other.readwrite.cadence" } ] } ] }, "language-variables": { "patterns": [ { "match": "\\b(self)\\b", "name": "variable.language.cadence" } ] }, "literals": { "patterns": [ { "include": "#boolean" }, { "include": "#numeric" }, { "include": "#string" }, { "match": "\\bnil\\b", "name": "constant.language.nil.cadence" } ], "repository": { "boolean": { "match": "\\b(true|false)\\b", "name": "constant.language.boolean.cadence" }, "numeric": { "patterns": [ { "include": "#binary" }, { "include": "#octal" }, { "include": "#hexadecimal" }, { "include": "#fixed-point" }, { "include": "#decimal" } ], "repository": { "binary": { "match": "(\\B-|\\b)0b[01]([01_]*[01])?\\b", "name": "constant.numeric.integer.binary.cadence" }, "decimal": { "match": "(\\B-|\\b)[0-9]([0-9_]*[0-9])?\\b", "name": "constant.numeric.integer.decimal.cadence" }, "fixed-point": { "match": "(\\B-|\\b)[0-9]([0-9_]*[0-9])?\\.[0-9]([0-9_]*[0-9])?\\b", "name": "constant.numeric.float.cadence" }, "hexadecimal": { "match": "(\\B-|\\b)0x\\h([_\\h]*\\h)?\\b", "name": "constant.numeric.integer.hexadecimal.cadence" }, "octal": { "match": "(\\B-|\\b)0o[0-7]([0-7_]*[0-7])?\\b", "name": "constant.numeric.integer.octal.cadence" } } }, "string": { "patterns": [ { "begin": "\"", "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.cadence" } }, "end": "\"", "endCaptures": { "0": { "name": "punctuation.definition.string.end.cadence" } }, "name": "string.quoted.double.single-line.cadence", "patterns": [ { "match": "[\\n\\r]", "name": "invalid.illegal.returns-not-allowed.cadence" }, { "begin": "\\\\\\(", "beginCaptures": { "0": { "name": "punctuation.section.embedded.begin.cadence meta.embedded.cadence" } }, "contentName": "meta.embedded.line.cadence", "end": "\\)", "endCaptures": { "0": { "name": "punctuation.section.embedded.end.cadence meta.embedded.cadence" } }, "name": "meta.interpolation.cadence", "patterns": [ { "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.section.group.begin.cadence" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.section.group.end.cadence" } }, "patterns": [ { "include": "#expressions" } ] }, { "include": "#expressions" } ] }, { "include": "#string-guts" } ] } ], "repository": { "string-guts": { "patterns": [ { "match": "\\\\[\"'0\\\\nrt]", "name": "constant.character.escape.cadence" }, { "match": "\\\\u\\{\\h{1,8}}", "name": "constant.character.escape.unicode.cadence" } ] } } } } }, "operators": { "patterns": [ { "match": "<->", "name": "keyword.operator.swap.cadence" }, { "match": "\\?\\.", "name": "keyword.operator.optional.chain.cadence" }, { "begin": "\\b(as(?:\\?|!?))\\b", "beginCaptures": { "0": { "name": "keyword.operator.type.cast.cadence" } }, "end": "(?=$|;|//|/\\\\*|\")|(?=[),}])|(?<=>)(?=\\s*\\{(?!\\s*[_\\p{L}][._\\p{L}\\p{N}\\p{M}]*\\s*:))|(?<=[])>?}\\p{L}\\p{N}])(?=\\s*\\{(?!\\s*[_\\p{L}][._\\p{L}\\p{N}\\p{M}]*\\s*:))|(?=\\?\\?)", "name": "meta.type.cast-target.cadence", "patterns": [ { "begin": "\\{(?=\\s*[_\\p{L}][._\\p{L}\\p{N}\\p{M}]*\\s*:)", "beginCaptures": { "0": { "name": "punctuation.definition.type.dictionary.begin.cadence" } }, "end": "(})", "endCaptures": { "1": { "name": "punctuation.definition.type.dictionary.end.cadence" } }, "name": "meta.type.dictionary.cadence", "patterns": [ { "include": "#comments" }, { "include": "#type" }, { "match": ":", "name": "punctuation.separator.type.dictionary.cadence" }, { "match": ",", "name": "punctuation.separator.type.dictionary.cadence" } ] }, { "include": "#type" } ] }, { "match": "-", "name": "keyword.operator.arithmetic.unary.cadence" }, { "match": "(?<=\\))!", "name": "keyword.operator.force-unwrap.cadence" }, { "match": "!", "name": "keyword.operator.logical.not.cadence" }, { "match": "=", "name": "keyword.operator.assignment.cadence" }, { "match": "<-", "name": "keyword.operator.move.cadence" }, { "match": "<-!", "name": "keyword.operator.force-move.cadence" }, { "match": "[-*+/]", "name": "keyword.operator.arithmetic.cadence" }, { "match": "%", "name": "keyword.operator.arithmetic.remainder.cadence" }, { "match": ">>", "name": "keyword.operator.bitwise.shift.cadence" }, { "match": "<<", "name": "keyword.operator.bitwise.shift.cadence" }, { "match": "==|!=|[<>]|>=|<=", "name": "keyword.operator.comparison.cadence" }, { "match": "\\?\\?", "name": "keyword.operator.coalescing.cadence" }, { "match": "&&|\\|\\|", "name": "keyword.operator.logical.cadence" }, { "match": "[!?]", "name": "keyword.operator.type.optional.cadence" } ] }, "parameter-clause": { "begin": "(\\()", "beginCaptures": { "1": { "name": "punctuation.definition.parameters.begin.cadence" } }, "end": "(\\))", "endCaptures": { "1": { "name": "punctuation.definition.parameters.end.cadence" } }, "name": "meta.parameter-clause.cadence", "patterns": [ { "include": "#comments" }, { "include": "#parameter-list" } ] }, "parameter-list": { "patterns": [ { "include": "#comments" }, { "captures": { "1": { "name": "keyword.operator.unnamed-parameter.cadence" }, "2": { "name": "variable.parameter.cadence" } }, "match": "(_)\\s+([_\\p{L}][_\\p{L}\\p{N}\\p{M}]*)(?=\\s*:)" }, { "captures": { "1": { "name": "entity.name.label.cadence" }, "2": { "name": "variable.parameter.cadence" } }, "match": "([_\\p{L}][_\\p{L}\\p{N}\\p{M}]*)\\s+([_\\p{L}][_\\p{L}\\p{N}\\p{M}]*)(?=\\s*:)" }, { "captures": { "1": { "name": "variable.parameter.cadence" } }, "match": "([_\\p{L}][_\\p{L}\\p{N}\\p{M}]*)(?=\\s*:)" }, { "begin": ":\\s*(?!\\s)", "end": "(?=[),])", "patterns": [ { "include": "#type" }, { "match": ":", "name": "invalid.illegal.extra-colon-in-parameter-list.cadence" } ] } ] }, "path-literals": { "patterns": [ { "captures": { "1": { "name": "punctuation.separator.path.cadence" }, "2": { "name": "constant.other.path.cadence" } }, "match": "(/)((storage|public)(/[_\\p{L}][_\\p{L}\\p{N}\\p{M}]*)?)" } ] }, "pre-post": { "begin": "(?<!\\.)\\b(p(?:re|ost))\\b\\s*(?=\\{)", "beginCaptures": { "1": { "name": "storage.modifier.phase.cadence" } }, "end": "(?<=})", "name": "meta.definition.transaction.phase.cadence", "patterns": [ { "include": "#comments" }, { "begin": "\\{", "beginCaptures": { "0": { "name": "punctuation.section.phase.begin.cadence" } }, "end": "}", "endCaptures": { "0": { "name": "punctuation.section.phase.end.cadence" } }, "patterns": [ { "include": "$self" } ] } ] }, "prepare-execute": { "begin": "(?<!\\.)\\b(prepare)\\b\\s*(?=\\()", "beginCaptures": { "1": { "name": "storage.modifier.phase.cadence" } }, "end": "(?<=})", "name": "meta.definition.transaction.phase.cadence", "patterns": [ { "include": "#comments" }, { "include": "#parameter-clause" }, { "begin": "\\{", "beginCaptures": { "0": { "name": "punctuation.section.phase.begin.cadence" } }, "end": "}", "endCaptures": { "0": { "name": "punctuation.section.phase.end.cadence" } }, "patterns": [ { "include": "$self" } ] } ] }, "transaction": { "begin": "\\b(transaction)\\b", "beginCaptures": { "1": { "name": "storage.type.transaction.cadence" } }, "end": "(?<=\\))|(?<=})", "name": "meta.definition.transaction.cadence", "patterns": [ { "include": "#comments" }, { "include": "#parameter-clause" }, { "begin": "\\{", "beginCaptures": { "0": { "name": "punctuation.section.transaction.begin.cadence" } }, "end": "}", "endCaptures": { "0": { "name": "punctuation.section.transaction.end.cadence" } }, "name": "meta.definition.transaction.body.cadence", "patterns": [ { "include": "$self" } ] } ] }, "type": { "patterns": [ { "begin": "(?<!\\.)\\b(?:(view)\\s+)?(fun)\\b\\s*(\\()", "beginCaptures": { "1": { "name": "storage.modifier.view.cadence" }, "2": { "name": "storage.type.function.cadence" }, "3": { "name": "punctuation.definition.parameters.begin.cadence" } }, "end": "(?=[]),>}]|$)", "name": "meta.type.function.cadence", "patterns": [ { "include": "#comments" }, { "begin": "\\G", "end": "(\\))", "endCaptures": { "1": { "name": "punctuation.definition.parameters.end.cadence" } }, "patterns": [ { "include": "#type" }, { "match": ",", "name": "punctuation.separator.parameter.cadence" } ] }, { "begin": "(:)", "beginCaptures": { "1": { "name": "keyword.operator.function-result.cadence" } }, "end": "(?=[]),>}]|$)", "name": "meta.function-result.cadence", "patterns": [ { "include": "#type" } ] } ] }, { "include": "#comments" }, { "begin": "(?<!\\.)([_\\p{L}][_\\p{L}\\p{N}\\p{M}]*)\\s*(<)", "beginCaptures": { "1": { "name": "entity.name.type.cadence" }, "2": { "name": "punctuation.definition.type-arguments.begin.cadence" } }, "end": "(>)", "endCaptures": { "1": { "name": "punctuation.definition.type-arguments.end.cadence" } }, "name": "meta.type.arguments.cadence", "patterns": [ { "include": "#type" }, { "match": ",", "name": "punctuation.separator.type-argument.cadence" } ] }, { "begin": "(?<!\\.)\\b(auth)\\b\\s*(\\()", "beginCaptures": { "1": { "name": "keyword.other.auth.cadence" }, "2": { "name": "punctuation.section.group.begin.cadence" } }, "end": "(\\))", "endCaptures": { "1": { "name": "punctuation.section.group.end.cadence" } }, "name": "meta.auth.entitlements.cadence", "patterns": [ { "include": "#comments" }, { "match": "\\bmapping\\b", "name": "keyword.other.mapping.cadence" }, { "captures": { "1": { "name": "entity.name.type.entitlement-mapping.cadence" } }, "match": "(?<=\\bmapping)\\s+([_\\p{L}][._\\p{L}\\p{N}\\p{M}]*)" }, { "match": ",", "name": "punctuation.separator.entitlement.cadence" }, { "match": "\\|", "name": "punctuation.separator.entitlement.cadence" }, { "match": "[_\\p{L}][._\\p{L}\\p{N}\\p{M}]*", "name": "entity.name.type.entitlement.cadence" } ] }, { "begin": "\\{(?![^}]*:)(?!.*}\\s*\\()", "beginCaptures": { "0": { "name": "punctuation.definition.type.intersection.begin.cadence" } }, "end": "(})", "endCaptures": { "1": { "name": "punctuation.definition.type.intersection.end.cadence" } }, "patterns": [ { "include": "#comments" }, { "include": "#type" }, { "match": ",", "name": "punctuation.separator.type.intersection.cadence" } ] }, { "begin": "\\{(?=\\s*[_\\p{L}][._\\p{L}\\p{N}\\p{M}]*\\s*:)(?!.*}\\s*\\()", "beginCaptures": { "0": { "name": "punctuation.definition.type.dictionary.begin.cadence" } }, "end": "(})", "endCaptures": { "1": { "name": "punctuation.definition.type.dictionary.end.cadence" } }, "name": "meta.type.dictionary.cadence", "patterns": [ { "include": "#comments" }, { "include": "#type" }, { "match": ":", "name": "punctuation.separator.type.dictionary.cadence" }, { "match": ",", "name": "punctuation.separator.type.dictionary.cadence" } ] }, { "begin": "\\[", "beginCaptures": { "0": { "name": "punctuation.definition.type.array.begin.cadence" } }, "end": "(])", "endCaptures": { "1": { "name": "punctuation.definition.type.array.end.cadence" } }, "name": "meta.type.array.cadence", "patterns": [ { "include": "#comments" }, { "include": "#type" } ] }, { "captures": { "1": { "name": "punctuation.definition.type.reference.cadence" } }, "match": "([\\&@])(?=\\s*\\{)" }, { "captures": { "1": { "name": "punctuation.definition.type.reference.cadence" }, "2": { "name": "entity.name.type.cadence" } }, "match": "([\\&@])\\s*([_\\p{L}][._\\p{L}\\p{N}\\p{M}]*)" }, { "match": "([_\\p{L}][_\\p{L}\\p{N}\\p{M}]*)", "name": "entity.name.type.cadence" }, { "match": "[!?]", "name": "keyword.operator.type.optional.cadence" } ] }, "var-let-declaration": { "begin": "\\b(var|let)\\b\\s+([_\\p{L}][_\\p{L}\\p{N}\\p{M}]*)", "beginCaptures": { "1": { "name": "storage.type.$1.cadence" }, "2": { "name": "variable.other.declaration.cadence" } }, "end": "=|<-!??|;|(?=//)|$", "patterns": [ { "include": "#comments" }, { "begin": ":\\s*(?!\\s)", "beginCaptures": { "0": { "name": "keyword.operator.type.annotation.cadence" } }, "end": "(?=//|=|<-!??|;|$)", "patterns": [ { "include": "#type" }, { "include": "#comments" } ] } ] } }, "scopeName": "source.cadence" }