diff --git a/gitnexus/Dockerfile.test b/gitnexus/Dockerfile.test index 7cafbe2c1..4ae2212af 100644 --- a/gitnexus/Dockerfile.test +++ b/gitnexus/Dockerfile.test @@ -3,7 +3,6 @@ WORKDIR /app RUN apt-get -o Acquire::Check-Valid-Until=false -o Acquire::Check-Date=false update && apt-get install -y python3 make g++ && rm -rf /var/lib/apt/lists/* COPY . . RUN npm ci --ignore-scripts \ - && node scripts/patch-tree-sitter-swift.cjs \ && (npm rebuild 2>&1 || true) \ && cd node_modules/tree-sitter-kotlin && npx --yes node-gyp rebuild 2>&1 CMD ["npx", "vitest", "run", "test/integration", "--reporter=verbose"] diff --git a/gitnexus/package-lock.json b/gitnexus/package-lock.json index 4c49656fa..9b37042c3 100644 --- a/gitnexus/package-lock.json +++ b/gitnexus/package-lock.json @@ -68,7 +68,7 @@ "tree-sitter-dart": "file:./vendor/tree-sitter-dart", "tree-sitter-kotlin": "^0.3.8", "tree-sitter-proto": "file:./vendor/tree-sitter-proto", - "tree-sitter-swift": "^0.6.0" + "tree-sitter-swift": "file:./vendor/tree-sitter-swift" } }, "../gitnexus-shared": { @@ -5065,20 +5065,6 @@ } } }, - "node_modules/tree-sitter-cli": { - "version": "0.23.2", - "resolved": "https://registry.npmjs.org/tree-sitter-cli/-/tree-sitter-cli-0.23.2.tgz", - "integrity": "sha512-kPPXprOqREX+C/FgUp2Qpt9jd0vSwn+hOgjzVv/7hapdoWpa+VeWId53rf4oNNd29ikheF12BYtGD/W90feMbA==", - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "bin": { - "tree-sitter": "cli.js" - }, - "engines": { - "node": ">=12.0.0" - } - }, "node_modules/tree-sitter-cpp": { "version": "0.23.4", "resolved": "https://registry.npmjs.org/tree-sitter-cpp/-/tree-sitter-cpp-0.23.4.tgz", @@ -5268,49 +5254,8 @@ } }, "node_modules/tree-sitter-swift": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tree-sitter-swift/-/tree-sitter-swift-0.6.0.tgz", - "integrity": "sha512-9vOJZes4/UFjBr4COHtp6ZHVuZYwfChSQbpneXQog04dAstfx5px3ybVX2cN+ylvLqsvVpmXLpidxxgF2rDQ7A==", - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "dependencies": { - "node-addon-api": "^8.0.0", - "node-gyp-build": "^4.8.0", - "tree-sitter-cli": "^0.23", - "which": "2.0.2" - }, - "peerDependencies": { - "tree-sitter": "^0.21.1" - }, - "peerDependenciesMeta": { - "tree_sitter": { - "optional": true - } - } - }, - "node_modules/tree-sitter-swift/node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "license": "ISC", - "optional": true - }, - "node_modules/tree-sitter-swift/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "license": "ISC", - "optional": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } + "resolved": "vendor/tree-sitter-swift", + "link": true }, "node_modules/tree-sitter-typescript": { "version": "0.23.2", @@ -5765,6 +5710,24 @@ "peerDependencies": { "tree-sitter": ">=0.21.0" } + }, + "vendor/tree-sitter-swift": { + "version": "0.7.1", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "node-addon-api": "^8.0.0", + "node-gyp-build": "^4.8.0" + }, + "peerDependencies": { + "tree-sitter": "^0.21.1 || ^0.22.1" + }, + "peerDependenciesMeta": { + "tree-sitter": { + "optional": true + } + } } } } diff --git a/gitnexus/package.json b/gitnexus/package.json index 442100728..59940e834 100644 --- a/gitnexus/package.json +++ b/gitnexus/package.json @@ -47,7 +47,7 @@ "test:integration": "vitest run test/integration", "test:watch": "vitest", "test:coverage": "vitest run --coverage", - "postinstall": "node scripts/patch-tree-sitter-swift.cjs && node scripts/build-tree-sitter-dart.cjs && node scripts/build-tree-sitter-proto.cjs", + "postinstall": "node scripts/build-tree-sitter-dart.cjs && node scripts/build-tree-sitter-proto.cjs", "prepare": "node scripts/build.js", "prepack": "node scripts/build.js" }, @@ -91,7 +91,7 @@ "tree-sitter-dart": "file:./vendor/tree-sitter-dart", "tree-sitter-kotlin": "^0.3.8", "tree-sitter-proto": "file:./vendor/tree-sitter-proto", - "tree-sitter-swift": "^0.6.0" + "tree-sitter-swift": "file:./vendor/tree-sitter-swift" }, "devDependencies": { "@types/cli-progress": "^3.11.6", diff --git a/gitnexus/scripts/build-tree-sitter-proto.cjs b/gitnexus/scripts/build-tree-sitter-proto.cjs index d2828d5ba..0690dfca3 100644 --- a/gitnexus/scripts/build-tree-sitter-proto.cjs +++ b/gitnexus/scripts/build-tree-sitter-proto.cjs @@ -26,7 +26,7 @@ * `node_modules/tree-sitter-proto/build/Release/tree_sitter_proto_binding.node` * — under npm-managed territory, safe on upgrade. * - * Mirrors scripts/patch-tree-sitter-swift.cjs. Best-effort: if any + * Mirrors the tree-sitter-dart build helper. Best-effort: if any * precondition fails (optional dep absent, no toolchain, --ignore-scripts), * warn and exit 0 so gitnexus install still succeeds. */ diff --git a/gitnexus/scripts/patch-tree-sitter-swift.cjs b/gitnexus/scripts/patch-tree-sitter-swift.cjs deleted file mode 100644 index 6580b00e7..000000000 --- a/gitnexus/scripts/patch-tree-sitter-swift.cjs +++ /dev/null @@ -1,78 +0,0 @@ -#!/usr/bin/env node -/** - * WORKAROUND: tree-sitter-swift@0.6.0 binding.gyp build failure - * - * Background: - * tree-sitter-swift@0.6.0's binding.gyp contains an "actions" array that - * invokes `tree-sitter generate` to regenerate parser.c from grammar.js. - * This is intended for grammar developers, but the published npm package - * already ships pre-generated parser files (parser.c, scanner.c), so the - * actions are unnecessary for consumers. Since consumers don't have - * tree-sitter-cli installed, the actions always fail during `npm install`. - * - * Why we can't just upgrade: - * tree-sitter-swift@0.7.1 fixes this (removes postinstall, ships prebuilds), - * but it requires tree-sitter@^0.22.1. The upstream project pins tree-sitter - * to ^0.21.0 and all other grammar packages depend on that version. - * Upgrading tree-sitter would be a separate breaking change. - * - * How this workaround works: - * 1. tree-sitter-swift's own postinstall fails (npm warns but continues) - * 2. This script runs as gitnexus's postinstall - * 3. It removes the "actions" array from binding.gyp - * 4. It rebuilds the native binding with the cleaned binding.gyp - * - * TODO: Remove this script when tree-sitter is upgraded to ^0.22.x, - * which allows using tree-sitter-swift@0.7.1+ directly. - */ -const fs = require('fs'); -const path = require('path'); -const { execSync } = require('child_process'); - -const swiftDir = path.join(__dirname, '..', 'node_modules', 'tree-sitter-swift'); -const bindingPath = path.join(swiftDir, 'binding.gyp'); - -try { - if (!fs.existsSync(bindingPath)) { - process.exit(0); - } - - const content = fs.readFileSync(bindingPath, 'utf8'); - let needsRebuild = false; - - if (content.includes('"actions"')) { - // Strip Python-style comments (#) and trailing commas before JSON parsing - const cleaned = content - .replace(/#[^\n]*/g, '') // Remove # comments - .replace(/,(\s*[\]}])/g, '$1'); // Remove trailing commas before ] or } - const gyp = JSON.parse(cleaned); - - if (gyp.targets && gyp.targets[0] && gyp.targets[0].actions) { - delete gyp.targets[0].actions; - fs.writeFileSync(bindingPath, JSON.stringify(gyp, null, 2) + '\n'); - console.log('[tree-sitter-swift] Patched binding.gyp (removed actions array)'); - needsRebuild = true; - } - } - - // Check if native binding exists - const bindingNode = path.join(swiftDir, 'build', 'Release', 'tree_sitter_swift_binding.node'); - if (!fs.existsSync(bindingNode)) { - needsRebuild = true; - } - - if (needsRebuild) { - console.log('[tree-sitter-swift] Rebuilding native binding...'); - execSync('npx node-gyp rebuild', { - cwd: swiftDir, - stdio: 'pipe', - timeout: 120000, - }); - console.log('[tree-sitter-swift] Native binding built successfully'); - } -} catch (err) { - console.warn('[tree-sitter-swift] Could not build native binding:', err.message); - console.warn( - '[tree-sitter-swift] You may need to manually run: cd node_modules/tree-sitter-swift && npx node-gyp rebuild', - ); -} diff --git a/gitnexus/src/core/ingestion/call-processor.ts b/gitnexus/src/core/ingestion/call-processor.ts index 4eb7ea6ce..d37089d30 100644 --- a/gitnexus/src/core/ingestion/call-processor.ts +++ b/gitnexus/src/core/ingestion/call-processor.ts @@ -1617,19 +1617,27 @@ const disambiguateByOverloadOrArgTypes = ( * kinds, or `length <= 1`). Callers should fall through to their own null * return when this helper returns `null`. * - * Used by `resolveFreeCall`. Having a single source of truth prevents - * duplication if the heuristic is ever tuned. + * Used by free-call, constructor, and member-call paths. Having a single + * source of truth prevents duplication if the heuristic is ever tuned. */ const dedupSwiftExtensionCandidates = ( candidates: readonly SymbolDefinition[], tier: ResolutionTier, ): ResolveResult | null => { + const sorted = orderSwiftExtensionCandidates(candidates); + return sorted ? toResolveResult(sorted[0], tier) : null; +}; + +const orderSwiftExtensionCandidates = ( + candidates: readonly SymbolDefinition[], +): SymbolDefinition[] | null => { if (candidates.length <= 1) return null; const allSameType = candidates.every((c) => c.type === candidates[0].type); if (!allSameType) return null; if (candidates[0].type !== 'Class' && candidates[0].type !== 'Struct') return null; - const sorted = [...candidates].sort((a, b) => a.filePath.length - b.filePath.length); - return toResolveResult(sorted[0], tier); + return [...candidates].sort( + (a, b) => a.filePath.length - b.filePath.length || a.filePath.localeCompare(b.filePath), + ); }; /** @@ -2223,6 +2231,33 @@ const resolveMethodByOwner = ( } } + if (!firstDef && !ambiguous) { + const extensionCandidates = orderSwiftExtensionCandidates( + ctx.model.types.lookupClassByName(receiverTypeName), + ); + if (extensionCandidates) { + for (const candidate of extensionCandidates) { + const def = canWalkMRO + ? lookupMethodByOwnerWithMRO( + candidate.nodeId, + methodName, + heritageMap, + ctx.model, + mroStrategy, + argCount, + ) + : ctx.model.methods.lookupMethodByOwner(candidate.nodeId, methodName, argCount); + if (!def) continue; + if (!firstDef) { + firstDef = def; + } else if (def.nodeId !== firstDef.nodeId) { + ambiguous = true; + break; + } + } + } + } + if (!firstDef || ambiguous) return undefined; return { def: firstDef, tier: typeResolved.tier }; }; @@ -2563,6 +2598,8 @@ export const resolveStaticCall = ( // homonym classes across files with no import narrowing). Fall through // to `return null` so the caller null-routes rather than guess. if (instantiableCandidates.length === 1) { + const primary = orderSwiftExtensionCandidates(allClasses); + if (primary) return toResolveResult(primary[0], typeResolved.tier); return toResolveResult(instantiableCandidates[0], typeResolved.tier); } diff --git a/gitnexus/src/core/ingestion/method-extractors/configs/swift.ts b/gitnexus/src/core/ingestion/method-extractors/configs/swift.ts index 99ff2e63f..6c0fdfbe3 100644 --- a/gitnexus/src/core/ingestion/method-extractors/configs/swift.ts +++ b/gitnexus/src/core/ingestion/method-extractors/configs/swift.ts @@ -1,5 +1,5 @@ // gitnexus/src/core/ingestion/method-extractors/configs/swift.ts -// Verified against tree-sitter-swift 0.6.0 +// Verified against tree-sitter-swift 0.7.x import { SupportedLanguages } from 'gitnexus-shared'; import type { @@ -110,7 +110,7 @@ function extractSwiftReturnType(node: SyntaxNode): string | undefined { function extractSwiftParameters(node: SyntaxNode): ParameterInfo[] { const params: ParameterInfo[] = []; - // In tree-sitter-swift 0.6.0, parameters are direct children of function_declaration. + // In tree-sitter-swift, parameters are direct children of function_declaration. // Default value tokens ('=', literal) are siblings of the parameter node at the // function_declaration level, not children of the parameter node. for (let i = 0; i < node.childCount; i++) { @@ -264,8 +264,7 @@ function extractSwiftAnnotations(node: SyntaxNode): string[] { export const swiftMethodConfig: MethodExtractionConfig = { language: SupportedLanguages.Swift, - // tree-sitter-swift 0.6.0 may use class_declaration for classes, structs, enums, extensions, - // and actors — but this cannot be verified until the grammar installs on Node 22+. + // Keep this conservative until Swift type-shape coverage is expanded. // TODO: Verify struct_declaration, enum_declaration, extension_declaration, actor_declaration // node types once tree-sitter-swift loads on Node 22, and add them here if they are distinct. // protocol_declaration is a separate, confirmed node type. diff --git a/gitnexus/src/core/ingestion/parsing-processor.ts b/gitnexus/src/core/ingestion/parsing-processor.ts index 9afcbe920..86b419990 100644 --- a/gitnexus/src/core/ingestion/parsing-processor.ts +++ b/gitnexus/src/core/ingestion/parsing-processor.ts @@ -542,10 +542,13 @@ const processParsingSequential = async ( } } - // Append # to Method/Constructor IDs to disambiguate overloads. - // Functions are not suffixed — they don't overload by name in the same scope. + // Append # to owned callable IDs to disambiguate overloads. + // Top-level Function IDs stay stable; functions inside an owner may overload. // When same-arity collisions exist, append ~type1,type2 for further disambiguation. - const needsAritySuffix = nodeLabel === 'Method' || nodeLabel === 'Constructor'; + const needsAritySuffix = + nodeLabel === 'Method' || + nodeLabel === 'Constructor' || + (nodeLabel === 'Function' && enclosingClassId !== null); let arityTag = needsAritySuffix && arityForId !== undefined ? `#${arityForId}` : ''; if (arityTag && seqDefMethods && seqDefMethodInfo && seqClassNodeId !== undefined) { // Use cached method map + collision groups (built once per class, not per method) diff --git a/gitnexus/src/core/ingestion/workers/parse-worker.ts b/gitnexus/src/core/ingestion/workers/parse-worker.ts index 1c0d23313..5db28ddaa 100644 --- a/gitnexus/src/core/ingestion/workers/parse-worker.ts +++ b/gitnexus/src/core/ingestion/workers/parse-worker.ts @@ -2078,10 +2078,13 @@ const processFileGroup = ( } } - // Append # to Method/Constructor IDs to disambiguate overloads. - // Functions are not suffixed — they don't overload by name in the same scope. + // Append # to owned callable IDs to disambiguate overloads. + // Top-level Function IDs stay stable; functions inside an owner may overload. // When same-arity collisions exist, append ~type1,type2 for further disambiguation. - const needsAritySuffix = nodeLabel === 'Method' || nodeLabel === 'Constructor'; + const needsAritySuffix = + nodeLabel === 'Method' || + nodeLabel === 'Constructor' || + (nodeLabel === 'Function' && enclosingClassId !== null); let arityTag = needsAritySuffix && arityForId !== undefined ? `#${arityForId}` : ''; if (arityTag && defMethodMap && defMethodInfo) { const groups = buildCollisionGroups(defMethodMap); diff --git a/gitnexus/test/integration/resolvers/swift.test.ts b/gitnexus/test/integration/resolvers/swift.test.ts index f00435165..2c654d5fc 100644 --- a/gitnexus/test/integration/resolvers/swift.test.ts +++ b/gitnexus/test/integration/resolvers/swift.test.ts @@ -3,8 +3,8 @@ * Verifies that `let user = User(name: "alice"); user.save()` resolves to User.save * without explicit type annotations, using SymbolTable verification. * - * NOTE: tree-sitter-swift has build issues on Node 22 — these tests skip gracefully - * when the Swift parser is not available. + * NOTE: Swift is installed as an optional dependency. These tests skip gracefully + * if a consumer installs without optional dependencies. */ import { describe, it, expect, beforeAll } from 'vitest'; import path from 'path'; diff --git a/gitnexus/test/unit/cli-commands.test.ts b/gitnexus/test/unit/cli-commands.test.ts index 26f095054..a059a37bc 100644 --- a/gitnexus/test/unit/cli-commands.test.ts +++ b/gitnexus/test/unit/cli-commands.test.ts @@ -48,6 +48,20 @@ describe('CLI commands', () => { 'file:./vendor/tree-sitter-dart', ); }); + + it('uses the vendored official Swift runtime package instead of source-building on install', async () => { + const pkg = await import('../../package.json', { with: { type: 'json' } }); + const swiftPkg = await import('../../vendor/tree-sitter-swift/package.json', { + with: { type: 'json' }, + }); + expect(pkg.default.dependencies['tree-sitter']).toBe('^0.21.1'); + expect(pkg.default.optionalDependencies['tree-sitter-swift']).toBe( + 'file:./vendor/tree-sitter-swift', + ); + expect(pkg.default.scripts.postinstall).not.toContain('tree-sitter-swift'); + expect(swiftPkg.default.version).toBe('0.7.1'); + expect(swiftPkg.default.peerDependencies['tree-sitter']).toContain('^0.21.1'); + }); }); describe('analyzeCommand', () => { diff --git a/gitnexus/test/unit/language-skip.test.ts b/gitnexus/test/unit/language-skip.test.ts index 21d3e8f2f..19c90cf3e 100644 --- a/gitnexus/test/unit/language-skip.test.ts +++ b/gitnexus/test/unit/language-skip.test.ts @@ -19,11 +19,8 @@ describe('isLanguageAvailable', () => { expect(isLanguageAvailable('haskell' as SupportedLanguages)).toBe(false); }); - it('handles Swift based on optional dependency availability', () => { - // Swift is optional — result depends on whether tree-sitter-swift is installed - const result = isLanguageAvailable(SupportedLanguages.Swift); - expect(typeof result).toBe('boolean'); - // Either way, it should not throw + it('returns true for Swift in the default install', () => { + expect(isLanguageAvailable(SupportedLanguages.Swift)).toBe(true); }); it('handles Kotlin based on optional dependency availability', () => { diff --git a/gitnexus/test/unit/parser-loader.test.ts b/gitnexus/test/unit/parser-loader.test.ts index 36fdecc40..e7d83deca 100644 --- a/gitnexus/test/unit/parser-loader.test.ts +++ b/gitnexus/test/unit/parser-loader.test.ts @@ -81,15 +81,14 @@ describe('parser-loader', () => { }); describe('Swift optional dependency', () => { - it('handles Swift loading gracefully', async () => { - // Swift is optional — it either loads successfully or throws an error about unsupported language - try { - await loadLanguage(SupportedLanguages.Swift); - // If it succeeds, tree-sitter-swift is installed - } catch (e: any) { - // If it fails, it should be because tree-sitter-swift is not installed - expect(e.message).toContain('Unsupported language'); - } + it('loads Swift from the default optional dependency and parses source', async () => { + const parser = await loadParser(); + await loadLanguage(SupportedLanguages.Swift); + + const tree = parser.parse('class Foo { func bar() {} }'); + + expect(tree.rootNode.type).toBe('source_file'); + expect(tree.rootNode.namedChildCount).toBe(1); }); }); }); diff --git a/gitnexus/vendor/tree-sitter-swift/LICENSE b/gitnexus/vendor/tree-sitter-swift/LICENSE new file mode 100644 index 000000000..f158d7005 --- /dev/null +++ b/gitnexus/vendor/tree-sitter-swift/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 alex-pinkus + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/gitnexus/vendor/tree-sitter-swift/README.md b/gitnexus/vendor/tree-sitter-swift/README.md new file mode 100644 index 000000000..5b54f4b61 --- /dev/null +++ b/gitnexus/vendor/tree-sitter-swift/README.md @@ -0,0 +1,127 @@ +![Parse rate badge](https://byob.yarr.is/alex-pinkus/tree-sitter-swift/parse_rate) +[![Crates.io badge](https://byob.yarr.is/alex-pinkus/tree-sitter-swift/crates_io_version)](https://crates.io/crates/tree-sitter-swift) +[![NPM badge](https://byob.yarr.is/alex-pinkus/tree-sitter-swift/npm_version)](https://www.npmjs.com/package/tree-sitter-swift) +[![Build](https://github.com/alex-pinkus/tree-sitter-swift/actions/workflows/top-repos.yml/badge.svg)](https://github.com/alex-pinkus/tree-sitter-swift/actions/workflows/top-repos.yml) + +# tree-sitter-swift + +This contains a [`tree-sitter`](https://tree-sitter.github.io/tree-sitter) grammar for the Swift programming language. + +## Getting started + +To use this parser to parse Swift code, you'll want to depend on either the Rust crate or the NPM package. + +### Rust + +To use the Rust crate, you'll add this to your `Cargo.toml`: + +``` +tree-sitter = "0.23.0" +tree-sitter-swift = "=0.7.0" +``` + +Then you can use a `tree-sitter` parser with the language declared here: + +``` +let mut parser = tree_sitter::Parser::new(); +parser.set_language(tree_sitter_swift::language())?; + +// ... + +let tree = parser.parse(&my_source_code, None) + .ok_or_else(|| /* error handling code */)?; +``` + +### Javascript + +To use this from NPM, you'll add similar dependencies to `package.json`: + +``` +"dependencies: { + "tree-sitter-swift": "0.7.0", + "tree-sitter": "^0.22.1" +} +``` + +Your usage of the parser will look like: + +``` +const Parser = require("tree-sitter"); +const Swift = require("tree-sitter-swift"); + +const parser = new Parser(); +parser.setLanguage(Swift); + +// ... + +const tree = parser.parse(mySourceCode); +``` + +### Editing the grammar + +With this package checked out, a common workflow for editing the grammar will look something like: + +1. Make a change to `grammar.ts`. +2. Run `npm install && npm test` to see whether the change has had impact on existing parsing behavior. The default + `npm test` target requires `valgrind` to be installed; if you do not have it installed, and do not wish to, you can + substitute `tree-sitter test` directly. +3. Run `tree-sitter parse` on some real Swift codebase and see whether (or where) it fails. +4. Use any failures to create new corpus test cases. + +## Contributions + +All contributions to this repository are welcome. + +If said contribution is to check generated files (e.g., `parser.c`) into the repository, be aware that your contribution will not be accepted. Make sure to read the [FAQ entry](https://github.com/alex-pinkus/tree-sitter-swift?tab=readme-ov-file#where-is-your-parserc) and the [prior](https://github.com/alex-pinkus/tree-sitter-swift/issues/362) [discussions](https://github.com/alex-pinkus/tree-sitter-swift/pull/315) and [compromises](https://github.com/alex-pinkus/tree-sitter-swift/issues/149) that have occurred already on this topic. + +## Using tree-sitter-swift in Web Assembly + +To use tree-sitter-swift as a language for the web bindings version tree-sitter, which will likely be a more modern version than the published node +module. [see](https://github.com/tree-sitter/tree-sitter/blob/master/lib/binding_web/README.md). Follow the instructions below + +1. Install the node modules `npm install web-tree-sitter tree-sitter-swift` +2. Run the tree-sitter cli to create the wasm bundle + ```sh + $ npx tree-sitter build-asm ./node_modules/tree-sitter + ``` +3. Boot tree-sitter wasm like this. + +```js +const Parser = require("web-tree-sitter"); +async function run() { + //needs to happen first + await Parser.init(); + //wait for the load of swift + const Swift = await Parser.Language.load("./tree-sitter-swift.wasm"); + + const parser = new Parser(); + parser.setLanguage(Swift); + + //Parse your swift code here. + const tree = parser.parse('print("Hello, World!")'); +} +//if you want to run this +run().then(console.log, console.error); +``` + +## Frequently asked questions + +### Where is your `parser.c`? + +This repository currently omits most of the code that is autogenerated during a build. This means, for instance, that +`grammar.json` and `parser.c` are both only available following a build. It also significantly reduces noise during +diffs. + +The side benefit of not checking in `parser.c` is that you can guarantee backwards compatibility. Parsers generated by +the tree-sitter CLI aren't always backwards compatible. If you need a parser, generate it yourself using the CLI; all +the information to do so is available in this package. By doing that, you'll also know for sure that your parser version +and your library version are compatible. + +If you need a `parser.c`, and you don't care about the tree-sitter version, but you don't have a local setup that would +allow you to obtain the parser, you can just download one from a recent workflow run in this package. To do so: + +- Go to the [GitHub actions page](https://github.com/alex-pinkus/tree-sitter-swift/actions) for this + repository. +- Click on the "Publish `grammar.json` and `parser.c`" action for the appropriate commit. +- Go down to `Artifacts` and click on `generated-parser-src`. All the relevant parser files will be available in your + download. diff --git a/gitnexus/vendor/tree-sitter-swift/bindings/node/index.d.ts b/gitnexus/vendor/tree-sitter-swift/bindings/node/index.d.ts new file mode 100644 index 000000000..efe259eed --- /dev/null +++ b/gitnexus/vendor/tree-sitter-swift/bindings/node/index.d.ts @@ -0,0 +1,28 @@ +type BaseNode = { + type: string; + named: boolean; +}; + +type ChildNode = { + multiple: boolean; + required: boolean; + types: BaseNode[]; +}; + +type NodeInfo = + | (BaseNode & { + subtypes: BaseNode[]; + }) + | (BaseNode & { + fields: { [name: string]: ChildNode }; + children: ChildNode[]; + }); + +type Language = { + name: string; + language: unknown; + nodeTypeInfo: NodeInfo[]; +}; + +declare const language: Language; +export = language; diff --git a/gitnexus/vendor/tree-sitter-swift/bindings/node/index.js b/gitnexus/vendor/tree-sitter-swift/bindings/node/index.js new file mode 100644 index 000000000..6657bcf42 --- /dev/null +++ b/gitnexus/vendor/tree-sitter-swift/bindings/node/index.js @@ -0,0 +1,7 @@ +const root = require("path").join(__dirname, "..", ".."); + +module.exports = require("node-gyp-build")(root); + +try { + module.exports.nodeTypeInfo = require("../../src/node-types.json"); +} catch (_) {} diff --git a/gitnexus/vendor/tree-sitter-swift/package.json b/gitnexus/vendor/tree-sitter-swift/package.json new file mode 100644 index 000000000..2f36bd0a6 --- /dev/null +++ b/gitnexus/vendor/tree-sitter-swift/package.json @@ -0,0 +1,28 @@ +{ + "name": "tree-sitter-swift", + "version": "0.7.1", + "description": "A tree-sitter grammar for the Swift programming language", + "main": "bindings/node/index.js", + "types": "bindings/node/index.d.ts", + "license": "MIT", + "repository": { + "type": "git", + "url": "git+https://github.com/alex-pinkus/tree-sitter-swift.git" + }, + "_vendoredBy": "gitnexus - minimal runtime package copied from official tree-sitter-swift@0.7.1 (gitHead 88bfd19a89be9d0481b14566fb6160cccea2fe0a). Keeps upstream prebuilds while allowing GitNexus to stay on tree-sitter@0.21.1 until #858 is resolved.", + "scripts": { + "install": "node-gyp-build" + }, + "dependencies": { + "node-addon-api": "^8.0.0", + "node-gyp-build": "^4.8.0" + }, + "peerDependencies": { + "tree-sitter": "^0.21.1 || ^0.22.1" + }, + "peerDependenciesMeta": { + "tree-sitter": { + "optional": true + } + } +} diff --git a/gitnexus/vendor/tree-sitter-swift/prebuilds/darwin-arm64/tree-sitter-swift.node b/gitnexus/vendor/tree-sitter-swift/prebuilds/darwin-arm64/tree-sitter-swift.node new file mode 100644 index 000000000..5c5b7f52b Binary files /dev/null and b/gitnexus/vendor/tree-sitter-swift/prebuilds/darwin-arm64/tree-sitter-swift.node differ diff --git a/gitnexus/vendor/tree-sitter-swift/prebuilds/darwin-x64/tree-sitter-swift.node b/gitnexus/vendor/tree-sitter-swift/prebuilds/darwin-x64/tree-sitter-swift.node new file mode 100644 index 000000000..ea33183d3 Binary files /dev/null and b/gitnexus/vendor/tree-sitter-swift/prebuilds/darwin-x64/tree-sitter-swift.node differ diff --git a/gitnexus/vendor/tree-sitter-swift/prebuilds/linux-arm64/tree-sitter-swift.node b/gitnexus/vendor/tree-sitter-swift/prebuilds/linux-arm64/tree-sitter-swift.node new file mode 100644 index 000000000..06d10e606 Binary files /dev/null and b/gitnexus/vendor/tree-sitter-swift/prebuilds/linux-arm64/tree-sitter-swift.node differ diff --git a/gitnexus/vendor/tree-sitter-swift/prebuilds/linux-x64/tree-sitter-swift.node b/gitnexus/vendor/tree-sitter-swift/prebuilds/linux-x64/tree-sitter-swift.node new file mode 100644 index 000000000..d0da9ff41 Binary files /dev/null and b/gitnexus/vendor/tree-sitter-swift/prebuilds/linux-x64/tree-sitter-swift.node differ diff --git a/gitnexus/vendor/tree-sitter-swift/prebuilds/win32-arm64/tree-sitter-swift.node b/gitnexus/vendor/tree-sitter-swift/prebuilds/win32-arm64/tree-sitter-swift.node new file mode 100644 index 000000000..5ab782048 Binary files /dev/null and b/gitnexus/vendor/tree-sitter-swift/prebuilds/win32-arm64/tree-sitter-swift.node differ diff --git a/gitnexus/vendor/tree-sitter-swift/prebuilds/win32-x64/tree-sitter-swift.node b/gitnexus/vendor/tree-sitter-swift/prebuilds/win32-x64/tree-sitter-swift.node new file mode 100644 index 000000000..a4fa27391 Binary files /dev/null and b/gitnexus/vendor/tree-sitter-swift/prebuilds/win32-x64/tree-sitter-swift.node differ diff --git a/gitnexus/vendor/tree-sitter-swift/src/node-types.json b/gitnexus/vendor/tree-sitter-swift/src/node-types.json new file mode 100644 index 000000000..0afa221f3 --- /dev/null +++ b/gitnexus/vendor/tree-sitter-swift/src/node-types.json @@ -0,0 +1,30694 @@ +[ + { + "type": "?", + "named": false, + "fields": {} + }, + { + "type": "additive_expression", + "named": true, + "fields": { + "lhs": { + "multiple": true, + "required": true, + "types": [ + { + "type": "!=", + "named": false + }, + { + "type": "!==", + "named": false + }, + { + "type": "%", + "named": false + }, + { + "type": "%=", + "named": false + }, + { + "type": "&", + "named": false + }, + { + "type": "*", + "named": false + }, + { + "type": "*=", + "named": false + }, + { + "type": "+", + "named": false + }, + { + "type": "++", + "named": false + }, + { + "type": "+=", + "named": false + }, + { + "type": "-", + "named": false + }, + { + "type": "--", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": "/", + "named": false + }, + { + "type": "/=", + "named": false + }, + { + "type": "<", + "named": false + }, + { + "type": "<<", + "named": false + }, + { + "type": "<=", + "named": false + }, + { + "type": "=", + "named": false + }, + { + "type": "==", + "named": false + }, + { + "type": "===", + "named": false + }, + { + "type": ">", + "named": false + }, + { + "type": ">=", + "named": false + }, + { + "type": ">>", + "named": false + }, + { + "type": "?", + "named": false + }, + { + "type": "^", + "named": false + }, + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil", + "named": false + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + }, + { + "type": "|", + "named": false + }, + { + "type": "~", + "named": false + } + ] + }, + "op": { + "multiple": false, + "required": true, + "types": [ + { + "type": "+", + "named": false + }, + { + "type": "-", + "named": false + } + ] + }, + "rhs": { + "multiple": true, + "required": true, + "types": [ + { + "type": "!=", + "named": false + }, + { + "type": "!==", + "named": false + }, + { + "type": "%", + "named": false + }, + { + "type": "%=", + "named": false + }, + { + "type": "&", + "named": false + }, + { + "type": "*", + "named": false + }, + { + "type": "*=", + "named": false + }, + { + "type": "+", + "named": false + }, + { + "type": "++", + "named": false + }, + { + "type": "+=", + "named": false + }, + { + "type": "-", + "named": false + }, + { + "type": "--", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": "/", + "named": false + }, + { + "type": "/=", + "named": false + }, + { + "type": "<", + "named": false + }, + { + "type": "<<", + "named": false + }, + { + "type": "<=", + "named": false + }, + { + "type": "=", + "named": false + }, + { + "type": "==", + "named": false + }, + { + "type": "===", + "named": false + }, + { + "type": ">", + "named": false + }, + { + "type": ">=", + "named": false + }, + { + "type": ">>", + "named": false + }, + { + "type": "?", + "named": false + }, + { + "type": "^", + "named": false + }, + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil", + "named": false + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + }, + { + "type": "|", + "named": false + }, + { + "type": "~", + "named": false + } + ] + } + } + }, + { + "type": "array_literal", + "named": true, + "fields": { + "element": { + "multiple": true, + "required": false, + "types": [ + { + "type": "!=", + "named": false + }, + { + "type": "!==", + "named": false + }, + { + "type": "%", + "named": false + }, + { + "type": "%=", + "named": false + }, + { + "type": "&", + "named": false + }, + { + "type": "*", + "named": false + }, + { + "type": "*=", + "named": false + }, + { + "type": "+", + "named": false + }, + { + "type": "++", + "named": false + }, + { + "type": "+=", + "named": false + }, + { + "type": "-", + "named": false + }, + { + "type": "--", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": "/", + "named": false + }, + { + "type": "/=", + "named": false + }, + { + "type": "<", + "named": false + }, + { + "type": "<<", + "named": false + }, + { + "type": "<=", + "named": false + }, + { + "type": "=", + "named": false + }, + { + "type": "==", + "named": false + }, + { + "type": "===", + "named": false + }, + { + "type": ">", + "named": false + }, + { + "type": ">=", + "named": false + }, + { + "type": ">>", + "named": false + }, + { + "type": "?", + "named": false + }, + { + "type": "^", + "named": false + }, + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil", + "named": false + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + }, + { + "type": "|", + "named": false + }, + { + "type": "~", + "named": false + } + ] + } + } + }, + { + "type": "array_type", + "named": true, + "fields": { + "element": { + "multiple": true, + "required": true, + "types": [ + { + "type": "array_type", + "named": true + }, + { + "type": "dictionary_type", + "named": true + }, + { + "type": "existential_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "metatype", + "named": true + }, + { + "type": "opaque_type", + "named": true + }, + { + "type": "optional_type", + "named": true + }, + { + "type": "protocol_composition_type", + "named": true + }, + { + "type": "suppressed_constraint", + "named": true + }, + { + "type": "tuple_type", + "named": true + }, + { + "type": "type_modifiers", + "named": true + }, + { + "type": "type_pack_expansion", + "named": true + }, + { + "type": "type_parameter_pack", + "named": true + }, + { + "type": "user_type", + "named": true + } + ] + }, + "name": { + "multiple": false, + "required": true, + "types": [ + { + "type": "array_type", + "named": true + }, + { + "type": "dictionary_type", + "named": true + }, + { + "type": "existential_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "metatype", + "named": true + }, + { + "type": "opaque_type", + "named": true + }, + { + "type": "optional_type", + "named": true + }, + { + "type": "protocol_composition_type", + "named": true + }, + { + "type": "suppressed_constraint", + "named": true + }, + { + "type": "tuple_type", + "named": true + }, + { + "type": "type_pack_expansion", + "named": true + }, + { + "type": "type_parameter_pack", + "named": true + }, + { + "type": "user_type", + "named": true + } + ] + } + } + }, + { + "type": "as_expression", + "named": true, + "fields": { + "expr": { + "multiple": true, + "required": true, + "types": [ + { + "type": "!=", + "named": false + }, + { + "type": "!==", + "named": false + }, + { + "type": "%", + "named": false + }, + { + "type": "%=", + "named": false + }, + { + "type": "&", + "named": false + }, + { + "type": "*", + "named": false + }, + { + "type": "*=", + "named": false + }, + { + "type": "+", + "named": false + }, + { + "type": "++", + "named": false + }, + { + "type": "+=", + "named": false + }, + { + "type": "-", + "named": false + }, + { + "type": "--", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": "/", + "named": false + }, + { + "type": "/=", + "named": false + }, + { + "type": "<", + "named": false + }, + { + "type": "<<", + "named": false + }, + { + "type": "<=", + "named": false + }, + { + "type": "=", + "named": false + }, + { + "type": "==", + "named": false + }, + { + "type": "===", + "named": false + }, + { + "type": ">", + "named": false + }, + { + "type": ">=", + "named": false + }, + { + "type": ">>", + "named": false + }, + { + "type": "?", + "named": false + }, + { + "type": "^", + "named": false + }, + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil", + "named": false + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + }, + { + "type": "|", + "named": false + }, + { + "type": "~", + "named": false + } + ] + }, + "name": { + "multiple": false, + "required": true, + "types": [ + { + "type": "array_type", + "named": true + }, + { + "type": "dictionary_type", + "named": true + }, + { + "type": "existential_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "metatype", + "named": true + }, + { + "type": "opaque_type", + "named": true + }, + { + "type": "optional_type", + "named": true + }, + { + "type": "protocol_composition_type", + "named": true + }, + { + "type": "suppressed_constraint", + "named": true + }, + { + "type": "tuple_type", + "named": true + }, + { + "type": "type_pack_expansion", + "named": true + }, + { + "type": "type_parameter_pack", + "named": true + }, + { + "type": "user_type", + "named": true + } + ] + }, + "type": { + "multiple": true, + "required": true, + "types": [ + { + "type": "array_type", + "named": true + }, + { + "type": "dictionary_type", + "named": true + }, + { + "type": "existential_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "metatype", + "named": true + }, + { + "type": "opaque_type", + "named": true + }, + { + "type": "optional_type", + "named": true + }, + { + "type": "protocol_composition_type", + "named": true + }, + { + "type": "suppressed_constraint", + "named": true + }, + { + "type": "tuple_type", + "named": true + }, + { + "type": "type_modifiers", + "named": true + }, + { + "type": "type_pack_expansion", + "named": true + }, + { + "type": "type_parameter_pack", + "named": true + }, + { + "type": "user_type", + "named": true + } + ] + } + }, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "as_operator", + "named": true + } + ] + } + }, + { + "type": "as_operator", + "named": true, + "fields": {} + }, + { + "type": "assignment", + "named": true, + "fields": { + "operator": { + "multiple": false, + "required": true, + "types": [ + { + "type": "%=", + "named": false + }, + { + "type": "*=", + "named": false + }, + { + "type": "+=", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": "/=", + "named": false + }, + { + "type": "=", + "named": false + } + ] + }, + "result": { + "multiple": true, + "required": true, + "types": [ + { + "type": "!=", + "named": false + }, + { + "type": "!==", + "named": false + }, + { + "type": "%", + "named": false + }, + { + "type": "%=", + "named": false + }, + { + "type": "&", + "named": false + }, + { + "type": "*", + "named": false + }, + { + "type": "*=", + "named": false + }, + { + "type": "+", + "named": false + }, + { + "type": "++", + "named": false + }, + { + "type": "+=", + "named": false + }, + { + "type": "-", + "named": false + }, + { + "type": "--", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": "/", + "named": false + }, + { + "type": "/=", + "named": false + }, + { + "type": "<", + "named": false + }, + { + "type": "<<", + "named": false + }, + { + "type": "<=", + "named": false + }, + { + "type": "=", + "named": false + }, + { + "type": "==", + "named": false + }, + { + "type": "===", + "named": false + }, + { + "type": ">", + "named": false + }, + { + "type": ">=", + "named": false + }, + { + "type": ">>", + "named": false + }, + { + "type": "?", + "named": false + }, + { + "type": "^", + "named": false + }, + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil", + "named": false + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + }, + { + "type": "|", + "named": false + }, + { + "type": "~", + "named": false + } + ] + }, + "target": { + "multiple": false, + "required": true, + "types": [ + { + "type": "directly_assignable_expression", + "named": true + } + ] + } + } + }, + { + "type": "associatedtype_declaration", + "named": true, + "fields": { + "default_value": { + "multiple": true, + "required": false, + "types": [ + { + "type": "array_type", + "named": true + }, + { + "type": "dictionary_type", + "named": true + }, + { + "type": "existential_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "metatype", + "named": true + }, + { + "type": "opaque_type", + "named": true + }, + { + "type": "optional_type", + "named": true + }, + { + "type": "protocol_composition_type", + "named": true + }, + { + "type": "suppressed_constraint", + "named": true + }, + { + "type": "tuple_type", + "named": true + }, + { + "type": "type_modifiers", + "named": true + }, + { + "type": "type_pack_expansion", + "named": true + }, + { + "type": "type_parameter_pack", + "named": true + }, + { + "type": "user_type", + "named": true + } + ] + }, + "must_inherit": { + "multiple": true, + "required": false, + "types": [ + { + "type": "array_type", + "named": true + }, + { + "type": "dictionary_type", + "named": true + }, + { + "type": "existential_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "metatype", + "named": true + }, + { + "type": "opaque_type", + "named": true + }, + { + "type": "optional_type", + "named": true + }, + { + "type": "protocol_composition_type", + "named": true + }, + { + "type": "suppressed_constraint", + "named": true + }, + { + "type": "tuple_type", + "named": true + }, + { + "type": "type_modifiers", + "named": true + }, + { + "type": "type_pack_expansion", + "named": true + }, + { + "type": "type_parameter_pack", + "named": true + }, + { + "type": "user_type", + "named": true + } + ] + }, + "name": { + "multiple": true, + "required": true, + "types": [ + { + "type": "array_type", + "named": true + }, + { + "type": "dictionary_type", + "named": true + }, + { + "type": "existential_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "metatype", + "named": true + }, + { + "type": "opaque_type", + "named": true + }, + { + "type": "optional_type", + "named": true + }, + { + "type": "protocol_composition_type", + "named": true + }, + { + "type": "suppressed_constraint", + "named": true + }, + { + "type": "tuple_type", + "named": true + }, + { + "type": "type_identifier", + "named": true + }, + { + "type": "type_pack_expansion", + "named": true + }, + { + "type": "type_parameter_pack", + "named": true + }, + { + "type": "user_type", + "named": true + } + ] + } + }, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "modifiers", + "named": true + }, + { + "type": "type_constraints", + "named": true + } + ] + } + }, + { + "type": "attribute", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "user_type", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + } + ] + } + }, + { + "type": "availability_condition", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "identifier", + "named": true + }, + { + "type": "integer_literal", + "named": true + } + ] + } + }, + { + "type": "await_expression", + "named": true, + "fields": { + "expr": { + "multiple": true, + "required": false, + "types": [ + { + "type": "!=", + "named": false + }, + { + "type": "!==", + "named": false + }, + { + "type": "%", + "named": false + }, + { + "type": "%=", + "named": false + }, + { + "type": "&", + "named": false + }, + { + "type": "*", + "named": false + }, + { + "type": "*=", + "named": false + }, + { + "type": "+", + "named": false + }, + { + "type": "++", + "named": false + }, + { + "type": "+=", + "named": false + }, + { + "type": "-", + "named": false + }, + { + "type": "--", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": "/", + "named": false + }, + { + "type": "/=", + "named": false + }, + { + "type": "<", + "named": false + }, + { + "type": "<<", + "named": false + }, + { + "type": "<=", + "named": false + }, + { + "type": "=", + "named": false + }, + { + "type": "==", + "named": false + }, + { + "type": "===", + "named": false + }, + { + "type": ">", + "named": false + }, + { + "type": ">=", + "named": false + }, + { + "type": ">>", + "named": false + }, + { + "type": "?", + "named": false + }, + { + "type": "^", + "named": false + }, + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil", + "named": false + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + }, + { + "type": "|", + "named": false + }, + { + "type": "~", + "named": false + } + ] + } + }, + "children": { + "multiple": false, + "required": false, + "types": [ + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + } + ] + } + }, + { + "type": "bang", + "named": true, + "fields": {} + }, + { + "type": "bitwise_operation", + "named": true, + "fields": { + "lhs": { + "multiple": true, + "required": true, + "types": [ + { + "type": "!=", + "named": false + }, + { + "type": "!==", + "named": false + }, + { + "type": "%", + "named": false + }, + { + "type": "%=", + "named": false + }, + { + "type": "&", + "named": false + }, + { + "type": "*", + "named": false + }, + { + "type": "*=", + "named": false + }, + { + "type": "+", + "named": false + }, + { + "type": "++", + "named": false + }, + { + "type": "+=", + "named": false + }, + { + "type": "-", + "named": false + }, + { + "type": "--", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": "/", + "named": false + }, + { + "type": "/=", + "named": false + }, + { + "type": "<", + "named": false + }, + { + "type": "<<", + "named": false + }, + { + "type": "<=", + "named": false + }, + { + "type": "=", + "named": false + }, + { + "type": "==", + "named": false + }, + { + "type": "===", + "named": false + }, + { + "type": ">", + "named": false + }, + { + "type": ">=", + "named": false + }, + { + "type": ">>", + "named": false + }, + { + "type": "?", + "named": false + }, + { + "type": "^", + "named": false + }, + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil", + "named": false + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + }, + { + "type": "|", + "named": false + }, + { + "type": "~", + "named": false + } + ] + }, + "op": { + "multiple": false, + "required": true, + "types": [ + { + "type": "&", + "named": false + }, + { + "type": "<<", + "named": false + }, + { + "type": ">>", + "named": false + }, + { + "type": "^", + "named": false + }, + { + "type": "|", + "named": false + } + ] + }, + "rhs": { + "multiple": true, + "required": true, + "types": [ + { + "type": "!=", + "named": false + }, + { + "type": "!==", + "named": false + }, + { + "type": "%", + "named": false + }, + { + "type": "%=", + "named": false + }, + { + "type": "&", + "named": false + }, + { + "type": "*", + "named": false + }, + { + "type": "*=", + "named": false + }, + { + "type": "+", + "named": false + }, + { + "type": "++", + "named": false + }, + { + "type": "+=", + "named": false + }, + { + "type": "-", + "named": false + }, + { + "type": "--", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": "/", + "named": false + }, + { + "type": "/=", + "named": false + }, + { + "type": "<", + "named": false + }, + { + "type": "<<", + "named": false + }, + { + "type": "<=", + "named": false + }, + { + "type": "=", + "named": false + }, + { + "type": "==", + "named": false + }, + { + "type": "===", + "named": false + }, + { + "type": ">", + "named": false + }, + { + "type": ">=", + "named": false + }, + { + "type": ">>", + "named": false + }, + { + "type": "?", + "named": false + }, + { + "type": "^", + "named": false + }, + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil", + "named": false + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + }, + { + "type": "|", + "named": false + }, + { + "type": "~", + "named": false + } + ] + } + } + }, + { + "type": "boolean_literal", + "named": true, + "fields": {} + }, + { + "type": "call_expression", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "call_suffix", + "named": true + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + } + ] + } + }, + { + "type": "call_suffix", + "named": true, + "fields": { + "name": { + "multiple": true, + "required": false, + "types": [ + { + "type": "simple_identifier", + "named": true + } + ] + } + }, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "lambda_literal", + "named": true + }, + { + "type": "value_arguments", + "named": true + } + ] + } + }, + { + "type": "capture_list", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "capture_list_item", + "named": true + } + ] + } + }, + { + "type": "capture_list_item", + "named": true, + "fields": { + "name": { + "multiple": false, + "required": true, + "types": [ + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + } + ] + }, + "value": { + "multiple": true, + "required": false, + "types": [ + { + "type": "!=", + "named": false + }, + { + "type": "!==", + "named": false + }, + { + "type": "%", + "named": false + }, + { + "type": "%=", + "named": false + }, + { + "type": "&", + "named": false + }, + { + "type": "*", + "named": false + }, + { + "type": "*=", + "named": false + }, + { + "type": "+", + "named": false + }, + { + "type": "++", + "named": false + }, + { + "type": "+=", + "named": false + }, + { + "type": "-", + "named": false + }, + { + "type": "--", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": "/", + "named": false + }, + { + "type": "/=", + "named": false + }, + { + "type": "<", + "named": false + }, + { + "type": "<<", + "named": false + }, + { + "type": "<=", + "named": false + }, + { + "type": "=", + "named": false + }, + { + "type": "==", + "named": false + }, + { + "type": "===", + "named": false + }, + { + "type": ">", + "named": false + }, + { + "type": ">=", + "named": false + }, + { + "type": ">>", + "named": false + }, + { + "type": "?", + "named": false + }, + { + "type": "^", + "named": false + }, + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil", + "named": false + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + }, + { + "type": "|", + "named": false + }, + { + "type": "~", + "named": false + } + ] + } + }, + "children": { + "multiple": false, + "required": false, + "types": [ + { + "type": "ownership_modifier", + "named": true + } + ] + } + }, + { + "type": "catch_block", + "named": true, + "fields": { + "error": { + "multiple": false, + "required": false, + "types": [ + { + "type": "pattern", + "named": true + } + ] + } + }, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "catch_keyword", + "named": true + }, + { + "type": "statements", + "named": true + }, + { + "type": "where_clause", + "named": true + } + ] + } + }, + { + "type": "check_expression", + "named": true, + "fields": { + "name": { + "multiple": false, + "required": true, + "types": [ + { + "type": "array_type", + "named": true + }, + { + "type": "dictionary_type", + "named": true + }, + { + "type": "existential_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "metatype", + "named": true + }, + { + "type": "opaque_type", + "named": true + }, + { + "type": "optional_type", + "named": true + }, + { + "type": "protocol_composition_type", + "named": true + }, + { + "type": "suppressed_constraint", + "named": true + }, + { + "type": "tuple_type", + "named": true + }, + { + "type": "type_pack_expansion", + "named": true + }, + { + "type": "type_parameter_pack", + "named": true + }, + { + "type": "user_type", + "named": true + } + ] + }, + "op": { + "multiple": false, + "required": true, + "types": [ + { + "type": "is", + "named": false + } + ] + }, + "target": { + "multiple": true, + "required": true, + "types": [ + { + "type": "!=", + "named": false + }, + { + "type": "!==", + "named": false + }, + { + "type": "%", + "named": false + }, + { + "type": "%=", + "named": false + }, + { + "type": "&", + "named": false + }, + { + "type": "*", + "named": false + }, + { + "type": "*=", + "named": false + }, + { + "type": "+", + "named": false + }, + { + "type": "++", + "named": false + }, + { + "type": "+=", + "named": false + }, + { + "type": "-", + "named": false + }, + { + "type": "--", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": "/", + "named": false + }, + { + "type": "/=", + "named": false + }, + { + "type": "<", + "named": false + }, + { + "type": "<<", + "named": false + }, + { + "type": "<=", + "named": false + }, + { + "type": "=", + "named": false + }, + { + "type": "==", + "named": false + }, + { + "type": "===", + "named": false + }, + { + "type": ">", + "named": false + }, + { + "type": ">=", + "named": false + }, + { + "type": ">>", + "named": false + }, + { + "type": "?", + "named": false + }, + { + "type": "^", + "named": false + }, + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil", + "named": false + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + }, + { + "type": "|", + "named": false + }, + { + "type": "~", + "named": false + } + ] + }, + "type": { + "multiple": true, + "required": true, + "types": [ + { + "type": "array_type", + "named": true + }, + { + "type": "dictionary_type", + "named": true + }, + { + "type": "existential_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "metatype", + "named": true + }, + { + "type": "opaque_type", + "named": true + }, + { + "type": "optional_type", + "named": true + }, + { + "type": "protocol_composition_type", + "named": true + }, + { + "type": "suppressed_constraint", + "named": true + }, + { + "type": "tuple_type", + "named": true + }, + { + "type": "type_modifiers", + "named": true + }, + { + "type": "type_pack_expansion", + "named": true + }, + { + "type": "type_parameter_pack", + "named": true + }, + { + "type": "user_type", + "named": true + } + ] + } + } + }, + { + "type": "class_body", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "associatedtype_declaration", + "named": true + }, + { + "type": "class_declaration", + "named": true + }, + { + "type": "deinit_declaration", + "named": true + }, + { + "type": "function_declaration", + "named": true + }, + { + "type": "import_declaration", + "named": true + }, + { + "type": "init_declaration", + "named": true + }, + { + "type": "multiline_comment", + "named": true + }, + { + "type": "operator_declaration", + "named": true + }, + { + "type": "precedence_group_declaration", + "named": true + }, + { + "type": "property_declaration", + "named": true + }, + { + "type": "protocol_declaration", + "named": true + }, + { + "type": "subscript_declaration", + "named": true + }, + { + "type": "typealias_declaration", + "named": true + } + ] + } + }, + { + "type": "class_declaration", + "named": true, + "fields": { + "body": { + "multiple": false, + "required": true, + "types": [ + { + "type": "class_body", + "named": true + }, + { + "type": "enum_class_body", + "named": true + } + ] + }, + "declaration_kind": { + "multiple": false, + "required": true, + "types": [ + { + "type": "actor", + "named": false + }, + { + "type": "class", + "named": false + }, + { + "type": "enum", + "named": false + }, + { + "type": "extension", + "named": false + }, + { + "type": "struct", + "named": false + } + ] + }, + "name": { + "multiple": false, + "required": true, + "types": [ + { + "type": "array_type", + "named": true + }, + { + "type": "dictionary_type", + "named": true + }, + { + "type": "existential_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "metatype", + "named": true + }, + { + "type": "opaque_type", + "named": true + }, + { + "type": "optional_type", + "named": true + }, + { + "type": "protocol_composition_type", + "named": true + }, + { + "type": "suppressed_constraint", + "named": true + }, + { + "type": "tuple_type", + "named": true + }, + { + "type": "type_identifier", + "named": true + }, + { + "type": "type_pack_expansion", + "named": true + }, + { + "type": "type_parameter_pack", + "named": true + }, + { + "type": "user_type", + "named": true + } + ] + } + }, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "attribute", + "named": true + }, + { + "type": "inheritance_modifier", + "named": true + }, + { + "type": "inheritance_specifier", + "named": true + }, + { + "type": "modifiers", + "named": true + }, + { + "type": "ownership_modifier", + "named": true + }, + { + "type": "property_behavior_modifier", + "named": true + }, + { + "type": "type_constraints", + "named": true + }, + { + "type": "type_parameters", + "named": true + } + ] + } + }, + { + "type": "comparison_expression", + "named": true, + "fields": { + "lhs": { + "multiple": true, + "required": true, + "types": [ + { + "type": "!=", + "named": false + }, + { + "type": "!==", + "named": false + }, + { + "type": "%", + "named": false + }, + { + "type": "%=", + "named": false + }, + { + "type": "&", + "named": false + }, + { + "type": "*", + "named": false + }, + { + "type": "*=", + "named": false + }, + { + "type": "+", + "named": false + }, + { + "type": "++", + "named": false + }, + { + "type": "+=", + "named": false + }, + { + "type": "-", + "named": false + }, + { + "type": "--", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": "/", + "named": false + }, + { + "type": "/=", + "named": false + }, + { + "type": "<", + "named": false + }, + { + "type": "<<", + "named": false + }, + { + "type": "<=", + "named": false + }, + { + "type": "=", + "named": false + }, + { + "type": "==", + "named": false + }, + { + "type": "===", + "named": false + }, + { + "type": ">", + "named": false + }, + { + "type": ">=", + "named": false + }, + { + "type": ">>", + "named": false + }, + { + "type": "?", + "named": false + }, + { + "type": "^", + "named": false + }, + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil", + "named": false + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + }, + { + "type": "|", + "named": false + }, + { + "type": "~", + "named": false + } + ] + }, + "op": { + "multiple": false, + "required": true, + "types": [ + { + "type": "<", + "named": false + }, + { + "type": "<=", + "named": false + }, + { + "type": ">", + "named": false + }, + { + "type": ">=", + "named": false + } + ] + }, + "rhs": { + "multiple": true, + "required": true, + "types": [ + { + "type": "!=", + "named": false + }, + { + "type": "!==", + "named": false + }, + { + "type": "%", + "named": false + }, + { + "type": "%=", + "named": false + }, + { + "type": "&", + "named": false + }, + { + "type": "*", + "named": false + }, + { + "type": "*=", + "named": false + }, + { + "type": "+", + "named": false + }, + { + "type": "++", + "named": false + }, + { + "type": "+=", + "named": false + }, + { + "type": "-", + "named": false + }, + { + "type": "--", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": "/", + "named": false + }, + { + "type": "/=", + "named": false + }, + { + "type": "<", + "named": false + }, + { + "type": "<<", + "named": false + }, + { + "type": "<=", + "named": false + }, + { + "type": "=", + "named": false + }, + { + "type": "==", + "named": false + }, + { + "type": "===", + "named": false + }, + { + "type": ">", + "named": false + }, + { + "type": ">=", + "named": false + }, + { + "type": ">>", + "named": false + }, + { + "type": "?", + "named": false + }, + { + "type": "^", + "named": false + }, + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil", + "named": false + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + }, + { + "type": "|", + "named": false + }, + { + "type": "~", + "named": false + } + ] + } + } + }, + { + "type": "computed_getter", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "attribute", + "named": true + }, + { + "type": "getter_specifier", + "named": true + }, + { + "type": "statements", + "named": true + } + ] + } + }, + { + "type": "computed_modify", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "attribute", + "named": true + }, + { + "type": "modify_specifier", + "named": true + }, + { + "type": "statements", + "named": true + } + ] + } + }, + { + "type": "computed_property", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "computed_getter", + "named": true + }, + { + "type": "computed_modify", + "named": true + }, + { + "type": "computed_setter", + "named": true + }, + { + "type": "statements", + "named": true + } + ] + } + }, + { + "type": "computed_setter", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "attribute", + "named": true + }, + { + "type": "setter_specifier", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "statements", + "named": true + } + ] + } + }, + { + "type": "conjunction_expression", + "named": true, + "fields": { + "lhs": { + "multiple": true, + "required": true, + "types": [ + { + "type": "!=", + "named": false + }, + { + "type": "!==", + "named": false + }, + { + "type": "%", + "named": false + }, + { + "type": "%=", + "named": false + }, + { + "type": "&", + "named": false + }, + { + "type": "*", + "named": false + }, + { + "type": "*=", + "named": false + }, + { + "type": "+", + "named": false + }, + { + "type": "++", + "named": false + }, + { + "type": "+=", + "named": false + }, + { + "type": "-", + "named": false + }, + { + "type": "--", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": "/", + "named": false + }, + { + "type": "/=", + "named": false + }, + { + "type": "<", + "named": false + }, + { + "type": "<<", + "named": false + }, + { + "type": "<=", + "named": false + }, + { + "type": "=", + "named": false + }, + { + "type": "==", + "named": false + }, + { + "type": "===", + "named": false + }, + { + "type": ">", + "named": false + }, + { + "type": ">=", + "named": false + }, + { + "type": ">>", + "named": false + }, + { + "type": "?", + "named": false + }, + { + "type": "^", + "named": false + }, + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil", + "named": false + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + }, + { + "type": "|", + "named": false + }, + { + "type": "~", + "named": false + } + ] + }, + "op": { + "multiple": false, + "required": true, + "types": [ + { + "type": "&&", + "named": false + } + ] + }, + "rhs": { + "multiple": true, + "required": true, + "types": [ + { + "type": "!=", + "named": false + }, + { + "type": "!==", + "named": false + }, + { + "type": "%", + "named": false + }, + { + "type": "%=", + "named": false + }, + { + "type": "&", + "named": false + }, + { + "type": "*", + "named": false + }, + { + "type": "*=", + "named": false + }, + { + "type": "+", + "named": false + }, + { + "type": "++", + "named": false + }, + { + "type": "+=", + "named": false + }, + { + "type": "-", + "named": false + }, + { + "type": "--", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": "/", + "named": false + }, + { + "type": "/=", + "named": false + }, + { + "type": "<", + "named": false + }, + { + "type": "<<", + "named": false + }, + { + "type": "<=", + "named": false + }, + { + "type": "=", + "named": false + }, + { + "type": "==", + "named": false + }, + { + "type": "===", + "named": false + }, + { + "type": ">", + "named": false + }, + { + "type": ">=", + "named": false + }, + { + "type": ">>", + "named": false + }, + { + "type": "?", + "named": false + }, + { + "type": "^", + "named": false + }, + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil", + "named": false + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + }, + { + "type": "|", + "named": false + }, + { + "type": "~", + "named": false + } + ] + } + } + }, + { + "type": "constructor_expression", + "named": true, + "fields": { + "constructed_type": { + "multiple": false, + "required": true, + "types": [ + { + "type": "array_type", + "named": true + }, + { + "type": "dictionary_type", + "named": true + }, + { + "type": "user_type", + "named": true + } + ] + } + }, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "constructor_suffix", + "named": true + } + ] + } + }, + { + "type": "constructor_suffix", + "named": true, + "fields": { + "name": { + "multiple": true, + "required": false, + "types": [ + { + "type": "simple_identifier", + "named": true + } + ] + } + }, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "lambda_literal", + "named": true + }, + { + "type": "value_arguments", + "named": true + } + ] + } + }, + { + "type": "control_transfer_statement", + "named": true, + "fields": { + "result": { + "multiple": true, + "required": false, + "types": [ + { + "type": "!=", + "named": false + }, + { + "type": "!==", + "named": false + }, + { + "type": "%", + "named": false + }, + { + "type": "%=", + "named": false + }, + { + "type": "&", + "named": false + }, + { + "type": "*", + "named": false + }, + { + "type": "*=", + "named": false + }, + { + "type": "+", + "named": false + }, + { + "type": "++", + "named": false + }, + { + "type": "+=", + "named": false + }, + { + "type": "-", + "named": false + }, + { + "type": "--", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": "/", + "named": false + }, + { + "type": "/=", + "named": false + }, + { + "type": "<", + "named": false + }, + { + "type": "<<", + "named": false + }, + { + "type": "<=", + "named": false + }, + { + "type": "=", + "named": false + }, + { + "type": "==", + "named": false + }, + { + "type": "===", + "named": false + }, + { + "type": ">", + "named": false + }, + { + "type": ">=", + "named": false + }, + { + "type": ">>", + "named": false + }, + { + "type": "?", + "named": false + }, + { + "type": "^", + "named": false + }, + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil", + "named": false + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + }, + { + "type": "|", + "named": false + }, + { + "type": "~", + "named": false + } + ] + } + }, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "throw_keyword", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + } + ] + } + }, + { + "type": "custom_operator", + "named": true, + "fields": {} + }, + { + "type": "deinit_declaration", + "named": true, + "fields": { + "body": { + "multiple": false, + "required": true, + "types": [ + { + "type": "function_body", + "named": true + } + ] + } + }, + "children": { + "multiple": false, + "required": false, + "types": [ + { + "type": "modifiers", + "named": true + } + ] + } + }, + { + "type": "deprecated_operator_declaration_body", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "bin_literal", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "simple_identifier", + "named": true + } + ] + } + }, + { + "type": "diagnostic", + "named": true, + "fields": {} + }, + { + "type": "dictionary_literal", + "named": true, + "fields": { + "key": { + "multiple": true, + "required": false, + "types": [ + { + "type": "!=", + "named": false + }, + { + "type": "!==", + "named": false + }, + { + "type": "%", + "named": false + }, + { + "type": "%=", + "named": false + }, + { + "type": "&", + "named": false + }, + { + "type": "*", + "named": false + }, + { + "type": "*=", + "named": false + }, + { + "type": "+", + "named": false + }, + { + "type": "++", + "named": false + }, + { + "type": "+=", + "named": false + }, + { + "type": "-", + "named": false + }, + { + "type": "--", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": "/", + "named": false + }, + { + "type": "/=", + "named": false + }, + { + "type": "<", + "named": false + }, + { + "type": "<<", + "named": false + }, + { + "type": "<=", + "named": false + }, + { + "type": "=", + "named": false + }, + { + "type": "==", + "named": false + }, + { + "type": "===", + "named": false + }, + { + "type": ">", + "named": false + }, + { + "type": ">=", + "named": false + }, + { + "type": ">>", + "named": false + }, + { + "type": "?", + "named": false + }, + { + "type": "^", + "named": false + }, + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil", + "named": false + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + }, + { + "type": "|", + "named": false + }, + { + "type": "~", + "named": false + } + ] + }, + "value": { + "multiple": true, + "required": false, + "types": [ + { + "type": "!=", + "named": false + }, + { + "type": "!==", + "named": false + }, + { + "type": "%", + "named": false + }, + { + "type": "%=", + "named": false + }, + { + "type": "&", + "named": false + }, + { + "type": "*", + "named": false + }, + { + "type": "*=", + "named": false + }, + { + "type": "+", + "named": false + }, + { + "type": "++", + "named": false + }, + { + "type": "+=", + "named": false + }, + { + "type": "-", + "named": false + }, + { + "type": "--", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": "/", + "named": false + }, + { + "type": "/=", + "named": false + }, + { + "type": "<", + "named": false + }, + { + "type": "<<", + "named": false + }, + { + "type": "<=", + "named": false + }, + { + "type": "=", + "named": false + }, + { + "type": "==", + "named": false + }, + { + "type": "===", + "named": false + }, + { + "type": ">", + "named": false + }, + { + "type": ">=", + "named": false + }, + { + "type": ">>", + "named": false + }, + { + "type": "?", + "named": false + }, + { + "type": "^", + "named": false + }, + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil", + "named": false + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + }, + { + "type": "|", + "named": false + }, + { + "type": "~", + "named": false + } + ] + } + } + }, + { + "type": "dictionary_type", + "named": true, + "fields": { + "key": { + "multiple": true, + "required": true, + "types": [ + { + "type": "array_type", + "named": true + }, + { + "type": "dictionary_type", + "named": true + }, + { + "type": "existential_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "metatype", + "named": true + }, + { + "type": "opaque_type", + "named": true + }, + { + "type": "optional_type", + "named": true + }, + { + "type": "protocol_composition_type", + "named": true + }, + { + "type": "suppressed_constraint", + "named": true + }, + { + "type": "tuple_type", + "named": true + }, + { + "type": "type_modifiers", + "named": true + }, + { + "type": "type_pack_expansion", + "named": true + }, + { + "type": "type_parameter_pack", + "named": true + }, + { + "type": "user_type", + "named": true + } + ] + }, + "name": { + "multiple": true, + "required": true, + "types": [ + { + "type": "array_type", + "named": true + }, + { + "type": "dictionary_type", + "named": true + }, + { + "type": "existential_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "metatype", + "named": true + }, + { + "type": "opaque_type", + "named": true + }, + { + "type": "optional_type", + "named": true + }, + { + "type": "protocol_composition_type", + "named": true + }, + { + "type": "suppressed_constraint", + "named": true + }, + { + "type": "tuple_type", + "named": true + }, + { + "type": "type_pack_expansion", + "named": true + }, + { + "type": "type_parameter_pack", + "named": true + }, + { + "type": "user_type", + "named": true + } + ] + }, + "value": { + "multiple": true, + "required": true, + "types": [ + { + "type": "array_type", + "named": true + }, + { + "type": "dictionary_type", + "named": true + }, + { + "type": "existential_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "metatype", + "named": true + }, + { + "type": "opaque_type", + "named": true + }, + { + "type": "optional_type", + "named": true + }, + { + "type": "protocol_composition_type", + "named": true + }, + { + "type": "suppressed_constraint", + "named": true + }, + { + "type": "tuple_type", + "named": true + }, + { + "type": "type_modifiers", + "named": true + }, + { + "type": "type_pack_expansion", + "named": true + }, + { + "type": "type_parameter_pack", + "named": true + }, + { + "type": "user_type", + "named": true + } + ] + } + } + }, + { + "type": "didset_clause", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "modifiers", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "statements", + "named": true + } + ] + } + }, + { + "type": "directive", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "boolean_literal", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "simple_identifier", + "named": true + } + ] + } + }, + { + "type": "directly_assignable_expression", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": false, + "types": [ + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + } + ] + } + }, + { + "type": "disjunction_expression", + "named": true, + "fields": { + "lhs": { + "multiple": true, + "required": true, + "types": [ + { + "type": "!=", + "named": false + }, + { + "type": "!==", + "named": false + }, + { + "type": "%", + "named": false + }, + { + "type": "%=", + "named": false + }, + { + "type": "&", + "named": false + }, + { + "type": "*", + "named": false + }, + { + "type": "*=", + "named": false + }, + { + "type": "+", + "named": false + }, + { + "type": "++", + "named": false + }, + { + "type": "+=", + "named": false + }, + { + "type": "-", + "named": false + }, + { + "type": "--", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": "/", + "named": false + }, + { + "type": "/=", + "named": false + }, + { + "type": "<", + "named": false + }, + { + "type": "<<", + "named": false + }, + { + "type": "<=", + "named": false + }, + { + "type": "=", + "named": false + }, + { + "type": "==", + "named": false + }, + { + "type": "===", + "named": false + }, + { + "type": ">", + "named": false + }, + { + "type": ">=", + "named": false + }, + { + "type": ">>", + "named": false + }, + { + "type": "?", + "named": false + }, + { + "type": "^", + "named": false + }, + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil", + "named": false + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + }, + { + "type": "|", + "named": false + }, + { + "type": "~", + "named": false + } + ] + }, + "op": { + "multiple": false, + "required": true, + "types": [ + { + "type": "||", + "named": false + } + ] + }, + "rhs": { + "multiple": true, + "required": true, + "types": [ + { + "type": "!=", + "named": false + }, + { + "type": "!==", + "named": false + }, + { + "type": "%", + "named": false + }, + { + "type": "%=", + "named": false + }, + { + "type": "&", + "named": false + }, + { + "type": "*", + "named": false + }, + { + "type": "*=", + "named": false + }, + { + "type": "+", + "named": false + }, + { + "type": "++", + "named": false + }, + { + "type": "+=", + "named": false + }, + { + "type": "-", + "named": false + }, + { + "type": "--", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": "/", + "named": false + }, + { + "type": "/=", + "named": false + }, + { + "type": "<", + "named": false + }, + { + "type": "<<", + "named": false + }, + { + "type": "<=", + "named": false + }, + { + "type": "=", + "named": false + }, + { + "type": "==", + "named": false + }, + { + "type": "===", + "named": false + }, + { + "type": ">", + "named": false + }, + { + "type": ">=", + "named": false + }, + { + "type": ">>", + "named": false + }, + { + "type": "?", + "named": false + }, + { + "type": "^", + "named": false + }, + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil", + "named": false + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + }, + { + "type": "|", + "named": false + }, + { + "type": "~", + "named": false + } + ] + } + } + }, + { + "type": "do_statement", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "catch_block", + "named": true + }, + { + "type": "statements", + "named": true + } + ] + } + }, + { + "type": "enum_class_body", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "associatedtype_declaration", + "named": true + }, + { + "type": "class_declaration", + "named": true + }, + { + "type": "deinit_declaration", + "named": true + }, + { + "type": "enum_entry", + "named": true + }, + { + "type": "function_declaration", + "named": true + }, + { + "type": "import_declaration", + "named": true + }, + { + "type": "init_declaration", + "named": true + }, + { + "type": "operator_declaration", + "named": true + }, + { + "type": "precedence_group_declaration", + "named": true + }, + { + "type": "property_declaration", + "named": true + }, + { + "type": "protocol_declaration", + "named": true + }, + { + "type": "subscript_declaration", + "named": true + }, + { + "type": "typealias_declaration", + "named": true + } + ] + } + }, + { + "type": "enum_entry", + "named": true, + "fields": { + "data_contents": { + "multiple": true, + "required": false, + "types": [ + { + "type": "enum_type_parameters", + "named": true + } + ] + }, + "name": { + "multiple": true, + "required": true, + "types": [ + { + "type": "simple_identifier", + "named": true + } + ] + }, + "raw_value": { + "multiple": true, + "required": false, + "types": [ + { + "type": "!=", + "named": false + }, + { + "type": "!==", + "named": false + }, + { + "type": "%", + "named": false + }, + { + "type": "%=", + "named": false + }, + { + "type": "&", + "named": false + }, + { + "type": "*", + "named": false + }, + { + "type": "*=", + "named": false + }, + { + "type": "+", + "named": false + }, + { + "type": "++", + "named": false + }, + { + "type": "+=", + "named": false + }, + { + "type": "-", + "named": false + }, + { + "type": "--", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": "/", + "named": false + }, + { + "type": "/=", + "named": false + }, + { + "type": "<", + "named": false + }, + { + "type": "<<", + "named": false + }, + { + "type": "<=", + "named": false + }, + { + "type": "=", + "named": false + }, + { + "type": "==", + "named": false + }, + { + "type": "===", + "named": false + }, + { + "type": ">", + "named": false + }, + { + "type": ">=", + "named": false + }, + { + "type": ">>", + "named": false + }, + { + "type": "?", + "named": false + }, + { + "type": "^", + "named": false + }, + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil", + "named": false + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + }, + { + "type": "|", + "named": false + }, + { + "type": "~", + "named": false + } + ] + } + }, + "children": { + "multiple": false, + "required": false, + "types": [ + { + "type": "modifiers", + "named": true + } + ] + } + }, + { + "type": "enum_type_parameters", + "named": true, + "fields": { + "name": { + "multiple": true, + "required": false, + "types": [ + { + "type": "array_type", + "named": true + }, + { + "type": "dictionary_type", + "named": true + }, + { + "type": "existential_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "metatype", + "named": true + }, + { + "type": "opaque_type", + "named": true + }, + { + "type": "optional_type", + "named": true + }, + { + "type": "protocol_composition_type", + "named": true + }, + { + "type": "suppressed_constraint", + "named": true + }, + { + "type": "tuple_type", + "named": true + }, + { + "type": "type_pack_expansion", + "named": true + }, + { + "type": "type_parameter_pack", + "named": true + }, + { + "type": "user_type", + "named": true + } + ] + } + }, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "type_modifiers", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + }, + { + "type": "wildcard_pattern", + "named": true + } + ] + } + }, + { + "type": "equality_constraint", + "named": true, + "fields": { + "constrained_type": { + "multiple": true, + "required": true, + "types": [ + { + "type": ".", + "named": false + }, + { + "type": "array_type", + "named": true + }, + { + "type": "dictionary_type", + "named": true + }, + { + "type": "existential_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "identifier", + "named": true + }, + { + "type": "metatype", + "named": true + }, + { + "type": "opaque_type", + "named": true + }, + { + "type": "optional_type", + "named": true + }, + { + "type": "protocol_composition_type", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "suppressed_constraint", + "named": true + }, + { + "type": "tuple_type", + "named": true + }, + { + "type": "type_pack_expansion", + "named": true + }, + { + "type": "type_parameter_pack", + "named": true + }, + { + "type": "user_type", + "named": true + } + ] + }, + "must_equal": { + "multiple": true, + "required": true, + "types": [ + { + "type": "array_type", + "named": true + }, + { + "type": "dictionary_type", + "named": true + }, + { + "type": "existential_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "metatype", + "named": true + }, + { + "type": "opaque_type", + "named": true + }, + { + "type": "optional_type", + "named": true + }, + { + "type": "protocol_composition_type", + "named": true + }, + { + "type": "suppressed_constraint", + "named": true + }, + { + "type": "tuple_type", + "named": true + }, + { + "type": "type_modifiers", + "named": true + }, + { + "type": "type_pack_expansion", + "named": true + }, + { + "type": "type_parameter_pack", + "named": true + }, + { + "type": "user_type", + "named": true + } + ] + }, + "name": { + "multiple": false, + "required": true, + "types": [ + { + "type": "array_type", + "named": true + }, + { + "type": "dictionary_type", + "named": true + }, + { + "type": "existential_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "metatype", + "named": true + }, + { + "type": "opaque_type", + "named": true + }, + { + "type": "optional_type", + "named": true + }, + { + "type": "protocol_composition_type", + "named": true + }, + { + "type": "suppressed_constraint", + "named": true + }, + { + "type": "tuple_type", + "named": true + }, + { + "type": "type_pack_expansion", + "named": true + }, + { + "type": "type_parameter_pack", + "named": true + }, + { + "type": "user_type", + "named": true + } + ] + } + }, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "attribute", + "named": true + } + ] + } + }, + { + "type": "equality_expression", + "named": true, + "fields": { + "lhs": { + "multiple": true, + "required": true, + "types": [ + { + "type": "!=", + "named": false + }, + { + "type": "!==", + "named": false + }, + { + "type": "%", + "named": false + }, + { + "type": "%=", + "named": false + }, + { + "type": "&", + "named": false + }, + { + "type": "*", + "named": false + }, + { + "type": "*=", + "named": false + }, + { + "type": "+", + "named": false + }, + { + "type": "++", + "named": false + }, + { + "type": "+=", + "named": false + }, + { + "type": "-", + "named": false + }, + { + "type": "--", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": "/", + "named": false + }, + { + "type": "/=", + "named": false + }, + { + "type": "<", + "named": false + }, + { + "type": "<<", + "named": false + }, + { + "type": "<=", + "named": false + }, + { + "type": "=", + "named": false + }, + { + "type": "==", + "named": false + }, + { + "type": "===", + "named": false + }, + { + "type": ">", + "named": false + }, + { + "type": ">=", + "named": false + }, + { + "type": ">>", + "named": false + }, + { + "type": "?", + "named": false + }, + { + "type": "^", + "named": false + }, + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil", + "named": false + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + }, + { + "type": "|", + "named": false + }, + { + "type": "~", + "named": false + } + ] + }, + "op": { + "multiple": false, + "required": true, + "types": [ + { + "type": "!=", + "named": false + }, + { + "type": "!==", + "named": false + }, + { + "type": "==", + "named": false + }, + { + "type": "===", + "named": false + } + ] + }, + "rhs": { + "multiple": true, + "required": true, + "types": [ + { + "type": "!=", + "named": false + }, + { + "type": "!==", + "named": false + }, + { + "type": "%", + "named": false + }, + { + "type": "%=", + "named": false + }, + { + "type": "&", + "named": false + }, + { + "type": "*", + "named": false + }, + { + "type": "*=", + "named": false + }, + { + "type": "+", + "named": false + }, + { + "type": "++", + "named": false + }, + { + "type": "+=", + "named": false + }, + { + "type": "-", + "named": false + }, + { + "type": "--", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": "/", + "named": false + }, + { + "type": "/=", + "named": false + }, + { + "type": "<", + "named": false + }, + { + "type": "<<", + "named": false + }, + { + "type": "<=", + "named": false + }, + { + "type": "=", + "named": false + }, + { + "type": "==", + "named": false + }, + { + "type": "===", + "named": false + }, + { + "type": ">", + "named": false + }, + { + "type": ">=", + "named": false + }, + { + "type": ">>", + "named": false + }, + { + "type": "?", + "named": false + }, + { + "type": "^", + "named": false + }, + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil", + "named": false + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + }, + { + "type": "|", + "named": false + }, + { + "type": "~", + "named": false + } + ] + } + } + }, + { + "type": "existential_type", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "array_type", + "named": true + }, + { + "type": "dictionary_type", + "named": true + }, + { + "type": "existential_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "metatype", + "named": true + }, + { + "type": "opaque_type", + "named": true + }, + { + "type": "optional_type", + "named": true + }, + { + "type": "protocol_composition_type", + "named": true + }, + { + "type": "suppressed_constraint", + "named": true + }, + { + "type": "tuple_type", + "named": true + }, + { + "type": "type_pack_expansion", + "named": true + }, + { + "type": "type_parameter_pack", + "named": true + }, + { + "type": "user_type", + "named": true + } + ] + } + }, + { + "type": "external_macro_definition", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "value_arguments", + "named": true + } + ] + } + }, + { + "type": "for_statement", + "named": true, + "fields": { + "collection": { + "multiple": true, + "required": true, + "types": [ + { + "type": "!=", + "named": false + }, + { + "type": "!==", + "named": false + }, + { + "type": "%", + "named": false + }, + { + "type": "%=", + "named": false + }, + { + "type": "&", + "named": false + }, + { + "type": "*", + "named": false + }, + { + "type": "*=", + "named": false + }, + { + "type": "+", + "named": false + }, + { + "type": "++", + "named": false + }, + { + "type": "+=", + "named": false + }, + { + "type": "-", + "named": false + }, + { + "type": "--", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": "/", + "named": false + }, + { + "type": "/=", + "named": false + }, + { + "type": "<", + "named": false + }, + { + "type": "<<", + "named": false + }, + { + "type": "<=", + "named": false + }, + { + "type": "=", + "named": false + }, + { + "type": "==", + "named": false + }, + { + "type": "===", + "named": false + }, + { + "type": ">", + "named": false + }, + { + "type": ">=", + "named": false + }, + { + "type": ">>", + "named": false + }, + { + "type": "?", + "named": false + }, + { + "type": "^", + "named": false + }, + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil", + "named": false + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + }, + { + "type": "|", + "named": false + }, + { + "type": "~", + "named": false + } + ] + }, + "item": { + "multiple": false, + "required": true, + "types": [ + { + "type": "pattern", + "named": true + } + ] + } + }, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "statements", + "named": true + }, + { + "type": "try_operator", + "named": true + }, + { + "type": "type_annotation", + "named": true + }, + { + "type": "where_clause", + "named": true + } + ] + } + }, + { + "type": "fully_open_range", + "named": true, + "fields": {} + }, + { + "type": "function_body", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": false, + "types": [ + { + "type": "statements", + "named": true + } + ] + } + }, + { + "type": "function_declaration", + "named": true, + "fields": { + "body": { + "multiple": false, + "required": true, + "types": [ + { + "type": "function_body", + "named": true + } + ] + }, + "default_value": { + "multiple": true, + "required": false, + "types": [ + { + "type": "!=", + "named": false + }, + { + "type": "!==", + "named": false + }, + { + "type": "%", + "named": false + }, + { + "type": "%=", + "named": false + }, + { + "type": "&", + "named": false + }, + { + "type": "*", + "named": false + }, + { + "type": "*=", + "named": false + }, + { + "type": "+", + "named": false + }, + { + "type": "++", + "named": false + }, + { + "type": "+=", + "named": false + }, + { + "type": "-", + "named": false + }, + { + "type": "--", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": "/", + "named": false + }, + { + "type": "/=", + "named": false + }, + { + "type": "<", + "named": false + }, + { + "type": "<<", + "named": false + }, + { + "type": "<=", + "named": false + }, + { + "type": "=", + "named": false + }, + { + "type": "==", + "named": false + }, + { + "type": "===", + "named": false + }, + { + "type": ">", + "named": false + }, + { + "type": ">=", + "named": false + }, + { + "type": ">>", + "named": false + }, + { + "type": "?", + "named": false + }, + { + "type": "^", + "named": false + }, + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil", + "named": false + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + }, + { + "type": "|", + "named": false + }, + { + "type": "~", + "named": false + } + ] + }, + "name": { + "multiple": true, + "required": true, + "types": [ + { + "type": "!=", + "named": false + }, + { + "type": "!==", + "named": false + }, + { + "type": "%", + "named": false + }, + { + "type": "%=", + "named": false + }, + { + "type": "&", + "named": false + }, + { + "type": "*", + "named": false + }, + { + "type": "*=", + "named": false + }, + { + "type": "+", + "named": false + }, + { + "type": "++", + "named": false + }, + { + "type": "+=", + "named": false + }, + { + "type": "-", + "named": false + }, + { + "type": "--", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": "/", + "named": false + }, + { + "type": "/=", + "named": false + }, + { + "type": "<", + "named": false + }, + { + "type": "<<", + "named": false + }, + { + "type": "<=", + "named": false + }, + { + "type": "=", + "named": false + }, + { + "type": "==", + "named": false + }, + { + "type": "===", + "named": false + }, + { + "type": ">", + "named": false + }, + { + "type": ">=", + "named": false + }, + { + "type": ">>", + "named": false + }, + { + "type": "^", + "named": false + }, + { + "type": "array_type", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "dictionary_type", + "named": true + }, + { + "type": "existential_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "metatype", + "named": true + }, + { + "type": "opaque_type", + "named": true + }, + { + "type": "optional_type", + "named": true + }, + { + "type": "protocol_composition_type", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "suppressed_constraint", + "named": true + }, + { + "type": "tuple_type", + "named": true + }, + { + "type": "type_pack_expansion", + "named": true + }, + { + "type": "type_parameter_pack", + "named": true + }, + { + "type": "user_type", + "named": true + }, + { + "type": "|", + "named": false + }, + { + "type": "~", + "named": false + } + ] + }, + "return_type": { + "multiple": true, + "required": false, + "types": [ + { + "type": "!", + "named": false + }, + { + "type": "array_type", + "named": true + }, + { + "type": "dictionary_type", + "named": true + }, + { + "type": "existential_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "metatype", + "named": true + }, + { + "type": "opaque_type", + "named": true + }, + { + "type": "optional_type", + "named": true + }, + { + "type": "protocol_composition_type", + "named": true + }, + { + "type": "suppressed_constraint", + "named": true + }, + { + "type": "tuple_type", + "named": true + }, + { + "type": "type_modifiers", + "named": true + }, + { + "type": "type_pack_expansion", + "named": true + }, + { + "type": "type_parameter_pack", + "named": true + }, + { + "type": "user_type", + "named": true + } + ] + } + }, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "attribute", + "named": true + }, + { + "type": "inheritance_modifier", + "named": true + }, + { + "type": "modifiers", + "named": true + }, + { + "type": "ownership_modifier", + "named": true + }, + { + "type": "parameter", + "named": true + }, + { + "type": "property_behavior_modifier", + "named": true + }, + { + "type": "throws", + "named": true + }, + { + "type": "type_constraints", + "named": true + }, + { + "type": "type_parameters", + "named": true + } + ] + } + }, + { + "type": "function_modifier", + "named": true, + "fields": {} + }, + { + "type": "function_type", + "named": true, + "fields": { + "name": { + "multiple": false, + "required": true, + "types": [ + { + "type": "array_type", + "named": true + }, + { + "type": "dictionary_type", + "named": true + }, + { + "type": "existential_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "metatype", + "named": true + }, + { + "type": "opaque_type", + "named": true + }, + { + "type": "optional_type", + "named": true + }, + { + "type": "protocol_composition_type", + "named": true + }, + { + "type": "suppressed_constraint", + "named": true + }, + { + "type": "tuple_type", + "named": true + }, + { + "type": "type_pack_expansion", + "named": true + }, + { + "type": "type_parameter_pack", + "named": true + }, + { + "type": "user_type", + "named": true + } + ] + }, + "params": { + "multiple": false, + "required": true, + "types": [ + { + "type": "array_type", + "named": true + }, + { + "type": "dictionary_type", + "named": true + }, + { + "type": "existential_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "metatype", + "named": true + }, + { + "type": "opaque_type", + "named": true + }, + { + "type": "optional_type", + "named": true + }, + { + "type": "protocol_composition_type", + "named": true + }, + { + "type": "suppressed_constraint", + "named": true + }, + { + "type": "tuple_type", + "named": true + }, + { + "type": "type_pack_expansion", + "named": true + }, + { + "type": "type_parameter_pack", + "named": true + }, + { + "type": "user_type", + "named": true + } + ] + }, + "return_type": { + "multiple": true, + "required": true, + "types": [ + { + "type": "array_type", + "named": true + }, + { + "type": "dictionary_type", + "named": true + }, + { + "type": "existential_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "metatype", + "named": true + }, + { + "type": "opaque_type", + "named": true + }, + { + "type": "optional_type", + "named": true + }, + { + "type": "protocol_composition_type", + "named": true + }, + { + "type": "suppressed_constraint", + "named": true + }, + { + "type": "tuple_type", + "named": true + }, + { + "type": "type_modifiers", + "named": true + }, + { + "type": "type_pack_expansion", + "named": true + }, + { + "type": "type_parameter_pack", + "named": true + }, + { + "type": "user_type", + "named": true + } + ] + } + }, + "children": { + "multiple": false, + "required": false, + "types": [ + { + "type": "throws", + "named": true + } + ] + } + }, + { + "type": "getter_specifier", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "mutation_modifier", + "named": true + }, + { + "type": "throws", + "named": true + } + ] + } + }, + { + "type": "guard_statement", + "named": true, + "fields": { + "bound_identifier": { + "multiple": true, + "required": false, + "types": [ + { + "type": "simple_identifier", + "named": true + } + ] + }, + "condition": { + "multiple": true, + "required": true, + "types": [ + { + "type": "!=", + "named": false + }, + { + "type": "!==", + "named": false + }, + { + "type": "%", + "named": false + }, + { + "type": "%=", + "named": false + }, + { + "type": "&", + "named": false + }, + { + "type": "(", + "named": false + }, + { + "type": ")", + "named": false + }, + { + "type": "*", + "named": false + }, + { + "type": "*=", + "named": false + }, + { + "type": "+", + "named": false + }, + { + "type": "++", + "named": false + }, + { + "type": "+=", + "named": false + }, + { + "type": ",", + "named": false + }, + { + "type": "-", + "named": false + }, + { + "type": "--", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": ".", + "named": false + }, + { + "type": "/", + "named": false + }, + { + "type": "/=", + "named": false + }, + { + "type": ":", + "named": false + }, + { + "type": "<", + "named": false + }, + { + "type": "<<", + "named": false + }, + { + "type": "<=", + "named": false + }, + { + "type": "=", + "named": false + }, + { + "type": "==", + "named": false + }, + { + "type": "===", + "named": false + }, + { + "type": ">", + "named": false + }, + { + "type": ">=", + "named": false + }, + { + "type": ">>", + "named": false + }, + { + "type": "?", + "named": false + }, + { + "type": "^", + "named": false + }, + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "array_type", + "named": true + }, + { + "type": "as", + "named": false + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "async", + "named": false + }, + { + "type": "availability_condition", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "case", + "named": false + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "dictionary_type", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "existential_type", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "is", + "named": false + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "metatype", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil", + "named": false + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "opaque_type", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "optional_type", + "named": true + }, + { + "type": "pattern", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "protocol_composition_type", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "suppressed_constraint", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "tuple_type", + "named": true + }, + { + "type": "type_annotation", + "named": true + }, + { + "type": "type_modifiers", + "named": true + }, + { + "type": "type_pack_expansion", + "named": true + }, + { + "type": "type_parameter_pack", + "named": true + }, + { + "type": "user_type", + "named": true + }, + { + "type": "value_binding_pattern", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + }, + { + "type": "where_clause", + "named": true + }, + { + "type": "wildcard_pattern", + "named": true + }, + { + "type": "|", + "named": false + }, + { + "type": "~", + "named": false + } + ] + }, + "name": { + "multiple": true, + "required": false, + "types": [ + { + "type": "array_type", + "named": true + }, + { + "type": "dictionary_type", + "named": true + }, + { + "type": "existential_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "metatype", + "named": true + }, + { + "type": "opaque_type", + "named": true + }, + { + "type": "optional_type", + "named": true + }, + { + "type": "protocol_composition_type", + "named": true + }, + { + "type": "suppressed_constraint", + "named": true + }, + { + "type": "tuple_type", + "named": true + }, + { + "type": "type_pack_expansion", + "named": true + }, + { + "type": "type_parameter_pack", + "named": true + }, + { + "type": "user_type", + "named": true + } + ] + } + }, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "else", + "named": true + }, + { + "type": "statements", + "named": true + } + ] + } + }, + { + "type": "identifier", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "simple_identifier", + "named": true + } + ] + } + }, + { + "type": "if_statement", + "named": true, + "fields": { + "bound_identifier": { + "multiple": true, + "required": false, + "types": [ + { + "type": "simple_identifier", + "named": true + } + ] + }, + "condition": { + "multiple": true, + "required": true, + "types": [ + { + "type": "!=", + "named": false + }, + { + "type": "!==", + "named": false + }, + { + "type": "%", + "named": false + }, + { + "type": "%=", + "named": false + }, + { + "type": "&", + "named": false + }, + { + "type": "(", + "named": false + }, + { + "type": ")", + "named": false + }, + { + "type": "*", + "named": false + }, + { + "type": "*=", + "named": false + }, + { + "type": "+", + "named": false + }, + { + "type": "++", + "named": false + }, + { + "type": "+=", + "named": false + }, + { + "type": ",", + "named": false + }, + { + "type": "-", + "named": false + }, + { + "type": "--", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": ".", + "named": false + }, + { + "type": "/", + "named": false + }, + { + "type": "/=", + "named": false + }, + { + "type": ":", + "named": false + }, + { + "type": "<", + "named": false + }, + { + "type": "<<", + "named": false + }, + { + "type": "<=", + "named": false + }, + { + "type": "=", + "named": false + }, + { + "type": "==", + "named": false + }, + { + "type": "===", + "named": false + }, + { + "type": ">", + "named": false + }, + { + "type": ">=", + "named": false + }, + { + "type": ">>", + "named": false + }, + { + "type": "?", + "named": false + }, + { + "type": "^", + "named": false + }, + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "array_type", + "named": true + }, + { + "type": "as", + "named": false + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "async", + "named": false + }, + { + "type": "availability_condition", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "case", + "named": false + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "dictionary_type", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "existential_type", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "is", + "named": false + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "metatype", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil", + "named": false + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "opaque_type", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "optional_type", + "named": true + }, + { + "type": "pattern", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "protocol_composition_type", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "suppressed_constraint", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "tuple_type", + "named": true + }, + { + "type": "type_annotation", + "named": true + }, + { + "type": "type_modifiers", + "named": true + }, + { + "type": "type_pack_expansion", + "named": true + }, + { + "type": "type_parameter_pack", + "named": true + }, + { + "type": "user_type", + "named": true + }, + { + "type": "value_binding_pattern", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + }, + { + "type": "where_clause", + "named": true + }, + { + "type": "wildcard_pattern", + "named": true + }, + { + "type": "|", + "named": false + }, + { + "type": "~", + "named": false + } + ] + }, + "name": { + "multiple": true, + "required": false, + "types": [ + { + "type": "array_type", + "named": true + }, + { + "type": "dictionary_type", + "named": true + }, + { + "type": "existential_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "metatype", + "named": true + }, + { + "type": "opaque_type", + "named": true + }, + { + "type": "optional_type", + "named": true + }, + { + "type": "protocol_composition_type", + "named": true + }, + { + "type": "suppressed_constraint", + "named": true + }, + { + "type": "tuple_type", + "named": true + }, + { + "type": "type_pack_expansion", + "named": true + }, + { + "type": "type_parameter_pack", + "named": true + }, + { + "type": "user_type", + "named": true + } + ] + } + }, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "else", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "statements", + "named": true + } + ] + } + }, + { + "type": "import_declaration", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "identifier", + "named": true + }, + { + "type": "modifiers", + "named": true + } + ] + } + }, + { + "type": "infix_expression", + "named": true, + "fields": { + "lhs": { + "multiple": true, + "required": true, + "types": [ + { + "type": "!=", + "named": false + }, + { + "type": "!==", + "named": false + }, + { + "type": "%", + "named": false + }, + { + "type": "%=", + "named": false + }, + { + "type": "&", + "named": false + }, + { + "type": "*", + "named": false + }, + { + "type": "*=", + "named": false + }, + { + "type": "+", + "named": false + }, + { + "type": "++", + "named": false + }, + { + "type": "+=", + "named": false + }, + { + "type": "-", + "named": false + }, + { + "type": "--", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": "/", + "named": false + }, + { + "type": "/=", + "named": false + }, + { + "type": "<", + "named": false + }, + { + "type": "<<", + "named": false + }, + { + "type": "<=", + "named": false + }, + { + "type": "=", + "named": false + }, + { + "type": "==", + "named": false + }, + { + "type": "===", + "named": false + }, + { + "type": ">", + "named": false + }, + { + "type": ">=", + "named": false + }, + { + "type": ">>", + "named": false + }, + { + "type": "?", + "named": false + }, + { + "type": "^", + "named": false + }, + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil", + "named": false + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + }, + { + "type": "|", + "named": false + }, + { + "type": "~", + "named": false + } + ] + }, + "op": { + "multiple": false, + "required": true, + "types": [ + { + "type": "custom_operator", + "named": true + } + ] + }, + "rhs": { + "multiple": true, + "required": true, + "types": [ + { + "type": "!=", + "named": false + }, + { + "type": "!==", + "named": false + }, + { + "type": "%", + "named": false + }, + { + "type": "%=", + "named": false + }, + { + "type": "&", + "named": false + }, + { + "type": "*", + "named": false + }, + { + "type": "*=", + "named": false + }, + { + "type": "+", + "named": false + }, + { + "type": "++", + "named": false + }, + { + "type": "+=", + "named": false + }, + { + "type": "-", + "named": false + }, + { + "type": "--", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": "/", + "named": false + }, + { + "type": "/=", + "named": false + }, + { + "type": "<", + "named": false + }, + { + "type": "<<", + "named": false + }, + { + "type": "<=", + "named": false + }, + { + "type": "=", + "named": false + }, + { + "type": "==", + "named": false + }, + { + "type": "===", + "named": false + }, + { + "type": ">", + "named": false + }, + { + "type": ">=", + "named": false + }, + { + "type": ">>", + "named": false + }, + { + "type": "?", + "named": false + }, + { + "type": "^", + "named": false + }, + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil", + "named": false + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + }, + { + "type": "|", + "named": false + }, + { + "type": "~", + "named": false + } + ] + } + } + }, + { + "type": "inheritance_constraint", + "named": true, + "fields": { + "constrained_type": { + "multiple": true, + "required": true, + "types": [ + { + "type": ".", + "named": false + }, + { + "type": "array_type", + "named": true + }, + { + "type": "dictionary_type", + "named": true + }, + { + "type": "existential_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "identifier", + "named": true + }, + { + "type": "metatype", + "named": true + }, + { + "type": "opaque_type", + "named": true + }, + { + "type": "optional_type", + "named": true + }, + { + "type": "protocol_composition_type", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "suppressed_constraint", + "named": true + }, + { + "type": "tuple_type", + "named": true + }, + { + "type": "type_pack_expansion", + "named": true + }, + { + "type": "type_parameter_pack", + "named": true + }, + { + "type": "user_type", + "named": true + } + ] + }, + "inherits_from": { + "multiple": true, + "required": true, + "types": [ + { + "type": "!", + "named": false + }, + { + "type": "array_type", + "named": true + }, + { + "type": "dictionary_type", + "named": true + }, + { + "type": "existential_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "metatype", + "named": true + }, + { + "type": "opaque_type", + "named": true + }, + { + "type": "optional_type", + "named": true + }, + { + "type": "protocol_composition_type", + "named": true + }, + { + "type": "suppressed_constraint", + "named": true + }, + { + "type": "tuple_type", + "named": true + }, + { + "type": "type_modifiers", + "named": true + }, + { + "type": "type_pack_expansion", + "named": true + }, + { + "type": "type_parameter_pack", + "named": true + }, + { + "type": "user_type", + "named": true + } + ] + }, + "name": { + "multiple": false, + "required": true, + "types": [ + { + "type": "array_type", + "named": true + }, + { + "type": "dictionary_type", + "named": true + }, + { + "type": "existential_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "metatype", + "named": true + }, + { + "type": "opaque_type", + "named": true + }, + { + "type": "optional_type", + "named": true + }, + { + "type": "protocol_composition_type", + "named": true + }, + { + "type": "suppressed_constraint", + "named": true + }, + { + "type": "tuple_type", + "named": true + }, + { + "type": "type_pack_expansion", + "named": true + }, + { + "type": "type_parameter_pack", + "named": true + }, + { + "type": "user_type", + "named": true + } + ] + } + }, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "attribute", + "named": true + } + ] + } + }, + { + "type": "inheritance_modifier", + "named": true, + "fields": {} + }, + { + "type": "inheritance_specifier", + "named": true, + "fields": { + "inherits_from": { + "multiple": false, + "required": true, + "types": [ + { + "type": "function_type", + "named": true + }, + { + "type": "suppressed_constraint", + "named": true + }, + { + "type": "user_type", + "named": true + } + ] + } + } + }, + { + "type": "init_declaration", + "named": true, + "fields": { + "body": { + "multiple": false, + "required": false, + "types": [ + { + "type": "function_body", + "named": true + } + ] + }, + "default_value": { + "multiple": true, + "required": false, + "types": [ + { + "type": "!=", + "named": false + }, + { + "type": "!==", + "named": false + }, + { + "type": "%", + "named": false + }, + { + "type": "%=", + "named": false + }, + { + "type": "&", + "named": false + }, + { + "type": "*", + "named": false + }, + { + "type": "*=", + "named": false + }, + { + "type": "+", + "named": false + }, + { + "type": "++", + "named": false + }, + { + "type": "+=", + "named": false + }, + { + "type": "-", + "named": false + }, + { + "type": "--", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": "/", + "named": false + }, + { + "type": "/=", + "named": false + }, + { + "type": "<", + "named": false + }, + { + "type": "<<", + "named": false + }, + { + "type": "<=", + "named": false + }, + { + "type": "=", + "named": false + }, + { + "type": "==", + "named": false + }, + { + "type": "===", + "named": false + }, + { + "type": ">", + "named": false + }, + { + "type": ">=", + "named": false + }, + { + "type": ">>", + "named": false + }, + { + "type": "?", + "named": false + }, + { + "type": "^", + "named": false + }, + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil", + "named": false + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + }, + { + "type": "|", + "named": false + }, + { + "type": "~", + "named": false + } + ] + }, + "name": { + "multiple": false, + "required": true, + "types": [ + { + "type": "init", + "named": false + } + ] + } + }, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "attribute", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "modifiers", + "named": true + }, + { + "type": "parameter", + "named": true + }, + { + "type": "throws", + "named": true + }, + { + "type": "type_constraints", + "named": true + }, + { + "type": "type_parameters", + "named": true + } + ] + } + }, + { + "type": "interpolated_expression", + "named": true, + "fields": { + "name": { + "multiple": false, + "required": false, + "types": [ + { + "type": "value_argument_label", + "named": true + } + ] + }, + "reference_specifier": { + "multiple": true, + "required": false, + "types": [ + { + "type": "value_argument_label", + "named": true + } + ] + }, + "value": { + "multiple": true, + "required": false, + "types": [ + { + "type": "!=", + "named": false + }, + { + "type": "!==", + "named": false + }, + { + "type": "%", + "named": false + }, + { + "type": "%=", + "named": false + }, + { + "type": "&", + "named": false + }, + { + "type": "*", + "named": false + }, + { + "type": "*=", + "named": false + }, + { + "type": "+", + "named": false + }, + { + "type": "++", + "named": false + }, + { + "type": "+=", + "named": false + }, + { + "type": "-", + "named": false + }, + { + "type": "--", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": "/", + "named": false + }, + { + "type": "/=", + "named": false + }, + { + "type": "<", + "named": false + }, + { + "type": "<<", + "named": false + }, + { + "type": "<=", + "named": false + }, + { + "type": "=", + "named": false + }, + { + "type": "==", + "named": false + }, + { + "type": "===", + "named": false + }, + { + "type": ">", + "named": false + }, + { + "type": ">=", + "named": false + }, + { + "type": ">>", + "named": false + }, + { + "type": "?", + "named": false + }, + { + "type": "^", + "named": false + }, + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil", + "named": false + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + }, + { + "type": "|", + "named": false + }, + { + "type": "~", + "named": false + } + ] + } + }, + "children": { + "multiple": false, + "required": false, + "types": [ + { + "type": "type_modifiers", + "named": true + } + ] + } + }, + { + "type": "key_path_expression", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "array_type", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "dictionary_type", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "type_arguments", + "named": true + }, + { + "type": "type_identifier", + "named": true + }, + { + "type": "value_argument", + "named": true + } + ] + } + }, + { + "type": "key_path_string_expression", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": false, + "types": [ + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + } + ] + } + }, + { + "type": "lambda_function_type", + "named": true, + "fields": { + "name": { + "multiple": false, + "required": false, + "types": [ + { + "type": "array_type", + "named": true + }, + { + "type": "dictionary_type", + "named": true + }, + { + "type": "existential_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "metatype", + "named": true + }, + { + "type": "opaque_type", + "named": true + }, + { + "type": "optional_type", + "named": true + }, + { + "type": "protocol_composition_type", + "named": true + }, + { + "type": "suppressed_constraint", + "named": true + }, + { + "type": "tuple_type", + "named": true + }, + { + "type": "type_pack_expansion", + "named": true + }, + { + "type": "type_parameter_pack", + "named": true + }, + { + "type": "user_type", + "named": true + } + ] + }, + "return_type": { + "multiple": true, + "required": false, + "types": [ + { + "type": "!", + "named": false + }, + { + "type": "array_type", + "named": true + }, + { + "type": "dictionary_type", + "named": true + }, + { + "type": "existential_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "metatype", + "named": true + }, + { + "type": "opaque_type", + "named": true + }, + { + "type": "optional_type", + "named": true + }, + { + "type": "protocol_composition_type", + "named": true + }, + { + "type": "suppressed_constraint", + "named": true + }, + { + "type": "tuple_type", + "named": true + }, + { + "type": "type_modifiers", + "named": true + }, + { + "type": "type_pack_expansion", + "named": true + }, + { + "type": "type_parameter_pack", + "named": true + }, + { + "type": "user_type", + "named": true + } + ] + } + }, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "lambda_function_type_parameters", + "named": true + }, + { + "type": "throws", + "named": true + } + ] + } + }, + { + "type": "lambda_function_type_parameters", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "lambda_parameter", + "named": true + } + ] + } + }, + { + "type": "lambda_literal", + "named": true, + "fields": { + "captures": { + "multiple": false, + "required": false, + "types": [ + { + "type": "capture_list", + "named": true + } + ] + }, + "type": { + "multiple": false, + "required": false, + "types": [ + { + "type": "lambda_function_type", + "named": true + } + ] + } + }, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "attribute", + "named": true + }, + { + "type": "statements", + "named": true + } + ] + } + }, + { + "type": "lambda_parameter", + "named": true, + "fields": { + "external_name": { + "multiple": false, + "required": false, + "types": [ + { + "type": "simple_identifier", + "named": true + } + ] + }, + "name": { + "multiple": true, + "required": false, + "types": [ + { + "type": "array_type", + "named": true + }, + { + "type": "dictionary_type", + "named": true + }, + { + "type": "existential_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "metatype", + "named": true + }, + { + "type": "opaque_type", + "named": true + }, + { + "type": "optional_type", + "named": true + }, + { + "type": "protocol_composition_type", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "suppressed_constraint", + "named": true + }, + { + "type": "tuple_type", + "named": true + }, + { + "type": "type_pack_expansion", + "named": true + }, + { + "type": "type_parameter_pack", + "named": true + }, + { + "type": "user_type", + "named": true + } + ] + }, + "type": { + "multiple": true, + "required": false, + "types": [ + { + "type": "!", + "named": false + }, + { + "type": "array_type", + "named": true + }, + { + "type": "dictionary_type", + "named": true + }, + { + "type": "existential_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "metatype", + "named": true + }, + { + "type": "opaque_type", + "named": true + }, + { + "type": "optional_type", + "named": true + }, + { + "type": "protocol_composition_type", + "named": true + }, + { + "type": "suppressed_constraint", + "named": true + }, + { + "type": "tuple_type", + "named": true + }, + { + "type": "type_modifiers", + "named": true + }, + { + "type": "type_pack_expansion", + "named": true + }, + { + "type": "type_parameter_pack", + "named": true + }, + { + "type": "user_type", + "named": true + } + ] + } + }, + "children": { + "multiple": false, + "required": false, + "types": [ + { + "type": "parameter_modifiers", + "named": true + }, + { + "type": "self_expression", + "named": true + } + ] + } + }, + { + "type": "line_str_text", + "named": true, + "fields": {} + }, + { + "type": "line_string_literal", + "named": true, + "fields": { + "interpolation": { + "multiple": true, + "required": false, + "types": [ + { + "type": "interpolated_expression", + "named": true + } + ] + }, + "text": { + "multiple": true, + "required": false, + "types": [ + { + "type": "line_str_text", + "named": true + }, + { + "type": "str_escaped_char", + "named": true + } + ] + } + } + }, + { + "type": "macro_declaration", + "named": true, + "fields": { + "default_value": { + "multiple": true, + "required": false, + "types": [ + { + "type": "!=", + "named": false + }, + { + "type": "!==", + "named": false + }, + { + "type": "%", + "named": false + }, + { + "type": "%=", + "named": false + }, + { + "type": "&", + "named": false + }, + { + "type": "*", + "named": false + }, + { + "type": "*=", + "named": false + }, + { + "type": "+", + "named": false + }, + { + "type": "++", + "named": false + }, + { + "type": "+=", + "named": false + }, + { + "type": "-", + "named": false + }, + { + "type": "--", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": "/", + "named": false + }, + { + "type": "/=", + "named": false + }, + { + "type": "<", + "named": false + }, + { + "type": "<<", + "named": false + }, + { + "type": "<=", + "named": false + }, + { + "type": "=", + "named": false + }, + { + "type": "==", + "named": false + }, + { + "type": "===", + "named": false + }, + { + "type": ">", + "named": false + }, + { + "type": ">=", + "named": false + }, + { + "type": ">>", + "named": false + }, + { + "type": "?", + "named": false + }, + { + "type": "^", + "named": false + }, + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil", + "named": false + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + }, + { + "type": "|", + "named": false + }, + { + "type": "~", + "named": false + } + ] + }, + "definition": { + "multiple": false, + "required": false, + "types": [ + { + "type": "macro_definition", + "named": true + } + ] + } + }, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "array_type", + "named": true + }, + { + "type": "attribute", + "named": true + }, + { + "type": "dictionary_type", + "named": true + }, + { + "type": "existential_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "metatype", + "named": true + }, + { + "type": "modifiers", + "named": true + }, + { + "type": "opaque_type", + "named": true + }, + { + "type": "optional_type", + "named": true + }, + { + "type": "parameter", + "named": true + }, + { + "type": "protocol_composition_type", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "suppressed_constraint", + "named": true + }, + { + "type": "tuple_type", + "named": true + }, + { + "type": "type_constraints", + "named": true + }, + { + "type": "type_pack_expansion", + "named": true + }, + { + "type": "type_parameter_pack", + "named": true + }, + { + "type": "type_parameters", + "named": true + }, + { + "type": "user_type", + "named": true + } + ] + } + }, + { + "type": "macro_definition", + "named": true, + "fields": { + "body": { + "multiple": true, + "required": true, + "types": [ + { + "type": "!=", + "named": false + }, + { + "type": "!==", + "named": false + }, + { + "type": "%", + "named": false + }, + { + "type": "%=", + "named": false + }, + { + "type": "&", + "named": false + }, + { + "type": "*", + "named": false + }, + { + "type": "*=", + "named": false + }, + { + "type": "+", + "named": false + }, + { + "type": "++", + "named": false + }, + { + "type": "+=", + "named": false + }, + { + "type": "-", + "named": false + }, + { + "type": "--", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": "/", + "named": false + }, + { + "type": "/=", + "named": false + }, + { + "type": "<", + "named": false + }, + { + "type": "<<", + "named": false + }, + { + "type": "<=", + "named": false + }, + { + "type": "=", + "named": false + }, + { + "type": "==", + "named": false + }, + { + "type": "===", + "named": false + }, + { + "type": ">", + "named": false + }, + { + "type": ">=", + "named": false + }, + { + "type": ">>", + "named": false + }, + { + "type": "?", + "named": false + }, + { + "type": "^", + "named": false + }, + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "external_macro_definition", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil", + "named": false + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + }, + { + "type": "|", + "named": false + }, + { + "type": "~", + "named": false + } + ] + } + } + }, + { + "type": "macro_invocation", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "call_suffix", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "type_parameters", + "named": true + } + ] + } + }, + { + "type": "member_modifier", + "named": true, + "fields": {} + }, + { + "type": "metatype", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "array_type", + "named": true + }, + { + "type": "dictionary_type", + "named": true + }, + { + "type": "existential_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "metatype", + "named": true + }, + { + "type": "opaque_type", + "named": true + }, + { + "type": "optional_type", + "named": true + }, + { + "type": "protocol_composition_type", + "named": true + }, + { + "type": "suppressed_constraint", + "named": true + }, + { + "type": "tuple_type", + "named": true + }, + { + "type": "type_pack_expansion", + "named": true + }, + { + "type": "type_parameter_pack", + "named": true + }, + { + "type": "user_type", + "named": true + } + ] + } + }, + { + "type": "modifiers", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "attribute", + "named": true + }, + { + "type": "function_modifier", + "named": true + }, + { + "type": "inheritance_modifier", + "named": true + }, + { + "type": "member_modifier", + "named": true + }, + { + "type": "mutation_modifier", + "named": true + }, + { + "type": "ownership_modifier", + "named": true + }, + { + "type": "parameter_modifier", + "named": true + }, + { + "type": "property_behavior_modifier", + "named": true + }, + { + "type": "property_modifier", + "named": true + }, + { + "type": "visibility_modifier", + "named": true + } + ] + } + }, + { + "type": "modify_specifier", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": false, + "types": [ + { + "type": "mutation_modifier", + "named": true + } + ] + } + }, + { + "type": "multi_line_str_text", + "named": true, + "fields": {} + }, + { + "type": "multi_line_string_literal", + "named": true, + "fields": { + "interpolation": { + "multiple": true, + "required": false, + "types": [ + { + "type": "interpolated_expression", + "named": true + } + ] + }, + "text": { + "multiple": true, + "required": false, + "types": [ + { + "type": "\"", + "named": false + }, + { + "type": "multi_line_str_text", + "named": true + }, + { + "type": "str_escaped_char", + "named": true + } + ] + } + } + }, + { + "type": "multiplicative_expression", + "named": true, + "fields": { + "lhs": { + "multiple": true, + "required": true, + "types": [ + { + "type": "!=", + "named": false + }, + { + "type": "!==", + "named": false + }, + { + "type": "%", + "named": false + }, + { + "type": "%=", + "named": false + }, + { + "type": "&", + "named": false + }, + { + "type": "*", + "named": false + }, + { + "type": "*=", + "named": false + }, + { + "type": "+", + "named": false + }, + { + "type": "++", + "named": false + }, + { + "type": "+=", + "named": false + }, + { + "type": "-", + "named": false + }, + { + "type": "--", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": "/", + "named": false + }, + { + "type": "/=", + "named": false + }, + { + "type": "<", + "named": false + }, + { + "type": "<<", + "named": false + }, + { + "type": "<=", + "named": false + }, + { + "type": "=", + "named": false + }, + { + "type": "==", + "named": false + }, + { + "type": "===", + "named": false + }, + { + "type": ">", + "named": false + }, + { + "type": ">=", + "named": false + }, + { + "type": ">>", + "named": false + }, + { + "type": "?", + "named": false + }, + { + "type": "^", + "named": false + }, + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil", + "named": false + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + }, + { + "type": "|", + "named": false + }, + { + "type": "~", + "named": false + } + ] + }, + "op": { + "multiple": false, + "required": true, + "types": [ + { + "type": "%", + "named": false + }, + { + "type": "*", + "named": false + }, + { + "type": "/", + "named": false + } + ] + }, + "rhs": { + "multiple": true, + "required": true, + "types": [ + { + "type": "!=", + "named": false + }, + { + "type": "!==", + "named": false + }, + { + "type": "%", + "named": false + }, + { + "type": "%=", + "named": false + }, + { + "type": "&", + "named": false + }, + { + "type": "*", + "named": false + }, + { + "type": "*=", + "named": false + }, + { + "type": "+", + "named": false + }, + { + "type": "++", + "named": false + }, + { + "type": "+=", + "named": false + }, + { + "type": "-", + "named": false + }, + { + "type": "--", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": "/", + "named": false + }, + { + "type": "/=", + "named": false + }, + { + "type": "<", + "named": false + }, + { + "type": "<<", + "named": false + }, + { + "type": "<=", + "named": false + }, + { + "type": "=", + "named": false + }, + { + "type": "==", + "named": false + }, + { + "type": "===", + "named": false + }, + { + "type": ">", + "named": false + }, + { + "type": ">=", + "named": false + }, + { + "type": ">>", + "named": false + }, + { + "type": "?", + "named": false + }, + { + "type": "^", + "named": false + }, + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil", + "named": false + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + }, + { + "type": "|", + "named": false + }, + { + "type": "~", + "named": false + } + ] + } + } + }, + { + "type": "mutation_modifier", + "named": true, + "fields": {} + }, + { + "type": "navigation_expression", + "named": true, + "fields": { + "element": { + "multiple": false, + "required": false, + "types": [ + { + "type": "dictionary_type", + "named": true + }, + { + "type": "existential_type", + "named": true + }, + { + "type": "opaque_type", + "named": true + } + ] + }, + "suffix": { + "multiple": false, + "required": true, + "types": [ + { + "type": "navigation_suffix", + "named": true + } + ] + }, + "target": { + "multiple": true, + "required": true, + "types": [ + { + "type": "!=", + "named": false + }, + { + "type": "!==", + "named": false + }, + { + "type": "%", + "named": false + }, + { + "type": "%=", + "named": false + }, + { + "type": "&", + "named": false + }, + { + "type": "(", + "named": false + }, + { + "type": ")", + "named": false + }, + { + "type": "*", + "named": false + }, + { + "type": "*=", + "named": false + }, + { + "type": "+", + "named": false + }, + { + "type": "++", + "named": false + }, + { + "type": "+=", + "named": false + }, + { + "type": "-", + "named": false + }, + { + "type": "--", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": "/", + "named": false + }, + { + "type": "/=", + "named": false + }, + { + "type": "<", + "named": false + }, + { + "type": "<<", + "named": false + }, + { + "type": "<=", + "named": false + }, + { + "type": "=", + "named": false + }, + { + "type": "==", + "named": false + }, + { + "type": "===", + "named": false + }, + { + "type": ">", + "named": false + }, + { + "type": ">=", + "named": false + }, + { + "type": ">>", + "named": false + }, + { + "type": "?", + "named": false + }, + { + "type": "^", + "named": false + }, + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "array_type", + "named": true + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "dictionary_type", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "existential_type", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil", + "named": false + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "opaque_type", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "user_type", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + }, + { + "type": "|", + "named": false + }, + { + "type": "~", + "named": false + } + ] + } + } + }, + { + "type": "navigation_suffix", + "named": true, + "fields": { + "suffix": { + "multiple": false, + "required": true, + "types": [ + { + "type": "integer_literal", + "named": true + }, + { + "type": "simple_identifier", + "named": true + } + ] + } + } + }, + { + "type": "nil_coalescing_expression", + "named": true, + "fields": { + "if_nil": { + "multiple": true, + "required": true, + "types": [ + { + "type": "!=", + "named": false + }, + { + "type": "!==", + "named": false + }, + { + "type": "%", + "named": false + }, + { + "type": "%=", + "named": false + }, + { + "type": "&", + "named": false + }, + { + "type": "*", + "named": false + }, + { + "type": "*=", + "named": false + }, + { + "type": "+", + "named": false + }, + { + "type": "++", + "named": false + }, + { + "type": "+=", + "named": false + }, + { + "type": "-", + "named": false + }, + { + "type": "--", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": "/", + "named": false + }, + { + "type": "/=", + "named": false + }, + { + "type": "<", + "named": false + }, + { + "type": "<<", + "named": false + }, + { + "type": "<=", + "named": false + }, + { + "type": "=", + "named": false + }, + { + "type": "==", + "named": false + }, + { + "type": "===", + "named": false + }, + { + "type": ">", + "named": false + }, + { + "type": ">=", + "named": false + }, + { + "type": ">>", + "named": false + }, + { + "type": "?", + "named": false + }, + { + "type": "^", + "named": false + }, + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil", + "named": false + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + }, + { + "type": "|", + "named": false + }, + { + "type": "~", + "named": false + } + ] + }, + "value": { + "multiple": true, + "required": true, + "types": [ + { + "type": "!=", + "named": false + }, + { + "type": "!==", + "named": false + }, + { + "type": "%", + "named": false + }, + { + "type": "%=", + "named": false + }, + { + "type": "&", + "named": false + }, + { + "type": "*", + "named": false + }, + { + "type": "*=", + "named": false + }, + { + "type": "+", + "named": false + }, + { + "type": "++", + "named": false + }, + { + "type": "+=", + "named": false + }, + { + "type": "-", + "named": false + }, + { + "type": "--", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": "/", + "named": false + }, + { + "type": "/=", + "named": false + }, + { + "type": "<", + "named": false + }, + { + "type": "<<", + "named": false + }, + { + "type": "<=", + "named": false + }, + { + "type": "=", + "named": false + }, + { + "type": "==", + "named": false + }, + { + "type": "===", + "named": false + }, + { + "type": ">", + "named": false + }, + { + "type": ">=", + "named": false + }, + { + "type": ">>", + "named": false + }, + { + "type": "?", + "named": false + }, + { + "type": "^", + "named": false + }, + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil", + "named": false + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + }, + { + "type": "|", + "named": false + }, + { + "type": "~", + "named": false + } + ] + } + } + }, + { + "type": "opaque_type", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "array_type", + "named": true + }, + { + "type": "dictionary_type", + "named": true + }, + { + "type": "existential_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "metatype", + "named": true + }, + { + "type": "opaque_type", + "named": true + }, + { + "type": "optional_type", + "named": true + }, + { + "type": "protocol_composition_type", + "named": true + }, + { + "type": "suppressed_constraint", + "named": true + }, + { + "type": "tuple_type", + "named": true + }, + { + "type": "type_pack_expansion", + "named": true + }, + { + "type": "type_parameter_pack", + "named": true + }, + { + "type": "user_type", + "named": true + } + ] + } + }, + { + "type": "open_end_range_expression", + "named": true, + "fields": { + "start": { + "multiple": true, + "required": true, + "types": [ + { + "type": "!=", + "named": false + }, + { + "type": "!==", + "named": false + }, + { + "type": "%", + "named": false + }, + { + "type": "%=", + "named": false + }, + { + "type": "&", + "named": false + }, + { + "type": "*", + "named": false + }, + { + "type": "*=", + "named": false + }, + { + "type": "+", + "named": false + }, + { + "type": "++", + "named": false + }, + { + "type": "+=", + "named": false + }, + { + "type": "-", + "named": false + }, + { + "type": "--", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": "/", + "named": false + }, + { + "type": "/=", + "named": false + }, + { + "type": "<", + "named": false + }, + { + "type": "<<", + "named": false + }, + { + "type": "<=", + "named": false + }, + { + "type": "=", + "named": false + }, + { + "type": "==", + "named": false + }, + { + "type": "===", + "named": false + }, + { + "type": ">", + "named": false + }, + { + "type": ">=", + "named": false + }, + { + "type": ">>", + "named": false + }, + { + "type": "?", + "named": false + }, + { + "type": "^", + "named": false + }, + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil", + "named": false + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + }, + { + "type": "|", + "named": false + }, + { + "type": "~", + "named": false + } + ] + } + } + }, + { + "type": "open_start_range_expression", + "named": true, + "fields": { + "end": { + "multiple": true, + "required": true, + "types": [ + { + "type": "!=", + "named": false + }, + { + "type": "!==", + "named": false + }, + { + "type": "%", + "named": false + }, + { + "type": "%=", + "named": false + }, + { + "type": "&", + "named": false + }, + { + "type": "*", + "named": false + }, + { + "type": "*=", + "named": false + }, + { + "type": "+", + "named": false + }, + { + "type": "++", + "named": false + }, + { + "type": "+=", + "named": false + }, + { + "type": "-", + "named": false + }, + { + "type": "--", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": "/", + "named": false + }, + { + "type": "/=", + "named": false + }, + { + "type": "<", + "named": false + }, + { + "type": "<<", + "named": false + }, + { + "type": "<=", + "named": false + }, + { + "type": "=", + "named": false + }, + { + "type": "==", + "named": false + }, + { + "type": "===", + "named": false + }, + { + "type": ">", + "named": false + }, + { + "type": ">=", + "named": false + }, + { + "type": ">>", + "named": false + }, + { + "type": "?", + "named": false + }, + { + "type": "^", + "named": false + }, + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil", + "named": false + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + }, + { + "type": "|", + "named": false + }, + { + "type": "~", + "named": false + } + ] + } + } + }, + { + "type": "operator_declaration", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "bang", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "deprecated_operator_declaration_body", + "named": true + }, + { + "type": "simple_identifier", + "named": true + } + ] + } + }, + { + "type": "optional_type", + "named": true, + "fields": { + "wrapped": { + "multiple": false, + "required": true, + "types": [ + { + "type": "array_type", + "named": true + }, + { + "type": "dictionary_type", + "named": true + }, + { + "type": "tuple_type", + "named": true + }, + { + "type": "user_type", + "named": true + } + ] + } + } + }, + { + "type": "ownership_modifier", + "named": true, + "fields": {} + }, + { + "type": "parameter", + "named": true, + "fields": { + "external_name": { + "multiple": false, + "required": false, + "types": [ + { + "type": "simple_identifier", + "named": true + } + ] + }, + "name": { + "multiple": true, + "required": true, + "types": [ + { + "type": "array_type", + "named": true + }, + { + "type": "dictionary_type", + "named": true + }, + { + "type": "existential_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "metatype", + "named": true + }, + { + "type": "opaque_type", + "named": true + }, + { + "type": "optional_type", + "named": true + }, + { + "type": "protocol_composition_type", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "suppressed_constraint", + "named": true + }, + { + "type": "tuple_type", + "named": true + }, + { + "type": "type_pack_expansion", + "named": true + }, + { + "type": "type_parameter_pack", + "named": true + }, + { + "type": "user_type", + "named": true + } + ] + }, + "type": { + "multiple": true, + "required": true, + "types": [ + { + "type": "!", + "named": false + }, + { + "type": "array_type", + "named": true + }, + { + "type": "dictionary_type", + "named": true + }, + { + "type": "existential_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "metatype", + "named": true + }, + { + "type": "opaque_type", + "named": true + }, + { + "type": "optional_type", + "named": true + }, + { + "type": "protocol_composition_type", + "named": true + }, + { + "type": "suppressed_constraint", + "named": true + }, + { + "type": "tuple_type", + "named": true + }, + { + "type": "type_modifiers", + "named": true + }, + { + "type": "type_pack_expansion", + "named": true + }, + { + "type": "type_parameter_pack", + "named": true + }, + { + "type": "user_type", + "named": true + } + ] + } + }, + "children": { + "multiple": false, + "required": false, + "types": [ + { + "type": "parameter_modifiers", + "named": true + } + ] + } + }, + { + "type": "parameter_modifier", + "named": true, + "fields": {} + }, + { + "type": "parameter_modifiers", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "parameter_modifier", + "named": true + } + ] + } + }, + { + "type": "pattern", + "named": true, + "fields": { + "bound_identifier": { + "multiple": false, + "required": false, + "types": [ + { + "type": "simple_identifier", + "named": true + } + ] + }, + "name": { + "multiple": false, + "required": false, + "types": [ + { + "type": "array_type", + "named": true + }, + { + "type": "dictionary_type", + "named": true + }, + { + "type": "existential_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "metatype", + "named": true + }, + { + "type": "opaque_type", + "named": true + }, + { + "type": "optional_type", + "named": true + }, + { + "type": "protocol_composition_type", + "named": true + }, + { + "type": "suppressed_constraint", + "named": true + }, + { + "type": "tuple_type", + "named": true + }, + { + "type": "type_pack_expansion", + "named": true + }, + { + "type": "type_parameter_pack", + "named": true + }, + { + "type": "user_type", + "named": true + } + ] + } + }, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "pattern", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "type_modifiers", + "named": true + }, + { + "type": "user_type", + "named": true + }, + { + "type": "value_binding_pattern", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + }, + { + "type": "wildcard_pattern", + "named": true + } + ] + } + }, + { + "type": "playground_literal", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + } + ] + } + }, + { + "type": "postfix_expression", + "named": true, + "fields": { + "operation": { + "multiple": false, + "required": true, + "types": [ + { + "type": "++", + "named": false + }, + { + "type": "--", + "named": false + }, + { + "type": "bang", + "named": true + } + ] + }, + "target": { + "multiple": true, + "required": true, + "types": [ + { + "type": "!=", + "named": false + }, + { + "type": "!==", + "named": false + }, + { + "type": "%", + "named": false + }, + { + "type": "%=", + "named": false + }, + { + "type": "&", + "named": false + }, + { + "type": "*", + "named": false + }, + { + "type": "*=", + "named": false + }, + { + "type": "+", + "named": false + }, + { + "type": "++", + "named": false + }, + { + "type": "+=", + "named": false + }, + { + "type": "-", + "named": false + }, + { + "type": "--", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": "/", + "named": false + }, + { + "type": "/=", + "named": false + }, + { + "type": "<", + "named": false + }, + { + "type": "<<", + "named": false + }, + { + "type": "<=", + "named": false + }, + { + "type": "=", + "named": false + }, + { + "type": "==", + "named": false + }, + { + "type": "===", + "named": false + }, + { + "type": ">", + "named": false + }, + { + "type": ">=", + "named": false + }, + { + "type": ">>", + "named": false + }, + { + "type": "?", + "named": false + }, + { + "type": "^", + "named": false + }, + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil", + "named": false + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + }, + { + "type": "|", + "named": false + }, + { + "type": "~", + "named": false + } + ] + } + } + }, + { + "type": "precedence_group_attribute", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "boolean_literal", + "named": true + }, + { + "type": "simple_identifier", + "named": true + } + ] + } + }, + { + "type": "precedence_group_attributes", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "precedence_group_attribute", + "named": true + } + ] + } + }, + { + "type": "precedence_group_declaration", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "precedence_group_attributes", + "named": true + }, + { + "type": "simple_identifier", + "named": true + } + ] + } + }, + { + "type": "prefix_expression", + "named": true, + "fields": { + "operation": { + "multiple": false, + "required": true, + "types": [ + { + "type": "&", + "named": false + }, + { + "type": "+", + "named": false + }, + { + "type": "++", + "named": false + }, + { + "type": "-", + "named": false + }, + { + "type": "--", + "named": false + }, + { + "type": ".", + "named": false + }, + { + "type": "bang", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "~", + "named": false + } + ] + }, + "target": { + "multiple": true, + "required": true, + "types": [ + { + "type": "!=", + "named": false + }, + { + "type": "!==", + "named": false + }, + { + "type": "%", + "named": false + }, + { + "type": "%=", + "named": false + }, + { + "type": "&", + "named": false + }, + { + "type": "*", + "named": false + }, + { + "type": "*=", + "named": false + }, + { + "type": "+", + "named": false + }, + { + "type": "++", + "named": false + }, + { + "type": "+=", + "named": false + }, + { + "type": "-", + "named": false + }, + { + "type": "--", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": "/", + "named": false + }, + { + "type": "/=", + "named": false + }, + { + "type": "<", + "named": false + }, + { + "type": "<<", + "named": false + }, + { + "type": "<=", + "named": false + }, + { + "type": "=", + "named": false + }, + { + "type": "==", + "named": false + }, + { + "type": "===", + "named": false + }, + { + "type": ">", + "named": false + }, + { + "type": ">=", + "named": false + }, + { + "type": ">>", + "named": false + }, + { + "type": "?", + "named": false + }, + { + "type": "^", + "named": false + }, + { + "type": "_expression", + "named": true + }, + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil", + "named": false + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + }, + { + "type": "|", + "named": false + }, + { + "type": "~", + "named": false + } + ] + } + } + }, + { + "type": "property_behavior_modifier", + "named": true, + "fields": {} + }, + { + "type": "property_declaration", + "named": true, + "fields": { + "computed_value": { + "multiple": true, + "required": false, + "types": [ + { + "type": "computed_property", + "named": true + } + ] + }, + "name": { + "multiple": true, + "required": true, + "types": [ + { + "type": "pattern", + "named": true + } + ] + }, + "value": { + "multiple": true, + "required": false, + "types": [ + { + "type": "!=", + "named": false + }, + { + "type": "!==", + "named": false + }, + { + "type": "%", + "named": false + }, + { + "type": "%=", + "named": false + }, + { + "type": "&", + "named": false + }, + { + "type": "*", + "named": false + }, + { + "type": "*=", + "named": false + }, + { + "type": "+", + "named": false + }, + { + "type": "++", + "named": false + }, + { + "type": "+=", + "named": false + }, + { + "type": "-", + "named": false + }, + { + "type": "--", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": "/", + "named": false + }, + { + "type": "/=", + "named": false + }, + { + "type": "<", + "named": false + }, + { + "type": "<<", + "named": false + }, + { + "type": "<=", + "named": false + }, + { + "type": "=", + "named": false + }, + { + "type": "==", + "named": false + }, + { + "type": "===", + "named": false + }, + { + "type": ">", + "named": false + }, + { + "type": ">=", + "named": false + }, + { + "type": ">>", + "named": false + }, + { + "type": "?", + "named": false + }, + { + "type": "^", + "named": false + }, + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil", + "named": false + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + }, + { + "type": "|", + "named": false + }, + { + "type": "~", + "named": false + } + ] + } + }, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "attribute", + "named": true + }, + { + "type": "inheritance_modifier", + "named": true + }, + { + "type": "modifiers", + "named": true + }, + { + "type": "ownership_modifier", + "named": true + }, + { + "type": "property_behavior_modifier", + "named": true + }, + { + "type": "type_annotation", + "named": true + }, + { + "type": "type_constraints", + "named": true + }, + { + "type": "value_binding_pattern", + "named": true + }, + { + "type": "willset_didset_block", + "named": true + } + ] + } + }, + { + "type": "property_modifier", + "named": true, + "fields": {} + }, + { + "type": "protocol_body", + "named": true, + "fields": { + "body": { + "multiple": true, + "required": false, + "types": [ + { + "type": "protocol_function_declaration", + "named": true + } + ] + } + }, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "associatedtype_declaration", + "named": true + }, + { + "type": "deinit_declaration", + "named": true + }, + { + "type": "init_declaration", + "named": true + }, + { + "type": "protocol_function_declaration", + "named": true + }, + { + "type": "protocol_property_declaration", + "named": true + }, + { + "type": "subscript_declaration", + "named": true + }, + { + "type": "typealias_declaration", + "named": true + } + ] + } + }, + { + "type": "protocol_composition_type", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "array_type", + "named": true + }, + { + "type": "dictionary_type", + "named": true + }, + { + "type": "existential_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "metatype", + "named": true + }, + { + "type": "opaque_type", + "named": true + }, + { + "type": "optional_type", + "named": true + }, + { + "type": "protocol_composition_type", + "named": true + }, + { + "type": "suppressed_constraint", + "named": true + }, + { + "type": "tuple_type", + "named": true + }, + { + "type": "type_pack_expansion", + "named": true + }, + { + "type": "type_parameter_pack", + "named": true + }, + { + "type": "user_type", + "named": true + } + ] + } + }, + { + "type": "protocol_declaration", + "named": true, + "fields": { + "body": { + "multiple": false, + "required": true, + "types": [ + { + "type": "protocol_body", + "named": true + } + ] + }, + "declaration_kind": { + "multiple": false, + "required": true, + "types": [ + { + "type": "protocol", + "named": false + } + ] + }, + "name": { + "multiple": false, + "required": true, + "types": [ + { + "type": "type_identifier", + "named": true + } + ] + } + }, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "attribute", + "named": true + }, + { + "type": "inheritance_specifier", + "named": true + }, + { + "type": "modifiers", + "named": true + }, + { + "type": "type_constraints", + "named": true + }, + { + "type": "type_parameters", + "named": true + } + ] + } + }, + { + "type": "protocol_function_declaration", + "named": true, + "fields": { + "default_value": { + "multiple": true, + "required": false, + "types": [ + { + "type": "!=", + "named": false + }, + { + "type": "!==", + "named": false + }, + { + "type": "%", + "named": false + }, + { + "type": "%=", + "named": false + }, + { + "type": "&", + "named": false + }, + { + "type": "*", + "named": false + }, + { + "type": "*=", + "named": false + }, + { + "type": "+", + "named": false + }, + { + "type": "++", + "named": false + }, + { + "type": "+=", + "named": false + }, + { + "type": "-", + "named": false + }, + { + "type": "--", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": "/", + "named": false + }, + { + "type": "/=", + "named": false + }, + { + "type": "<", + "named": false + }, + { + "type": "<<", + "named": false + }, + { + "type": "<=", + "named": false + }, + { + "type": "=", + "named": false + }, + { + "type": "==", + "named": false + }, + { + "type": "===", + "named": false + }, + { + "type": ">", + "named": false + }, + { + "type": ">=", + "named": false + }, + { + "type": ">>", + "named": false + }, + { + "type": "?", + "named": false + }, + { + "type": "^", + "named": false + }, + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil", + "named": false + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + }, + { + "type": "|", + "named": false + }, + { + "type": "~", + "named": false + } + ] + }, + "name": { + "multiple": true, + "required": false, + "types": [ + { + "type": "!=", + "named": false + }, + { + "type": "!==", + "named": false + }, + { + "type": "%", + "named": false + }, + { + "type": "%=", + "named": false + }, + { + "type": "&", + "named": false + }, + { + "type": "*", + "named": false + }, + { + "type": "*=", + "named": false + }, + { + "type": "+", + "named": false + }, + { + "type": "++", + "named": false + }, + { + "type": "+=", + "named": false + }, + { + "type": "-", + "named": false + }, + { + "type": "--", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": "/", + "named": false + }, + { + "type": "/=", + "named": false + }, + { + "type": "<", + "named": false + }, + { + "type": "<<", + "named": false + }, + { + "type": "<=", + "named": false + }, + { + "type": "=", + "named": false + }, + { + "type": "==", + "named": false + }, + { + "type": "===", + "named": false + }, + { + "type": ">", + "named": false + }, + { + "type": ">=", + "named": false + }, + { + "type": ">>", + "named": false + }, + { + "type": "^", + "named": false + }, + { + "type": "array_type", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "dictionary_type", + "named": true + }, + { + "type": "existential_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "metatype", + "named": true + }, + { + "type": "opaque_type", + "named": true + }, + { + "type": "optional_type", + "named": true + }, + { + "type": "protocol_composition_type", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "suppressed_constraint", + "named": true + }, + { + "type": "tuple_type", + "named": true + }, + { + "type": "type_pack_expansion", + "named": true + }, + { + "type": "type_parameter_pack", + "named": true + }, + { + "type": "user_type", + "named": true + }, + { + "type": "|", + "named": false + }, + { + "type": "~", + "named": false + } + ] + }, + "return_type": { + "multiple": true, + "required": false, + "types": [ + { + "type": "!", + "named": false + }, + { + "type": "array_type", + "named": true + }, + { + "type": "dictionary_type", + "named": true + }, + { + "type": "existential_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "metatype", + "named": true + }, + { + "type": "opaque_type", + "named": true + }, + { + "type": "optional_type", + "named": true + }, + { + "type": "protocol_composition_type", + "named": true + }, + { + "type": "suppressed_constraint", + "named": true + }, + { + "type": "tuple_type", + "named": true + }, + { + "type": "type_modifiers", + "named": true + }, + { + "type": "type_pack_expansion", + "named": true + }, + { + "type": "type_parameter_pack", + "named": true + }, + { + "type": "user_type", + "named": true + } + ] + } + }, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "attribute", + "named": true + }, + { + "type": "modifiers", + "named": true + }, + { + "type": "parameter", + "named": true + }, + { + "type": "statements", + "named": true + }, + { + "type": "throws", + "named": true + }, + { + "type": "type_constraints", + "named": true + }, + { + "type": "type_parameters", + "named": true + } + ] + } + }, + { + "type": "protocol_property_declaration", + "named": true, + "fields": { + "name": { + "multiple": false, + "required": true, + "types": [ + { + "type": "pattern", + "named": true + } + ] + } + }, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "modifiers", + "named": true + }, + { + "type": "protocol_property_requirements", + "named": true + }, + { + "type": "type_annotation", + "named": true + }, + { + "type": "type_constraints", + "named": true + } + ] + } + }, + { + "type": "protocol_property_requirements", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "getter_specifier", + "named": true + }, + { + "type": "setter_specifier", + "named": true + } + ] + } + }, + { + "type": "range_expression", + "named": true, + "fields": { + "end": { + "multiple": true, + "required": true, + "types": [ + { + "type": "!=", + "named": false + }, + { + "type": "!==", + "named": false + }, + { + "type": "%", + "named": false + }, + { + "type": "%=", + "named": false + }, + { + "type": "&", + "named": false + }, + { + "type": "*", + "named": false + }, + { + "type": "*=", + "named": false + }, + { + "type": "+", + "named": false + }, + { + "type": "++", + "named": false + }, + { + "type": "+=", + "named": false + }, + { + "type": "-", + "named": false + }, + { + "type": "--", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": "/", + "named": false + }, + { + "type": "/=", + "named": false + }, + { + "type": "<", + "named": false + }, + { + "type": "<<", + "named": false + }, + { + "type": "<=", + "named": false + }, + { + "type": "=", + "named": false + }, + { + "type": "==", + "named": false + }, + { + "type": "===", + "named": false + }, + { + "type": ">", + "named": false + }, + { + "type": ">=", + "named": false + }, + { + "type": ">>", + "named": false + }, + { + "type": "?", + "named": false + }, + { + "type": "^", + "named": false + }, + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil", + "named": false + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + }, + { + "type": "|", + "named": false + }, + { + "type": "~", + "named": false + } + ] + }, + "op": { + "multiple": false, + "required": true, + "types": [ + { + "type": "...", + "named": false + }, + { + "type": "..<", + "named": false + } + ] + }, + "start": { + "multiple": true, + "required": true, + "types": [ + { + "type": "!=", + "named": false + }, + { + "type": "!==", + "named": false + }, + { + "type": "%", + "named": false + }, + { + "type": "%=", + "named": false + }, + { + "type": "&", + "named": false + }, + { + "type": "*", + "named": false + }, + { + "type": "*=", + "named": false + }, + { + "type": "+", + "named": false + }, + { + "type": "++", + "named": false + }, + { + "type": "+=", + "named": false + }, + { + "type": "-", + "named": false + }, + { + "type": "--", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": "/", + "named": false + }, + { + "type": "/=", + "named": false + }, + { + "type": "<", + "named": false + }, + { + "type": "<<", + "named": false + }, + { + "type": "<=", + "named": false + }, + { + "type": "=", + "named": false + }, + { + "type": "==", + "named": false + }, + { + "type": "===", + "named": false + }, + { + "type": ">", + "named": false + }, + { + "type": ">=", + "named": false + }, + { + "type": ">>", + "named": false + }, + { + "type": "?", + "named": false + }, + { + "type": "^", + "named": false + }, + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil", + "named": false + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + }, + { + "type": "|", + "named": false + }, + { + "type": "~", + "named": false + } + ] + } + } + }, + { + "type": "raw_str_interpolation", + "named": true, + "fields": { + "interpolation": { + "multiple": true, + "required": true, + "types": [ + { + "type": "interpolated_expression", + "named": true + } + ] + } + }, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "raw_str_interpolation_start", + "named": true + } + ] + } + }, + { + "type": "raw_string_literal", + "named": true, + "fields": { + "interpolation": { + "multiple": true, + "required": false, + "types": [ + { + "type": "raw_str_interpolation", + "named": true + } + ] + }, + "text": { + "multiple": true, + "required": true, + "types": [ + { + "type": "raw_str_end_part", + "named": true + }, + { + "type": "raw_str_part", + "named": true + } + ] + } + }, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "raw_str_continuing_indicator", + "named": true + } + ] + } + }, + { + "type": "regex_literal", + "named": true, + "fields": {} + }, + { + "type": "repeat_while_statement", + "named": true, + "fields": { + "bound_identifier": { + "multiple": true, + "required": false, + "types": [ + { + "type": "simple_identifier", + "named": true + } + ] + }, + "condition": { + "multiple": true, + "required": true, + "types": [ + { + "type": "!=", + "named": false + }, + { + "type": "!==", + "named": false + }, + { + "type": "%", + "named": false + }, + { + "type": "%=", + "named": false + }, + { + "type": "&", + "named": false + }, + { + "type": "(", + "named": false + }, + { + "type": ")", + "named": false + }, + { + "type": "*", + "named": false + }, + { + "type": "*=", + "named": false + }, + { + "type": "+", + "named": false + }, + { + "type": "++", + "named": false + }, + { + "type": "+=", + "named": false + }, + { + "type": ",", + "named": false + }, + { + "type": "-", + "named": false + }, + { + "type": "--", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": ".", + "named": false + }, + { + "type": "/", + "named": false + }, + { + "type": "/=", + "named": false + }, + { + "type": ":", + "named": false + }, + { + "type": "<", + "named": false + }, + { + "type": "<<", + "named": false + }, + { + "type": "<=", + "named": false + }, + { + "type": "=", + "named": false + }, + { + "type": "==", + "named": false + }, + { + "type": "===", + "named": false + }, + { + "type": ">", + "named": false + }, + { + "type": ">=", + "named": false + }, + { + "type": ">>", + "named": false + }, + { + "type": "?", + "named": false + }, + { + "type": "^", + "named": false + }, + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "array_type", + "named": true + }, + { + "type": "as", + "named": false + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "async", + "named": false + }, + { + "type": "availability_condition", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "case", + "named": false + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "dictionary_type", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "existential_type", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "is", + "named": false + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "metatype", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil", + "named": false + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "opaque_type", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "optional_type", + "named": true + }, + { + "type": "pattern", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "protocol_composition_type", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "suppressed_constraint", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "tuple_type", + "named": true + }, + { + "type": "type_annotation", + "named": true + }, + { + "type": "type_modifiers", + "named": true + }, + { + "type": "type_pack_expansion", + "named": true + }, + { + "type": "type_parameter_pack", + "named": true + }, + { + "type": "user_type", + "named": true + }, + { + "type": "value_binding_pattern", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + }, + { + "type": "where_clause", + "named": true + }, + { + "type": "wildcard_pattern", + "named": true + }, + { + "type": "|", + "named": false + }, + { + "type": "~", + "named": false + } + ] + }, + "name": { + "multiple": true, + "required": false, + "types": [ + { + "type": "array_type", + "named": true + }, + { + "type": "dictionary_type", + "named": true + }, + { + "type": "existential_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "metatype", + "named": true + }, + { + "type": "opaque_type", + "named": true + }, + { + "type": "optional_type", + "named": true + }, + { + "type": "protocol_composition_type", + "named": true + }, + { + "type": "suppressed_constraint", + "named": true + }, + { + "type": "tuple_type", + "named": true + }, + { + "type": "type_pack_expansion", + "named": true + }, + { + "type": "type_parameter_pack", + "named": true + }, + { + "type": "user_type", + "named": true + } + ] + } + }, + "children": { + "multiple": false, + "required": false, + "types": [ + { + "type": "statements", + "named": true + } + ] + } + }, + { + "type": "selector_expression", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": false, + "types": [ + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + } + ] + } + }, + { + "type": "self_expression", + "named": true, + "fields": {} + }, + { + "type": "setter_specifier", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": false, + "types": [ + { + "type": "mutation_modifier", + "named": true + } + ] + } + }, + { + "type": "shebang_line", + "named": true, + "fields": {} + }, + { + "type": "simple_identifier", + "named": true, + "fields": {} + }, + { + "type": "source_file", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "associatedtype_declaration", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "class_declaration", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "do_statement", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "for_statement", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "function_declaration", + "named": true + }, + { + "type": "guard_statement", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "import_declaration", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "init_declaration", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_declaration", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "operator_declaration", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "precedence_group_declaration", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "property_declaration", + "named": true + }, + { + "type": "protocol_declaration", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "repeat_while_statement", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "shebang_line", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "statement_label", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "throw_keyword", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "typealias_declaration", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + }, + { + "type": "while_statement", + "named": true + } + ] + } + }, + { + "type": "special_literal", + "named": true, + "fields": {} + }, + { + "type": "statements", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "class_declaration", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "control_transfer_statement", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "do_statement", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "for_statement", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "function_declaration", + "named": true + }, + { + "type": "guard_statement", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "property_declaration", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "repeat_while_statement", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "statement_label", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "typealias_declaration", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + }, + { + "type": "while_statement", + "named": true + } + ] + } + }, + { + "type": "str_escaped_char", + "named": true, + "fields": {} + }, + { + "type": "subscript_declaration", + "named": true, + "fields": { + "default_value": { + "multiple": true, + "required": false, + "types": [ + { + "type": "!=", + "named": false + }, + { + "type": "!==", + "named": false + }, + { + "type": "%", + "named": false + }, + { + "type": "%=", + "named": false + }, + { + "type": "&", + "named": false + }, + { + "type": "*", + "named": false + }, + { + "type": "*=", + "named": false + }, + { + "type": "+", + "named": false + }, + { + "type": "++", + "named": false + }, + { + "type": "+=", + "named": false + }, + { + "type": "-", + "named": false + }, + { + "type": "--", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": "/", + "named": false + }, + { + "type": "/=", + "named": false + }, + { + "type": "<", + "named": false + }, + { + "type": "<<", + "named": false + }, + { + "type": "<=", + "named": false + }, + { + "type": "=", + "named": false + }, + { + "type": "==", + "named": false + }, + { + "type": "===", + "named": false + }, + { + "type": ">", + "named": false + }, + { + "type": ">=", + "named": false + }, + { + "type": ">>", + "named": false + }, + { + "type": "?", + "named": false + }, + { + "type": "^", + "named": false + }, + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil", + "named": false + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + }, + { + "type": "|", + "named": false + }, + { + "type": "~", + "named": false + } + ] + }, + "name": { + "multiple": false, + "required": false, + "types": [ + { + "type": "array_type", + "named": true + }, + { + "type": "dictionary_type", + "named": true + }, + { + "type": "existential_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "metatype", + "named": true + }, + { + "type": "opaque_type", + "named": true + }, + { + "type": "optional_type", + "named": true + }, + { + "type": "protocol_composition_type", + "named": true + }, + { + "type": "suppressed_constraint", + "named": true + }, + { + "type": "tuple_type", + "named": true + }, + { + "type": "type_pack_expansion", + "named": true + }, + { + "type": "type_parameter_pack", + "named": true + }, + { + "type": "user_type", + "named": true + } + ] + }, + "return_type": { + "multiple": true, + "required": false, + "types": [ + { + "type": "!", + "named": false + }, + { + "type": "array_type", + "named": true + }, + { + "type": "dictionary_type", + "named": true + }, + { + "type": "existential_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "metatype", + "named": true + }, + { + "type": "opaque_type", + "named": true + }, + { + "type": "optional_type", + "named": true + }, + { + "type": "protocol_composition_type", + "named": true + }, + { + "type": "suppressed_constraint", + "named": true + }, + { + "type": "tuple_type", + "named": true + }, + { + "type": "type_modifiers", + "named": true + }, + { + "type": "type_pack_expansion", + "named": true + }, + { + "type": "type_parameter_pack", + "named": true + }, + { + "type": "user_type", + "named": true + } + ] + } + }, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "attribute", + "named": true + }, + { + "type": "computed_property", + "named": true + }, + { + "type": "modifiers", + "named": true + }, + { + "type": "parameter", + "named": true + }, + { + "type": "type_constraints", + "named": true + }, + { + "type": "type_parameters", + "named": true + } + ] + } + }, + { + "type": "super_expression", + "named": true, + "fields": {} + }, + { + "type": "suppressed_constraint", + "named": true, + "fields": { + "suppressed": { + "multiple": false, + "required": true, + "types": [ + { + "type": "type_identifier", + "named": true + } + ] + } + } + }, + { + "type": "switch_entry", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "default_keyword", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "modifiers", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "statements", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "switch_pattern", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + }, + { + "type": "where_keyword", + "named": true + } + ] + } + }, + { + "type": "switch_pattern", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "pattern", + "named": true + } + ] + } + }, + { + "type": "switch_statement", + "named": true, + "fields": { + "expr": { + "multiple": true, + "required": true, + "types": [ + { + "type": "!=", + "named": false + }, + { + "type": "!==", + "named": false + }, + { + "type": "%", + "named": false + }, + { + "type": "%=", + "named": false + }, + { + "type": "&", + "named": false + }, + { + "type": "*", + "named": false + }, + { + "type": "*=", + "named": false + }, + { + "type": "+", + "named": false + }, + { + "type": "++", + "named": false + }, + { + "type": "+=", + "named": false + }, + { + "type": "-", + "named": false + }, + { + "type": "--", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": "/", + "named": false + }, + { + "type": "/=", + "named": false + }, + { + "type": "<", + "named": false + }, + { + "type": "<<", + "named": false + }, + { + "type": "<=", + "named": false + }, + { + "type": "=", + "named": false + }, + { + "type": "==", + "named": false + }, + { + "type": "===", + "named": false + }, + { + "type": ">", + "named": false + }, + { + "type": ">=", + "named": false + }, + { + "type": ">>", + "named": false + }, + { + "type": "?", + "named": false + }, + { + "type": "^", + "named": false + }, + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil", + "named": false + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + }, + { + "type": "|", + "named": false + }, + { + "type": "~", + "named": false + } + ] + } + }, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "switch_entry", + "named": true + } + ] + } + }, + { + "type": "ternary_expression", + "named": true, + "fields": { + "condition": { + "multiple": true, + "required": true, + "types": [ + { + "type": "!=", + "named": false + }, + { + "type": "!==", + "named": false + }, + { + "type": "%", + "named": false + }, + { + "type": "%=", + "named": false + }, + { + "type": "&", + "named": false + }, + { + "type": "*", + "named": false + }, + { + "type": "*=", + "named": false + }, + { + "type": "+", + "named": false + }, + { + "type": "++", + "named": false + }, + { + "type": "+=", + "named": false + }, + { + "type": "-", + "named": false + }, + { + "type": "--", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": "/", + "named": false + }, + { + "type": "/=", + "named": false + }, + { + "type": "<", + "named": false + }, + { + "type": "<<", + "named": false + }, + { + "type": "<=", + "named": false + }, + { + "type": "=", + "named": false + }, + { + "type": "==", + "named": false + }, + { + "type": "===", + "named": false + }, + { + "type": ">", + "named": false + }, + { + "type": ">=", + "named": false + }, + { + "type": ">>", + "named": false + }, + { + "type": "?", + "named": false + }, + { + "type": "^", + "named": false + }, + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil", + "named": false + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + }, + { + "type": "|", + "named": false + }, + { + "type": "~", + "named": false + } + ] + }, + "if_false": { + "multiple": true, + "required": true, + "types": [ + { + "type": "!=", + "named": false + }, + { + "type": "!==", + "named": false + }, + { + "type": "%", + "named": false + }, + { + "type": "%=", + "named": false + }, + { + "type": "&", + "named": false + }, + { + "type": "*", + "named": false + }, + { + "type": "*=", + "named": false + }, + { + "type": "+", + "named": false + }, + { + "type": "++", + "named": false + }, + { + "type": "+=", + "named": false + }, + { + "type": "-", + "named": false + }, + { + "type": "--", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": "/", + "named": false + }, + { + "type": "/=", + "named": false + }, + { + "type": "<", + "named": false + }, + { + "type": "<<", + "named": false + }, + { + "type": "<=", + "named": false + }, + { + "type": "=", + "named": false + }, + { + "type": "==", + "named": false + }, + { + "type": "===", + "named": false + }, + { + "type": ">", + "named": false + }, + { + "type": ">=", + "named": false + }, + { + "type": ">>", + "named": false + }, + { + "type": "?", + "named": false + }, + { + "type": "^", + "named": false + }, + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil", + "named": false + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + }, + { + "type": "|", + "named": false + }, + { + "type": "~", + "named": false + } + ] + }, + "if_true": { + "multiple": true, + "required": true, + "types": [ + { + "type": "!=", + "named": false + }, + { + "type": "!==", + "named": false + }, + { + "type": "%", + "named": false + }, + { + "type": "%=", + "named": false + }, + { + "type": "&", + "named": false + }, + { + "type": "*", + "named": false + }, + { + "type": "*=", + "named": false + }, + { + "type": "+", + "named": false + }, + { + "type": "++", + "named": false + }, + { + "type": "+=", + "named": false + }, + { + "type": "-", + "named": false + }, + { + "type": "--", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": "/", + "named": false + }, + { + "type": "/=", + "named": false + }, + { + "type": "<", + "named": false + }, + { + "type": "<<", + "named": false + }, + { + "type": "<=", + "named": false + }, + { + "type": "=", + "named": false + }, + { + "type": "==", + "named": false + }, + { + "type": "===", + "named": false + }, + { + "type": ">", + "named": false + }, + { + "type": ">=", + "named": false + }, + { + "type": ">>", + "named": false + }, + { + "type": "?", + "named": false + }, + { + "type": "^", + "named": false + }, + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil", + "named": false + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + }, + { + "type": "|", + "named": false + }, + { + "type": "~", + "named": false + } + ] + } + } + }, + { + "type": "throws", + "named": true, + "fields": {} + }, + { + "type": "try_expression", + "named": true, + "fields": { + "expr": { + "multiple": true, + "required": true, + "types": [ + { + "type": "!=", + "named": false + }, + { + "type": "!==", + "named": false + }, + { + "type": "%", + "named": false + }, + { + "type": "%=", + "named": false + }, + { + "type": "&", + "named": false + }, + { + "type": "*", + "named": false + }, + { + "type": "*=", + "named": false + }, + { + "type": "+", + "named": false + }, + { + "type": "++", + "named": false + }, + { + "type": "+=", + "named": false + }, + { + "type": "-", + "named": false + }, + { + "type": "--", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": "/", + "named": false + }, + { + "type": "/=", + "named": false + }, + { + "type": "<", + "named": false + }, + { + "type": "<<", + "named": false + }, + { + "type": "<=", + "named": false + }, + { + "type": "=", + "named": false + }, + { + "type": "==", + "named": false + }, + { + "type": "===", + "named": false + }, + { + "type": ">", + "named": false + }, + { + "type": ">=", + "named": false + }, + { + "type": ">>", + "named": false + }, + { + "type": "?", + "named": false + }, + { + "type": "^", + "named": false + }, + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil", + "named": false + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + }, + { + "type": "|", + "named": false + }, + { + "type": "~", + "named": false + } + ] + } + }, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "try_operator", + "named": true + } + ] + } + }, + { + "type": "try_operator", + "named": true, + "fields": {} + }, + { + "type": "tuple_expression", + "named": true, + "fields": { + "name": { + "multiple": true, + "required": false, + "types": [ + { + "type": "simple_identifier", + "named": true + } + ] + }, + "value": { + "multiple": true, + "required": true, + "types": [ + { + "type": "!=", + "named": false + }, + { + "type": "!==", + "named": false + }, + { + "type": "%", + "named": false + }, + { + "type": "%=", + "named": false + }, + { + "type": "&", + "named": false + }, + { + "type": "*", + "named": false + }, + { + "type": "*=", + "named": false + }, + { + "type": "+", + "named": false + }, + { + "type": "++", + "named": false + }, + { + "type": "+=", + "named": false + }, + { + "type": "-", + "named": false + }, + { + "type": "--", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": "/", + "named": false + }, + { + "type": "/=", + "named": false + }, + { + "type": "<", + "named": false + }, + { + "type": "<<", + "named": false + }, + { + "type": "<=", + "named": false + }, + { + "type": "=", + "named": false + }, + { + "type": "==", + "named": false + }, + { + "type": "===", + "named": false + }, + { + "type": ">", + "named": false + }, + { + "type": ">=", + "named": false + }, + { + "type": ">>", + "named": false + }, + { + "type": "?", + "named": false + }, + { + "type": "^", + "named": false + }, + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil", + "named": false + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + }, + { + "type": "|", + "named": false + }, + { + "type": "~", + "named": false + } + ] + } + } + }, + { + "type": "tuple_type", + "named": true, + "fields": { + "element": { + "multiple": true, + "required": false, + "types": [ + { + "type": "tuple_type_item", + "named": true + } + ] + } + }, + "children": { + "multiple": false, + "required": false, + "types": [ + { + "type": "tuple_type_item", + "named": true + } + ] + } + }, + { + "type": "tuple_type_item", + "named": true, + "fields": { + "element": { + "multiple": false, + "required": false, + "types": [ + { + "type": "dictionary_type", + "named": true + }, + { + "type": "existential_type", + "named": true + }, + { + "type": "opaque_type", + "named": true + } + ] + }, + "name": { + "multiple": true, + "required": false, + "types": [ + { + "type": "array_type", + "named": true + }, + { + "type": "dictionary_type", + "named": true + }, + { + "type": "existential_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "metatype", + "named": true + }, + { + "type": "opaque_type", + "named": true + }, + { + "type": "optional_type", + "named": true + }, + { + "type": "protocol_composition_type", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "suppressed_constraint", + "named": true + }, + { + "type": "tuple_type", + "named": true + }, + { + "type": "type_pack_expansion", + "named": true + }, + { + "type": "type_parameter_pack", + "named": true + }, + { + "type": "user_type", + "named": true + } + ] + }, + "type": { + "multiple": true, + "required": false, + "types": [ + { + "type": "array_type", + "named": true + }, + { + "type": "dictionary_type", + "named": true + }, + { + "type": "existential_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "metatype", + "named": true + }, + { + "type": "opaque_type", + "named": true + }, + { + "type": "optional_type", + "named": true + }, + { + "type": "protocol_composition_type", + "named": true + }, + { + "type": "suppressed_constraint", + "named": true + }, + { + "type": "tuple_type", + "named": true + }, + { + "type": "type_modifiers", + "named": true + }, + { + "type": "type_pack_expansion", + "named": true + }, + { + "type": "type_parameter_pack", + "named": true + }, + { + "type": "user_type", + "named": true + } + ] + } + }, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "parameter_modifiers", + "named": true + }, + { + "type": "wildcard_pattern", + "named": true + } + ] + } + }, + { + "type": "type_annotation", + "named": true, + "fields": { + "name": { + "multiple": false, + "required": true, + "types": [ + { + "type": "array_type", + "named": true + }, + { + "type": "dictionary_type", + "named": true + }, + { + "type": "existential_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "metatype", + "named": true + }, + { + "type": "opaque_type", + "named": true + }, + { + "type": "optional_type", + "named": true + }, + { + "type": "protocol_composition_type", + "named": true + }, + { + "type": "suppressed_constraint", + "named": true + }, + { + "type": "tuple_type", + "named": true + }, + { + "type": "type_pack_expansion", + "named": true + }, + { + "type": "type_parameter_pack", + "named": true + }, + { + "type": "user_type", + "named": true + } + ] + }, + "type": { + "multiple": true, + "required": true, + "types": [ + { + "type": "!", + "named": false + }, + { + "type": "array_type", + "named": true + }, + { + "type": "dictionary_type", + "named": true + }, + { + "type": "existential_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "metatype", + "named": true + }, + { + "type": "opaque_type", + "named": true + }, + { + "type": "optional_type", + "named": true + }, + { + "type": "protocol_composition_type", + "named": true + }, + { + "type": "suppressed_constraint", + "named": true + }, + { + "type": "tuple_type", + "named": true + }, + { + "type": "type_modifiers", + "named": true + }, + { + "type": "type_pack_expansion", + "named": true + }, + { + "type": "type_parameter_pack", + "named": true + }, + { + "type": "user_type", + "named": true + } + ] + } + } + }, + { + "type": "type_arguments", + "named": true, + "fields": { + "name": { + "multiple": true, + "required": true, + "types": [ + { + "type": "array_type", + "named": true + }, + { + "type": "dictionary_type", + "named": true + }, + { + "type": "existential_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "metatype", + "named": true + }, + { + "type": "opaque_type", + "named": true + }, + { + "type": "optional_type", + "named": true + }, + { + "type": "protocol_composition_type", + "named": true + }, + { + "type": "suppressed_constraint", + "named": true + }, + { + "type": "tuple_type", + "named": true + }, + { + "type": "type_pack_expansion", + "named": true + }, + { + "type": "type_parameter_pack", + "named": true + }, + { + "type": "user_type", + "named": true + } + ] + } + }, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "type_modifiers", + "named": true + } + ] + } + }, + { + "type": "type_constraint", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "equality_constraint", + "named": true + }, + { + "type": "inheritance_constraint", + "named": true + } + ] + } + }, + { + "type": "type_constraints", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "type_constraint", + "named": true + }, + { + "type": "where_keyword", + "named": true + } + ] + } + }, + { + "type": "type_identifier", + "named": true, + "fields": {} + }, + { + "type": "type_modifiers", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "attribute", + "named": true + } + ] + } + }, + { + "type": "type_pack_expansion", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "array_type", + "named": true + }, + { + "type": "dictionary_type", + "named": true + }, + { + "type": "existential_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "metatype", + "named": true + }, + { + "type": "opaque_type", + "named": true + }, + { + "type": "optional_type", + "named": true + }, + { + "type": "protocol_composition_type", + "named": true + }, + { + "type": "suppressed_constraint", + "named": true + }, + { + "type": "tuple_type", + "named": true + }, + { + "type": "type_pack_expansion", + "named": true + }, + { + "type": "type_parameter_pack", + "named": true + }, + { + "type": "user_type", + "named": true + } + ] + } + }, + { + "type": "type_parameter", + "named": true, + "fields": { + "name": { + "multiple": false, + "required": false, + "types": [ + { + "type": "array_type", + "named": true + }, + { + "type": "dictionary_type", + "named": true + }, + { + "type": "existential_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "metatype", + "named": true + }, + { + "type": "opaque_type", + "named": true + }, + { + "type": "optional_type", + "named": true + }, + { + "type": "protocol_composition_type", + "named": true + }, + { + "type": "suppressed_constraint", + "named": true + }, + { + "type": "tuple_type", + "named": true + }, + { + "type": "type_pack_expansion", + "named": true + }, + { + "type": "type_parameter_pack", + "named": true + }, + { + "type": "user_type", + "named": true + } + ] + } + }, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "type_identifier", + "named": true + }, + { + "type": "type_modifiers", + "named": true + }, + { + "type": "type_parameter_modifiers", + "named": true + }, + { + "type": "type_parameter_pack", + "named": true + } + ] + } + }, + { + "type": "type_parameter_modifiers", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "attribute", + "named": true + } + ] + } + }, + { + "type": "type_parameter_pack", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "array_type", + "named": true + }, + { + "type": "dictionary_type", + "named": true + }, + { + "type": "existential_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "metatype", + "named": true + }, + { + "type": "opaque_type", + "named": true + }, + { + "type": "optional_type", + "named": true + }, + { + "type": "protocol_composition_type", + "named": true + }, + { + "type": "suppressed_constraint", + "named": true + }, + { + "type": "tuple_type", + "named": true + }, + { + "type": "type_pack_expansion", + "named": true + }, + { + "type": "type_parameter_pack", + "named": true + }, + { + "type": "user_type", + "named": true + } + ] + } + }, + { + "type": "type_parameters", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "type_constraints", + "named": true + }, + { + "type": "type_parameter", + "named": true + } + ] + } + }, + { + "type": "typealias_declaration", + "named": true, + "fields": { + "name": { + "multiple": true, + "required": true, + "types": [ + { + "type": "array_type", + "named": true + }, + { + "type": "dictionary_type", + "named": true + }, + { + "type": "existential_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "metatype", + "named": true + }, + { + "type": "opaque_type", + "named": true + }, + { + "type": "optional_type", + "named": true + }, + { + "type": "protocol_composition_type", + "named": true + }, + { + "type": "suppressed_constraint", + "named": true + }, + { + "type": "tuple_type", + "named": true + }, + { + "type": "type_identifier", + "named": true + }, + { + "type": "type_pack_expansion", + "named": true + }, + { + "type": "type_parameter_pack", + "named": true + }, + { + "type": "user_type", + "named": true + } + ] + }, + "value": { + "multiple": true, + "required": true, + "types": [ + { + "type": "array_type", + "named": true + }, + { + "type": "dictionary_type", + "named": true + }, + { + "type": "existential_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "metatype", + "named": true + }, + { + "type": "opaque_type", + "named": true + }, + { + "type": "optional_type", + "named": true + }, + { + "type": "protocol_composition_type", + "named": true + }, + { + "type": "suppressed_constraint", + "named": true + }, + { + "type": "tuple_type", + "named": true + }, + { + "type": "type_modifiers", + "named": true + }, + { + "type": "type_pack_expansion", + "named": true + }, + { + "type": "type_parameter_pack", + "named": true + }, + { + "type": "user_type", + "named": true + } + ] + } + }, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "attribute", + "named": true + }, + { + "type": "inheritance_modifier", + "named": true + }, + { + "type": "modifiers", + "named": true + }, + { + "type": "ownership_modifier", + "named": true + }, + { + "type": "property_behavior_modifier", + "named": true + }, + { + "type": "type_parameters", + "named": true + } + ] + } + }, + { + "type": "user_type", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "type_arguments", + "named": true + }, + { + "type": "type_identifier", + "named": true + } + ] + } + }, + { + "type": "value_argument", + "named": true, + "fields": { + "name": { + "multiple": false, + "required": false, + "types": [ + { + "type": "value_argument_label", + "named": true + } + ] + }, + "reference_specifier": { + "multiple": true, + "required": false, + "types": [ + { + "type": "value_argument_label", + "named": true + } + ] + }, + "value": { + "multiple": true, + "required": false, + "types": [ + { + "type": "!=", + "named": false + }, + { + "type": "!==", + "named": false + }, + { + "type": "%", + "named": false + }, + { + "type": "%=", + "named": false + }, + { + "type": "&", + "named": false + }, + { + "type": "*", + "named": false + }, + { + "type": "*=", + "named": false + }, + { + "type": "+", + "named": false + }, + { + "type": "++", + "named": false + }, + { + "type": "+=", + "named": false + }, + { + "type": "-", + "named": false + }, + { + "type": "--", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": "/", + "named": false + }, + { + "type": "/=", + "named": false + }, + { + "type": "<", + "named": false + }, + { + "type": "<<", + "named": false + }, + { + "type": "<=", + "named": false + }, + { + "type": "=", + "named": false + }, + { + "type": "==", + "named": false + }, + { + "type": "===", + "named": false + }, + { + "type": ">", + "named": false + }, + { + "type": ">=", + "named": false + }, + { + "type": ">>", + "named": false + }, + { + "type": "?", + "named": false + }, + { + "type": "^", + "named": false + }, + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil", + "named": false + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + }, + { + "type": "|", + "named": false + }, + { + "type": "~", + "named": false + } + ] + } + }, + "children": { + "multiple": false, + "required": false, + "types": [ + { + "type": "type_modifiers", + "named": true + } + ] + } + }, + { + "type": "value_argument_label", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "simple_identifier", + "named": true + } + ] + } + }, + { + "type": "value_arguments", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "value_argument", + "named": true + } + ] + } + }, + { + "type": "value_binding_pattern", + "named": true, + "fields": { + "mutability": { + "multiple": false, + "required": true, + "types": [ + { + "type": "let", + "named": false + }, + { + "type": "var", + "named": false + } + ] + } + } + }, + { + "type": "value_pack_expansion", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": false, + "types": [ + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + } + ] + } + }, + { + "type": "value_parameter_pack", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": false, + "types": [ + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + } + ] + } + }, + { + "type": "visibility_modifier", + "named": true, + "fields": {} + }, + { + "type": "where_clause", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + }, + { + "type": "where_keyword", + "named": true + } + ] + } + }, + { + "type": "while_statement", + "named": true, + "fields": { + "bound_identifier": { + "multiple": true, + "required": false, + "types": [ + { + "type": "simple_identifier", + "named": true + } + ] + }, + "condition": { + "multiple": true, + "required": true, + "types": [ + { + "type": "!=", + "named": false + }, + { + "type": "!==", + "named": false + }, + { + "type": "%", + "named": false + }, + { + "type": "%=", + "named": false + }, + { + "type": "&", + "named": false + }, + { + "type": "(", + "named": false + }, + { + "type": ")", + "named": false + }, + { + "type": "*", + "named": false + }, + { + "type": "*=", + "named": false + }, + { + "type": "+", + "named": false + }, + { + "type": "++", + "named": false + }, + { + "type": "+=", + "named": false + }, + { + "type": ",", + "named": false + }, + { + "type": "-", + "named": false + }, + { + "type": "--", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": ".", + "named": false + }, + { + "type": "/", + "named": false + }, + { + "type": "/=", + "named": false + }, + { + "type": ":", + "named": false + }, + { + "type": "<", + "named": false + }, + { + "type": "<<", + "named": false + }, + { + "type": "<=", + "named": false + }, + { + "type": "=", + "named": false + }, + { + "type": "==", + "named": false + }, + { + "type": "===", + "named": false + }, + { + "type": ">", + "named": false + }, + { + "type": ">=", + "named": false + }, + { + "type": ">>", + "named": false + }, + { + "type": "?", + "named": false + }, + { + "type": "^", + "named": false + }, + { + "type": "additive_expression", + "named": true + }, + { + "type": "array_literal", + "named": true + }, + { + "type": "array_type", + "named": true + }, + { + "type": "as", + "named": false + }, + { + "type": "as_expression", + "named": true + }, + { + "type": "assignment", + "named": true + }, + { + "type": "async", + "named": false + }, + { + "type": "availability_condition", + "named": true + }, + { + "type": "await_expression", + "named": true + }, + { + "type": "bang", + "named": true + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "bitwise_operation", + "named": true + }, + { + "type": "boolean_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "case", + "named": false + }, + { + "type": "check_expression", + "named": true + }, + { + "type": "comparison_expression", + "named": true + }, + { + "type": "conjunction_expression", + "named": true + }, + { + "type": "constructor_expression", + "named": true + }, + { + "type": "custom_operator", + "named": true + }, + { + "type": "diagnostic", + "named": true + }, + { + "type": "dictionary_literal", + "named": true + }, + { + "type": "dictionary_type", + "named": true + }, + { + "type": "directive", + "named": true + }, + { + "type": "disjunction_expression", + "named": true + }, + { + "type": "equality_expression", + "named": true + }, + { + "type": "existential_type", + "named": true + }, + { + "type": "fully_open_range", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if_statement", + "named": true + }, + { + "type": "infix_expression", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "is", + "named": false + }, + { + "type": "key_path_expression", + "named": true + }, + { + "type": "key_path_string_expression", + "named": true + }, + { + "type": "lambda_literal", + "named": true + }, + { + "type": "line_string_literal", + "named": true + }, + { + "type": "macro_invocation", + "named": true + }, + { + "type": "metatype", + "named": true + }, + { + "type": "multi_line_string_literal", + "named": true + }, + { + "type": "multiplicative_expression", + "named": true + }, + { + "type": "navigation_expression", + "named": true + }, + { + "type": "nil", + "named": false + }, + { + "type": "nil_coalescing_expression", + "named": true + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "opaque_type", + "named": true + }, + { + "type": "open_end_range_expression", + "named": true + }, + { + "type": "open_start_range_expression", + "named": true + }, + { + "type": "optional_type", + "named": true + }, + { + "type": "pattern", + "named": true + }, + { + "type": "playground_literal", + "named": true + }, + { + "type": "postfix_expression", + "named": true + }, + { + "type": "prefix_expression", + "named": true + }, + { + "type": "protocol_composition_type", + "named": true + }, + { + "type": "range_expression", + "named": true + }, + { + "type": "raw_string_literal", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "regex_literal", + "named": true + }, + { + "type": "selector_expression", + "named": true + }, + { + "type": "self_expression", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "special_literal", + "named": true + }, + { + "type": "super_expression", + "named": true + }, + { + "type": "suppressed_constraint", + "named": true + }, + { + "type": "switch_statement", + "named": true + }, + { + "type": "ternary_expression", + "named": true + }, + { + "type": "try_expression", + "named": true + }, + { + "type": "tuple_expression", + "named": true + }, + { + "type": "tuple_type", + "named": true + }, + { + "type": "type_annotation", + "named": true + }, + { + "type": "type_modifiers", + "named": true + }, + { + "type": "type_pack_expansion", + "named": true + }, + { + "type": "type_parameter_pack", + "named": true + }, + { + "type": "user_type", + "named": true + }, + { + "type": "value_binding_pattern", + "named": true + }, + { + "type": "value_pack_expansion", + "named": true + }, + { + "type": "value_parameter_pack", + "named": true + }, + { + "type": "where_clause", + "named": true + }, + { + "type": "wildcard_pattern", + "named": true + }, + { + "type": "|", + "named": false + }, + { + "type": "~", + "named": false + } + ] + }, + "name": { + "multiple": true, + "required": false, + "types": [ + { + "type": "array_type", + "named": true + }, + { + "type": "dictionary_type", + "named": true + }, + { + "type": "existential_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "metatype", + "named": true + }, + { + "type": "opaque_type", + "named": true + }, + { + "type": "optional_type", + "named": true + }, + { + "type": "protocol_composition_type", + "named": true + }, + { + "type": "suppressed_constraint", + "named": true + }, + { + "type": "tuple_type", + "named": true + }, + { + "type": "type_pack_expansion", + "named": true + }, + { + "type": "type_parameter_pack", + "named": true + }, + { + "type": "user_type", + "named": true + } + ] + } + }, + "children": { + "multiple": false, + "required": false, + "types": [ + { + "type": "statements", + "named": true + } + ] + } + }, + { + "type": "willset_clause", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "modifiers", + "named": true + }, + { + "type": "simple_identifier", + "named": true + }, + { + "type": "statements", + "named": true + } + ] + } + }, + { + "type": "willset_didset_block", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "didset_clause", + "named": true + }, + { + "type": "willset_clause", + "named": true + } + ] + } + }, + { + "type": "!", + "named": false + }, + { + "type": "!=", + "named": false + }, + { + "type": "!==", + "named": false + }, + { + "type": "\"", + "named": false + }, + { + "type": "\"\"\"", + "named": false + }, + { + "type": "#", + "named": false + }, + { + "type": "#else", + "named": false + }, + { + "type": "#elseif", + "named": false + }, + { + "type": "#endif", + "named": false + }, + { + "type": "#if", + "named": false + }, + { + "type": "%", + "named": false + }, + { + "type": "%=", + "named": false + }, + { + "type": "&", + "named": false + }, + { + "type": "&&", + "named": false + }, + { + "type": "(", + "named": false + }, + { + "type": ")", + "named": false + }, + { + "type": "*", + "named": false + }, + { + "type": "*=", + "named": false + }, + { + "type": "+", + "named": false + }, + { + "type": "++", + "named": false + }, + { + "type": "+=", + "named": false + }, + { + "type": ",", + "named": false + }, + { + "type": "-", + "named": false + }, + { + "type": "--", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": "->", + "named": false + }, + { + "type": ".", + "named": false + }, + { + "type": "...", + "named": false + }, + { + "type": "..<", + "named": false + }, + { + "type": "/", + "named": false + }, + { + "type": "/=", + "named": false + }, + { + "type": ":", + "named": false + }, + { + "type": ";", + "named": false + }, + { + "type": "<", + "named": false + }, + { + "type": "<<", + "named": false + }, + { + "type": "<=", + "named": false + }, + { + "type": "=", + "named": false + }, + { + "type": "==", + "named": false + }, + { + "type": "===", + "named": false + }, + { + "type": ">", + "named": false + }, + { + "type": ">=", + "named": false + }, + { + "type": ">>", + "named": false + }, + { + "type": "?", + "named": false + }, + { + "type": "??", + "named": false + }, + { + "type": "@", + "named": false + }, + { + "type": "@autoclosure", + "named": false + }, + { + "type": "@escaping", + "named": false + }, + { + "type": "Protocol", + "named": false + }, + { + "type": "Type", + "named": false + }, + { + "type": "[", + "named": false + }, + { + "type": "\\", + "named": false + }, + { + "type": "\\(", + "named": false + }, + { + "type": "]", + "named": false + }, + { + "type": "^", + "named": false + }, + { + "type": "^{", + "named": false + }, + { + "type": "_expression", + "named": true + }, + { + "type": "_modify", + "named": false + }, + { + "type": "actor", + "named": false + }, + { + "type": "any", + "named": false + }, + { + "type": "arch", + "named": false + }, + { + "type": "as", + "named": false + }, + { + "type": "as!", + "named": false + }, + { + "type": "as?", + "named": false + }, + { + "type": "associatedtype", + "named": false + }, + { + "type": "async", + "named": false + }, + { + "type": "available", + "named": false + }, + { + "type": "await", + "named": false + }, + { + "type": "bin_literal", + "named": true + }, + { + "type": "borrowing", + "named": false + }, + { + "type": "break", + "named": false + }, + { + "type": "canImport", + "named": false + }, + { + "type": "case", + "named": false + }, + { + "type": "catch_keyword", + "named": true + }, + { + "type": "class", + "named": false + }, + { + "type": "colorLiteral", + "named": false + }, + { + "type": "column", + "named": false + }, + { + "type": "comment", + "named": true + }, + { + "type": "compiler", + "named": false + }, + { + "type": "consuming", + "named": false + }, + { + "type": "continue", + "named": false + }, + { + "type": "convenience", + "named": false + }, + { + "type": "default_keyword", + "named": true + }, + { + "type": "deinit", + "named": false + }, + { + "type": "delegate", + "named": false + }, + { + "type": "didSet", + "named": false + }, + { + "type": "distributed", + "named": false + }, + { + "type": "do", + "named": false + }, + { + "type": "dsohandle", + "named": false + }, + { + "type": "dynamic", + "named": false + }, + { + "type": "each", + "named": false + }, + { + "type": "else", + "named": true + }, + { + "type": "enum", + "named": false + }, + { + "type": "extension", + "named": false + }, + { + "type": "externalMacro", + "named": false + }, + { + "type": "fallthrough", + "named": false + }, + { + "type": "false", + "named": false + }, + { + "type": "file", + "named": false + }, + { + "type": "fileID", + "named": false + }, + { + "type": "fileLiteral", + "named": false + }, + { + "type": "filePath", + "named": false + }, + { + "type": "fileprivate", + "named": false + }, + { + "type": "final", + "named": false + }, + { + "type": "for", + "named": false + }, + { + "type": "func", + "named": false + }, + { + "type": "function", + "named": false + }, + { + "type": "get", + "named": false + }, + { + "type": "getter:", + "named": false + }, + { + "type": "guard", + "named": false + }, + { + "type": "hex_literal", + "named": true + }, + { + "type": "if", + "named": false + }, + { + "type": "imageLiteral", + "named": false + }, + { + "type": "import", + "named": false + }, + { + "type": "in", + "named": false + }, + { + "type": "indirect", + "named": false + }, + { + "type": "infix", + "named": false + }, + { + "type": "init", + "named": false + }, + { + "type": "inout", + "named": false + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "internal", + "named": false + }, + { + "type": "is", + "named": false + }, + { + "type": "keyPath", + "named": false + }, + { + "type": "lazy", + "named": false + }, + { + "type": "let", + "named": false + }, + { + "type": "line", + "named": false + }, + { + "type": "macro", + "named": false + }, + { + "type": "multiline_comment", + "named": true + }, + { + "type": "mutating", + "named": false + }, + { + "type": "nil", + "named": false + }, + { + "type": "nonisolated", + "named": false + }, + { + "type": "nonmutating", + "named": false + }, + { + "type": "oct_literal", + "named": true + }, + { + "type": "open", + "named": false + }, + { + "type": "operator", + "named": false + }, + { + "type": "optional", + "named": false + }, + { + "type": "os", + "named": false + }, + { + "type": "override", + "named": false + }, + { + "type": "package", + "named": false + }, + { + "type": "param", + "named": false + }, + { + "type": "postfix", + "named": false + }, + { + "type": "precedencegroup", + "named": false + }, + { + "type": "prefix", + "named": false + }, + { + "type": "private", + "named": false + }, + { + "type": "property", + "named": false + }, + { + "type": "protocol", + "named": false + }, + { + "type": "public", + "named": false + }, + { + "type": "raw_str_continuing_indicator", + "named": true + }, + { + "type": "raw_str_end_part", + "named": true + }, + { + "type": "raw_str_interpolation_start", + "named": true + }, + { + "type": "raw_str_part", + "named": true + }, + { + "type": "real_literal", + "named": true + }, + { + "type": "receiver", + "named": false + }, + { + "type": "repeat", + "named": false + }, + { + "type": "required", + "named": false + }, + { + "type": "return", + "named": false + }, + { + "type": "selector", + "named": false + }, + { + "type": "self", + "named": false + }, + { + "type": "set", + "named": false + }, + { + "type": "setparam", + "named": false + }, + { + "type": "setter:", + "named": false + }, + { + "type": "some", + "named": false + }, + { + "type": "statement_label", + "named": true + }, + { + "type": "static", + "named": false + }, + { + "type": "struct", + "named": false + }, + { + "type": "subscript", + "named": false + }, + { + "type": "super", + "named": false + }, + { + "type": "swift", + "named": false + }, + { + "type": "switch", + "named": false + }, + { + "type": "targetEnvironment", + "named": false + }, + { + "type": "throw_keyword", + "named": true + }, + { + "type": "true", + "named": false + }, + { + "type": "try", + "named": false + }, + { + "type": "try!", + "named": false + }, + { + "type": "try?", + "named": false + }, + { + "type": "typealias", + "named": false + }, + { + "type": "u", + "named": false + }, + { + "type": "unavailable", + "named": false + }, + { + "type": "unowned", + "named": false + }, + { + "type": "unowned(safe)", + "named": false + }, + { + "type": "unowned(unsafe)", + "named": false + }, + { + "type": "var", + "named": false + }, + { + "type": "weak", + "named": false + }, + { + "type": "where_keyword", + "named": true + }, + { + "type": "while", + "named": false + }, + { + "type": "wildcard_pattern", + "named": true + }, + { + "type": "willSet", + "named": false + }, + { + "type": "yield", + "named": false + }, + { + "type": "{", + "named": false + }, + { + "type": "|", + "named": false + }, + { + "type": "||", + "named": false + }, + { + "type": "}", + "named": false + }, + { + "type": "~", + "named": false + } +] \ No newline at end of file