@ttsc/wasm 0.30.3 → 0.31.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/build/build-wasm.cjs +5 -4
- package/build/go-build-cache.cjs +347 -0
- package/build/pack-prepare.cjs +3 -2
- package/cmd/ttsc-wasm/main.go +22 -10
- package/cmd/ttsc-wasm/main_wasm.go +2 -2
- package/dist/.ttsc-wasm-build.json +138 -58
- package/dist/go.mod +7 -5
- package/dist/ttsc.wasm +2 -2
- package/go.mod +7 -5
- package/go.sum +10 -10
- package/host/api.go +34 -41
- package/host/doc.go +7 -6
- package/host/expose.go +42 -0
- package/host/fountain.go +192 -22
- package/host/host.go +10 -25
- package/host/host_native.go +3 -5
- package/host/invoke.go +133 -0
- package/host/plugin.go +37 -72
- package/host/result.go +108 -0
- package/lib/src/BootTtscWorkerTerminationError.d.ts +20 -0
- package/lib/src/BootTtscWorkerTerminationError.js +20 -0
- package/lib/src/BootTtscWorkerTerminationError.js.map +1 -1
- package/lib/src/MemFSError.d.ts +21 -2
- package/lib/src/MemFSError.js +25 -2
- package/lib/src/MemFSError.js.map +1 -1
- package/lib/src/bootTtsc.d.ts +49 -2
- package/lib/src/bootTtsc.js +89 -23
- package/lib/src/bootTtsc.js.map +1 -1
- package/lib/src/createMemFS.d.ts +45 -0
- package/lib/src/createMemFS.js +269 -66
- package/lib/src/createMemFS.js.map +1 -1
- package/lib/src/parseResult.d.ts +19 -0
- package/lib/src/parseResult.js +19 -0
- package/lib/src/parseResult.js.map +1 -1
- package/lib/src/structures/IBootResult.d.ts +20 -2
- package/lib/src/structures/IBootTtscOptions.d.ts +28 -6
- package/lib/src/structures/IFileStats.d.ts +51 -0
- package/lib/src/structures/IMemFSHost.d.ts +89 -0
- package/lib/src/structures/ITtscApi.d.ts +154 -9
- package/lib/src/structures/ITtscBuildOpts.d.ts +18 -1
- package/lib/src/structures/ITtscCompileResult.d.ts +20 -2
- package/lib/src/structures/ITtscDiagnostic.d.ts +25 -1
- package/lib/src/structures/ITtscFileQuery.d.ts +19 -1
- package/lib/src/structures/ITtscFountainDiagnosticsResult.d.ts +20 -1
- package/lib/src/structures/ITtscNodeAtPositionResult.d.ts +18 -1
- package/lib/src/structures/ITtscNodeInfo.d.ts +23 -2
- package/lib/src/structures/ITtscPluginOpts.d.ts +24 -3
- package/lib/src/structures/ITtscPositionQuery.d.ts +21 -4
- package/lib/src/structures/ITtscReleaseSnapshotResult.d.ts +22 -2
- package/lib/src/structures/ITtscResult.d.ts +31 -5
- package/lib/src/structures/ITtscSnapshotHandle.d.ts +19 -1
- package/lib/src/structures/ITtscSnapshotResult.d.ts +22 -1
- package/lib/src/structures/ITtscSnapshotsResult.d.ts +19 -1
- package/lib/src/structures/ITtscSourceFileTextResult.d.ts +19 -1
- package/lib/src/structures/ITtscSourceFilesResult.d.ts +23 -2
- package/lib/src/structures/ITtscSymbolAtPositionResult.d.ts +18 -1
- package/lib/src/structures/ITtscSymbolDeclaration.d.ts +25 -2
- package/lib/src/structures/ITtscSymbolInfo.d.ts +19 -1
- package/lib/src/structures/ITtscTransformResult.d.ts +21 -3
- package/lib/src/structures/ITtscTypeAtPositionResult.d.ts +18 -1
- package/lib/src/structures/ITtscTypeInfo.d.ts +19 -1
- package/lib/src/structures/ITtscVersion.d.ts +28 -1
- package/lib/src/structures/IWasmExecFS.d.ts +310 -0
- package/package.json +4 -2
- package/shim-vendor/shim/ast/enums_gen.go +4 -2
- package/shim-vendor/shim/ast/go.mod +5 -5
- package/shim-vendor/shim/ast/go.sum +10 -10
- package/shim-vendor/shim/ast/lint.go +1088 -20
- package/shim-vendor/shim/ast/parent.go +38 -22
- package/shim-vendor/shim/ast/safe_text.go +48 -26
- package/shim-vendor/shim/ast/shim.go +1307 -20
- package/shim-vendor/shim/ast/test/next_jsdoc_comment_location_reaches_variable_statement_test.go +51 -0
- package/shim-vendor/shim/ast/test/node_text_joins_multi_hop_qualified_name_test.go +24 -9
- package/shim-vendor/shim/ast/test/node_text_joins_one_hop_qualified_name_test.go +9 -5
- package/shim-vendor/shim/ast/test/node_text_returns_empty_for_nil_test.go +13 -5
- package/shim-vendor/shim/ast/test/node_text_returns_identifier_text_test.go +12 -5
- package/shim-vendor/shim/ast/test/node_text_skips_empty_qualified_left_test.go +35 -5
- package/shim-vendor/shim/astnav/go.mod +5 -5
- package/shim-vendor/shim/astnav/go.sum +12 -10
- package/shim-vendor/shim/astnav/shim.go +9 -0
- package/shim-vendor/shim/bundled/go.mod +7 -1
- package/shim-vendor/shim/bundled/go.sum +12 -0
- package/shim-vendor/shim/checker/enums_gen.go +4 -2
- package/shim-vendor/shim/checker/extra-shim.json +6 -0
- package/shim-vendor/shim/checker/go.mod +5 -5
- package/shim-vendor/shim/checker/go.sum +10 -10
- package/shim-vendor/shim/checker/node_builder_fields_gen.go +19 -0
- package/shim-vendor/shim/checker/shim.go +827 -114
- package/shim-vendor/shim/compiler/emit_sourcemap.go +68 -29
- package/shim-vendor/shim/compiler/emitassemble.go +36 -2
- package/shim-vendor/shim/compiler/emithook.go +13 -3
- package/shim-vendor/shim/compiler/go.mod +5 -5
- package/shim-vendor/shim/compiler/go.sum +10 -10
- package/shim-vendor/shim/compiler/incremental.go +56 -20
- package/shim-vendor/shim/compiler/resolution.go +92 -9
- package/shim-vendor/shim/core/enums_gen.go +2 -2
- package/shim-vendor/shim/core/go.mod +6 -1
- package/shim-vendor/shim/core/go.sum +10 -0
- package/shim-vendor/shim/core/modulekind.go +9 -0
- package/shim-vendor/shim/core/shim.go +157 -6
- package/shim-vendor/shim/diagnosticwriter/go.mod +10 -1
- package/shim-vendor/shim/diagnosticwriter/go.sum +20 -0
- package/shim-vendor/shim/diagnosticwriter/lint.go +188 -10
- package/shim-vendor/shim/diagnosticwriter/shim.go +14 -0
- package/shim-vendor/shim/lsp/go.mod +5 -5
- package/shim-vendor/shim/lsp/go.sum +10 -10
- package/shim-vendor/shim/lsp/shim.go +78 -2
- package/shim-vendor/shim/parser/go.mod +10 -1
- package/shim-vendor/shim/parser/go.sum +22 -0
- package/shim-vendor/shim/printer/emithost.go +46 -1
- package/shim-vendor/shim/printer/go.mod +5 -5
- package/shim-vendor/shim/printer/go.sum +10 -10
- package/shim-vendor/shim/printer/shim.go +114 -7
- package/shim-vendor/shim/printer/sourcemap.go +55 -0
- package/shim-vendor/shim/scanner/go.mod +10 -1
- package/shim-vendor/shim/scanner/go.sum +20 -0
- package/shim-vendor/shim/scanner/regexp.go +19 -4
- package/shim-vendor/shim/scanner/shim.go +3 -0
- package/shim-vendor/shim/stringutil/extra-shim.json +1 -0
- package/shim-vendor/shim/stringutil/go.mod +5 -0
- package/shim-vendor/shim/stringutil/go.sum +2 -0
- package/shim-vendor/shim/stringutil/shim.go +119 -0
- package/shim-vendor/shim/transformers/go.mod +5 -5
- package/shim-vendor/shim/transformers/go.sum +12 -10
- package/shim-vendor/shim/transformers/shim.go +12 -3
- package/shim-vendor/shim/tsoptions/command_line_raw.go +44 -0
- package/shim-vendor/shim/tsoptions/go.mod +10 -1
- package/shim-vendor/shim/tsoptions/go.sum +22 -0
- package/shim-vendor/shim/tsoptions/shim.go +1 -1
- package/shim-vendor/shim/tspath/go.mod +1 -1
- package/shim-vendor/shim/tspath/go.sum +6 -0
- package/shim-vendor/shim/vfs/cachedvfs/go.mod +3 -1
- package/shim-vendor/shim/vfs/cachedvfs/go.sum +12 -0
- package/shim-vendor/shim/vfs/decode.go +26 -0
- package/shim-vendor/shim/vfs/decode_test.go +42 -0
- package/shim-vendor/shim/vfs/go.mod +7 -1
- package/shim-vendor/shim/vfs/go.sum +12 -0
- package/shim-vendor/shim/vfs/osvfs/go.mod +7 -1
- package/shim-vendor/shim/vfs/osvfs/go.sum +12 -0
- package/src/BootTtscWorkerTerminationError.ts +22 -0
- package/src/MemFSError.ts +29 -2
- package/src/bootTtsc.ts +104 -28
- package/src/createMemFS.ts +291 -64
- package/src/parseResult.ts +19 -0
- package/src/structures/IBootResult.ts +21 -2
- package/src/structures/IBootTtscOptions.ts +32 -6
- package/src/structures/IFileStats.ts +65 -0
- package/src/structures/IMemFSHost.ts +97 -0
- package/src/structures/ITtscApi.ts +154 -9
- package/src/structures/ITtscBuildOpts.ts +19 -1
- package/src/structures/ITtscCompileResult.ts +21 -2
- package/src/structures/ITtscDiagnostic.ts +32 -1
- package/src/structures/ITtscFileQuery.ts +19 -1
- package/src/structures/ITtscFountainDiagnosticsResult.ts +20 -1
- package/src/structures/ITtscNodeAtPositionResult.ts +18 -1
- package/src/structures/ITtscNodeInfo.ts +27 -2
- package/src/structures/ITtscPluginOpts.ts +28 -3
- package/src/structures/ITtscPositionQuery.ts +21 -4
- package/src/structures/ITtscReleaseSnapshotResult.ts +22 -2
- package/src/structures/ITtscResult.ts +34 -5
- package/src/structures/ITtscSnapshotHandle.ts +19 -1
- package/src/structures/ITtscSnapshotResult.ts +22 -1
- package/src/structures/ITtscSnapshotsResult.ts +19 -1
- package/src/structures/ITtscSourceFileTextResult.ts +19 -1
- package/src/structures/ITtscSourceFilesResult.ts +23 -2
- package/src/structures/ITtscSymbolAtPositionResult.ts +18 -1
- package/src/structures/ITtscSymbolDeclaration.ts +27 -2
- package/src/structures/ITtscSymbolInfo.ts +23 -1
- package/src/structures/ITtscTransformResult.ts +22 -3
- package/src/structures/ITtscTypeAtPositionResult.ts +18 -1
- package/src/structures/ITtscTypeInfo.ts +20 -1
- package/src/structures/ITtscVersion.ts +33 -1
- package/src/structures/IWasmExecFS.ts +336 -0
|
@@ -1,102 +1,1081 @@
|
|
|
1
1
|
// gen_shims:hand-maintained
|
|
2
2
|
//
|
|
3
|
-
// This shim
|
|
4
|
-
//
|
|
5
|
-
// detects the marker on the first line and skips this file. Remove the marker
|
|
6
|
-
// only if you are intentionally regenerating and willing to re-add the
|
|
7
|
-
// hand-maintained content.
|
|
3
|
+
// This authored shim exposes upstream AST identities and direct function
|
|
4
|
+
// adapters. gen_shims detects the first-line marker and preserves this file.
|
|
8
5
|
|
|
9
6
|
package ast
|
|
10
7
|
|
|
11
8
|
import (
|
|
12
9
|
innerast "github.com/microsoft/typescript-go/internal/ast"
|
|
13
|
-
_ "unsafe"
|
|
14
10
|
)
|
|
15
11
|
|
|
12
|
+
// CallExpression exposes the upstream call-expression payload without copying it.
|
|
13
|
+
//
|
|
14
|
+
// @evidence contracts/common.md#principled-implementation The alias preserves innerast.CallExpression identity and its AST methods.
|
|
15
|
+
// @evidence contracts/common.md#clear-and-simple-design One alias exposes call payloads without a parallel shim structure.
|
|
16
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Call payloads retain upstream fields rather than guessed consumer layouts.
|
|
17
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose explains upstream payload identity, with a blank line before tags.
|
|
18
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
19
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
20
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
21
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
16
22
|
type CallExpression = innerast.CallExpression
|
|
23
|
+
|
|
24
|
+
// Diagnostic exposes upstream AST diagnostics with their original fields and methods.
|
|
25
|
+
//
|
|
26
|
+
// @evidence contracts/common.md#principled-implementation Go aliasing preserves innerast.Diagnostic values without converting diagnostic state.
|
|
27
|
+
// @evidence contracts/common.md#clear-and-simple-design The original diagnostic type supplies the representation and behavior.
|
|
28
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No shim diagnostic codes or expected messages replace upstream diagnostics.
|
|
29
|
+
// @evidence contracts/common.md#meaningful-documentation The comment identifies diagnostic ownership and preserved methods; prose and tags are separated.
|
|
30
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
31
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
32
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
33
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
17
34
|
type Diagnostic = innerast.Diagnostic
|
|
35
|
+
|
|
36
|
+
// Identifier exposes the upstream identifier payload; IdentifierNode denotes its node role.
|
|
37
|
+
//
|
|
38
|
+
// @evidence contracts/common.md#principled-implementation The alias retains innerast.Identifier payload identity, distinct from its Node role alias.
|
|
39
|
+
// @evidence contracts/common.md#clear-and-simple-design Upstream owns identifier fields instead of a duplicate shim payload.
|
|
40
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Identifier storage is not inferred from spelling or a fixture layout.
|
|
41
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose distinguishes identifier payload from node role and separates tags.
|
|
42
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
43
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
44
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
45
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
18
46
|
type Identifier = innerast.Identifier
|
|
47
|
+
|
|
48
|
+
// IdentifierNode exposes the upstream identifier node role, an alias of Node.
|
|
49
|
+
// It does not statically restrict the node's Kind to an identifier.
|
|
50
|
+
//
|
|
51
|
+
// @evidence contracts/common.md#principled-implementation The alias preserves upstream Node identity; role naming does not introduce Go kind narrowing.
|
|
52
|
+
// @evidence contracts/common.md#clear-and-simple-design One role alias matches upstream APIs without a second node wrapper.
|
|
53
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No unchecked conversion or substitute identifier node is introduced.
|
|
54
|
+
// @evidence contracts/common.md#meaningful-documentation The comment states the role and lack of kind narrowing, with prose/tag separation.
|
|
55
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
56
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
57
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
58
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
19
59
|
type IdentifierNode = innerast.IdentifierNode
|
|
60
|
+
|
|
61
|
+
// ImportAttributesNode exposes the upstream Node role for an import-attributes clause.
|
|
62
|
+
// The alias retains Node identity rather than validating the clause kind.
|
|
63
|
+
//
|
|
64
|
+
// @evidence contracts/common.md#principled-implementation Aliasing innerast.ImportAttributesNode preserves the compiler's Node-backed clause representation.
|
|
65
|
+
// @evidence contracts/common.md#clear-and-simple-design The upstream clause role needs no extra shim container.
|
|
66
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No import-attribute fields are fabricated or consumer keys special-cased.
|
|
67
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose identifies the clause role and permissive identity; tags follow a blank line.
|
|
68
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
69
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
70
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
71
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
20
72
|
type ImportAttributesNode = innerast.ImportAttributesNode
|
|
73
|
+
|
|
74
|
+
// ImportClauseNode exposes the upstream Node role for import binding clauses.
|
|
75
|
+
// Kind validity remains the caller's responsibility because this is a Node alias.
|
|
76
|
+
//
|
|
77
|
+
// @evidence contracts/common.md#principled-implementation Exact alias identity preserves the upstream import-clause role in compiler signatures.
|
|
78
|
+
// @evidence contracts/common.md#clear-and-simple-design Binding-clause storage remains with upstream Node rather than another wrapper.
|
|
79
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No alternate import-binding representation bypasses upstream behavior.
|
|
80
|
+
// @evidence contracts/common.md#meaningful-documentation The comment explains binding purpose and kind responsibility with separated tags.
|
|
81
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
82
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
83
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
84
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
21
85
|
type ImportClauseNode = innerast.ImportClauseNode
|
|
86
|
+
|
|
87
|
+
// ImportPhaseModifierSyntaxKind names type/defer import phase kinds.
|
|
88
|
+
// Upstream aliases Kind, so Go does not enforce that two-kind subset.
|
|
89
|
+
//
|
|
90
|
+
// @evidence contracts/common.md#principled-implementation The alias preserves upstream Kind identity while its documented role denotes type/defer phases.
|
|
91
|
+
// @evidence contracts/common.md#clear-and-simple-design The phase role reuses compiler kind codes without another enum.
|
|
92
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Phase values remain upstream discriminants rather than hardcoded replacement codes.
|
|
93
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose explains phase meaning and unchecked subset, separating tags from prose.
|
|
94
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
95
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
96
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
97
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
22
98
|
type ImportPhaseModifierSyntaxKind = innerast.ImportPhaseModifierSyntaxKind
|
|
99
|
+
|
|
100
|
+
// ImportSpecifierList exposes upstream NodeList storage for ordered import specifiers.
|
|
101
|
+
// The role does not enforce element kinds or copy the contained node pointers.
|
|
102
|
+
//
|
|
103
|
+
// @evidence contracts/common.md#principled-implementation Exact aliasing preserves the upstream NodeList identity and specifier order.
|
|
104
|
+
// @evidence contracts/common.md#clear-and-simple-design Import-list APIs share upstream list storage rather than a converted collection.
|
|
105
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No imported bindings are substituted or precomputed for a consumer.
|
|
106
|
+
// @evidence contracts/common.md#meaningful-documentation The comment explains list ordering, element limits and shared storage with separated tags.
|
|
107
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
108
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
109
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
110
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
23
111
|
type ImportSpecifierList = innerast.ImportSpecifierList
|
|
112
|
+
|
|
113
|
+
// IntersectionTypeNode exposes the upstream intersection-type payload and methods.
|
|
114
|
+
//
|
|
115
|
+
// @evidence contracts/common.md#principled-implementation The alias retains innerast.IntersectionTypeNode identity for compiler type operands.
|
|
116
|
+
// @evidence contracts/common.md#clear-and-simple-design Upstream owns intersection payload fields without a shim mirror.
|
|
117
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No semantic intersection result replaces the upstream syntax payload.
|
|
118
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose identifies the intersection payload and preserved methods, with separated tags.
|
|
119
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
120
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
121
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
122
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
24
123
|
type IntersectionTypeNode = innerast.IntersectionTypeNode
|
|
124
|
+
|
|
125
|
+
// Kind exposes the upstream syntax discriminant and its numeric identity.
|
|
126
|
+
// Not every Kind is a token or valid in every syntax position.
|
|
127
|
+
//
|
|
128
|
+
// @evidence contracts/common.md#principled-implementation Aliasing innerast.Kind keeps compiler discriminants identical across the plugin boundary.
|
|
129
|
+
// @evidence contracts/common.md#clear-and-simple-design One kind type shares upstream enums without a translation table.
|
|
130
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts The shim neither renumbers kinds nor recognizes fixture-specific codes.
|
|
131
|
+
// @evidence contracts/common.md#meaningful-documentation The comment explains discriminant identity and context limits; tags are separated.
|
|
132
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
133
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
134
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
135
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
25
136
|
type Kind = innerast.Kind
|
|
137
|
+
|
|
138
|
+
// KeywordExpressionSyntaxKind names upstream keyword expression kinds.
|
|
139
|
+
// This is a Kind alias rather than a Go-enforced keyword subset.
|
|
140
|
+
//
|
|
141
|
+
// @evidence contracts/common.md#principled-implementation Upstream Kind identity is retained for the keyword-expression role without false narrowing.
|
|
142
|
+
// @evidence contracts/common.md#clear-and-simple-design The role uses the existing kind type instead of another enum.
|
|
143
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Keyword codes remain upstream values rather than guessed parser constants.
|
|
144
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose explains expression-keyword purpose and unrestricted alias identity.
|
|
145
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
146
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
147
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
148
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
26
149
|
type KeywordExpressionSyntaxKind = innerast.KeywordExpressionSyntaxKind
|
|
150
|
+
|
|
151
|
+
// KeywordTypeSyntaxKind names upstream type keyword kinds, including object,
|
|
152
|
+
// any, unknown and intrinsic keywords alongside primitive type keywords.
|
|
153
|
+
// This Kind alias does not itself reject other syntax kinds.
|
|
154
|
+
//
|
|
155
|
+
// @evidence contracts/common.md#principled-implementation Aliasing preserves compiler kind identity while documenting the intended type-keyword role.
|
|
156
|
+
// @evidence contracts/common.md#clear-and-simple-design The role shares Kind storage without a redundant keyword enum.
|
|
157
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No independent list of guessed keyword codes replaces upstream identity.
|
|
158
|
+
// @evidence contracts/common.md#meaningful-documentation The native comment states the role and nonvalidation boundary, with separated tags.
|
|
159
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
160
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
161
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
162
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
27
163
|
type KeywordTypeSyntaxKind = innerast.KeywordTypeSyntaxKind
|
|
164
|
+
|
|
165
|
+
// LiteralTypeNode exposes the upstream literal-type payload without interpreting its value.
|
|
166
|
+
//
|
|
167
|
+
// @evidence contracts/common.md#principled-implementation Alias identity preserves innerast.LiteralTypeNode syntax fields and methods.
|
|
168
|
+
// @evidence contracts/common.md#clear-and-simple-design The upstream payload owns literal-type representation without a shim duplicate.
|
|
169
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Literal syntax is not replaced by precomputed type results.
|
|
170
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose identifies literal payload ownership and its nonevaluating boundary.
|
|
171
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
172
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
173
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
174
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
28
175
|
type LiteralTypeNode = innerast.LiteralTypeNode
|
|
176
|
+
|
|
177
|
+
// NoSubstitutionTemplateLiteral exposes the upstream template payload with no interpolation.
|
|
178
|
+
//
|
|
179
|
+
// @evidence contracts/common.md#principled-implementation Exact aliasing retains the upstream no-substitution template's payload and methods.
|
|
180
|
+
// @evidence contracts/common.md#clear-and-simple-design Template storage stays upstream instead of a second shim text container.
|
|
181
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts The shim does not invent template spelling or consumer-specific escaping.
|
|
182
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose distinguishes the no-interpolation form and separates tags.
|
|
183
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
184
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
185
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
186
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
29
187
|
type NoSubstitutionTemplateLiteral = innerast.NoSubstitutionTemplateLiteral
|
|
188
|
+
|
|
189
|
+
// Node exposes the compiler's AST node identity, methods and mutable parent links.
|
|
190
|
+
// Callers must respect the owning compiler's node lifetime and kind/payload invariants.
|
|
191
|
+
//
|
|
192
|
+
// @evidence contracts/common.md#principled-implementation Go aliasing preserves innerast.Node identity without copying payloads or severing parent links.
|
|
193
|
+
// @evidence contracts/common.md#clear-and-simple-design The compiler node itself supplies storage and methods across the shim boundary.
|
|
194
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No reconstructed node layout or foreign-method replacement is introduced.
|
|
195
|
+
// @evidence contracts/common.md#meaningful-documentation The comment identifies shared identity, mutable links and owner invariants with separated tags.
|
|
196
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
197
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
198
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
199
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
30
200
|
type Node = innerast.Node
|
|
201
|
+
|
|
202
|
+
// NodeFactory exposes the upstream AST allocator, creation methods and hook behavior.
|
|
203
|
+
// Use a factory within the lifetime and concurrency rules of its compiler owner.
|
|
204
|
+
//
|
|
205
|
+
// @evidence contracts/common.md#principled-implementation The alias preserves the upstream factory's methods and allocation state exactly.
|
|
206
|
+
// @evidence contracts/common.md#clear-and-simple-design Upstream owns node creation rather than an independent shim allocator.
|
|
207
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No foreign allocator fields or creation methods are monkey patched.
|
|
208
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose describes creation ownership and lifetime/concurrency responsibility, with separated tags.
|
|
209
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
210
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
211
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
212
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
31
213
|
type NodeFactory = innerast.NodeFactory
|
|
214
|
+
|
|
215
|
+
// NodeFactoryHooks exposes supported creation, update and clone callbacks.
|
|
216
|
+
// The zero value leaves upstream factory behavior unintercepted.
|
|
217
|
+
//
|
|
218
|
+
// @evidence contracts/common.md#principled-implementation Exact aliasing preserves the upstream hook signatures and zero-value semantics.
|
|
219
|
+
// @evidence contracts/common.md#clear-and-simple-design The existing callback bundle owns all factory interception roles.
|
|
220
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Hooks expose supported injection instead of replacing foreign factory methods.
|
|
221
|
+
// @evidence contracts/common.md#meaningful-documentation The comment identifies callback roles and zero-value behavior, separating tags.
|
|
222
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
223
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
224
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
225
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
32
226
|
type NodeFactoryHooks = innerast.NodeFactoryHooks
|
|
227
|
+
|
|
228
|
+
// NodeVisitor exposes the upstream visitor callback, recreation factory and hooks.
|
|
229
|
+
// Construction alone does not start a tree traversal.
|
|
230
|
+
//
|
|
231
|
+
// @evidence contracts/common.md#principled-implementation The alias retains upstream visitor methods and callback state for explicit traversal.
|
|
232
|
+
// @evidence contracts/common.md#clear-and-simple-design One upstream visitor owns traversal behavior without a shim traversal engine.
|
|
233
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts The shim introduces no fixture-specific visitation or foreign method mutation.
|
|
234
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose explains visitor roles and the construction/traversal distinction.
|
|
235
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
236
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
237
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
238
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
33
239
|
type NodeVisitor = innerast.NodeVisitor
|
|
240
|
+
|
|
241
|
+
// NodeVisitorHooks exposes upstream interception callbacks for child visitation roles.
|
|
242
|
+
// The zero value keeps the visitor's default child-processing behavior.
|
|
243
|
+
//
|
|
244
|
+
// @evidence contracts/common.md#principled-implementation Alias identity preserves each upstream visitation hook signature and default omission.
|
|
245
|
+
// @evidence contracts/common.md#clear-and-simple-design Existing role-based callbacks avoid an additional shim policy layer.
|
|
246
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Supported hooks supply interception without monkey patching visitor internals.
|
|
247
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose states hook responsibility and omitted-hook behavior, with separated tags.
|
|
248
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
249
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
250
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
251
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
34
252
|
type NodeVisitorHooks = innerast.NodeVisitorHooks
|
|
253
|
+
|
|
254
|
+
// TokenFlags exposes the upstream bitmask describing token scanning metadata.
|
|
255
|
+
//
|
|
256
|
+
// @evidence contracts/common.md#principled-implementation Aliasing keeps innerast.TokenFlags bit identity compatible with compiler tokens.
|
|
257
|
+
// @evidence contracts/common.md#clear-and-simple-design Upstream owns the flag type and values without a converted mask.
|
|
258
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No shim-specific token bits replace the documented upstream flags.
|
|
259
|
+
// @evidence contracts/common.md#meaningful-documentation The native comment identifies token metadata and upstream bitmask ownership.
|
|
260
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
261
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
262
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
263
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
35
264
|
type TokenFlags = innerast.TokenFlags
|
|
265
|
+
|
|
266
|
+
// ModifierList exposes the upstream modifier list and its combined modifier flags.
|
|
267
|
+
// Nodes and source range remain shared with the compiler list.
|
|
268
|
+
//
|
|
269
|
+
// @evidence contracts/common.md#principled-implementation The alias preserves upstream ModifierList storage, flags and list methods together.
|
|
270
|
+
// @evidence contracts/common.md#clear-and-simple-design Existing modifier-list structure owns aggregation without a parallel shim cache.
|
|
271
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No consumer-specific modifier bits or reconstructed lists are injected.
|
|
272
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose explains combined flags and shared nodes/range, with separated tags.
|
|
273
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
274
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
275
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
276
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
36
277
|
type ModifierList = innerast.ModifierList
|
|
278
|
+
|
|
279
|
+
// StatementList names upstream NodeList storage for ordered statements.
|
|
280
|
+
// The role name does not statically constrain element kinds.
|
|
281
|
+
//
|
|
282
|
+
// @evidence contracts/common.md#principled-implementation Exact aliasing preserves the upstream ordered NodeList and statement role.
|
|
283
|
+
// @evidence contracts/common.md#clear-and-simple-design Statement APIs reuse compiler list storage without a converted sequence.
|
|
284
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No known statement sequence substitutes for the compiler list.
|
|
285
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose explains ordering and the nonnarrowing role, with separated tags.
|
|
286
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
287
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
288
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
289
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
37
290
|
type StatementList = innerast.StatementList
|
|
291
|
+
|
|
292
|
+
// VariableDeclarationNodeList names upstream NodeList storage for variable bindings.
|
|
293
|
+
// It does not add Go element-kind validation.
|
|
294
|
+
//
|
|
295
|
+
// @evidence contracts/common.md#principled-implementation Alias identity preserves the upstream binding-list representation and element order.
|
|
296
|
+
// @evidence contracts/common.md#clear-and-simple-design Variable-binding APIs reuse NodeList rather than a second collection.
|
|
297
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Bindings are not copied into a guessed consumer-specific list representation.
|
|
298
|
+
// @evidence contracts/common.md#meaningful-documentation The native comment identifies binding-list use and element validation limits.
|
|
299
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
300
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
301
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
302
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
38
303
|
type VariableDeclarationNodeList = innerast.VariableDeclarationNodeList
|
|
304
|
+
|
|
305
|
+
// BindingElementList names upstream NodeList storage for destructuring elements.
|
|
306
|
+
// Its role does not statically restrict contained Node kinds.
|
|
307
|
+
//
|
|
308
|
+
// @evidence contracts/common.md#principled-implementation The alias preserves upstream list identity and destructuring element order.
|
|
309
|
+
// @evidence contracts/common.md#clear-and-simple-design Existing NodeList storage supplies the binding-element collection.
|
|
310
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No fixture-derived destructuring elements replace supplied compiler nodes.
|
|
311
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose states destructuring purpose and nonnarrowing list identity.
|
|
312
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
313
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
314
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
315
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
39
316
|
type BindingElementList = innerast.BindingElementList
|
|
317
|
+
|
|
318
|
+
// TypeParameterList names upstream NodeList storage for ordered generic parameters.
|
|
319
|
+
// The role does not enforce each element's kind.
|
|
320
|
+
//
|
|
321
|
+
// @evidence contracts/common.md#principled-implementation Exact alias identity retains upstream generic-parameter list order and methods.
|
|
322
|
+
// @evidence contracts/common.md#clear-and-simple-design Generic-parameter collections reuse NodeList without another storage type.
|
|
323
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No guessed generic defaults or fixture parameter lists are substituted.
|
|
324
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose describes generic ordering and element-kind responsibility.
|
|
325
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
326
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
327
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
328
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
40
329
|
type TypeParameterList = innerast.TypeParameterList
|
|
330
|
+
|
|
331
|
+
// ParameterList names upstream NodeList storage for ordered function parameters.
|
|
332
|
+
// Node kinds and declaration validity remain upstream/caller responsibilities.
|
|
333
|
+
//
|
|
334
|
+
// @evidence contracts/common.md#principled-implementation The alias preserves upstream parameter-list identity and declaration order.
|
|
335
|
+
// @evidence contracts/common.md#clear-and-simple-design Parameter APIs share the compiler's list rather than a duplicate parameter collection.
|
|
336
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No special parameter names or fixture signatures are encoded.
|
|
337
|
+
// @evidence contracts/common.md#meaningful-documentation The native comment identifies parameter order and alias validation limits.
|
|
338
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
339
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
340
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
341
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
41
342
|
type ParameterList = innerast.ParameterList
|
|
343
|
+
|
|
344
|
+
// ElementList names upstream NodeList storage for ordered expression elements.
|
|
345
|
+
// It is a role alias rather than a Go-enforced expression collection.
|
|
346
|
+
//
|
|
347
|
+
// @evidence contracts/common.md#principled-implementation Upstream NodeList identity and element order remain unchanged through this alias.
|
|
348
|
+
// @evidence contracts/common.md#clear-and-simple-design Expression-list APIs use existing compiler collection methods without conversion.
|
|
349
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No computed expression results or consumer-specific elements replace nodes.
|
|
350
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose distinguishes expression-list purpose from static kind validation.
|
|
351
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
352
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
353
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
354
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
42
355
|
type ElementList = innerast.ElementList
|
|
356
|
+
|
|
357
|
+
// TypeList names upstream NodeList storage for ordered type syntax nodes.
|
|
358
|
+
// It does not establish assignability or constrain element kinds in Go.
|
|
359
|
+
//
|
|
360
|
+
// @evidence contracts/common.md#principled-implementation Aliasing preserves the compiler type-syntax list identity and ordering.
|
|
361
|
+
// @evidence contracts/common.md#clear-and-simple-design Type operand collections reuse NodeList instead of a semantic type container.
|
|
362
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No precomputed type answers substitute for upstream syntax nodes.
|
|
363
|
+
// @evidence contracts/common.md#meaningful-documentation The native comment separates syntax ordering from semantic and kind checks.
|
|
364
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
365
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
366
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
367
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
43
368
|
type TypeList = innerast.TypeList
|
|
369
|
+
|
|
370
|
+
// TypeElementList names upstream NodeList storage for interface or object-type members.
|
|
371
|
+
// The role does not enforce member kinds or member compatibility.
|
|
372
|
+
//
|
|
373
|
+
// @evidence contracts/common.md#principled-implementation The alias preserves upstream member-list identity and printed declaration order.
|
|
374
|
+
// @evidence contracts/common.md#clear-and-simple-design Member collections share NodeList storage without an independent shim member map.
|
|
375
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No guessed interface members or consumer-specific compatibility declarations are introduced.
|
|
376
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose identifies member contexts and nonvalidation limits with separated tags.
|
|
377
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
378
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
379
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
380
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
44
381
|
type TypeElementList = innerast.TypeElementList
|
|
382
|
+
|
|
383
|
+
// Statement exposes the upstream statement role, an alias of Node.
|
|
384
|
+
// Its name does not establish legal statement placement or restrict Kind in Go.
|
|
385
|
+
//
|
|
386
|
+
// @evidence contracts/common.md#principled-implementation Exact Node identity preserves statement-role signatures without false kind narrowing.
|
|
387
|
+
// @evidence contracts/common.md#clear-and-simple-design Statement behavior remains on upstream Node rather than a shim wrapper.
|
|
388
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No simulated control flow or test-selected statement representation is introduced.
|
|
389
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose explains the statement role and placement/kind limits.
|
|
390
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
391
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
392
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
393
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
45
394
|
type Statement = innerast.Statement
|
|
395
|
+
|
|
396
|
+
// Expression exposes the upstream expression role, an alias of Node.
|
|
397
|
+
// It does not evaluate expressions or statically enforce expression kinds.
|
|
398
|
+
//
|
|
399
|
+
// @evidence contracts/common.md#principled-implementation The alias preserves upstream Node identity for expression-role APIs.
|
|
400
|
+
// @evidence contracts/common.md#clear-and-simple-design Expressions retain Node methods without another shim expression hierarchy.
|
|
401
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No precomputed value replaces an upstream expression node.
|
|
402
|
+
// @evidence contracts/common.md#meaningful-documentation The native comment distinguishes syntax identity from evaluation and kind enforcement.
|
|
403
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
404
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
405
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
406
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
46
407
|
type Expression = innerast.Expression
|
|
408
|
+
|
|
409
|
+
// TypeNode exposes the upstream type-syntax role, an alias of Node.
|
|
410
|
+
// It does not represent a resolved checker type or enforce a kind subset in Go.
|
|
411
|
+
//
|
|
412
|
+
// @evidence contracts/common.md#principled-implementation Aliasing preserves upstream Node identity for type-syntax operands, not semantic checker types.
|
|
413
|
+
// @evidence contracts/common.md#clear-and-simple-design Type syntax shares Node storage and methods without another shim type model.
|
|
414
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No guessed checker result or alternate semantic type representation is introduced.
|
|
415
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose separates syntax from resolved types and documents nonnarrowing identity.
|
|
416
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
417
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
418
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
419
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
47
420
|
type TypeNode = innerast.TypeNode
|
|
421
|
+
|
|
422
|
+
// TypePredicateParameterName names the upstream identifier/this predicate-target role.
|
|
423
|
+
// It aliases Node and does not enforce those alternatives in Go.
|
|
424
|
+
//
|
|
425
|
+
// @evidence contracts/common.md#principled-implementation Exact upstream Node identity preserves the predicate-target role without claiming static narrowing.
|
|
426
|
+
// @evidence contracts/common.md#clear-and-simple-design Predicate targets use one upstream role alias instead of a converted name wrapper.
|
|
427
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No hardcoded narrowing target or computed predicate outcome is embedded.
|
|
428
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose identifies identifier/this intent and Go kind-validation limits.
|
|
429
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
430
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
431
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
432
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
48
433
|
type TypePredicateParameterName = innerast.TypePredicateParameterName
|
|
434
|
+
|
|
435
|
+
// AssertsKeyword names the upstream Node role for an asserts keyword.
|
|
436
|
+
// This Node alias does not statically enforce KindAssertsKeyword.
|
|
437
|
+
//
|
|
438
|
+
// @evidence contracts/common.md#principled-implementation The alias preserves upstream keyword-node identity rather than inventing a narrowed Go node type.
|
|
439
|
+
// @evidence contracts/common.md#clear-and-simple-design The keyword role shares Node representation without duplicate token storage.
|
|
440
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Asserts identity remains language syntax instead of a fixture-dependent predicate marker.
|
|
441
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose explains keyword intent and the nonnarrowing alias, with separated tags.
|
|
442
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
443
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
444
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
445
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
49
446
|
type AssertsKeyword = innerast.AssertsKeyword
|
|
447
|
+
|
|
448
|
+
// BindingName names the upstream identifier/destructuring binding role.
|
|
449
|
+
// This Node alias does not enforce binding grammar or name resolution.
|
|
450
|
+
//
|
|
451
|
+
// @evidence contracts/common.md#principled-implementation Exact alias identity retains the upstream binding role without converting identifier or pattern nodes.
|
|
452
|
+
// @evidence contracts/common.md#clear-and-simple-design Binding-name APIs share Node rather than a second pattern representation.
|
|
453
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No consumer-specific binding spelling or guessed symbol identity is encoded.
|
|
454
|
+
// @evidence contracts/common.md#meaningful-documentation The comment states binding alternatives and unchecked grammar/resolution boundaries.
|
|
455
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
456
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
457
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
458
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
50
459
|
type BindingName = innerast.BindingName
|
|
460
|
+
|
|
461
|
+
// BinaryOperatorToken names upstream binary-operator tokens using Node identity.
|
|
462
|
+
// Its role does not statically restrict token kinds in Go.
|
|
463
|
+
//
|
|
464
|
+
// @evidence contracts/common.md#principled-implementation Go aliasing preserves the compiler's binary-token representation and methods.
|
|
465
|
+
// @evidence contracts/common.md#clear-and-simple-design Operator tokens reuse Node without a separate shim operator payload.
|
|
466
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts The alias does not replace operator codes with fixture-specific values.
|
|
467
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose identifies binary-token purpose and unrestricted alias identity.
|
|
468
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
469
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
470
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
471
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
51
472
|
type BinaryOperatorToken = innerast.BinaryOperatorToken
|
|
473
|
+
|
|
474
|
+
// PropertyName names upstream member-key syntax, including computed and literal names.
|
|
475
|
+
// It aliases Node and leaves contextual name legality to the caller/compiler.
|
|
476
|
+
//
|
|
477
|
+
// @evidence contracts/common.md#principled-implementation Exact upstream alias identity preserves diverse property-name node forms without static kind narrowing.
|
|
478
|
+
// @evidence contracts/common.md#clear-and-simple-design Name consumers share Node storage instead of a shim key-value conversion.
|
|
479
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No property-name whitelist or consumer-key workaround is introduced.
|
|
480
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose identifies key forms and contextual legality limits, with separated tags.
|
|
481
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
482
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
483
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
484
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
52
485
|
type PropertyName = innerast.PropertyName
|
|
486
|
+
|
|
487
|
+
// MemberName names the upstream identifier/private-identifier member role.
|
|
488
|
+
// It aliases Node without statically checking the member-name kind.
|
|
489
|
+
//
|
|
490
|
+
// @evidence contracts/common.md#principled-implementation Exact alias identity retains upstream member-name nodes without false Go kind narrowing.
|
|
491
|
+
// @evidence contracts/common.md#clear-and-simple-design Member names reuse Node rather than another shim name wrapper.
|
|
492
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No consumer member names or guessed private-name payloads are substituted.
|
|
493
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose identifies member alternatives and the nonnarrowing boundary.
|
|
494
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
495
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
496
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
497
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
53
498
|
type MemberName = innerast.MemberName
|
|
499
|
+
|
|
500
|
+
// EntityName names the upstream identifier/qualified-name entity role.
|
|
501
|
+
// This Node alias leaves qualification validity and binding resolution unchecked.
|
|
502
|
+
//
|
|
503
|
+
// @evidence contracts/common.md#principled-implementation The alias preserves upstream entity-node identity without converting qualification structure.
|
|
504
|
+
// @evidence contracts/common.md#clear-and-simple-design Entity-name APIs share Node instead of another name hierarchy.
|
|
505
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No module or entity names are special-cased for consumers.
|
|
506
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose identifies qualification alternatives and resolution/kind limits.
|
|
507
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
508
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
509
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
510
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
54
511
|
type EntityName = innerast.EntityName
|
|
512
|
+
|
|
513
|
+
// ModuleExportName names upstream identifier/string-literal module binding names.
|
|
514
|
+
// Go retains Node identity rather than enforcing those two alternatives.
|
|
515
|
+
//
|
|
516
|
+
// @evidence contracts/common.md#principled-implementation Exact aliasing retains upstream quoted and identifier name representations without static narrowing.
|
|
517
|
+
// @evidence contracts/common.md#clear-and-simple-design Module-name consumers share compiler nodes without a spelling conversion layer.
|
|
518
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No consumer export names or artificial aliases replace source names.
|
|
519
|
+
// @evidence contracts/common.md#meaningful-documentation The comment explains quoted/identifier intent and Go validation limits.
|
|
520
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
521
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
522
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
523
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
55
524
|
type ModuleExportName = innerast.ModuleExportName
|
|
525
|
+
|
|
526
|
+
// NamedImportBindings names upstream namespace or named import binding clauses.
|
|
527
|
+
// This Node alias does not statically validate the clause kind.
|
|
528
|
+
//
|
|
529
|
+
// @evidence contracts/common.md#principled-implementation Alias identity preserves upstream namespace/named binding nodes for import APIs.
|
|
530
|
+
// @evidence contracts/common.md#clear-and-simple-design One upstream role reuses Node without a second binding container.
|
|
531
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No fixture-specific binding list or loader workaround is represented.
|
|
532
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose identifies both clause forms and nonnarrowing identity.
|
|
533
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
534
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
535
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
536
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
56
537
|
type NamedImportBindings = innerast.NamedImportBindings
|
|
538
|
+
|
|
539
|
+
// ConciseBody names the upstream block/expression function-body role.
|
|
540
|
+
// It is a Node alias, so callers must provide a context-appropriate body.
|
|
541
|
+
//
|
|
542
|
+
// @evidence contracts/common.md#principled-implementation Exact upstream identity preserves block and expression body nodes without Go kind narrowing.
|
|
543
|
+
// @evidence contracts/common.md#clear-and-simple-design Function-body APIs share Node instead of duplicate body wrappers.
|
|
544
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No synthesized fixture body or runtime function replacement is introduced.
|
|
545
|
+
// @evidence contracts/common.md#meaningful-documentation The comment explains body alternatives and context responsibility.
|
|
546
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
547
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
548
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
549
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
57
550
|
type ConciseBody = innerast.ConciseBody
|
|
551
|
+
|
|
552
|
+
// TemplateSpanList names upstream NodeList storage for interpolation spans.
|
|
553
|
+
// Element kinds and template closure are not enforced by the Go alias.
|
|
554
|
+
//
|
|
555
|
+
// @evidence contracts/common.md#principled-implementation Aliasing preserves upstream span-list ordering and shared NodeList identity.
|
|
556
|
+
// @evidence contracts/common.md#clear-and-simple-design Span sequences reuse compiler lists without a second template collection.
|
|
557
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No precomputed interpolation output replaces span nodes.
|
|
558
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose identifies span ordering and kind/closure limits.
|
|
559
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
560
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
561
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
562
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
58
563
|
type TemplateSpanList = innerast.TemplateSpanList
|
|
564
|
+
|
|
565
|
+
// TemplateMiddleOrTail names the upstream continued/closing template segment role.
|
|
566
|
+
// This Node alias does not enforce that kind distinction in Go.
|
|
567
|
+
//
|
|
568
|
+
// @evidence contracts/common.md#principled-implementation Exact alias identity retains upstream middle/tail segment nodes without static narrowing.
|
|
569
|
+
// @evidence contracts/common.md#clear-and-simple-design Segment-role APIs share Node instead of another literal wrapper.
|
|
570
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No guessed terminal segment or fixture text replaces upstream nodes.
|
|
571
|
+
// @evidence contracts/common.md#meaningful-documentation The comment explains continued/closing roles and the alias restriction limit.
|
|
572
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
573
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
574
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
575
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
59
576
|
type TemplateMiddleOrTail = innerast.TemplateMiddleOrTail
|
|
577
|
+
|
|
578
|
+
// TemplateHeadNode names the upstream Node role for a template's leading segment.
|
|
579
|
+
// It does not statically constrain Kind to a template head.
|
|
580
|
+
//
|
|
581
|
+
// @evidence contracts/common.md#principled-implementation Alias identity preserves the upstream head-node role without narrowing Node in Go.
|
|
582
|
+
// @evidence contracts/common.md#clear-and-simple-design Head-node consumers share Node rather than another segment wrapper.
|
|
583
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No hardcoded leading template text is embedded in the alias.
|
|
584
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose identifies the leading-segment role and kind limits.
|
|
585
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
586
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
587
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
588
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
60
589
|
type TemplateHeadNode = innerast.TemplateHeadNode
|
|
590
|
+
|
|
591
|
+
// QuestionDotToken names the upstream optional-chain marker node role.
|
|
592
|
+
// The Node alias does not itself enforce the question-dot token kind.
|
|
593
|
+
//
|
|
594
|
+
// @evidence contracts/common.md#principled-implementation Exact upstream identity retains the optional-chain marker representation without Go kind narrowing.
|
|
595
|
+
// @evidence contracts/common.md#clear-and-simple-design The marker role shares Node storage without a second punctuation payload.
|
|
596
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts The role denotes language punctuation rather than a consumer-specific optionality hack.
|
|
597
|
+
// @evidence contracts/common.md#meaningful-documentation The comment describes optional-chain intent and unchecked kind identity.
|
|
598
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
599
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
600
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
601
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
61
602
|
type QuestionDotToken = innerast.QuestionDotToken
|
|
603
|
+
|
|
604
|
+
// QuestionToken names the upstream question-mark node role.
|
|
605
|
+
// This Node alias leaves the token kind and placement unchecked.
|
|
606
|
+
//
|
|
607
|
+
// @evidence contracts/common.md#principled-implementation Aliasing preserves upstream question-token identity without asserting context validity.
|
|
608
|
+
// @evidence contracts/common.md#clear-and-simple-design Question-mark consumers reuse Node instead of duplicate marker storage.
|
|
609
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No fixture-dependent optional marker or alternative token code is introduced.
|
|
610
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose identifies punctuation purpose and placement/kind limits.
|
|
611
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
612
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
613
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
614
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
62
615
|
type QuestionToken = innerast.QuestionToken
|
|
616
|
+
|
|
617
|
+
// DotDotDotToken names the upstream rest/spread marker node role.
|
|
618
|
+
// It aliases Node without statically enforcing the token kind or context.
|
|
619
|
+
//
|
|
620
|
+
// @evidence contracts/common.md#principled-implementation Exact alias identity retains upstream rest/spread token nodes without static kind narrowing.
|
|
621
|
+
// @evidence contracts/common.md#clear-and-simple-design The marker role shares compiler Node storage rather than another token wrapper.
|
|
622
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No consumer-selected rest/spread spelling replaces upstream token identity.
|
|
623
|
+
// @evidence contracts/common.md#meaningful-documentation The comment states rest/spread intent and validation limits with separated tags.
|
|
624
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
625
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
626
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
627
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
63
628
|
type DotDotDotToken = innerast.DotDotDotToken
|
|
629
|
+
|
|
630
|
+
// ExclamationToken names the upstream exclamation marker node role.
|
|
631
|
+
// The Node alias does not establish definite-assignment or assertion legality.
|
|
632
|
+
//
|
|
633
|
+
// @evidence contracts/common.md#principled-implementation Alias identity preserves upstream exclamation nodes while leaving kind and placement to callers.
|
|
634
|
+
// @evidence contracts/common.md#clear-and-simple-design The marker shares Node representation without another shim assertion type.
|
|
635
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No inferred assertion result or consumer-specific marker is embedded.
|
|
636
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose explains marker identity and contextual legality boundaries.
|
|
637
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
638
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
639
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
640
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
64
641
|
type ExclamationToken = innerast.ExclamationToken
|
|
642
|
+
|
|
643
|
+
// EqualsGreaterThanToken names the upstream arrow punctuation node role.
|
|
644
|
+
// This Node alias does not statically enforce the arrow kind.
|
|
645
|
+
//
|
|
646
|
+
// @evidence contracts/common.md#principled-implementation Exact upstream identity preserves arrow-token nodes without inventing kind narrowing.
|
|
647
|
+
// @evidence contracts/common.md#clear-and-simple-design Arrow markers reuse Node storage instead of another punctuation wrapper.
|
|
648
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts The role uses upstream punctuation identity rather than guessed parser codes.
|
|
649
|
+
// @evidence contracts/common.md#meaningful-documentation The native comment describes arrow purpose and the nonnarrowing boundary.
|
|
650
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
651
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
652
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
653
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
65
654
|
type EqualsGreaterThanToken = innerast.EqualsGreaterThanToken
|
|
655
|
+
|
|
656
|
+
// AsteriskToken names the upstream asterisk marker node role.
|
|
657
|
+
// It retains Node identity without enforcing the marker's kind or placement.
|
|
658
|
+
//
|
|
659
|
+
// @evidence contracts/common.md#principled-implementation The alias preserves upstream asterisk nodes while leaving syntax-context validation unchanged.
|
|
660
|
+
// @evidence contracts/common.md#clear-and-simple-design Asterisk consumers share Node rather than a second marker structure.
|
|
661
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No fixture-specific generator marker or alternate token value is introduced.
|
|
662
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose identifies marker purpose and unchecked placement/kind limits.
|
|
663
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
664
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
665
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
666
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
66
667
|
type AsteriskToken = innerast.AsteriskToken
|
|
668
|
+
|
|
669
|
+
// TokenNode names upstream lexical token nodes using the general Node identity.
|
|
670
|
+
// Its name does not restrict Kind to the lexical token range in Go.
|
|
671
|
+
//
|
|
672
|
+
// @evidence contracts/common.md#principled-implementation Exact aliasing retains upstream token-node identity without claiming Go-enforced token narrowing.
|
|
673
|
+
// @evidence contracts/common.md#clear-and-simple-design Token operations reuse compiler Node storage without a shim token hierarchy.
|
|
674
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No alternative lexical representation or fixture token is substituted.
|
|
675
|
+
// @evidence contracts/common.md#meaningful-documentation The comment distinguishes lexical role from static kind restriction.
|
|
676
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
677
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
678
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
679
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
67
680
|
type TokenNode = innerast.TokenNode
|
|
681
|
+
|
|
682
|
+
// TemplateHead exposes the upstream leading template-segment payload.
|
|
683
|
+
//
|
|
684
|
+
// @evidence contracts/common.md#principled-implementation Alias identity retains innerast.TemplateHead fields and AST methods for leading text.
|
|
685
|
+
// @evidence contracts/common.md#clear-and-simple-design Upstream owns leading-segment storage without a shim text mirror.
|
|
686
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No guessed raw/cooked spelling replaces compiler template data.
|
|
687
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose identifies the leading-segment payload and upstream ownership.
|
|
688
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
689
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
690
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
691
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
68
692
|
type TemplateHead = innerast.TemplateHead
|
|
693
|
+
|
|
694
|
+
// TemplateLiteralTypeNode exposes the upstream interpolated template-type payload.
|
|
695
|
+
//
|
|
696
|
+
// @evidence contracts/common.md#principled-implementation Exact aliasing preserves innerast.TemplateLiteralTypeNode interpolation fields and methods.
|
|
697
|
+
// @evidence contracts/common.md#clear-and-simple-design The upstream payload owns type-template structure without a shim duplicate.
|
|
698
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No precomputed template type result replaces syntax operands.
|
|
699
|
+
// @evidence contracts/common.md#meaningful-documentation The native comment identifies interpolated type syntax and payload ownership.
|
|
700
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
701
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
702
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
703
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
69
704
|
type TemplateLiteralTypeNode = innerast.TemplateLiteralTypeNode
|
|
705
|
+
|
|
706
|
+
// TemplateLiteralTypeSpan exposes one upstream type interpolation and following literal segment.
|
|
707
|
+
//
|
|
708
|
+
// @evidence contracts/common.md#principled-implementation Alias identity preserves upstream span operands and AST methods without conversion.
|
|
709
|
+
// @evidence contracts/common.md#clear-and-simple-design The upstream span owns interpolation structure instead of a shim pair representation.
|
|
710
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No guessed type expansion or fixture segment is inserted.
|
|
711
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose states the span's two roles and upstream ownership.
|
|
712
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
713
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
714
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
715
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
70
716
|
type TemplateLiteralTypeSpan = innerast.TemplateLiteralTypeSpan
|
|
717
|
+
|
|
718
|
+
// TemplateMiddle exposes the upstream template segment continuing another interpolation.
|
|
719
|
+
//
|
|
720
|
+
// @evidence contracts/common.md#principled-implementation Exact aliasing retains innerast.TemplateMiddle payload identity and methods.
|
|
721
|
+
// @evidence contracts/common.md#clear-and-simple-design Continued-segment storage remains upstream instead of duplicated shim text.
|
|
722
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No fabricated interpolation delimiter or consumer text replaces compiler data.
|
|
723
|
+
// @evidence contracts/common.md#meaningful-documentation The comment identifies the continued-segment role with separated acknowledgment tags.
|
|
724
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
725
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
726
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
727
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
71
728
|
type TemplateMiddle = innerast.TemplateMiddle
|
|
729
|
+
|
|
730
|
+
// TemplateTail exposes the upstream final literal segment closing a template.
|
|
731
|
+
//
|
|
732
|
+
// @evidence contracts/common.md#principled-implementation The alias preserves innerast.TemplateTail payload and methods for closing segments.
|
|
733
|
+
// @evidence contracts/common.md#clear-and-simple-design Closing text remains in its upstream payload without a shim terminal wrapper.
|
|
734
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No fixture-specific template closure is synthesized by this alias.
|
|
735
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose explains the final-segment role and separates tags from prose.
|
|
736
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
737
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
738
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
739
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
72
740
|
type TemplateTail = innerast.TemplateTail
|
|
741
|
+
|
|
742
|
+
// PrefixUnaryExpression exposes the upstream prefix-operator expression payload.
|
|
743
|
+
//
|
|
744
|
+
// @evidence contracts/common.md#principled-implementation Exact aliasing retains upstream operator/operand fields and expression methods.
|
|
745
|
+
// @evidence contracts/common.md#clear-and-simple-design Prefix expression structure remains upstream without a shim evaluator.
|
|
746
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No precomputed unary result replaces the represented expression.
|
|
747
|
+
// @evidence contracts/common.md#meaningful-documentation The native comment identifies prefix syntax and preserved payload ownership.
|
|
748
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
749
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
750
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
751
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
73
752
|
type PrefixUnaryExpression = innerast.PrefixUnaryExpression
|
|
753
|
+
|
|
754
|
+
// ComputedPropertyName exposes the upstream expression-backed member-name payload.
|
|
755
|
+
//
|
|
756
|
+
// @evidence contracts/common.md#principled-implementation Alias identity preserves upstream computed-name operands and AST methods.
|
|
757
|
+
// @evidence contracts/common.md#clear-and-simple-design The upstream name payload owns its expression without a shim key evaluator.
|
|
758
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No precomputed property key replaces the compiler expression.
|
|
759
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose identifies expression-backed names and separates acknowledgment tags.
|
|
760
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
761
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
762
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
763
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
74
764
|
type ComputedPropertyName = innerast.ComputedPropertyName
|
|
765
|
+
|
|
766
|
+
// PropertySignatureDeclaration exposes the upstream interface/object-type property payload.
|
|
767
|
+
//
|
|
768
|
+
// @evidence contracts/common.md#principled-implementation Exact aliasing retains upstream property-signature fields and methods.
|
|
769
|
+
// @evidence contracts/common.md#clear-and-simple-design Type-member representation stays upstream rather than a shim property schema.
|
|
770
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No consumer-specific interface properties or copied layouts are injected.
|
|
771
|
+
// @evidence contracts/common.md#meaningful-documentation The comment identifies type-member context and upstream declaration ownership.
|
|
772
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
773
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
774
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
775
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
75
776
|
type PropertySignatureDeclaration = innerast.PropertySignatureDeclaration
|
|
777
|
+
|
|
778
|
+
// QualifiedName exposes the upstream dotted entity-name payload and AST methods.
|
|
779
|
+
//
|
|
780
|
+
// @evidence contracts/common.md#principled-implementation The alias preserves upstream qualification operands without converting name identity.
|
|
781
|
+
// @evidence contracts/common.md#clear-and-simple-design Upstream owns dotted-name structure instead of a shim string-flattening layer.
|
|
782
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No special entity paths or guessed binding results are introduced.
|
|
783
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose identifies dotted entity payloads and preserved methods.
|
|
784
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
785
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
786
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
787
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
76
788
|
type QualifiedName = innerast.QualifiedName
|
|
789
|
+
|
|
790
|
+
// TypeLiteralNode exposes the upstream inline object-type member payload.
|
|
791
|
+
//
|
|
792
|
+
// @evidence contracts/common.md#principled-implementation Exact alias identity retains upstream type-member structure and methods.
|
|
793
|
+
// @evidence contracts/common.md#clear-and-simple-design Object-type syntax remains upstream without a duplicate shim member map.
|
|
794
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No known fixture shape replaces the actual compiler members.
|
|
795
|
+
// @evidence contracts/common.md#meaningful-documentation The native comment identifies inline type syntax and payload ownership.
|
|
796
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
797
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
798
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
799
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
77
800
|
type TypeLiteralNode = innerast.TypeLiteralNode
|
|
801
|
+
|
|
802
|
+
// FunctionTypeNode exposes the upstream function-type signature payload.
|
|
803
|
+
//
|
|
804
|
+
// @evidence contracts/common.md#principled-implementation Aliasing preserves upstream signature operands and AST methods without semantic conversion.
|
|
805
|
+
// @evidence contracts/common.md#clear-and-simple-design The compiler owns function-type structure without a shim callable model.
|
|
806
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No fixture signature or inferred callable result replaces upstream syntax.
|
|
807
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose identifies function-type syntax and upstream signature ownership.
|
|
808
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
809
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
810
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
811
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
78
812
|
type FunctionTypeNode = innerast.FunctionTypeNode
|
|
813
|
+
|
|
814
|
+
// InterfaceDeclaration exposes the upstream named interface declaration payload.
|
|
815
|
+
//
|
|
816
|
+
// @evidence contracts/common.md#principled-implementation Exact aliasing preserves upstream interface fields and declaration methods.
|
|
817
|
+
// @evidence contracts/common.md#clear-and-simple-design Interface representation remains upstream without another shim declaration hierarchy.
|
|
818
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No consumer-specific compatibility interface is synthesized by the alias.
|
|
819
|
+
// @evidence contracts/common.md#meaningful-documentation The comment identifies interface declaration payloads and shared methods.
|
|
820
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
821
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
822
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
823
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
79
824
|
type InterfaceDeclaration = innerast.InterfaceDeclaration
|
|
825
|
+
|
|
826
|
+
// TypeReferenceNode exposes the upstream named generic type-reference payload.
|
|
827
|
+
//
|
|
828
|
+
// @evidence contracts/common.md#principled-implementation Alias identity retains upstream names/type arguments without resolving them in the shim.
|
|
829
|
+
// @evidence contracts/common.md#clear-and-simple-design Type-reference syntax remains in the upstream payload instead of a shim resolver.
|
|
830
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No consumer-specific type-name mapping or guessed binding is introduced.
|
|
831
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose identifies named/generic reference syntax and separates tags.
|
|
832
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
833
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
834
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
835
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
80
836
|
type TypeReferenceNode = innerast.TypeReferenceNode
|
|
837
|
+
|
|
838
|
+
// SourceFile exposes the upstream parsed-source owner, text access and AST methods.
|
|
839
|
+
// Source and lazy compiler metadata remain owned by the originating compiler context.
|
|
840
|
+
//
|
|
841
|
+
// @evidence contracts/common.md#principled-implementation Exact aliasing preserves upstream source-file identity, metadata and tree access.
|
|
842
|
+
// @evidence contracts/common.md#clear-and-simple-design The compiler SourceFile supplies ownership instead of a shim text/tree copy.
|
|
843
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No consumer-specific source text or reconstructed parse tree is substituted.
|
|
844
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose explains source ownership, metadata and shared methods with separated tags.
|
|
845
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
846
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
847
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
848
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
81
849
|
type SourceFile = innerast.SourceFile
|
|
850
|
+
|
|
851
|
+
// StringLiteral exposes the upstream quoted-string syntax payload and methods.
|
|
852
|
+
//
|
|
853
|
+
// @evidence contracts/common.md#principled-implementation Alias identity retains upstream literal data without independently decoding or escaping it.
|
|
854
|
+
// @evidence contracts/common.md#clear-and-simple-design String syntax storage remains upstream instead of another shim string wrapper.
|
|
855
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No fixture text or consumer escape policy replaces compiler data.
|
|
856
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose identifies string syntax ownership and separates acknowledgment tags.
|
|
857
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
858
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
859
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
860
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
82
861
|
type StringLiteral = innerast.StringLiteral
|
|
862
|
+
|
|
863
|
+
// Symbol exposes the upstream bound-symbol identity and compiler metadata.
|
|
864
|
+
// It is not reconstructed from an identifier spelling by the shim.
|
|
865
|
+
//
|
|
866
|
+
// @evidence contracts/common.md#principled-implementation Exact aliasing preserves compiler symbol identity and relationships across plugin APIs.
|
|
867
|
+
// @evidence contracts/common.md#clear-and-simple-design Upstream owns symbol storage and methods without a shim binding table.
|
|
868
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No guessed symbol identity or fixture-specific binding is substituted.
|
|
869
|
+
// @evidence contracts/common.md#meaningful-documentation The comment explains bound-symbol ownership and spelling/identity distinction.
|
|
870
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
871
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
872
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
873
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
83
874
|
type Symbol = innerast.Symbol
|
|
875
|
+
|
|
876
|
+
// SymbolFlags exposes the upstream bitmask describing symbol categories and properties.
|
|
877
|
+
//
|
|
878
|
+
// @evidence contracts/common.md#principled-implementation Alias identity preserves innerast.SymbolFlags bits for compiler symbol queries.
|
|
879
|
+
// @evidence contracts/common.md#clear-and-simple-design The shim shares upstream flags without an independent classification enum.
|
|
880
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No alternate symbol codes or fixture categories replace upstream bits.
|
|
881
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose identifies symbol-bitmask purpose and upstream ownership.
|
|
882
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
883
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
884
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
885
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
84
886
|
type SymbolFlags = innerast.SymbolFlags
|
|
887
|
+
|
|
888
|
+
// NumericLiteral exposes the upstream numeric-literal syntax payload.
|
|
889
|
+
//
|
|
890
|
+
// @evidence contracts/common.md#principled-implementation Exact aliasing retains compiler literal data and methods without shim number conversion.
|
|
891
|
+
// @evidence contracts/common.md#clear-and-simple-design Numeric syntax remains upstream rather than a second parsed-number model.
|
|
892
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No expected numeric answer replaces the compiler literal representation.
|
|
893
|
+
// @evidence contracts/common.md#meaningful-documentation The native comment identifies numeric syntax payloads with separated tags.
|
|
894
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
895
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
896
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
897
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
85
898
|
type NumericLiteral = innerast.NumericLiteral
|
|
899
|
+
|
|
900
|
+
// BigIntLiteral exposes the upstream bigint-literal syntax payload.
|
|
901
|
+
//
|
|
902
|
+
// @evidence contracts/common.md#principled-implementation Alias identity retains upstream bigint spelling/data and methods without numeric coercion.
|
|
903
|
+
// @evidence contracts/common.md#clear-and-simple-design Bigint syntax stays upstream instead of another shim numeric container.
|
|
904
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No fixture bigint value or lossy numeric replacement is introduced.
|
|
905
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose identifies bigint syntax and upstream payload ownership.
|
|
906
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
907
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
908
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
909
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
86
910
|
type BigIntLiteral = innerast.BigIntLiteral
|
|
911
|
+
|
|
912
|
+
// ArrayTypeNode exposes the upstream element-type array syntax payload.
|
|
913
|
+
//
|
|
914
|
+
// @evidence contracts/common.md#principled-implementation Exact alias identity preserves upstream array-type operands and methods.
|
|
915
|
+
// @evidence contracts/common.md#clear-and-simple-design The compiler owns array syntax without another shim type container.
|
|
916
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No consumer element type or evaluated array type replaces syntax.
|
|
917
|
+
// @evidence contracts/common.md#meaningful-documentation The comment identifies array-type syntax and preserved payload ownership.
|
|
918
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
919
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
920
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
921
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
87
922
|
type ArrayTypeNode = innerast.ArrayTypeNode
|
|
923
|
+
|
|
924
|
+
// IndexSignatureDeclaration exposes the upstream indexed type-member signature payload.
|
|
925
|
+
//
|
|
926
|
+
// @evidence contracts/common.md#principled-implementation Aliasing retains upstream index-signature parameters/type operands and methods.
|
|
927
|
+
// @evidence contracts/common.md#clear-and-simple-design The upstream declaration owns signature structure without a shim key/value schema.
|
|
928
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No fixture key domain or consumer index result is encoded.
|
|
929
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose identifies indexed type-member purpose and separates tags.
|
|
930
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
931
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
932
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
933
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
88
934
|
type IndexSignatureDeclaration = innerast.IndexSignatureDeclaration
|
|
935
|
+
|
|
936
|
+
// NamedTupleMember exposes the upstream labeled tuple-element payload.
|
|
937
|
+
//
|
|
938
|
+
// @evidence contracts/common.md#principled-implementation Exact aliasing preserves upstream tuple label, type and marker data.
|
|
939
|
+
// @evidence contracts/common.md#clear-and-simple-design Labeled elements stay in the compiler payload rather than a shim tuple schema.
|
|
940
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No known tuple labels or fixture positions are substituted.
|
|
941
|
+
// @evidence contracts/common.md#meaningful-documentation The native comment identifies labeled tuple syntax and upstream ownership.
|
|
942
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
943
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
944
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
945
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
89
946
|
type NamedTupleMember = innerast.NamedTupleMember
|
|
947
|
+
|
|
948
|
+
// OptionalTypeNode exposes the upstream optional tuple-element type payload.
|
|
949
|
+
//
|
|
950
|
+
// @evidence contracts/common.md#principled-implementation Alias identity preserves upstream optional type operands and methods.
|
|
951
|
+
// @evidence contracts/common.md#clear-and-simple-design Optional syntax remains upstream instead of a shim nullable-type conversion.
|
|
952
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No guessed union or consumer-specific optionality replaces the syntax node.
|
|
953
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose identifies tuple optionality and separates acknowledgment tags.
|
|
954
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
955
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
956
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
957
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
90
958
|
type OptionalTypeNode = innerast.OptionalTypeNode
|
|
959
|
+
|
|
960
|
+
// RestTypeNode exposes the upstream rest tuple-element type payload.
|
|
961
|
+
//
|
|
962
|
+
// @evidence contracts/common.md#principled-implementation Exact aliasing retains upstream rest-type operand identity and methods.
|
|
963
|
+
// @evidence contracts/common.md#clear-and-simple-design Rest syntax stays upstream without another shim variadic representation.
|
|
964
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No fixture tuple expansion or consumer rest rule is injected.
|
|
965
|
+
// @evidence contracts/common.md#meaningful-documentation The native comment identifies tuple rest syntax and payload ownership.
|
|
966
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
967
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
968
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
969
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
91
970
|
type RestTypeNode = innerast.RestTypeNode
|
|
971
|
+
|
|
972
|
+
// TypeAliasDeclaration exposes the upstream named type-alias declaration payload.
|
|
973
|
+
//
|
|
974
|
+
// @evidence contracts/common.md#principled-implementation Alias identity preserves upstream target syntax, generic clauses and declaration methods.
|
|
975
|
+
// @evidence contracts/common.md#clear-and-simple-design The compiler owns alias declarations without an independent shim type resolver.
|
|
976
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No fixture alias target or guessed semantic type replaces syntax.
|
|
977
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose identifies named type-alias syntax and separates tags.
|
|
978
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
979
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
980
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
981
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
92
982
|
type TypeAliasDeclaration = innerast.TypeAliasDeclaration
|
|
983
|
+
|
|
984
|
+
// TypeParameterDeclaration exposes upstream generic parameter names and constraint/default syntax.
|
|
985
|
+
//
|
|
986
|
+
// @evidence contracts/common.md#principled-implementation Exact aliasing retains upstream generic parameter fields and AST methods.
|
|
987
|
+
// @evidence contracts/common.md#clear-and-simple-design Parameter clauses remain upstream rather than a shim generic-policy model.
|
|
988
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No guessed constraint or consumer-specific generic default is supplied.
|
|
989
|
+
// @evidence contracts/common.md#meaningful-documentation The comment identifies generic parameter clause roles with separated tags.
|
|
990
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
991
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
992
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
993
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
93
994
|
type TypeParameterDeclaration = innerast.TypeParameterDeclaration
|
|
995
|
+
|
|
996
|
+
// TupleTypeNode exposes the upstream ordered tuple-type element payload.
|
|
997
|
+
//
|
|
998
|
+
// @evidence contracts/common.md#principled-implementation Alias identity preserves upstream tuple positions and node methods without type evaluation.
|
|
999
|
+
// @evidence contracts/common.md#clear-and-simple-design Tuple syntax remains upstream instead of another shim positional schema.
|
|
1000
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No fixture tuple length or precomputed tuple result is substituted.
|
|
1001
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose identifies ordered tuple syntax and separates acknowledgment tags.
|
|
1002
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
1003
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
1004
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
1005
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
94
1006
|
type TupleTypeNode = innerast.TupleTypeNode
|
|
1007
|
+
|
|
1008
|
+
// UnionTypeNode exposes the upstream ordered union-type operand payload.
|
|
1009
|
+
//
|
|
1010
|
+
// @evidence contracts/common.md#principled-implementation Exact aliasing preserves upstream union operands and methods without semantic simplification.
|
|
1011
|
+
// @evidence contracts/common.md#clear-and-simple-design Union syntax remains in the compiler payload instead of a shim type-set model.
|
|
1012
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No guessed union result or fixture constituent set replaces syntax.
|
|
1013
|
+
// @evidence contracts/common.md#meaningful-documentation The native comment identifies union syntax and preserved upstream payloads.
|
|
1014
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
1015
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
1016
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
1017
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
95
1018
|
type UnionTypeNode = innerast.UnionTypeNode
|
|
1019
|
+
|
|
1020
|
+
// MethodSignatureDeclaration exposes the upstream interface/object-type method signature.
|
|
1021
|
+
//
|
|
1022
|
+
// @evidence contracts/common.md#principled-implementation Alias identity retains upstream method-name and signature fields and methods.
|
|
1023
|
+
// @evidence contracts/common.md#clear-and-simple-design The compiler owns member-signature structure without a shim callable wrapper.
|
|
1024
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No consumer method name or fixture callable shape is synthesized.
|
|
1025
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose identifies type-member method context and separates tags.
|
|
1026
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
1027
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
1028
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
1029
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
96
1030
|
type MethodSignatureDeclaration = innerast.MethodSignatureDeclaration
|
|
1031
|
+
|
|
1032
|
+
// MethodDeclaration exposes the upstream executable/bodyless method declaration payload.
|
|
1033
|
+
//
|
|
1034
|
+
// @evidence contracts/common.md#principled-implementation Exact aliasing preserves upstream method clauses and optional body identity.
|
|
1035
|
+
// @evidence contracts/common.md#clear-and-simple-design Method syntax remains upstream rather than a duplicate shim callable structure.
|
|
1036
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No runtime method replacement or fixture implementation is introduced.
|
|
1037
|
+
// @evidence contracts/common.md#meaningful-documentation The native comment identifies declaration/body roles and preserved upstream payloads.
|
|
1038
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
1039
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
1040
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
1041
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
97
1042
|
type MethodDeclaration = innerast.MethodDeclaration
|
|
1043
|
+
|
|
1044
|
+
// NodeList exposes the upstream ordered node pointers and source range.
|
|
1045
|
+
// Aliasing does not copy the slice or transfer ownership of its nodes.
|
|
1046
|
+
//
|
|
1047
|
+
// @evidence contracts/common.md#principled-implementation Exact alias identity retains NodeList nodes, source range and list methods together.
|
|
1048
|
+
// @evidence contracts/common.md#clear-and-simple-design Compiler collections retain their original list type without a conversion layer.
|
|
1049
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No reconstructed source ranges or fixture node sequences are substituted.
|
|
1050
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose explains ordering, range and shared ownership with separated tags.
|
|
1051
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
1052
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
1053
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
1054
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
98
1055
|
type NodeList = innerast.NodeList
|
|
1056
|
+
|
|
1057
|
+
// ParameterDeclaration exposes the upstream parameter binding, markers and annotation payload.
|
|
1058
|
+
//
|
|
1059
|
+
// @evidence contracts/common.md#principled-implementation Alias identity retains upstream parameter clauses and declaration methods without conversion.
|
|
1060
|
+
// @evidence contracts/common.md#clear-and-simple-design Parameter syntax remains upstream rather than a duplicate shim argument schema.
|
|
1061
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No consumer parameter names or guessed optionality rules are injected.
|
|
1062
|
+
// @evidence contracts/common.md#meaningful-documentation The native comment identifies parameter clause roles and separates acknowledgment tags.
|
|
1063
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
1064
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
1065
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
1066
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
99
1067
|
type ParameterDeclaration = innerast.ParameterDeclaration
|
|
1068
|
+
|
|
1069
|
+
// ParenthesizedTypeNode exposes the upstream explicit type-grouping payload.
|
|
1070
|
+
//
|
|
1071
|
+
// @evidence contracts/common.md#principled-implementation Exact aliasing retains upstream grouping operands and AST methods without removing parentheses.
|
|
1072
|
+
// @evidence contracts/common.md#clear-and-simple-design Grouping syntax remains in its upstream payload instead of another shim type wrapper.
|
|
1073
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No fixture-selected parentheses or semantic substitution is introduced.
|
|
1074
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose identifies explicit grouping and upstream ownership with separated tags.
|
|
1075
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
1076
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
1077
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
1078
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
100
1079
|
type ParenthesizedTypeNode = innerast.ParenthesizedTypeNode
|
|
101
1080
|
|
|
102
1081
|
const (
|
|
@@ -215,125 +1194,433 @@ const (
|
|
|
215
1194
|
|
|
216
1195
|
// NewNodeFactory creates an AST node factory with the supplied creation hooks.
|
|
217
1196
|
// Pass a zero-value NodeFactoryHooks to get the default factory behaviour.
|
|
1197
|
+
// The returned factory retains the hook functions and their captured values.
|
|
1198
|
+
// Construction does not call them or allocate AST nodes; later factory methods
|
|
1199
|
+
// own node creation and arena growth.
|
|
1200
|
+
//
|
|
1201
|
+
// @evidence contracts/common.md#principled-implementation Direct delegation preserves upstream creation hooks and returns its factory allocation unchanged.
|
|
1202
|
+
// @evidence contracts/common.md#clear-and-simple-design One adapter exposes factory construction without another allocator or hook layer.
|
|
1203
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Supported upstream hooks provide injection without replacing foreign creation methods.
|
|
1204
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose explains hook input and zero-value behavior with a blank line before tags.
|
|
1205
|
+
// @evidence contracts/performance.md#bound-retention-and-release-resources Upstream allocates one factory and transfers it to the caller, retaining three hook references and any reachable captures until the factory and caller references are released. Arenas start empty; later factory operations grow them. Construction acquires no native handles or tasks and imposes no independent cap on hook capture bytes.
|
|
1206
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms The shim chooses no independent factory-construction strategy. Upstream allocates one fixed-shape factory and copies the hook value in O(1) time and space without creating nodes or invoking callbacks.
|
|
1207
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work Construction returns fresh mutable factory state, not a coordinated shared result; callers own any supported reuse of that factory and its hook state.
|
|
1208
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation NewNodeFactory computes from its arguments only; it opens no file, builds no path and calls no platform or process API.
|
|
218
1209
|
func NewNodeFactory(options NodeFactoryHooks) *NodeFactory {
|
|
219
1210
|
return innerast.NewNodeFactory(options)
|
|
220
1211
|
}
|
|
221
1212
|
|
|
222
|
-
//
|
|
223
|
-
//
|
|
1213
|
+
// GetNextJSDocCommentLocation returns the next enclosing JSDoc attachment host,
|
|
1214
|
+
// or nil when no supported host remains. Supply a nonnil node from a valid
|
|
1215
|
+
// parent-linked tree; a variable declaration list must have a first declaration.
|
|
1216
|
+
// Only that first declaration advances through its list.
|
|
1217
|
+
//
|
|
1218
|
+
// @evidence contracts/common.md#principled-implementation The upstream parent-kind and first-declaration checks preserve JSDoc attachment semantics rather than treating every ancestor as a comment host.
|
|
1219
|
+
// @evidence contracts/common.md#clear-and-simple-design One traversal step exposes upstream ownership; callers control repeated traversal and termination.
|
|
1220
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts The adapter follows real AST parents without fabricated attachment nodes or foreign method replacement.
|
|
1221
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose identifies the endpoint, nil termination, nonnil input and first-declaration boundary.
|
|
1222
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources GetNextJSDocCommentLocation acquires no handle, buffer or cache and retains nothing after it returns.
|
|
1223
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms The shim chooses no independent attachment-search algorithm. Upstream checks one parent kind and, for a declaration list, its first element in O(1) time and space; repeated ascent belongs to the caller.
|
|
1224
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work This forwarding step owns no cache or in-flight coordination; tree owners and traversal callers establish validity across changes to parent links or declaration order.
|
|
1225
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation GetNextJSDocCommentLocation computes from its arguments only; it opens no file, builds no path and calls no platform or process API.
|
|
1226
|
+
func GetNextJSDocCommentLocation(node *Node) *Node {
|
|
1227
|
+
return innerast.GetNextJSDocCommentLocation(node)
|
|
1228
|
+
}
|
|
1229
|
+
|
|
1230
|
+
// IsAmbientModuleSymbolName reports whether a symbol name has the compiler's
|
|
1231
|
+
// quoted ambient-module spelling. It classifies spelling, not module existence.
|
|
1232
|
+
//
|
|
1233
|
+
// @evidence contracts/common.md#principled-implementation Delegation preserves the upstream quotation test without conflating a symbol name with a resolved module.
|
|
1234
|
+
// @evidence contracts/common.md#clear-and-simple-design One spelling predicate needs no filesystem lookup or separate module-name representation.
|
|
1235
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts The supplied name determines the result without consumer-specific module names.
|
|
1236
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose distinguishes lexical symbol spelling from semantic existence.
|
|
1237
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources IsAmbientModuleSymbolName acquires no handle, buffer or cache and retains nothing after it returns.
|
|
1238
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms The shim chooses no independent name-classification algorithm. Upstream checks one-byte quote prefix and suffix, costing O(1) time and space without scanning the name's interior.
|
|
1239
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work This lexical forwarding predicate owns no completed-result cache or in-flight coordination.
|
|
1240
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation IsAmbientModuleSymbolName computes from its arguments only; it opens no file, builds no path and calls no platform or process API.
|
|
1241
|
+
func IsAmbientModuleSymbolName(name string) bool {
|
|
1242
|
+
return innerast.IsAmbientModuleSymbolName(name)
|
|
1243
|
+
}
|
|
1244
|
+
|
|
1245
|
+
// IsImplicitlyExportedJSDocDeclaration recognizes a JS type-alias declaration
|
|
1246
|
+
// or a reparsed module declaration directly parented by an external or CommonJS
|
|
1247
|
+
// source file. Supply a nonnil node with a parent and valid compiler payloads.
|
|
1248
|
+
//
|
|
1249
|
+
// @evidence contracts/common.md#principled-implementation The upstream source-file/module gate admits JS type aliases or module declarations carrying the Reparsed flag without requiring that flag on type aliases.
|
|
1250
|
+
// @evidence contracts/common.md#clear-and-simple-design One predicate keeps JSDoc export policy in its owning compiler implementation.
|
|
1251
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Export status follows AST provenance rather than a printed declaration-name heuristic.
|
|
1252
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose states module context, reparsed provenance and required parent linkage.
|
|
1253
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources IsImplicitlyExportedJSDocDeclaration acquires no handle, buffer or cache and retains nothing after it returns.
|
|
1254
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms The shim chooses no independent export classifier. Upstream checks immediate parent kind, source-file module indicators and fixed declaration kind/flags in O(1) time and space without ancestor or content scans.
|
|
1255
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work This forwarding predicate owns no cache or in-flight coordination; compiler-tree owners establish validity of parent, module-indicator and declaration-flag inputs.
|
|
1256
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation IsImplicitlyExportedJSDocDeclaration computes from its arguments only; it opens no file, builds no path and calls no platform or process API.
|
|
1257
|
+
func IsImplicitlyExportedJSDocDeclaration(node *Node) bool {
|
|
1258
|
+
return innerast.IsImplicitlyExportedJSDocDeclaration(node)
|
|
1259
|
+
}
|
|
1260
|
+
|
|
1261
|
+
// IsNamedEvaluationSource classifies syntax that can supply an assigned name
|
|
1262
|
+
// to a class, function or arrow function. Supply a nonnil node with valid
|
|
1263
|
+
// compiler payloads; this does not evaluate an initializer or certify a runtime
|
|
1264
|
+
// name assignment.
|
|
1265
|
+
//
|
|
1266
|
+
// @evidence contracts/common.md#principled-implementation Upstream kind, initializer and assignment-operator checks retain ECMAScript named-evaluation distinctions.
|
|
1267
|
+
// @evidence contracts/common.md#clear-and-simple-design One classification bridge avoids a second syntax-kind table in plugin consumers.
|
|
1268
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts The compiler classifies actual nodes without guessing runtime names from source text.
|
|
1269
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose names the assigned-name role and nonnil node premise.
|
|
1270
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources IsNamedEvaluationSource acquires no handle, buffer or cache and retains nothing after it returns.
|
|
1271
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms The shim chooses no independent named-evaluation classifier. Upstream checks fixed kinds, initializer/rest presence and assignment operators, plus a fixed nine-byte __proto__ name comparison, in O(1) time and space without traversing initializers.
|
|
1272
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work This forwarding predicate owns no cache or in-flight coordination; compiler-tree owners establish validity of kind, name and initializer payloads.
|
|
1273
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation IsNamedEvaluationSource computes from its arguments only; it opens no file, builds no path and calls no platform or process API.
|
|
1274
|
+
func IsNamedEvaluationSource(node *Node) bool {
|
|
1275
|
+
return innerast.IsNamedEvaluationSource(node)
|
|
1276
|
+
}
|
|
1277
|
+
|
|
1278
|
+
// IsProtoSetter classifies the identifier or string-literal property name
|
|
1279
|
+
// __proto__. Computed property names do not qualify. Supply a nonnil node with
|
|
1280
|
+
// valid name payloads; this checks spelling and kind, not whether a containing
|
|
1281
|
+
// property assignment actually changes an object's prototype.
|
|
1282
|
+
//
|
|
1283
|
+
// @evidence contracts/common.md#principled-implementation Upstream kind and text checks preserve the special property-name grammar while excluding computed forms.
|
|
1284
|
+
// @evidence contracts/common.md#clear-and-simple-design One property-name predicate serves named evaluation without duplicating proto-setter syntax policy.
|
|
1285
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts The __proto__ spelling is the language's property discriminator, not a fixture or consumer exception.
|
|
1286
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose identifies accepted name forms, computed exclusion and input premise.
|
|
1287
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources IsProtoSetter acquires no handle, buffer or cache and retains nothing after it returns.
|
|
1288
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms The shim chooses no independent proto-name classifier. Upstream checks identifier/string kind and fixed nine-byte __proto__ text in O(1) time and space without inspecting a computed name or initializer.
|
|
1289
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work This forwarding predicate owns no cache or in-flight coordination; tree owners control changes to the inspected kind and name text.
|
|
1290
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation IsProtoSetter computes from its arguments only; it opens no file, builds no path and calls no platform or process API.
|
|
1291
|
+
func IsProtoSetter(node *Node) bool {
|
|
1292
|
+
return innerast.IsProtoSetter(node)
|
|
1293
|
+
}
|
|
1294
|
+
|
|
1295
|
+
// NewNodeVisitor creates a visitor with the supplied callback and child hooks.
|
|
1296
|
+
// A nil factory creates a fresh zero-hook factory. The callback may be nil;
|
|
1297
|
+
// construction itself neither traverses nodes nor invokes visit. The returned
|
|
1298
|
+
// visitor retains callback, factory and hook references for later use.
|
|
1299
|
+
//
|
|
1300
|
+
// @evidence contracts/common.md#principled-implementation Delegation preserves callback/factory/hooks and upstream nil-factory default rather than starting a traversal.
|
|
1301
|
+
// @evidence contracts/common.md#clear-and-simple-design One adapter leaves visitation and node recreation with the upstream visitor.
|
|
1302
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Supported hooks and callback arguments replace no foreign visitor methods.
|
|
1303
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose explains construction versus traversal and nil inputs with separated tags.
|
|
1304
|
+
// @evidence contracts/performance.md#bound-retention-and-release-resources Upstream transfers one new visitor to the caller and, for a nil input factory, one new empty factory. The visitor retains its callback, factory and nine hook references, including their reachable captures and factory arenas; caller reachability determines their lifetime. Construction starts no native handle or task and sets no independent retained-byte cap.
|
|
1305
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms The shim chooses no independent visitor-construction strategy. Upstream copies fixed-shape callback/factory/hooks into a visitor and optionally creates an empty factory in O(1) time and space without traversal or callback invocation.
|
|
1306
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work Construction returns a fresh visitor with caller-selected references, not a coordinated shared result; callers own reuse of the visitor and any supplied factory state.
|
|
1307
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation NewNodeVisitor computes from its arguments only; it opens no file, builds no path and calls no platform or process API.
|
|
224
1308
|
func NewNodeVisitor(visit func(node *Node) *Node, factory *NodeFactory, options NodeVisitorHooks) *NodeVisitor {
|
|
225
1309
|
return innerast.NewNodeVisitor(visit, factory, options)
|
|
226
1310
|
}
|
|
227
1311
|
|
|
228
1312
|
// GetCombinedModifierFlags returns syntactic modifiers combined across wrappers
|
|
229
1313
|
// such as variable statements and their declaration lists.
|
|
1314
|
+
// The node must satisfy the upstream helper's nonnil node precondition.
|
|
1315
|
+
//
|
|
1316
|
+
// @evidence contracts/common.md#principled-implementation Direct delegation preserves upstream modifier aggregation across declaration wrappers for a nonnil node.
|
|
1317
|
+
// @evidence contracts/common.md#clear-and-simple-design The compiler owns flag traversal; the shim adds no independent modifier policy.
|
|
1318
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No guessed modifier bits or caller-specific aggregation exception is added.
|
|
1319
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose explains aggregation contexts and nonnil input, with separated tags.
|
|
1320
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources GetCombinedModifierFlags acquires no handle, buffer or cache and retains nothing after it returns.
|
|
1321
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms The shim selects no independent traversal strategy. Upstream walks H enclosing binding elements, then combines at most three declaration/list/statement modifier values; the call costs O(H) and creates no traversal collection.
|
|
1322
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work This forwarding call coordinates no cache or in-flight work; compiler-tree owners determine when node flags and parent links may be reused.
|
|
1323
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation GetCombinedModifierFlags computes from its arguments only; it opens no file, builds no path and calls no platform or process API.
|
|
230
1324
|
func GetCombinedModifierFlags(node *Node) ModifierFlags {
|
|
231
1325
|
return innerast.GetCombinedModifierFlags(node)
|
|
232
1326
|
}
|
|
233
1327
|
|
|
234
1328
|
// GetExpressionPrecedence returns the operator precedence of an expression
|
|
235
|
-
// node
|
|
1329
|
+
// node: the level at which it binds relative to a surrounding expression.
|
|
236
1330
|
// Callers compare it against an OperatorPrecedence floor to decide whether a
|
|
237
1331
|
// textual splice of the expression into a new position needs parentheses.
|
|
1332
|
+
// Supply a nonnil expression with a valid upstream kind/payload combination.
|
|
1333
|
+
//
|
|
1334
|
+
// @evidence contracts/common.md#principled-implementation Delegation preserves upstream operator and optional-chain/new-expression precedence rules for valid expression data.
|
|
1335
|
+
// @evidence contracts/common.md#clear-and-simple-design Upstream owns the precedence calculation instead of a second shim ranking table.
|
|
1336
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No guessed precedence constants or fixture-specific parenthesis outcomes are substituted.
|
|
1337
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose explains binding-level use and input validity, with separated tags.
|
|
1338
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources GetExpressionPrecedence acquires no handle, buffer or cache and retains nothing after it returns.
|
|
1339
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms The shim selects no independent precedence algorithm. Upstream reads kind/operator/optional-chain flags and uses fixed switch tables without traversing expression children; valid node payloads cost O(1) time and space.
|
|
1340
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work This forwarding call owns no cache or in-flight coordination; compiler-tree owners establish whether a node's operator and flags remain equivalent across calls.
|
|
1341
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation GetExpressionPrecedence computes from its arguments only; it opens no file, builds no path and calls no platform or process API.
|
|
238
1342
|
func GetExpressionPrecedence(expression *Expression) OperatorPrecedence {
|
|
239
1343
|
return innerast.GetExpressionPrecedence(expression)
|
|
240
1344
|
}
|
|
241
1345
|
|
|
242
1346
|
// IsFunctionLike reports whether node is any function-like construct
|
|
243
1347
|
// (function declaration, arrow function, method, constructor, accessor, etc.).
|
|
1348
|
+
// A nil node returns false, matching the upstream predicate.
|
|
1349
|
+
//
|
|
1350
|
+
// @evidence contracts/common.md#principled-implementation Direct delegation retains upstream function-like kind classification and nil-false behavior.
|
|
1351
|
+
// @evidence contracts/common.md#clear-and-simple-design One predicate adapter leaves the kind set with its upstream owner.
|
|
1352
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No consumer names or test function shapes affect classification.
|
|
1353
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose identifies function-like forms and nil behavior with separated tags.
|
|
1354
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources IsFunctionLike acquires no handle, buffer or cache and retains nothing after it returns.
|
|
1355
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms The shim chooses no independent function-like classifier. Upstream checks nil and fixed declaration/signature kind tables in O(1) time and space without inspecting bodies or parameters.
|
|
1356
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work This forwarding predicate owns no cache or in-flight coordination; tree owners control changes to the compared kind.
|
|
1357
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation IsFunctionLike computes from its arguments only; it opens no file, builds no path and calls no platform or process API.
|
|
244
1358
|
func IsFunctionLike(node *Node) bool {
|
|
245
1359
|
return innerast.IsFunctionLike(node)
|
|
246
1360
|
}
|
|
247
1361
|
|
|
248
1362
|
// IsPropertyAssignment reports whether node is a key:value pair inside an
|
|
249
1363
|
// object literal expression.
|
|
1364
|
+
// The node must be nonnil; the predicate classifies kind without checking placement.
|
|
1365
|
+
//
|
|
1366
|
+
// @evidence contracts/common.md#principled-implementation Delegation preserves upstream property-assignment kind classification without adding placement validation.
|
|
1367
|
+
// @evidence contracts/common.md#clear-and-simple-design The upstream predicate owns the syntax category; the shim only exposes it.
|
|
1368
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No particular property keys or fixture objects receive special classification.
|
|
1369
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose explains property-assignment context and nonnil/kind-only limits.
|
|
1370
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources IsPropertyAssignment acquires no handle, buffer or cache and retains nothing after it returns.
|
|
1371
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms The shim chooses no independent property-assignment classifier. Upstream compares one node kind in O(1) time and space without checking placement or evaluating property contents.
|
|
1372
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work This forwarding predicate owns no cache or in-flight coordination; tree owners control changes to the compared kind.
|
|
1373
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation IsPropertyAssignment computes from its arguments only; it opens no file, builds no path and calls no platform or process API.
|
|
250
1374
|
func IsPropertyAssignment(node *Node) bool {
|
|
251
1375
|
return innerast.IsPropertyAssignment(node)
|
|
252
1376
|
}
|
|
253
1377
|
|
|
254
1378
|
// IsPropertyDeclaration reports whether node is a class property declaration.
|
|
1379
|
+
// Supply a nonnil node; only its kind is classified, not declaration legality.
|
|
1380
|
+
//
|
|
1381
|
+
// @evidence contracts/common.md#principled-implementation Direct delegation preserves upstream property-declaration kind classification on nonnil nodes.
|
|
1382
|
+
// @evidence contracts/common.md#clear-and-simple-design The original predicate owns classification without another shim declaration policy.
|
|
1383
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No consumer field names or runtime property overrides affect the result.
|
|
1384
|
+
// @evidence contracts/common.md#meaningful-documentation The comment identifies class-field meaning and unchecked legality with separated tags.
|
|
1385
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources IsPropertyDeclaration acquires no handle, buffer or cache and retains nothing after it returns.
|
|
1386
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms The shim chooses no independent field classifier. Upstream compares one node kind in O(1) time and space without checking placement or field contents.
|
|
1387
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work This forwarding predicate owns no cache or in-flight coordination; tree owners control changes to the compared kind.
|
|
1388
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation IsPropertyDeclaration computes from its arguments only; it opens no file, builds no path and calls no platform or process API.
|
|
255
1389
|
func IsPropertyDeclaration(node *Node) bool {
|
|
256
1390
|
return innerast.IsPropertyDeclaration(node)
|
|
257
1391
|
}
|
|
258
1392
|
|
|
259
1393
|
// IsModuleBlock reports whether node is the body block of a namespace or
|
|
260
1394
|
// module declaration.
|
|
1395
|
+
// Supply a nonnil node; the upstream predicate checks its kind, not parent context.
|
|
1396
|
+
//
|
|
1397
|
+
// @evidence contracts/common.md#principled-implementation Delegation retains upstream ModuleBlock kind classification without inferring module ownership.
|
|
1398
|
+
// @evidence contracts/common.md#clear-and-simple-design One adapter exposes the compiler predicate without a parallel module classifier.
|
|
1399
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No module names or consumer-specific namespaces are special-cased.
|
|
1400
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose explains module-body purpose and kind/parent validation limits.
|
|
1401
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources IsModuleBlock acquires no handle, buffer or cache and retains nothing after it returns.
|
|
1402
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms The shim chooses no independent module-block classifier. Upstream compares one node kind in O(1) time and space without inspecting parent or body statements.
|
|
1403
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work This forwarding predicate owns no cache or in-flight coordination; tree owners control changes to the compared kind.
|
|
1404
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation IsModuleBlock computes from its arguments only; it opens no file, builds no path and calls no platform or process API.
|
|
261
1405
|
func IsModuleBlock(node *Node) bool {
|
|
262
1406
|
return innerast.IsModuleBlock(node)
|
|
263
1407
|
}
|
|
264
1408
|
|
|
265
1409
|
// IsStringLiteral reports whether node is a string literal token.
|
|
1410
|
+
// Supply a nonnil node; no string content is parsed or validated here.
|
|
1411
|
+
//
|
|
1412
|
+
// @evidence contracts/common.md#principled-implementation Direct delegation preserves upstream string-literal kind classification on a nonnil node.
|
|
1413
|
+
// @evidence contracts/common.md#clear-and-simple-design The shim exposes the original predicate without another lexical parser.
|
|
1414
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No known string values or fixture spellings affect classification.
|
|
1415
|
+
// @evidence contracts/common.md#meaningful-documentation The comment distinguishes kind classification from content parsing and explains nonnil input.
|
|
1416
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources IsStringLiteral acquires no handle, buffer or cache and retains nothing after it returns.
|
|
1417
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms The shim chooses no independent literal classifier. Upstream compares one node kind in O(1) time and space without reading the string contents.
|
|
1418
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work This forwarding predicate owns no cache or in-flight coordination; tree owners control changes to the compared kind.
|
|
1419
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation IsStringLiteral computes from its arguments only; it opens no file, builds no path and calls no platform or process API.
|
|
266
1420
|
func IsStringLiteral(node *Node) bool {
|
|
267
1421
|
return innerast.IsStringLiteral(node)
|
|
268
1422
|
}
|
|
269
1423
|
|
|
270
1424
|
// IsPropertyAccessExpression reports whether node is a dotted member access
|
|
271
1425
|
// (e.g. `a.b`).
|
|
1426
|
+
// Supply a nonnil node; binding and operand validity are not checked.
|
|
1427
|
+
//
|
|
1428
|
+
// @evidence contracts/common.md#principled-implementation Delegation preserves upstream property-access kind classification without resolving a member binding.
|
|
1429
|
+
// @evidence contracts/common.md#clear-and-simple-design Classification remains with the compiler predicate instead of a shim expression walker.
|
|
1430
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No particular receiver or property names affect classification.
|
|
1431
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose gives dotted-access meaning and nonnil/semantic limits with separated tags.
|
|
1432
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources IsPropertyAccessExpression acquires no handle, buffer or cache and retains nothing after it returns.
|
|
1433
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms The shim chooses no independent access classifier. Upstream compares one node kind in O(1) time and space without resolving a member or inspecting its receiver.
|
|
1434
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work This forwarding predicate owns no cache or in-flight coordination; tree owners control changes to the compared kind.
|
|
1435
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation IsPropertyAccessExpression computes from its arguments only; it opens no file, builds no path and calls no platform or process API.
|
|
272
1436
|
func IsPropertyAccessExpression(node *Node) bool {
|
|
273
1437
|
return innerast.IsPropertyAccessExpression(node)
|
|
274
1438
|
}
|
|
275
1439
|
|
|
276
1440
|
// IsElementAccessExpression reports whether node is a bracket member access
|
|
277
1441
|
// (e.g. `a[b]`).
|
|
1442
|
+
// Supply a nonnil node; indexing semantics are not evaluated.
|
|
1443
|
+
//
|
|
1444
|
+
// @evidence contracts/common.md#principled-implementation Direct delegation preserves upstream element-access kind classification without evaluating index values.
|
|
1445
|
+
// @evidence contracts/common.md#clear-and-simple-design One adapter exposes upstream classification without another indexing policy.
|
|
1446
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No fixture indexes or consumer receiver types affect the predicate.
|
|
1447
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose illustrates bracket access and explains input/evaluation boundaries.
|
|
1448
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources IsElementAccessExpression acquires no handle, buffer or cache and retains nothing after it returns.
|
|
1449
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms The shim chooses no independent access classifier. Upstream compares one node kind in O(1) time and space without examining receiver or index children.
|
|
1450
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work This forwarding predicate owns no cache or in-flight coordination; tree owners control changes to the compared kind.
|
|
1451
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation IsElementAccessExpression computes from its arguments only; it opens no file, builds no path and calls no platform or process API.
|
|
278
1452
|
func IsElementAccessExpression(node *Node) bool {
|
|
279
1453
|
return innerast.IsElementAccessExpression(node)
|
|
280
1454
|
}
|
|
281
1455
|
|
|
282
1456
|
// IsTokenKind reports whether kind represents a lexical syntax token.
|
|
1457
|
+
// It classifies an upstream Kind code without inspecting any node payload.
|
|
1458
|
+
//
|
|
1459
|
+
// @evidence contracts/common.md#principled-implementation Delegation retains the upstream token-kind range definition rather than inferring it from payloads.
|
|
1460
|
+
// @evidence contracts/common.md#clear-and-simple-design The upstream predicate owns token classification without a copied shim enum range.
|
|
1461
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No guessed numeric boundaries or fixture token codes are added.
|
|
1462
|
+
// @evidence contracts/common.md#meaningful-documentation The comment distinguishes kind classification from node inspection with separated tags.
|
|
1463
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources IsTokenKind acquires no handle, buffer or cache and retains nothing after it returns.
|
|
1464
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms The shim chooses no independent token classifier. Upstream compares the scalar kind against two fixed bounds in O(1) time and space without accessing node data.
|
|
1465
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work This scalar forwarding predicate owns no cache or in-flight coordination.
|
|
1466
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation IsTokenKind computes from its arguments only; it opens no file, builds no path and calls no platform or process API.
|
|
283
1467
|
func IsTokenKind(kind Kind) bool {
|
|
284
1468
|
return innerast.IsTokenKind(kind)
|
|
285
1469
|
}
|
|
286
1470
|
|
|
287
1471
|
// IsExpressionNode reports whether node has expression semantics in its
|
|
288
1472
|
// enclosing syntax context.
|
|
1473
|
+
// Supply valid compiler node payloads and the parent links required by
|
|
1474
|
+
// context-sensitive cases. Parent ascent must terminate; this helper does not
|
|
1475
|
+
// detect cycles, and context checks can recurse up that chain.
|
|
1476
|
+
//
|
|
1477
|
+
// @evidence contracts/common.md#principled-implementation Delegation preserves upstream kind/context expression rules, assuming the required parent relationships exist.
|
|
1478
|
+
// @evidence contracts/common.md#clear-and-simple-design Upstream owns context-sensitive expression classification without a shim parent walker.
|
|
1479
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No consumer node names or patched syntax parents determine the result.
|
|
1480
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose describes contextual expression meaning and parent/nonnil premises.
|
|
1481
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources IsExpressionNode acquires no handle, buffer or cache and retains nothing after it returns.
|
|
1482
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms The shim chooses no independent expression-context algorithm. Upstream uses fixed kind/payload tests, but qualified-name ascent and mutually recursive expression-context fallback can visit H parents, costing O(H) time and up to O(H) call-stack space; it does not scan child subtrees.
|
|
1483
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work This forwarding classification owns no cache or in-flight coordination; compiler-tree owners establish validity of context and parent links across calls.
|
|
1484
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation IsExpressionNode computes from its arguments only; it opens no file, builds no path and calls no platform or process API.
|
|
289
1485
|
func IsExpressionNode(node *Node) bool {
|
|
290
1486
|
return innerast.IsExpressionNode(node)
|
|
291
1487
|
}
|
|
292
1488
|
|
|
293
1489
|
// IsTypeDeclaration reports whether node declares a type-level symbol.
|
|
1490
|
+
// Supply valid nonnil compiler payloads and parent links. Import clauses use
|
|
1491
|
+
// their phase flag; specifiers use their parent clause/declaration's type-only
|
|
1492
|
+
// flag, not the specifier's own flag.
|
|
1493
|
+
// This is syntactic classification rather than binding a checker symbol.
|
|
1494
|
+
//
|
|
1495
|
+
// @evidence contracts/common.md#principled-implementation Direct delegation retains upstream declaration kinds and parent-based type-only import/export classification.
|
|
1496
|
+
// @evidence contracts/common.md#clear-and-simple-design The compiler owns type-declaration classification without a shim symbol resolver.
|
|
1497
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No declaration names or consumer type whitelists are substituted.
|
|
1498
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose states syntactic purpose and parent/nonnil preconditions with separated tags.
|
|
1499
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources IsTypeDeclaration acquires no handle, buffer or cache and retains nothing after it returns.
|
|
1500
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms The shim chooses no independent type-declaration classifier. Upstream checks fixed kinds and at most two parent links/type-only fields in O(1) time and space without binding symbols or scanning declarations.
|
|
1501
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work This forwarding predicate owns no cache or in-flight coordination; compiler-tree owners establish validity of kind, parent and type-only payloads.
|
|
1502
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation IsTypeDeclaration computes from its arguments only; it opens no file, builds no path and calls no platform or process API.
|
|
294
1503
|
func IsTypeDeclaration(node *Node) bool {
|
|
295
1504
|
return innerast.IsTypeDeclaration(node)
|
|
296
1505
|
}
|
|
297
1506
|
|
|
298
1507
|
// IsTypeDeclarationName reports whether node is the name of a type-level
|
|
299
1508
|
// declaration.
|
|
1509
|
+
// Supply a nonnil node with valid compiler payloads and the parent relationships
|
|
1510
|
+
// needed to inspect its declaration. Only an identifier equal to the selected
|
|
1511
|
+
// declaration name qualifies; alternate import/export alias names are not
|
|
1512
|
+
// resolved through bindings here.
|
|
1513
|
+
//
|
|
1514
|
+
// @evidence contracts/common.md#principled-implementation Delegation preserves upstream identifier, declaring-parent and name-identity checks for a linked node.
|
|
1515
|
+
// @evidence contracts/common.md#clear-and-simple-design Name ownership stays in the upstream predicate instead of a shim binding index.
|
|
1516
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No identifier spellings or fixture declaration names are hardcoded.
|
|
1517
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose identifies declaration-name meaning and linked-parent input requirements.
|
|
1518
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources IsTypeDeclarationName acquires no handle, buffer or cache and retains nothing after it returns.
|
|
1519
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms The shim chooses no independent type-name classifier. Upstream checks identifier kind, the fixed type-declaration predicate and selected name pointer identity in O(1) time and space for valid compiler payloads; it does not scan name text or resolve bindings.
|
|
1520
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work This forwarding predicate owns no cache or in-flight coordination; compiler-tree owners establish validity of declaration selection and name identity.
|
|
1521
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation IsTypeDeclarationName computes from its arguments only; it opens no file, builds no path and calls no platform or process API.
|
|
300
1522
|
func IsTypeDeclarationName(node *Node) bool {
|
|
301
1523
|
return innerast.IsTypeDeclarationName(node)
|
|
302
1524
|
}
|
|
303
1525
|
|
|
304
1526
|
// IsBindingElement reports whether node is one element of a binding pattern.
|
|
1527
|
+
// Supply a nonnil node; the kind check does not validate its parent pattern.
|
|
1528
|
+
//
|
|
1529
|
+
// @evidence contracts/common.md#principled-implementation Direct delegation retains upstream binding-element kind classification without parent validation.
|
|
1530
|
+
// @evidence contracts/common.md#clear-and-simple-design One adapter exposes the compiler predicate without another binding-pattern walker.
|
|
1531
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No binding names or fixture destructuring forms affect the result.
|
|
1532
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose identifies binding-element purpose and nonnil/parent limits.
|
|
1533
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources IsBindingElement acquires no handle, buffer or cache and retains nothing after it returns.
|
|
1534
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms The shim chooses no independent binding classifier. Upstream compares one node kind in O(1) time and space without traversing parents or children.
|
|
1535
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work This forwarding predicate owns no cache or in-flight coordination; node owners control changes to the compared kind.
|
|
1536
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation IsBindingElement computes from its arguments only; it opens no file, builds no path and calls no platform or process API.
|
|
305
1537
|
func IsBindingElement(node *Node) bool {
|
|
306
1538
|
return innerast.IsBindingElement(node)
|
|
307
1539
|
}
|
|
308
1540
|
|
|
309
1541
|
// IsDeclaration reports whether node is a declaration syntax node.
|
|
1542
|
+
// Supply a nonnil node with valid compiler payload data. Upstream treats a type
|
|
1543
|
+
// parameter as a declaration only when it has a parent; other kinds use the
|
|
1544
|
+
// payload's declaration data.
|
|
1545
|
+
//
|
|
1546
|
+
// @evidence contracts/common.md#principled-implementation Delegation preserves the upstream parent-sensitive type-parameter case and declaration-payload classification.
|
|
1547
|
+
// @evidence contracts/common.md#clear-and-simple-design Declaration policy has one upstream owner rather than a copied shim kind set.
|
|
1548
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts The type-parameter distinction is an upstream semantic rule rather than a fixture exception.
|
|
1549
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose explains the nonobvious parent case and nonnil precondition with separated tags.
|
|
1550
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources IsDeclaration acquires no handle, buffer or cache and retains nothing after it returns.
|
|
1551
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms The shim chooses no independent declaration classifier. Upstream checks a type-parameter kind/parent or declaration-data presence in O(1) time and space without traversing the tree.
|
|
1552
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work This forwarding predicate owns no cache or in-flight coordination; compiler-tree owners control parent and payload validity.
|
|
1553
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation IsDeclaration computes from its arguments only; it opens no file, builds no path and calls no platform or process API.
|
|
310
1554
|
func IsDeclaration(node *Node) bool {
|
|
311
1555
|
return innerast.IsDeclaration(node)
|
|
312
1556
|
}
|
|
313
1557
|
|
|
314
1558
|
// IsDeclarationNameOrImportPropertyName reports whether node names a
|
|
315
1559
|
// declaration or the property side of an import or export specifier.
|
|
1560
|
+
// Supply a nonnil node with a nonnil parent and the required ancestor links.
|
|
1561
|
+
// Upstream accepts identifier/string-literal specifier names on either alias side.
|
|
1562
|
+
//
|
|
1563
|
+
// @evidence contracts/common.md#principled-implementation Direct delegation retains upstream specifier identifier/string-literal and declaring-parent name checks without replacing them with spelling rules.
|
|
1564
|
+
// @evidence contracts/common.md#clear-and-simple-design The compiler owns alias/name classification; the shim adds no binding resolver.
|
|
1565
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No hardcoded imported names or fixture export mappings are introduced.
|
|
1566
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose records linked-parent requirements and the upstream both-side specifier behavior.
|
|
1567
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources IsDeclarationNameOrImportPropertyName acquires no handle, buffer or cache and retains nothing after it returns.
|
|
1568
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms The shim chooses no independent name classifier. Upstream uses fixed parent-kind, identifier/string-kind and declaration/name-identity checks in O(1) time and space without ancestor or name-text scans.
|
|
1569
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work This forwarding predicate owns no cache or in-flight coordination; compiler-tree owners establish validity of parent links and declaration name identity.
|
|
1570
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation IsDeclarationNameOrImportPropertyName computes from its arguments only; it opens no file, builds no path and calls no platform or process API.
|
|
316
1571
|
func IsDeclarationNameOrImportPropertyName(node *Node) bool {
|
|
317
1572
|
return innerast.IsDeclarationNameOrImportPropertyName(node)
|
|
318
1573
|
}
|
|
319
1574
|
|
|
320
1575
|
// IsBindingPattern reports whether node is an object or array binding pattern.
|
|
1576
|
+
// Supply a nonnil node; the kind check does not validate pattern elements.
|
|
1577
|
+
//
|
|
1578
|
+
// @evidence contracts/common.md#principled-implementation Delegation preserves upstream object/array binding-pattern kind classification without element checking.
|
|
1579
|
+
// @evidence contracts/common.md#clear-and-simple-design The upstream predicate owns the two-kind decision without another shim pattern classifier.
|
|
1580
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts The object/array alternatives are language syntax rather than fixture-specific pattern names.
|
|
1581
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose identifies both forms and input/element validation limits with separated tags.
|
|
1582
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources IsBindingPattern acquires no handle, buffer or cache and retains nothing after it returns.
|
|
1583
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms The shim chooses no independent pattern classifier. Upstream compares the node kind against two binding kinds in O(1) time and space without inspecting elements.
|
|
1584
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work This forwarding predicate owns no cache or in-flight coordination; tree owners control changes to the compared kind.
|
|
1585
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation IsBindingPattern computes from its arguments only; it opens no file, builds no path and calls no platform or process API.
|
|
321
1586
|
func IsBindingPattern(node *Node) bool {
|
|
322
1587
|
return innerast.IsBindingPattern(node)
|
|
323
1588
|
}
|
|
324
1589
|
|
|
325
|
-
// GetSourceFileOfNode walks
|
|
326
|
-
//
|
|
327
|
-
//
|
|
1590
|
+
// GetSourceFileOfNode walks parent links to return the containing SourceFile.
|
|
1591
|
+
// A nil input or a chain with no source file returns nil. Parent links must
|
|
1592
|
+
// form a terminating chain; this operation does not detect cycles.
|
|
328
1593
|
//
|
|
329
|
-
//
|
|
330
|
-
|
|
1594
|
+
// @evidence contracts/common.md#principled-implementation Directly calling the exported upstream helper preserves source-file identity and nil result for a terminating parent chain without a source owner.
|
|
1595
|
+
// @evidence contracts/common.md#clear-and-simple-design One normal adapter leaves parent traversal with its upstream owner.
|
|
1596
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Exported API delegation needs no linkname binding or guessed AST ancestry.
|
|
1597
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose explains nil results and terminating-parent responsibility, separating tags from prose.
|
|
1598
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources GetSourceFileOfNode acquires no handle, buffer or cache and retains nothing after it returns.
|
|
1599
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms The shim selects no independent ancestry-search algorithm. Upstream follows H parent links until a SourceFile or nil, costing O(H) time and O(1) temporary space for a terminating chain.
|
|
1600
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work This forwarding query owns no cache or in-flight coordination; compiler-tree owners establish parent-chain validity when reusing an owner result.
|
|
1601
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation GetSourceFileOfNode computes from its arguments only; it opens no file, builds no path and calls no platform or process API.
|
|
1602
|
+
func GetSourceFileOfNode(node *innerast.Node) *innerast.SourceFile {
|
|
1603
|
+
return innerast.GetSourceFileOfNode(node)
|
|
1604
|
+
}
|
|
331
1605
|
|
|
332
|
-
// GetNodeAtPosition
|
|
333
|
-
//
|
|
1606
|
+
// GetNodeAtPosition descends through non-token AST nodes enclosing position.
|
|
1607
|
+
// Upstream stops at a meta-property's parent rather than descending into it.
|
|
1608
|
+
// When includeJSDoc is true the search descends into JSDoc
|
|
334
1609
|
// sub-trees. Cursor-facing callers that need the exact token should use
|
|
335
|
-
// astnav.GetTouchingToken instead.
|
|
336
|
-
//
|
|
1610
|
+
// astnav.GetTouchingToken instead. Supply a nonnil file. Position uses the
|
|
1611
|
+
// source's byte-offset ranges, includes leading trivia and excludes the end
|
|
1612
|
+
// of a child range; a position outside child ranges returns the file node.
|
|
1613
|
+
// Lazy JSDoc requires the upstream parser registration and may populate the
|
|
1614
|
+
// SourceFile's shared JSDoc cache during this search.
|
|
337
1615
|
//
|
|
338
|
-
//
|
|
339
|
-
|
|
1616
|
+
// @evidence contracts/common.md#principled-implementation Delegation preserves upstream half-open range descent, meta-property parent stop, optional lazy JSDoc search and file-node fallback for a nonnil source file.
|
|
1617
|
+
// @evidence contracts/common.md#clear-and-simple-design The exported compiler helper owns position traversal instead of a shim range-search engine.
|
|
1618
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No linkname binding, consumer cursor exception or patched range traversal is needed.
|
|
1619
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose explains non-token results, byte-offset/end rules, fallback and nonnil input with separated tags.
|
|
1620
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources The shim controls no independent lifetime. Upstream lazy parsing can allocate nodes and retain them in the supplied SourceFile's cache; its tree owner controls that retained population and lifetime.
|
|
1621
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms The shim chooses no independent position-search algorithm. Upstream descends one containing branch and scans candidate children and JSDoc at each level, so traversal costs the visited candidates, plus any lazy parse work; no whole-tree position index is maintained here.
|
|
1622
|
+
// @evidence contracts/performance.md#reuse-equivalent-work When JSDoc is lazy, the supplied SourceFile shares parsed results keyed by node, with read-lock lookup and write-lock recheck before parsing. Repeated queries reuse that tree-owned cache; validity follows the supplied compiler tree, not position equality alone.
|
|
1623
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation GetNodeAtPosition computes from its arguments only; it opens no file, builds no path and calls no platform or process API.
|
|
1624
|
+
func GetNodeAtPosition(file *innerast.SourceFile, position int, includeJSDoc bool) *innerast.Node {
|
|
1625
|
+
return innerast.GetNodeAtPosition(file, position, includeJSDoc)
|
|
1626
|
+
}
|