@ttsc/wasm 0.30.4 → 0.31.1
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
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
// This file groups the helpers and node-flag constants the `@ttsc/lint`
|
|
4
4
|
// plugin needs to navigate the tree.
|
|
5
5
|
//
|
|
6
|
-
//
|
|
7
|
-
//
|
|
8
|
-
//
|
|
9
|
-
//
|
|
6
|
+
// Types and constants retain the identity of `internal/ast` symbols. Thin
|
|
7
|
+
// wrappers delegate upstream classification, while the declaration-keyword
|
|
8
|
+
// predicates below inspect combined flags locally. These helpers require the
|
|
9
|
+
// compiler's bound declaration tree where their parent traversal applies.
|
|
10
10
|
package ast
|
|
11
11
|
|
|
12
12
|
import (
|
|
@@ -15,110 +15,1117 @@ import (
|
|
|
15
15
|
|
|
16
16
|
// ---- Node-list / visitor primitives ----
|
|
17
17
|
|
|
18
|
+
// Visitor is the compiler's node callback. Its boolean follows the traversal
|
|
19
|
+
// stop protocol of the operation receiving it.
|
|
20
|
+
//
|
|
21
|
+
// @evidence contracts/common.md#principled-implementation The alias preserves upstream's func(*Node) bool callback identity and traversal protocol without converting node pointers.
|
|
22
|
+
// @evidence contracts/common.md#clear-and-simple-design One alias exposes the callback directly rather than a wrapper closure or parallel visitor interface.
|
|
23
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Traversal callbacks use the supported upstream type without replacing compiler traversal methods.
|
|
24
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose identifies callback ownership and boolean interpretation, with separated prose and tags under the documentation guidance.
|
|
25
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
26
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
27
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
28
|
+
// @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
29
|
type Visitor = innerast.Visitor
|
|
30
|
+
|
|
31
|
+
// NodeFlags is the compiler's bitmask of node and declaration context. Use the
|
|
32
|
+
// named upstream bits; declaration flags may live on enclosing list nodes.
|
|
33
|
+
//
|
|
34
|
+
// @evidence contracts/common.md#principled-implementation Type identity preserves the upstream uint32 flag representation used by nodes and combined-flag queries.
|
|
35
|
+
// @evidence contracts/common.md#clear-and-simple-design The alias exposes one canonical bitmask instead of a duplicate flag schema.
|
|
36
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Flag values come from upstream definitions rather than guessed numbers or fixture-specific masks.
|
|
37
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose explains named bits and enclosing declaration flags, with paragraph and tag separation following the documentation guidance.
|
|
38
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
39
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
40
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
41
|
+
// @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
42
|
type NodeFlags = innerast.NodeFlags
|
|
43
|
+
|
|
44
|
+
// ModifierFlags is the compiler's modifier bitmask. It represents computed
|
|
45
|
+
// modifier facts, not a replacement list of modifier syntax nodes.
|
|
46
|
+
//
|
|
47
|
+
// @evidence contracts/common.md#principled-implementation The alias retains the upstream uint32 modifier mask expected by compiler modifier queries.
|
|
48
|
+
// @evidence contracts/common.md#clear-and-simple-design One canonical mask avoids a second modifier enum or conversion layer.
|
|
49
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Modifier bits retain upstream identity rather than consumer-specific access or modifier guesses.
|
|
50
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose distinguishes modifier facts from syntax lists, using separated prose and tags under the documentation guidance.
|
|
51
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
52
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
53
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
54
|
+
// @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
55
|
type ModifierFlags = innerast.ModifierFlags
|
|
21
56
|
|
|
22
57
|
// ---- Statement-shaped node types ----
|
|
23
58
|
|
|
59
|
+
// Block exposes the compiler-owned statement sequence inside braces. Aliasing
|
|
60
|
+
// retains its node identity and methods; it does not copy its statements.
|
|
61
|
+
//
|
|
62
|
+
// @evidence contracts/common.md#principled-implementation Exact upstream identity preserves block payloads and compiler traversal methods.
|
|
63
|
+
// @evidence contracts/common.md#clear-and-simple-design The alias leaves statement-list representation with upstream rather than another block container.
|
|
64
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Block structure is the actual compiler type, without synthetic fixture statements or foreign mutation.
|
|
65
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose states the braced-sequence role and no-copy ownership, with separated tags following the documentation guidance.
|
|
66
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
67
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
68
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
69
|
+
// @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
70
|
type Block = innerast.Block
|
|
71
|
+
|
|
72
|
+
// BreakStatement exposes a break node, including its optional target label.
|
|
73
|
+
// A syntax node does not establish that its target is a valid enclosing
|
|
74
|
+
// break destination, which can also be a switch or labeled statement.
|
|
75
|
+
//
|
|
76
|
+
// @evidence contracts/common.md#principled-implementation The alias retains upstream break-node identity and optional-label representation.
|
|
77
|
+
// @evidence contracts/common.md#clear-and-simple-design Label and node state remain upstream-owned without another jump model.
|
|
78
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Break targets remain compiler syntax rather than guessed control-flow destinations.
|
|
79
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose explains label optionality and the semantic-validation boundary, following the documentation guidance's paragraph separation.
|
|
80
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
81
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
82
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
83
|
+
// @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
84
|
type BreakStatement = innerast.BreakStatement
|
|
85
|
+
|
|
86
|
+
// CaseBlock exposes the ordered case/default clauses of a switch body.
|
|
87
|
+
// The alias shares the compiler's clause list and node state.
|
|
88
|
+
//
|
|
89
|
+
// @evidence contracts/common.md#principled-implementation The upstream alias preserves ordered clause payloads and traversal identity.
|
|
90
|
+
// @evidence contracts/common.md#clear-and-simple-design Clause-list ownership stays in the compiler case-block type without a duplicate switch index.
|
|
91
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Clauses remain real syntax rather than precomputed matching-case results.
|
|
92
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose states ordering and shared node ownership, with separated tags under the documentation guidance.
|
|
93
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
94
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
95
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
96
|
+
// @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
97
|
type CaseBlock = innerast.CaseBlock
|
|
98
|
+
|
|
99
|
+
// CaseOrDefaultClause is the compiler's shared switch-clause payload. Inspect
|
|
100
|
+
// the node kind to distinguish a case expression from the default clause.
|
|
101
|
+
//
|
|
102
|
+
// @evidence contracts/common.md#principled-implementation Aliasing retains the shared upstream representation whose node kind distinguishes case and default forms.
|
|
103
|
+
// @evidence contracts/common.md#clear-and-simple-design One shared clause type avoids parallel local case and default payloads.
|
|
104
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts The actual node kind determines clause form rather than a guessed expression-presence rule.
|
|
105
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose names the required kind distinction, with separated prose and tags following the documentation guidance.
|
|
106
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
107
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
108
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
109
|
+
// @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
110
|
type CaseOrDefaultClause = innerast.CaseOrDefaultClause
|
|
111
|
+
|
|
112
|
+
// CatchClause exposes a catch body and its optional exception binding.
|
|
113
|
+
// An absent binding represents an optional-binding catch, not a missing body.
|
|
114
|
+
//
|
|
115
|
+
// @evidence contracts/common.md#principled-implementation Exact upstream identity preserves the catch body's required role and optional binding.
|
|
116
|
+
// @evidence contracts/common.md#clear-and-simple-design The compiler catch payload owns binding and body without a second exception-handler structure.
|
|
117
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Exception bindings remain compiler syntax rather than injected error values or foreign handler changes.
|
|
118
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose clarifies binding absence and body meaning, with paragraph separation under the documentation guidance.
|
|
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.
|
|
28
123
|
type CatchClause = innerast.CatchClause
|
|
124
|
+
|
|
125
|
+
// ContinueStatement exposes a continue node and optional label. The alias does
|
|
126
|
+
// not resolve whether its target denotes a valid iteration statement.
|
|
127
|
+
//
|
|
128
|
+
// @evidence contracts/common.md#principled-implementation Upstream type identity preserves continue syntax and optional-label data.
|
|
129
|
+
// @evidence contracts/common.md#clear-and-simple-design Target syntax stays with the compiler node without a separate local jump resolver.
|
|
130
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Labels are supplied syntax rather than expected loop destinations or patched flow analysis.
|
|
131
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose distinguishes syntax exposure from target validation, with separated tags following the documentation guidance.
|
|
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.
|
|
29
136
|
type ContinueStatement = innerast.ContinueStatement
|
|
137
|
+
|
|
138
|
+
// DebuggerStatement exposes the payload-free debugger statement form. Compiler
|
|
139
|
+
// node metadata remains upstream-owned even though the syntax has no operands.
|
|
140
|
+
//
|
|
141
|
+
// @evidence contracts/common.md#principled-implementation The alias preserves debugger-node identity and metadata without inventing an operand.
|
|
142
|
+
// @evidence contracts/common.md#clear-and-simple-design Upstream's marker node is exposed directly with no redundant local flag.
|
|
143
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Debugger syntax is an existing compiler kind rather than a debugging-only production branch.
|
|
144
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose explains operand absence and retained metadata, with separated tags under the documentation guidance.
|
|
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.
|
|
30
149
|
type DebuggerStatement = innerast.DebuggerStatement
|
|
150
|
+
|
|
151
|
+
// DoStatement exposes the do/while body and condition. Its syntax order differs
|
|
152
|
+
// from WhileStatement; the alias preserves the compiler's dedicated node form.
|
|
153
|
+
//
|
|
154
|
+
// @evidence contracts/common.md#principled-implementation Exact upstream identity retains the do/while node's body and condition roles.
|
|
155
|
+
// @evidence contracts/common.md#clear-and-simple-design The compiler owns this loop form without a generalized local loop adapter.
|
|
156
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Loop syntax remains the dedicated upstream type rather than a guessed while-loop rewrite.
|
|
157
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose identifies body-before-condition syntax and the loop distinction, following the documentation guidance's paragraph separation.
|
|
158
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
159
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
160
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
161
|
+
// @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
162
|
type DoStatement = innerast.DoStatement
|
|
163
|
+
|
|
164
|
+
// EmptyStatement exposes a standalone semicolon statement, which is distinct
|
|
165
|
+
// from an absent statement or an empty braced block.
|
|
166
|
+
//
|
|
167
|
+
// @evidence contracts/common.md#principled-implementation The alias retains the upstream empty-statement identity instead of conflating it with nil or Block.
|
|
168
|
+
// @evidence contracts/common.md#clear-and-simple-design One marker type expresses semicolon syntax without another emptiness flag.
|
|
169
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts The semicolon form is actual syntax rather than a manufactured no-op for known fixtures.
|
|
170
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose states the absent-node and block distinctions, with separated tags under the documentation guidance.
|
|
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.
|
|
32
175
|
type EmptyStatement = innerast.EmptyStatement
|
|
176
|
+
|
|
177
|
+
// ExpressionStatement exposes an expression in statement position. The wrapper
|
|
178
|
+
// preserves its statement identity rather than aliasing the expression alone.
|
|
179
|
+
//
|
|
180
|
+
// @evidence contracts/common.md#principled-implementation Upstream type identity preserves the expression/statement boundary used by traversal and emission.
|
|
181
|
+
// @evidence contracts/common.md#clear-and-simple-design The compiler wrapper owns statement metadata without another local expression container.
|
|
182
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Statement position comes from real AST structure rather than a text-based fixture classification.
|
|
183
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose explains the statement wrapper's purpose, with paragraph and tag separation following the documentation guidance.
|
|
184
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
185
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
186
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
187
|
+
// @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
188
|
type ExpressionStatement = innerast.ExpressionStatement
|
|
189
|
+
|
|
190
|
+
// ForInOrOfStatement exposes the shared for-in/for-of payload. The node kind
|
|
191
|
+
// determines the iteration form; the same shape does not equate their semantics.
|
|
192
|
+
//
|
|
193
|
+
// @evidence contracts/common.md#principled-implementation Aliasing preserves upstream's shared loop payload and its kind-based in/of distinction.
|
|
194
|
+
// @evidence contracts/common.md#clear-and-simple-design The existing shared shape avoids duplicate local iteration-loop structures.
|
|
195
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Iteration form uses the actual node kind rather than guessing from operand text.
|
|
196
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose names the kind distinction and semantic boundary, following the documentation guidance's paragraph separation.
|
|
197
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
198
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
199
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
200
|
+
// @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
201
|
type ForInOrOfStatement = innerast.ForInOrOfStatement
|
|
202
|
+
|
|
203
|
+
// ForStatement exposes the classic for-loop initializer, condition, incrementor
|
|
204
|
+
// and body. Omitted header operands remain absent in the upstream representation.
|
|
205
|
+
//
|
|
206
|
+
// @evidence contracts/common.md#principled-implementation Exact upstream identity retains optional loop-header operands and their distinct roles.
|
|
207
|
+
// @evidence contracts/common.md#clear-and-simple-design The compiler loop node owns header/body structure without another local iteration abstraction.
|
|
208
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Absent operands remain syntax facts rather than inserted fixture-specific conditions.
|
|
209
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose explains optional header roles and retained absence, with separated tags under the documentation guidance.
|
|
210
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
211
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
212
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
213
|
+
// @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
214
|
type ForStatement = innerast.ForStatement
|
|
215
|
+
|
|
216
|
+
// FunctionDeclaration exposes a declaration-form function with the compiler's
|
|
217
|
+
// signature and optional body; declarations without bodies remain representable.
|
|
218
|
+
//
|
|
219
|
+
// @evidence contracts/common.md#principled-implementation The alias retains declaration identity and upstream signature/body representation without converting to FunctionExpression.
|
|
220
|
+
// @evidence contracts/common.md#clear-and-simple-design Signature state remains compiler-owned instead of duplicated in a local callable schema.
|
|
221
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Function syntax is the actual upstream declaration rather than a consumer-specific callable stub.
|
|
222
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose states declaration form and optional bodies, with separated tags following the documentation guidance.
|
|
223
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
224
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
225
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
226
|
+
// @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
227
|
type FunctionDeclaration = innerast.FunctionDeclaration
|
|
228
|
+
|
|
229
|
+
// IfStatement exposes condition and branch statements. The optional else
|
|
230
|
+
// statement distinguishes a missing alternative from an explicitly empty one.
|
|
231
|
+
//
|
|
232
|
+
// @evidence contracts/common.md#principled-implementation Exact upstream identity retains condition, then branch and optional else representation.
|
|
233
|
+
// @evidence contracts/common.md#clear-and-simple-design Branch ownership remains in the compiler node without a duplicate local decision tree.
|
|
234
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Branches remain syntax inputs rather than precomputed outcomes for known conditions.
|
|
235
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose explains optional else versus empty syntax, following the documentation guidance's prose/tag separation.
|
|
236
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
237
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
238
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
239
|
+
// @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
240
|
type IfStatement = innerast.IfStatement
|
|
241
|
+
|
|
242
|
+
// LabeledStatement exposes a label attached to a statement. This syntax payload
|
|
243
|
+
// does not resolve break or continue references to that label.
|
|
244
|
+
//
|
|
245
|
+
// @evidence contracts/common.md#principled-implementation The alias preserves upstream label and statement identity without inferring jump targets.
|
|
246
|
+
// @evidence contracts/common.md#clear-and-simple-design A single compiler node owns the label attachment rather than a separate local label registry.
|
|
247
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Label attachment is AST structure rather than guessed textual jump resolution.
|
|
248
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose identifies attachment and its resolution boundary, with separated tags under the documentation guidance.
|
|
249
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
250
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
251
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
252
|
+
// @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
253
|
type LabeledStatement = innerast.LabeledStatement
|
|
254
|
+
|
|
255
|
+
// ModuleDeclaration exposes namespace or module declaration syntax. Its name,
|
|
256
|
+
// body form and flags remain compiler-owned; it does not resolve a module path.
|
|
257
|
+
//
|
|
258
|
+
// @evidence contracts/common.md#principled-implementation Exact upstream identity retains module declarations and their namespace/module distinctions.
|
|
259
|
+
// @evidence contracts/common.md#clear-and-simple-design The compiler owns name, body and flags without another local module model.
|
|
260
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Module names remain syntax rather than hardcoded package-resolution answers.
|
|
261
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose states the declaration role and lack of path resolution, following the documentation guidance's paragraph separation.
|
|
262
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
263
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
264
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
265
|
+
// @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
266
|
type ModuleDeclaration = innerast.ModuleDeclaration
|
|
267
|
+
|
|
268
|
+
// ModuleBlock exposes the statements inside a module body. It remains distinct
|
|
269
|
+
// from Block because the compiler gives module bodies their own node identity.
|
|
270
|
+
//
|
|
271
|
+
// @evidence contracts/common.md#principled-implementation The alias preserves module-body identity and statement storage from upstream.
|
|
272
|
+
// @evidence contracts/common.md#clear-and-simple-design The existing module-body node avoids a parallel local namespace statement container.
|
|
273
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Module-body classification uses the compiler type rather than special package-name logic.
|
|
274
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose explains the Block distinction, with separated prose and tags under the documentation guidance.
|
|
275
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
276
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
277
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
278
|
+
// @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
279
|
type ModuleBlock = innerast.ModuleBlock
|
|
280
|
+
|
|
281
|
+
// ReturnStatement exposes an optional return expression. A nil expression is a
|
|
282
|
+
// bare return, not an explicit undefined expression inserted by the shim.
|
|
283
|
+
//
|
|
284
|
+
// @evidence contracts/common.md#principled-implementation Exact upstream identity preserves optional return-value syntax and statement metadata.
|
|
285
|
+
// @evidence contracts/common.md#clear-and-simple-design The compiler return node owns expression absence without a redundant local return-value flag.
|
|
286
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Bare returns remain absent operands rather than invented expected values.
|
|
287
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose clarifies bare-return meaning, with separated tags following the documentation guidance.
|
|
288
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
289
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
290
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
291
|
+
// @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
292
|
type ReturnStatement = innerast.ReturnStatement
|
|
293
|
+
|
|
294
|
+
// SwitchStatement exposes the tested expression and its case block. Syntax
|
|
295
|
+
// exposure does not decide which branch will match or fall through.
|
|
296
|
+
//
|
|
297
|
+
// @evidence contracts/common.md#principled-implementation Aliasing retains upstream switch expression and case-block identity without evaluating them.
|
|
298
|
+
// @evidence contracts/common.md#clear-and-simple-design Case storage remains in CaseBlock rather than a duplicate local dispatch table.
|
|
299
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Branch outcomes are not hardcoded from known switch examples.
|
|
300
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose explains the structural roles and evaluation boundary, following the documentation guidance's paragraph separation.
|
|
301
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
302
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
303
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
304
|
+
// @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
305
|
type SwitchStatement = innerast.SwitchStatement
|
|
306
|
+
|
|
307
|
+
// ThrowStatement exposes the expression to be thrown. The alias neither raises
|
|
308
|
+
// that value nor determines its runtime exception type.
|
|
309
|
+
//
|
|
310
|
+
// @evidence contracts/common.md#principled-implementation Exact upstream identity preserves the throw operand as syntax without evaluating it.
|
|
311
|
+
// @evidence contracts/common.md#clear-and-simple-design The compiler node owns failure syntax without another local exception representation.
|
|
312
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Thrown values remain real operands rather than injected fixture errors.
|
|
313
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose separates syntax exposure from runtime throwing, with separated tags under the documentation guidance.
|
|
314
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
315
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
316
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
317
|
+
// @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
318
|
type ThrowStatement = innerast.ThrowStatement
|
|
319
|
+
|
|
320
|
+
// TryStatement exposes the protected body and optional catch/finally parts.
|
|
321
|
+
// This syntax record does not execute cleanup or establish exception coverage.
|
|
322
|
+
//
|
|
323
|
+
// @evidence contracts/common.md#principled-implementation The alias retains upstream try/catch/finally structure and node identity.
|
|
324
|
+
// @evidence contracts/common.md#clear-and-simple-design Optional handlers stay with the compiler try node without another recovery-policy layer.
|
|
325
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Handler structure is not replaced with compensating retries or expected exception paths.
|
|
326
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose names optional handlers and the execution boundary, following the documentation guidance's paragraph separation.
|
|
327
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
328
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
329
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
330
|
+
// @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
331
|
type TryStatement = innerast.TryStatement
|
|
332
|
+
|
|
333
|
+
// VariableDeclaration exposes one binding and its optional type/initializer.
|
|
334
|
+
// Keyword flags can live on its enclosing declaration list, so classification
|
|
335
|
+
// should use combined flags rather than this node's flags alone.
|
|
336
|
+
//
|
|
337
|
+
// @evidence contracts/common.md#principled-implementation Exact upstream identity retains binding, annotation and initializer roles and their compiler parent relationships.
|
|
338
|
+
// @evidence contracts/common.md#clear-and-simple-design The alias exposes one declaration while list-level keyword policy stays with the compiler tree.
|
|
339
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Keyword classification uses actual enclosing flags rather than guessed binding text.
|
|
340
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose explains optional operands and parent-owned keyword flags, with separated tags under the documentation guidance.
|
|
341
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
342
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
343
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
344
|
+
// @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
345
|
type VariableDeclaration = innerast.VariableDeclaration
|
|
346
|
+
|
|
347
|
+
// VariableDeclarationList exposes ordered bindings and declaration-keyword
|
|
348
|
+
// flags. The list is shared with the compiler rather than copied by the alias.
|
|
349
|
+
//
|
|
350
|
+
// @evidence contracts/common.md#principled-implementation The alias preserves upstream ordered declaration storage and list-level node flags.
|
|
351
|
+
// @evidence contracts/common.md#clear-and-simple-design One compiler list owns shared keyword state instead of repeating it on every local binding.
|
|
352
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Keyword flags retain upstream values rather than fixture-specific declaration categories.
|
|
353
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose explains list ordering, keyword ownership and no-copy semantics, following the documentation guidance's paragraph separation.
|
|
354
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
355
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
356
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
357
|
+
// @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
358
|
type VariableDeclarationList = innerast.VariableDeclarationList
|
|
359
|
+
|
|
360
|
+
// VariableStatement exposes a declaration list in statement position, including
|
|
361
|
+
// statement-level modifiers. Loop header declarations use the list directly.
|
|
362
|
+
//
|
|
363
|
+
// @evidence contracts/common.md#principled-implementation Exact upstream identity preserves the distinction between a variable statement and its reusable declaration list.
|
|
364
|
+
// @evidence contracts/common.md#clear-and-simple-design The compiler wrapper owns statement modifiers while the list owns bindings and keyword state.
|
|
365
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Statement context follows AST structure rather than a special-case source-text match.
|
|
366
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose contrasts statement and loop-header usage, with separated tags under the documentation guidance.
|
|
367
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
368
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
369
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
370
|
+
// @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
371
|
type VariableStatement = innerast.VariableStatement
|
|
372
|
+
|
|
373
|
+
// WhileStatement exposes a condition followed by a loop body. The alias keeps
|
|
374
|
+
// this form distinct from the body-first DoStatement.
|
|
375
|
+
//
|
|
376
|
+
// @evidence contracts/common.md#principled-implementation The upstream alias preserves condition/body roles and while-node identity.
|
|
377
|
+
// @evidence contracts/common.md#clear-and-simple-design The dedicated compiler form avoids a local generalized loop representation.
|
|
378
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Loop classification uses real syntax rather than a compensating do/while conversion.
|
|
379
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose states condition-first meaning and the do/while distinction, following the documentation guidance's paragraph separation.
|
|
380
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
381
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
382
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
383
|
+
// @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
384
|
type WhileStatement = innerast.WhileStatement
|
|
385
|
+
|
|
386
|
+
// WithStatement exposes an object expression and its nested statement. This
|
|
387
|
+
// AST representation does not endorse the construct's use or change lookup.
|
|
388
|
+
//
|
|
389
|
+
// @evidence contracts/common.md#principled-implementation Exact upstream identity preserves with-statement syntax without emulating its runtime scope behavior.
|
|
390
|
+
// @evidence contracts/common.md#clear-and-simple-design Object and body remain compiler payloads rather than another local scope adapter.
|
|
391
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No foreign scope or property lookup is patched to simulate the construct.
|
|
392
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose distinguishes syntax representation from runtime lookup, with separated tags under the documentation guidance.
|
|
393
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
394
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
395
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
396
|
+
// @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
397
|
type WithStatement = innerast.WithStatement
|
|
50
398
|
|
|
51
399
|
// ---- Class / module / enum shapes ----
|
|
52
400
|
|
|
401
|
+
// ClassDeclaration exposes declaration-form class syntax and compiler-owned
|
|
402
|
+
// members. It retains declaration identity rather than converting to an expression.
|
|
403
|
+
//
|
|
404
|
+
// @evidence contracts/common.md#principled-implementation Upstream alias identity preserves class declaration metadata and member structure.
|
|
405
|
+
// @evidence contracts/common.md#clear-and-simple-design Class members remain in the compiler representation without a duplicate local class schema.
|
|
406
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts The shim exposes real class nodes rather than consumer-specific class substitutes.
|
|
407
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose states declaration form and member ownership, with separated tags under the documentation guidance.
|
|
408
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
409
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
410
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
411
|
+
// @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
412
|
type ClassDeclaration = innerast.ClassDeclaration
|
|
413
|
+
|
|
414
|
+
// ClassExpression exposes a class used as an expression, including an optional
|
|
415
|
+
// name. Its identity remains distinct from declaration-form classes.
|
|
416
|
+
//
|
|
417
|
+
// @evidence contracts/common.md#principled-implementation The alias preserves upstream class-expression shape and optional naming.
|
|
418
|
+
// @evidence contracts/common.md#clear-and-simple-design Expression identity stays in the compiler type without a second class-form switch.
|
|
419
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Class form follows actual AST identity rather than guessed naming conventions.
|
|
420
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose explains expression form and optional naming, with separated tags following the documentation guidance.
|
|
421
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
422
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
423
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
424
|
+
// @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
425
|
type ClassExpression = innerast.ClassExpression
|
|
426
|
+
|
|
427
|
+
// ClassStaticBlockDeclaration exposes a class's static initialization block.
|
|
428
|
+
// Its body is syntax; exposing the alias does not execute initialization.
|
|
429
|
+
//
|
|
430
|
+
// @evidence contracts/common.md#principled-implementation Exact upstream identity preserves the static-block declaration and its body.
|
|
431
|
+
// @evidence contracts/common.md#clear-and-simple-design The dedicated compiler member owns initialization syntax without a local lifecycle abstraction.
|
|
432
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Static bodies remain real AST data rather than injected initialization hooks.
|
|
433
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose identifies static initialization and the execution boundary, using separated tags under the documentation guidance.
|
|
434
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
435
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
436
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
437
|
+
// @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
438
|
type ClassStaticBlockDeclaration = innerast.ClassStaticBlockDeclaration
|
|
439
|
+
|
|
440
|
+
// ConstructorDeclaration exposes constructor parameters and optional body.
|
|
441
|
+
// Compiler ownership preserves overload declarations that have no implementation.
|
|
442
|
+
//
|
|
443
|
+
// @evidence contracts/common.md#principled-implementation The alias retains constructor identity and upstream signature/body distinctions.
|
|
444
|
+
// @evidence contracts/common.md#clear-and-simple-design Constructor state remains with the compiler declaration without a local callable wrapper.
|
|
445
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No known-class constructor or synthetic implementation substitutes for the upstream node.
|
|
446
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose explains parameters and body absence, with paragraph separation following the documentation guidance.
|
|
447
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
448
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
449
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
450
|
+
// @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
451
|
type ConstructorDeclaration = innerast.ConstructorDeclaration
|
|
452
|
+
|
|
453
|
+
// EnumDeclaration exposes named enum syntax and its member sequence. The alias
|
|
454
|
+
// does not evaluate member values or manufacture the emitted runtime object.
|
|
455
|
+
//
|
|
456
|
+
// @evidence contracts/common.md#principled-implementation Upstream type identity preserves enum name, modifiers and members without evaluation.
|
|
457
|
+
// @evidence contracts/common.md#clear-and-simple-design Members stay in the canonical compiler declaration rather than a duplicate value table.
|
|
458
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Enum values are not replaced with precomputed fixture answers.
|
|
459
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose distinguishes syntax from value evaluation and emission, with separated tags under the documentation guidance.
|
|
460
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
461
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
462
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
463
|
+
// @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
464
|
type EnumDeclaration = innerast.EnumDeclaration
|
|
465
|
+
|
|
466
|
+
// EnumMember exposes an enum member name and optional initializer. An absent
|
|
467
|
+
// initializer remains syntax absence; its computed value belongs to the checker.
|
|
468
|
+
//
|
|
469
|
+
// @evidence contracts/common.md#principled-implementation Exact upstream identity preserves member naming and initializer optionality.
|
|
470
|
+
// @evidence contracts/common.md#clear-and-simple-design The member node owns syntax without a second inferred-value representation.
|
|
471
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Missing initializers are not filled with guessed enum values.
|
|
472
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose names the computed-value boundary, with separated tags following the documentation guidance.
|
|
473
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
474
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
475
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
476
|
+
// @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
477
|
type EnumMember = innerast.EnumMember
|
|
478
|
+
|
|
479
|
+
// GetAccessorDeclaration exposes getter syntax with the compiler's signature
|
|
480
|
+
// and body representation. It does not execute a property read.
|
|
481
|
+
//
|
|
482
|
+
// @evidence contracts/common.md#principled-implementation The alias retains upstream getter declaration identity and methods.
|
|
483
|
+
// @evidence contracts/common.md#clear-and-simple-design Getter structure stays compiler-owned rather than a generic local property adapter.
|
|
484
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No foreign getter is replaced to expose this syntax type.
|
|
485
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose states the getter role and execution boundary, with separated tags under the documentation guidance.
|
|
486
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
487
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
488
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
489
|
+
// @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
490
|
type GetAccessorDeclaration = innerast.GetAccessorDeclaration
|
|
491
|
+
|
|
492
|
+
// SetAccessorDeclaration exposes setter syntax and its parameter/body data.
|
|
493
|
+
// Aliasing the node does not perform a property write or alter a setter.
|
|
494
|
+
//
|
|
495
|
+
// @evidence contracts/common.md#principled-implementation Exact upstream identity retains setter declaration payload and compiler methods.
|
|
496
|
+
// @evidence contracts/common.md#clear-and-simple-design Setter syntax remains in its canonical type without a duplicate assignment mechanism.
|
|
497
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No foreign setter replacement is used to expose setter nodes.
|
|
498
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose distinguishes declaration access from property writes, following the documentation guidance's paragraph separation.
|
|
499
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
500
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
501
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
502
|
+
// @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
503
|
type SetAccessorDeclaration = innerast.SetAccessorDeclaration
|
|
504
|
+
|
|
505
|
+
// HeritageClause exposes an extends or implements clause. Inspect its token to
|
|
506
|
+
// distinguish those forms; exposing syntax does not establish assignability.
|
|
507
|
+
//
|
|
508
|
+
// @evidence contracts/common.md#principled-implementation Upstream identity preserves heritage token and target-type sequence.
|
|
509
|
+
// @evidence contracts/common.md#clear-and-simple-design One compiler clause owns both forms without parallel local inheritance records.
|
|
510
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Clause meaning follows its actual token rather than a guessed target-name rule.
|
|
511
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose states the token distinction and semantic boundary, with separated tags under the documentation guidance.
|
|
512
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
513
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
514
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
515
|
+
// @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
516
|
type HeritageClause = innerast.HeritageClause
|
|
517
|
+
|
|
518
|
+
// PropertyDeclaration exposes class property syntax, including optional type
|
|
519
|
+
// and initializer. It remains distinct from object-literal PropertyAssignment.
|
|
520
|
+
//
|
|
521
|
+
// @evidence contracts/common.md#principled-implementation The alias preserves upstream property declaration identity and optional operands.
|
|
522
|
+
// @evidence contracts/common.md#clear-and-simple-design Class-member syntax remains in the compiler declaration without a duplicate property schema.
|
|
523
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Properties are real declaration nodes rather than known-object fixture fields.
|
|
524
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose explains class-member role and the assignment distinction, following the documentation guidance's paragraph separation.
|
|
525
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
526
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
527
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
528
|
+
// @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
529
|
type PropertyDeclaration = innerast.PropertyDeclaration
|
|
63
530
|
|
|
64
531
|
// ---- Module syntax ----
|
|
65
532
|
|
|
533
|
+
// ImportDeclaration exposes an import statement's bindings and module syntax.
|
|
534
|
+
// The alias preserves optional side-effect-only bindings without resolving modules.
|
|
535
|
+
//
|
|
536
|
+
// @evidence contracts/common.md#principled-implementation Exact upstream identity retains import-clause optionality and module operands.
|
|
537
|
+
// @evidence contracts/common.md#clear-and-simple-design Import syntax remains compiler-owned without another local loader model.
|
|
538
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Module operands are real AST inputs rather than hardcoded resolution answers.
|
|
539
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose names side-effect-only imports and the resolution boundary, following the documentation guidance's paragraph separation.
|
|
540
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
541
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
542
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
543
|
+
// @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
544
|
type ImportDeclaration = innerast.ImportDeclaration
|
|
545
|
+
|
|
546
|
+
// ImportSpecifier exposes one named import and any original/local name
|
|
547
|
+
// distinction. The node's type-only marker remains the compiler's representation.
|
|
548
|
+
//
|
|
549
|
+
// @evidence contracts/common.md#principled-implementation Aliasing preserves upstream import-name and type-only distinctions without renaming bindings.
|
|
550
|
+
// @evidence contracts/common.md#clear-and-simple-design One specifier owns binding syntax without a duplicate local import map.
|
|
551
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Binding names are actual syntax rather than consumer-specific alias rewrites.
|
|
552
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose explains original/local naming and type-only state, with separated tags under the documentation guidance.
|
|
553
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
554
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
555
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
556
|
+
// @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
557
|
type ImportSpecifier = innerast.ImportSpecifier
|
|
558
|
+
|
|
559
|
+
// ImportEqualsDeclaration exposes an import-equals binding and its module
|
|
560
|
+
// reference. Internal entity references and external module forms remain distinct.
|
|
561
|
+
//
|
|
562
|
+
// @evidence contracts/common.md#principled-implementation Exact upstream identity preserves import-equals naming and reference forms.
|
|
563
|
+
// @evidence contracts/common.md#clear-and-simple-design The compiler declaration owns reference syntax without a separate local require adapter.
|
|
564
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No module-name special case converts the upstream reference payload.
|
|
565
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose identifies reference-form distinctions, with separated tags following the documentation guidance.
|
|
566
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
567
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
568
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
569
|
+
// @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
570
|
type ImportEqualsDeclaration = innerast.ImportEqualsDeclaration
|
|
571
|
+
|
|
572
|
+
// ExternalModuleReference exposes the require-style reference operand used by
|
|
573
|
+
// import-equals syntax. The alias neither loads nor resolves that module.
|
|
574
|
+
//
|
|
575
|
+
// @evidence contracts/common.md#principled-implementation Upstream type identity retains the external-reference wrapper and its operand.
|
|
576
|
+
// @evidence contracts/common.md#clear-and-simple-design The compiler owns the reference boundary without another local module loader.
|
|
577
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts External references are not guessed paths or patched require handlers.
|
|
578
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose distinguishes syntax from loading and resolution, with separated tags under the documentation guidance.
|
|
579
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
580
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
581
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
582
|
+
// @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
583
|
type ExternalModuleReference = innerast.ExternalModuleReference
|
|
584
|
+
|
|
585
|
+
// NamedImports exposes the ordered named-binding list of an import clause.
|
|
586
|
+
// The alias shares compiler storage rather than copying or sorting specifiers.
|
|
587
|
+
//
|
|
588
|
+
// @evidence contracts/common.md#principled-implementation Exact upstream identity preserves named-import ordering and child nodes.
|
|
589
|
+
// @evidence contracts/common.md#clear-and-simple-design One canonical list avoids a duplicate binding collection or name index.
|
|
590
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Specifier order is retained rather than normalized for known fixtures.
|
|
591
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose states ordering and no-copy semantics, following the documentation guidance's paragraph separation.
|
|
592
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
593
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
594
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
595
|
+
// @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
596
|
type NamedImports = innerast.NamedImports
|
|
597
|
+
|
|
598
|
+
// NamespaceImport exposes the local name of an import namespace binding.
|
|
599
|
+
// The syntax node does not construct a runtime namespace object.
|
|
600
|
+
//
|
|
601
|
+
// @evidence contracts/common.md#principled-implementation The alias retains the upstream namespace-binding name and node identity.
|
|
602
|
+
// @evidence contracts/common.md#clear-and-simple-design Namespace binding syntax remains in one compiler node without a local module-object wrapper.
|
|
603
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Namespace names are supplied syntax rather than fabricated module objects.
|
|
604
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose identifies local binding and runtime boundary, with separated tags under the documentation guidance.
|
|
605
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
606
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
607
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
608
|
+
// @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
609
|
type NamespaceImport = innerast.NamespaceImport
|
|
610
|
+
|
|
611
|
+
// ExportDeclaration exposes export-clause and optional module syntax. Star and
|
|
612
|
+
// named exports retain the compiler's clause distinctions without target resolution.
|
|
613
|
+
//
|
|
614
|
+
// @evidence contracts/common.md#principled-implementation Exact upstream identity preserves export forms and optional module references.
|
|
615
|
+
// @evidence contracts/common.md#clear-and-simple-design The compiler clause owns export structure without another local export registry.
|
|
616
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Export targets are not replaced by consumer-specific public-name guesses.
|
|
617
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose states form distinctions and unresolved targets, following the documentation guidance's paragraph separation.
|
|
618
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
619
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
620
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
621
|
+
// @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
622
|
type ExportDeclaration = innerast.ExportDeclaration
|
|
623
|
+
|
|
624
|
+
// ExportSpecifier exposes one named export and any local/exported-name
|
|
625
|
+
// distinction. Type-only state remains the compiler node's own marker.
|
|
626
|
+
//
|
|
627
|
+
// @evidence contracts/common.md#principled-implementation Aliasing preserves upstream exported-name and type-only representation.
|
|
628
|
+
// @evidence contracts/common.md#clear-and-simple-design One specifier owns its names without a duplicate local export mapping.
|
|
629
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Public names remain actual syntax rather than hardcoded downstream exports.
|
|
630
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose explains naming and type-only state, with separated tags following the documentation guidance.
|
|
631
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
632
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
633
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
634
|
+
// @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
635
|
type ExportSpecifier = innerast.ExportSpecifier
|
|
636
|
+
|
|
637
|
+
// ExportAssignment exposes an export-equals or default-export expression.
|
|
638
|
+
// The upstream node's form marker distinguishes those two assignments.
|
|
639
|
+
//
|
|
640
|
+
// @evidence contracts/common.md#principled-implementation Exact upstream identity retains export form and assigned expression syntax.
|
|
641
|
+
// @evidence contracts/common.md#clear-and-simple-design The shared compiler node owns both forms without another local export switch.
|
|
642
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Assignment form uses upstream state rather than consumer-specific module conventions.
|
|
643
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose names export-equals/default distinctions, with separated tags under the documentation guidance.
|
|
644
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
645
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
646
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
647
|
+
// @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
648
|
type ExportAssignment = innerast.ExportAssignment
|
|
649
|
+
|
|
650
|
+
// ImportTypeNode exposes import-based type syntax, including qualifier and
|
|
651
|
+
// generic arguments. It remains a type node rather than an executable module load.
|
|
652
|
+
//
|
|
653
|
+
// @evidence contracts/common.md#principled-implementation The alias preserves upstream import-type operands and type-query distinctions.
|
|
654
|
+
// @evidence contracts/common.md#clear-and-simple-design Type-import structure stays in the compiler type rather than a parallel module-resolution model.
|
|
655
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Import types are actual syntax, not precomputed module types or patched loaders.
|
|
656
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose explains type syntax versus execution, with separated tags following the documentation guidance.
|
|
657
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
658
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
659
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
660
|
+
// @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
661
|
type ImportTypeNode = innerast.ImportTypeNode
|
|
76
662
|
|
|
77
663
|
// ---- Binding patterns ----
|
|
78
664
|
|
|
665
|
+
// BindingElement exposes one destructuring binding, including optional source
|
|
666
|
+
// property, rest marker and initializer. Its parent pattern remains compiler-owned.
|
|
667
|
+
//
|
|
668
|
+
// @evidence contracts/common.md#principled-implementation Exact upstream identity retains destructuring operand and parent relationships.
|
|
669
|
+
// @evidence contracts/common.md#clear-and-simple-design One element owns binding syntax without a second flattened local binding map.
|
|
670
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Destructuring is actual AST structure rather than guessed property-name substitution.
|
|
671
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose identifies optional operands and pattern ownership, with separated tags under the documentation guidance.
|
|
672
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
673
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
674
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
675
|
+
// @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
676
|
type BindingElement = innerast.BindingElement
|
|
677
|
+
|
|
678
|
+
// BindingPattern exposes the shared array/object destructuring shape. Inspect
|
|
679
|
+
// the node kind to distinguish those patterns rather than inferring from names.
|
|
680
|
+
//
|
|
681
|
+
// @evidence contracts/common.md#principled-implementation The alias preserves upstream's kind-discriminated pattern and element representation.
|
|
682
|
+
// @evidence contracts/common.md#clear-and-simple-design The compiler shared shape avoids separate local array/object binding containers.
|
|
683
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Pattern form comes from the actual kind rather than fixture-specific naming rules.
|
|
684
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose explains the required array/object kind distinction, following the documentation guidance's paragraph separation.
|
|
685
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
686
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
687
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
688
|
+
// @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
689
|
type BindingPattern = innerast.BindingPattern
|
|
81
690
|
|
|
82
691
|
// ---- Expressions ----
|
|
83
692
|
|
|
693
|
+
// ArrayLiteralExpression exposes ordered array elements, including spread and
|
|
694
|
+
// omitted-element nodes. The alias does not evaluate or copy their values.
|
|
695
|
+
//
|
|
696
|
+
// @evidence contracts/common.md#principled-implementation Exact upstream identity retains element ordering and compiler literal metadata.
|
|
697
|
+
// @evidence contracts/common.md#clear-and-simple-design The canonical element list avoids a duplicate local array-value model.
|
|
698
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Array elements remain syntax rather than precomputed fixture arrays.
|
|
699
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose explains ordering, holes and evaluation boundaries, with separated tags under the documentation guidance.
|
|
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.
|
|
84
704
|
type ArrayLiteralExpression = innerast.ArrayLiteralExpression
|
|
705
|
+
|
|
706
|
+
// ArrowFunction exposes arrow syntax with its parameters and expression or
|
|
707
|
+
// block body. The body form remains explicit in the compiler AST.
|
|
708
|
+
//
|
|
709
|
+
// @evidence contracts/common.md#principled-implementation Aliasing preserves arrow identity and expression/block-body distinctions.
|
|
710
|
+
// @evidence contracts/common.md#clear-and-simple-design The compiler callable node owns body and signature without a local function conversion.
|
|
711
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Arrow bodies are real syntax rather than rewritten known callbacks.
|
|
712
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose names both body forms, with separated tags following the documentation guidance.
|
|
713
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
714
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
715
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
716
|
+
// @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
717
|
type ArrowFunction = innerast.ArrowFunction
|
|
718
|
+
|
|
719
|
+
// AsExpression exposes the operand and type of an `as` assertion. This syntax
|
|
720
|
+
// alias does not cast a Go value or establish TypeScript assignability.
|
|
721
|
+
//
|
|
722
|
+
// @evidence contracts/common.md#principled-implementation Exact upstream identity retains assertion expression/type roles without semantic conversion.
|
|
723
|
+
// @evidence contracts/common.md#clear-and-simple-design The existing assertion node avoids another local cast representation.
|
|
724
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No guessed type result or foreign checker override implements the alias.
|
|
725
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose distinguishes assertion syntax from conversion and checking, following the documentation guidance's paragraph separation.
|
|
726
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
727
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
728
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
729
|
+
// @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
730
|
type AsExpression = innerast.AsExpression
|
|
731
|
+
|
|
732
|
+
// AwaitExpression exposes an awaited operand. Its presence records syntax,
|
|
733
|
+
// not suspension or validation of the enclosing async context.
|
|
734
|
+
//
|
|
735
|
+
// @evidence contracts/common.md#principled-implementation Upstream type identity preserves the await operand and node metadata.
|
|
736
|
+
// @evidence contracts/common.md#clear-and-simple-design Await syntax stays in the compiler expression without another coroutine wrapper.
|
|
737
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts The alias introduces no retry or patched scheduling behavior.
|
|
738
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose identifies the syntax and async-validation boundary, with separated tags under the documentation guidance.
|
|
739
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
740
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
741
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
742
|
+
// @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
743
|
type AwaitExpression = innerast.AwaitExpression
|
|
744
|
+
|
|
745
|
+
// BinaryExpression exposes left/right operands and the operator token. The
|
|
746
|
+
// token determines the operation; the alias does not evaluate either operand.
|
|
747
|
+
//
|
|
748
|
+
// @evidence contracts/common.md#principled-implementation Exact upstream identity retains operand order and operator-token distinctions.
|
|
749
|
+
// @evidence contracts/common.md#clear-and-simple-design One compiler binary node owns syntax without a local operation dispatch table.
|
|
750
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Operators are actual AST tokens rather than fixture-specific computed answers.
|
|
751
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose explains operator ownership and evaluation boundaries, following the documentation guidance's paragraph separation.
|
|
752
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
753
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
754
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
755
|
+
// @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
756
|
type BinaryExpression = innerast.BinaryExpression
|
|
757
|
+
|
|
758
|
+
// ConditionalExpression exposes condition, true operand and false operand.
|
|
759
|
+
// It retains expression identity rather than an if statement or chosen result.
|
|
760
|
+
//
|
|
761
|
+
// @evidence contracts/common.md#principled-implementation The alias preserves upstream ternary operand roles and expression metadata.
|
|
762
|
+
// @evidence contracts/common.md#clear-and-simple-design Three expression roles stay in the compiler node without a parallel local decision structure.
|
|
763
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Conditional results are not substituted for known conditions.
|
|
764
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose identifies expression/statement/result distinctions, with separated tags under the documentation guidance.
|
|
765
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
766
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
767
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
768
|
+
// @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
769
|
type ConditionalExpression = innerast.ConditionalExpression
|
|
770
|
+
|
|
771
|
+
// DeleteExpression exposes deletion syntax and its operand. Aliasing this node
|
|
772
|
+
// does not remove a property or determine whether deletion is permitted.
|
|
773
|
+
//
|
|
774
|
+
// @evidence contracts/common.md#principled-implementation Exact upstream identity retains the delete operand without executing it.
|
|
775
|
+
// @evidence contracts/common.md#clear-and-simple-design The compiler unary node owns syntax without another property-mutation layer.
|
|
776
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No foreign property or deletion method is changed by the alias.
|
|
777
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose states execution and permission boundaries, with separated tags following the documentation guidance.
|
|
778
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
779
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
780
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
781
|
+
// @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
782
|
type DeleteExpression = innerast.DeleteExpression
|
|
783
|
+
|
|
784
|
+
// ElementAccessExpression exposes a receiver and bracketed index expression.
|
|
785
|
+
// Optional-chain state remains the compiler's node data rather than evaluated access.
|
|
786
|
+
//
|
|
787
|
+
// @evidence contracts/common.md#principled-implementation Aliasing preserves receiver/index ordering and upstream optional-access representation.
|
|
788
|
+
// @evidence contracts/common.md#clear-and-simple-design Bracket access remains a dedicated compiler expression without a local lookup wrapper.
|
|
789
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Indices are actual syntax rather than hardcoded property results.
|
|
790
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose identifies bracket operands and optional-chain ownership, following the documentation guidance's paragraph separation.
|
|
791
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
792
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
793
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
794
|
+
// @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
795
|
type ElementAccessExpression = innerast.ElementAccessExpression
|
|
796
|
+
|
|
797
|
+
// FunctionExpression exposes expression-form functions and optional naming.
|
|
798
|
+
// Signature and body nodes remain shared with the compiler, not compiled callables.
|
|
799
|
+
//
|
|
800
|
+
// @evidence contracts/common.md#principled-implementation Exact upstream identity preserves function-expression form and signature/body state.
|
|
801
|
+
// @evidence contracts/common.md#clear-and-simple-design The canonical compiler callable avoids a second local function container.
|
|
802
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No expected callback implementation substitutes for the compiler expression.
|
|
803
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose explains expression form and compiler ownership, with separated tags under the documentation guidance.
|
|
804
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
805
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
806
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
807
|
+
// @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
808
|
type FunctionExpression = innerast.FunctionExpression
|
|
809
|
+
|
|
810
|
+
// NewExpression exposes a constructor operand, generic arguments and optional
|
|
811
|
+
// argument list. An absent argument list retains the form without parentheses.
|
|
812
|
+
//
|
|
813
|
+
// @evidence contracts/common.md#principled-implementation Upstream identity preserves constructor and argument-list distinctions without instantiating a value.
|
|
814
|
+
// @evidence contracts/common.md#clear-and-simple-design The compiler new-expression type owns constructor syntax without a local object factory.
|
|
815
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Constructor operands remain syntax rather than known-class object substitutes.
|
|
816
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose clarifies argument-list absence, with separated tags following the documentation guidance.
|
|
817
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
818
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
819
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
820
|
+
// @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
821
|
type NewExpression = innerast.NewExpression
|
|
822
|
+
|
|
823
|
+
// NonNullExpression exposes the postfix non-null assertion operand. The alias
|
|
824
|
+
// records annotation syntax without establishing that a runtime value is non-null.
|
|
825
|
+
//
|
|
826
|
+
// @evidence contracts/common.md#principled-implementation Exact upstream identity retains the assertion wrapper and operand.
|
|
827
|
+
// @evidence contracts/common.md#clear-and-simple-design The dedicated compiler assertion avoids another local nullability flag.
|
|
828
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No guessed successful null check replaces the actual operand.
|
|
829
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose separates syntax from runtime null guarantees, following the documentation guidance's paragraph separation.
|
|
830
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
831
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
832
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
833
|
+
// @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
834
|
type NonNullExpression = innerast.NonNullExpression
|
|
835
|
+
|
|
836
|
+
// ObjectLiteralExpression exposes ordered property/method members. The alias
|
|
837
|
+
// shares syntax nodes and does not materialize a runtime object or property map.
|
|
838
|
+
//
|
|
839
|
+
// @evidence contracts/common.md#principled-implementation Aliasing preserves the upstream member sequence and object-literal identity.
|
|
840
|
+
// @evidence contracts/common.md#clear-and-simple-design The canonical syntax collection avoids a duplicate local object representation.
|
|
841
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Members remain real AST inputs rather than known-fixture object shapes.
|
|
842
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose explains ordering and runtime boundaries, with separated tags under the documentation guidance.
|
|
843
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
844
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
845
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
846
|
+
// @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
847
|
type ObjectLiteralExpression = innerast.ObjectLiteralExpression
|
|
848
|
+
|
|
849
|
+
// ParenthesizedExpression exposes an explicit grouping wrapper. Keeping the
|
|
850
|
+
// wrapper preserves syntax even when its child could be printed without it.
|
|
851
|
+
//
|
|
852
|
+
// @evidence contracts/common.md#principled-implementation Exact upstream identity preserves explicit parenthesis nodes and their child.
|
|
853
|
+
// @evidence contracts/common.md#clear-and-simple-design Grouping stays in the compiler wrapper without a duplicate precedence model.
|
|
854
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Parentheses are actual syntax rather than fixture-specific formatting compensation.
|
|
855
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose explains why explicit grouping remains represented, following the documentation guidance's paragraph separation.
|
|
856
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
857
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
858
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
859
|
+
// @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
860
|
type ParenthesizedExpression = innerast.ParenthesizedExpression
|
|
861
|
+
|
|
862
|
+
// PostfixUnaryExpression exposes a postfix increment/decrement operand and
|
|
863
|
+
// operator. It remains distinct from prefix syntax and does not mutate a value.
|
|
864
|
+
//
|
|
865
|
+
// @evidence contracts/common.md#principled-implementation Upstream identity retains postfix operator and operand roles.
|
|
866
|
+
// @evidence contracts/common.md#clear-and-simple-design The compiler postfix form avoids a local placement switch or mutation adapter.
|
|
867
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Operators are syntax tokens rather than injected known-value updates.
|
|
868
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose distinguishes postfix form from execution, with separated tags under the documentation guidance.
|
|
869
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
870
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
871
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
872
|
+
// @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
873
|
type PostfixUnaryExpression = innerast.PostfixUnaryExpression
|
|
874
|
+
|
|
875
|
+
// PropertyAccessExpression exposes a receiver and dotted member name. Optional
|
|
876
|
+
// chaining remains upstream syntax state, without resolving the member's value.
|
|
877
|
+
//
|
|
878
|
+
// @evidence contracts/common.md#principled-implementation The alias preserves receiver/name identity and optional-chain representation.
|
|
879
|
+
// @evidence contracts/common.md#clear-and-simple-design The compiler access node owns member syntax without another local property lookup.
|
|
880
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Member names are real operands rather than hardcoded foreign property values.
|
|
881
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose states dotted access and unresolved-value meaning, following the documentation guidance's paragraph separation.
|
|
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.
|
|
98
886
|
type PropertyAccessExpression = innerast.PropertyAccessExpression
|
|
887
|
+
|
|
888
|
+
// PropertyAssignment exposes a named object-literal member and initializer.
|
|
889
|
+
// It is distinct from a class property declaration and a shorthand member.
|
|
890
|
+
//
|
|
891
|
+
// @evidence contracts/common.md#principled-implementation Exact upstream identity preserves object-member name and initializer roles.
|
|
892
|
+
// @evidence contracts/common.md#clear-and-simple-design The compiler assignment form avoids a duplicate generic property container.
|
|
893
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Object members remain actual syntax rather than known-shape substitutions.
|
|
894
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose identifies declaration and shorthand distinctions, with separated tags under the documentation guidance.
|
|
895
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
896
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
897
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
898
|
+
// @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
899
|
type PropertyAssignment = innerast.PropertyAssignment
|
|
900
|
+
|
|
901
|
+
// ShorthandPropertyAssignment exposes a binding-name shorthand in an object
|
|
902
|
+
// literal and its optional assignment initializer. The value is not resolved here.
|
|
903
|
+
//
|
|
904
|
+
// @evidence contracts/common.md#principled-implementation Aliasing preserves shorthand identity and optional initializer data without inventing a separate key/value pair.
|
|
905
|
+
// @evidence contracts/common.md#clear-and-simple-design The dedicated compiler shorthand type avoids flattening syntax into another member model.
|
|
906
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Binding values are not guessed from known variable names.
|
|
907
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose states shorthand and initializer roles, following the documentation guidance's paragraph separation.
|
|
908
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
909
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
910
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
911
|
+
// @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
912
|
type ShorthandPropertyAssignment = innerast.ShorthandPropertyAssignment
|
|
913
|
+
|
|
914
|
+
// SpreadAssignment exposes an object-literal spread operand. It is distinct
|
|
915
|
+
// from SpreadElement used in array or argument positions.
|
|
916
|
+
//
|
|
917
|
+
// @evidence contracts/common.md#principled-implementation Exact upstream identity preserves object-spread node kind and operand.
|
|
918
|
+
// @evidence contracts/common.md#clear-and-simple-design Object-member context stays in the compiler type without another spread-context option.
|
|
919
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No known-object property expansion replaces the supplied syntax.
|
|
920
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose explains the SpreadElement context distinction, with separated tags under the documentation guidance.
|
|
921
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
922
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
923
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
924
|
+
// @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.
|
|
101
925
|
type SpreadAssignment = innerast.SpreadAssignment
|
|
926
|
+
|
|
927
|
+
// SpreadElement exposes a spread operand in arrays or argument lists. The alias
|
|
928
|
+
// does not expand an iterable or infer its resulting elements.
|
|
929
|
+
//
|
|
930
|
+
// @evidence contracts/common.md#principled-implementation Upstream identity retains spread-element syntax and its operand.
|
|
931
|
+
// @evidence contracts/common.md#clear-and-simple-design The canonical element wrapper avoids a local iterable-expansion layer.
|
|
932
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Spread results are not precomputed for known iterable fixtures.
|
|
933
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose names element contexts and the evaluation boundary, following the documentation guidance's paragraph separation.
|
|
934
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
935
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
936
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
937
|
+
// @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.
|
|
102
938
|
type SpreadElement = innerast.SpreadElement
|
|
939
|
+
|
|
940
|
+
// TaggedTemplateExpression exposes a tag expression and its template operand.
|
|
941
|
+
// The alias does not invoke the tag or evaluate template substitutions.
|
|
942
|
+
//
|
|
943
|
+
// @evidence contracts/common.md#principled-implementation Exact upstream identity preserves tag/template operand relationships.
|
|
944
|
+
// @evidence contracts/common.md#clear-and-simple-design The compiler template-call form avoids another local interpolation adapter.
|
|
945
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No known-tag result or patched template function replaces the AST.
|
|
946
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose states tag ownership and evaluation boundaries, with separated tags under the documentation guidance.
|
|
947
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
948
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
949
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
950
|
+
// @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.
|
|
103
951
|
type TaggedTemplateExpression = innerast.TaggedTemplateExpression
|
|
952
|
+
|
|
953
|
+
// TemplateExpression exposes a template head and ordered substitution spans.
|
|
954
|
+
// Literal text and expressions remain separate compiler nodes without interpolation.
|
|
955
|
+
//
|
|
956
|
+
// @evidence contracts/common.md#principled-implementation Aliasing preserves upstream head/span ordering and syntax distinctions.
|
|
957
|
+
// @evidence contracts/common.md#clear-and-simple-design The compiler sequence owns template structure rather than a duplicate flattened string.
|
|
958
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Interpolated values are not replaced by fixture-specific completed text.
|
|
959
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose explains separated literals and substitutions, following the documentation guidance's paragraph separation.
|
|
960
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
961
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
962
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
963
|
+
// @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.
|
|
104
964
|
type TemplateExpression = innerast.TemplateExpression
|
|
965
|
+
|
|
966
|
+
// TemplateSpan exposes a substitution expression and the literal segment that
|
|
967
|
+
// follows it. Spans preserve ordering through their containing template.
|
|
968
|
+
//
|
|
969
|
+
// @evidence contracts/common.md#principled-implementation Exact upstream identity retains expression/following-literal pair semantics.
|
|
970
|
+
// @evidence contracts/common.md#clear-and-simple-design One compiler span owns the pair without another interpolation-state object.
|
|
971
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Literal segments remain actual syntax rather than guessed rendered substitutions.
|
|
972
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose explains which literal follows each expression, with separated tags under the documentation guidance.
|
|
973
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
974
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
975
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
976
|
+
// @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.
|
|
105
977
|
type TemplateSpan = innerast.TemplateSpan
|
|
978
|
+
|
|
979
|
+
// TypeAssertion exposes angle-bracket assertion syntax and its type/operand.
|
|
980
|
+
// It remains distinct from AsExpression and does not convert a runtime value.
|
|
981
|
+
//
|
|
982
|
+
// @evidence contracts/common.md#principled-implementation Upstream identity retains assertion form and type/expression roles.
|
|
983
|
+
// @evidence contracts/common.md#clear-and-simple-design The dedicated compiler form avoids another local cast representation.
|
|
984
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No guessed cast result or foreign checker patch supplies assertion semantics.
|
|
985
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose identifies form and runtime-conversion boundaries, following the documentation guidance's paragraph separation.
|
|
986
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
987
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
988
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
989
|
+
// @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.
|
|
106
990
|
type TypeAssertion = innerast.TypeAssertion
|
|
991
|
+
|
|
992
|
+
// TypeOperatorNode exposes a type operator and its operand. Inspect the operator
|
|
993
|
+
// token to distinguish forms such as keyof, readonly and unique.
|
|
994
|
+
//
|
|
995
|
+
// @evidence contracts/common.md#principled-implementation Exact upstream identity preserves operator-token and type-operand distinctions.
|
|
996
|
+
// @evidence contracts/common.md#clear-and-simple-design The shared compiler type operator avoids parallel local per-operator schemas.
|
|
997
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Operator meaning comes from actual tokens rather than name-based type guesses.
|
|
998
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose names token-dependent distinctions, with separated tags under the documentation guidance.
|
|
999
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
1000
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
1001
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
1002
|
+
// @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.
|
|
107
1003
|
type TypeOperatorNode = innerast.TypeOperatorNode
|
|
1004
|
+
|
|
1005
|
+
// TypeOfExpression exposes the runtime typeof operator's operand. It is distinct
|
|
1006
|
+
// from a type-position query and does not evaluate the operand in the shim.
|
|
1007
|
+
//
|
|
1008
|
+
// @evidence contracts/common.md#principled-implementation Aliasing preserves runtime-expression identity rather than conflating it with TypeQuery syntax.
|
|
1009
|
+
// @evidence contracts/common.md#clear-and-simple-design The compiler unary node owns runtime syntax without another local type-inference layer.
|
|
1010
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No expected typeof result substitutes for the compiler operand.
|
|
1011
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose explains runtime/type-query distinctions, following the documentation guidance's paragraph separation.
|
|
1012
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
1013
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
1014
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
1015
|
+
// @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.
|
|
108
1016
|
type TypeOfExpression = innerast.TypeOfExpression
|
|
1017
|
+
|
|
1018
|
+
// VoidExpression exposes the void operator and its operand. The alias records
|
|
1019
|
+
// syntax without evaluating side effects or returning a JavaScript value.
|
|
1020
|
+
//
|
|
1021
|
+
// @evidence contracts/common.md#principled-implementation Exact upstream identity preserves the void expression and operand metadata.
|
|
1022
|
+
// @evidence contracts/common.md#clear-and-simple-design The compiler unary type avoids another local discard-operation abstraction.
|
|
1023
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No fabricated undefined value replaces the actual syntax operand.
|
|
1024
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose states evaluation and value boundaries, with separated tags under the documentation guidance.
|
|
1025
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
1026
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
1027
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
1028
|
+
// @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.
|
|
109
1029
|
type VoidExpression = innerast.VoidExpression
|
|
1030
|
+
|
|
1031
|
+
// YieldExpression exposes an optional yielded operand and delegation marker.
|
|
1032
|
+
// Bare yield and yield-star remain distinct compiler syntax states.
|
|
1033
|
+
//
|
|
1034
|
+
// @evidence contracts/common.md#principled-implementation Upstream identity retains optional operand and delegation distinctions without running a generator.
|
|
1035
|
+
// @evidence contracts/common.md#clear-and-simple-design The canonical yield node owns both forms without another local generator protocol.
|
|
1036
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Generator results are not substituted for known yielded fixtures.
|
|
1037
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose identifies bare and delegated yield forms, following the documentation guidance's paragraph separation.
|
|
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.
|
|
110
1042
|
type YieldExpression = innerast.YieldExpression
|
|
1043
|
+
|
|
1044
|
+
// RegularExpressionLiteral exposes regexp literal syntax as held by the
|
|
1045
|
+
// compiler. The alias does not compile a Go regexp or match input text.
|
|
1046
|
+
//
|
|
1047
|
+
// @evidence contracts/common.md#principled-implementation Exact upstream identity preserves regexp-literal text and node metadata.
|
|
1048
|
+
// @evidence contracts/common.md#clear-and-simple-design Literal storage stays compiler-owned instead of another local regexp engine.
|
|
1049
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No known-input match result or foreign regexp override supplies this syntax type.
|
|
1050
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose distinguishes syntax exposure from regexp compilation, with separated tags under the documentation guidance.
|
|
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.
|
|
111
1055
|
type RegularExpressionLiteral = innerast.RegularExpressionLiteral
|
|
1056
|
+
|
|
1057
|
+
// SatisfiesExpression exposes an expression and its satisfaction target type.
|
|
1058
|
+
// This syntax alias does not perform the check or coerce the expression's value.
|
|
1059
|
+
//
|
|
1060
|
+
// @evidence contracts/common.md#principled-implementation Aliasing preserves upstream expression/type roles and satisfies-node identity.
|
|
1061
|
+
// @evidence contracts/common.md#clear-and-simple-design The compiler expression owns the annotation boundary without a duplicate assignability result.
|
|
1062
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No fabricated successful check replaces the actual expression and target nodes.
|
|
1063
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose states checking and coercion boundaries, following the documentation guidance's paragraph separation.
|
|
1064
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
1065
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
1066
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
1067
|
+
// @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.
|
|
112
1068
|
type SatisfiesExpression = innerast.SatisfiesExpression
|
|
113
1069
|
|
|
114
1070
|
// ---- Comment directives (banTsComment) ----
|
|
115
1071
|
|
|
1072
|
+
// CommentDirective records a compiler-recognized suppression comment's source
|
|
1073
|
+
// range and directive kind. It describes the comment, not whether suppression
|
|
1074
|
+
// succeeds for a diagnostic.
|
|
1075
|
+
//
|
|
1076
|
+
// @evidence contracts/common.md#principled-implementation The exact upstream alias preserves the source range and directive discriminant used by compiler diagnostics.
|
|
1077
|
+
// @evidence contracts/common.md#clear-and-simple-design One compiler record associates directive classification with its location without a second suppression model.
|
|
1078
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Directive metadata is exposed unchanged rather than translated into rule-specific expected diagnostics.
|
|
1079
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose distinguishes recognized metadata from successful suppression, with acknowledgment tags separated as the documentation skill requires.
|
|
1080
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
1081
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
1082
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
1083
|
+
// @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.
|
|
116
1084
|
type CommentDirective = innerast.CommentDirective
|
|
1085
|
+
|
|
1086
|
+
// CommentDirectiveKind identifies the compiler's suppression directive
|
|
1087
|
+
// category. Re-exported constants retain upstream values; consumers must not
|
|
1088
|
+
// infer them from directive spelling or declaration order.
|
|
1089
|
+
//
|
|
1090
|
+
// @evidence contracts/common.md#principled-implementation Upstream enum identity preserves the discriminator carried by CommentDirective records.
|
|
1091
|
+
// @evidence contracts/common.md#clear-and-simple-design The compiler category is shared directly instead of maintained as a separate shim enum.
|
|
1092
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Directive constants derive from the pinned compiler rather than guessed numeric encodings.
|
|
1093
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose explains the category's association and constant provenance; a blank comment line separates the tags under the documentation guidance.
|
|
1094
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
1095
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
1096
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
1097
|
+
// @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.
|
|
117
1098
|
type CommentDirectiveKind = innerast.CommentDirectiveKind
|
|
118
1099
|
|
|
119
|
-
// ---- Source file parse options
|
|
1100
|
+
// ---- Source file parse options ----
|
|
120
1101
|
|
|
1102
|
+
// SourceFileParseOptions supplies file identity and external-module detection
|
|
1103
|
+
// options to compiler parsing. FileName and Path retain their upstream roles;
|
|
1104
|
+
// this alias does not normalize or reconcile caller-provided paths.
|
|
1105
|
+
//
|
|
1106
|
+
// @evidence contracts/common.md#principled-implementation Exact compiler identity retains both filename and canonical path fields alongside module-detection options.
|
|
1107
|
+
// @evidence contracts/common.md#clear-and-simple-design Parsing configuration stays in the compiler's single options record without a shim-specific conversion layer.
|
|
1108
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts The alias adds no platform-specific path rewrite or filename-based fixture exception.
|
|
1109
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose describes configuration purpose and the path-normalization boundary, with the documentation skill's separated acknowledgment block.
|
|
1110
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
1111
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
1112
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
1113
|
+
// @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.
|
|
121
1114
|
type SourceFileParseOptions = innerast.SourceFileParseOptions
|
|
1115
|
+
|
|
1116
|
+
// ExternalModuleIndicatorOptions configures additional external-module
|
|
1117
|
+
// detection for source files. JSX enables JSX-based detection and Force marks
|
|
1118
|
+
// eligible non-declaration source files as modules; explicit module syntax is
|
|
1119
|
+
// still recognized by the compiler independently of these options.
|
|
1120
|
+
//
|
|
1121
|
+
// @evidence contracts/common.md#principled-implementation The upstream options distinguish JSX-based detection from forced module treatment while preserving compiler eligibility rules.
|
|
1122
|
+
// @evidence contracts/common.md#clear-and-simple-design Two independent detection choices remain the compiler's two fields rather than a shim policy engine.
|
|
1123
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Module detection is configured through upstream options without replacing foreign classification or singling out consumers.
|
|
1124
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose explains each option and declaration-file eligibility, followed by a separate tag block using the documentation guidance.
|
|
1125
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
1126
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
1127
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
1128
|
+
// @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.
|
|
122
1129
|
type ExternalModuleIndicatorOptions = innerast.ExternalModuleIndicatorOptions
|
|
123
1130
|
|
|
124
1131
|
// ---- Node-flag constants ----
|
|
@@ -314,31 +1321,92 @@ const (
|
|
|
314
1321
|
|
|
315
1322
|
// ---- Helpers ----
|
|
316
1323
|
|
|
317
|
-
// GetCombinedNodeFlags
|
|
318
|
-
//
|
|
319
|
-
//
|
|
320
|
-
//
|
|
1324
|
+
// GetCombinedNodeFlags gathers declaration flags using the compiler's root
|
|
1325
|
+
// declaration and parent-list traversal. Pass a non-nil declaration from a
|
|
1326
|
+
// parent-linked compiler tree so enclosing variable flags can be included.
|
|
1327
|
+
//
|
|
1328
|
+
// @evidence contracts/common.md#principled-implementation Delegation preserves upstream root-declaration traversal and flag combination instead of classifying a variable by its own flags alone.
|
|
1329
|
+
// @evidence contracts/common.md#clear-and-simple-design One forwarding call exposes the compiler's combined flags without duplicating declaration traversal in lint consumers.
|
|
1330
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts The helper uses the pinned compiler implementation without synthetic parent repair or consumer-specific flag overrides.
|
|
1331
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose states non-nil input and parent-link requirements; the tag block follows a blank comment line under the documentation guidance.
|
|
1332
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources GetCombinedNodeFlags acquires no handle, buffer or cache and retains nothing after it returns.
|
|
1333
|
+
// @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 flag values; the call costs O(H) and creates no traversal collection.
|
|
1334
|
+
// @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.
|
|
1335
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation GetCombinedNodeFlags computes from its arguments only; it opens no file, builds no path and calls no platform or process API.
|
|
321
1336
|
func GetCombinedNodeFlags(node *Node) NodeFlags {
|
|
322
1337
|
return innerast.GetCombinedNodeFlags(node)
|
|
323
1338
|
}
|
|
324
1339
|
|
|
325
|
-
// IsConstAssertion
|
|
326
|
-
//
|
|
327
|
-
//
|
|
1340
|
+
// IsConstAssertion recognizes an `as const` or `<const>` assertion by its
|
|
1341
|
+
// syntax. Pass a nonnil node with valid compiler kind/payload data, including a
|
|
1342
|
+
// type for assertion nodes. Recognition does not validate whether the asserted
|
|
1343
|
+
// expression is permitted in a const assertion.
|
|
1344
|
+
//
|
|
1345
|
+
// @evidence contracts/common.md#principled-implementation Upstream classification requires an assertion expression whose type is a const reference without type arguments, preserving syntactic recognition rather than asserting semantic validity.
|
|
1346
|
+
// @evidence contracts/common.md#clear-and-simple-design A single forwarding predicate keeps const-assertion syntax classification with the compiler that owns it.
|
|
1347
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Compiler node classification replaces textual matching and supplies no fixture-specific or semantic-validation bypass.
|
|
1348
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose states syntax-only recognition and the non-nil input condition, with prose and tags separated following the documentation skill.
|
|
1349
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources IsConstAssertion acquires no handle, buffer or cache and retains nothing after it returns.
|
|
1350
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms The shim chooses no independent assertion classifier. Upstream checks fixed kinds, type-argument count and an identifier against the fixed four-byte text const, costing O(1) time and space without traversing the asserted expression.
|
|
1351
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work This syntax forwarding predicate owns no cache or in-flight coordination; compiler-tree owners establish whether the inspected payload remains valid.
|
|
1352
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation IsConstAssertion computes from its arguments only; it opens no file, builds no path and calls no platform or process API.
|
|
328
1353
|
func IsConstAssertion(node *Node) bool { return innerast.IsConstAssertion(node) }
|
|
329
1354
|
|
|
330
|
-
// IsPartOfTypeNode
|
|
331
|
-
//
|
|
332
|
-
//
|
|
1355
|
+
// IsPartOfTypeNode applies the compiler's context-sensitive type-node
|
|
1356
|
+
// classifier. Pass a non-nil node with compiler parent links. Type-query
|
|
1357
|
+
// operands and class extends expressions are distinguished from ordinary
|
|
1358
|
+
// type positions; this is not a recursive test for any type-related ancestor.
|
|
1359
|
+
//
|
|
1360
|
+
// @evidence contracts/common.md#principled-implementation Upstream kind and parent-position checks preserve distinctions between type positions, type-query operands and value-bearing class heritage expressions.
|
|
1361
|
+
// @evidence contracts/common.md#clear-and-simple-design A forwarding predicate centralizes context classification without a separate recursive shim ancestry rule.
|
|
1362
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts The wrapper retains compiler position semantics rather than broadening recognition to silence rule reports.
|
|
1363
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose identifies parent-link requirements and important classification boundaries, using a separated tag block as the documentation skill requires.
|
|
1364
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources IsPartOfTypeNode acquires no handle, buffer or cache and retains nothing after it returns.
|
|
1365
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms The shim chooses no independent type-context classifier. Upstream uses fixed nearby kind/payload checks, except call/new/tagged-template parents can scan A type arguments for pointer membership in O(A) time and O(1) temporary space; no recursive ancestor search is performed.
|
|
1366
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work This forwarding predicate owns no cache or in-flight coordination; compiler-tree owners establish validity of parent positions and type-argument membership.
|
|
1367
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation IsPartOfTypeNode computes from its arguments only; it opens no file, builds no path and calls no platform or process API.
|
|
333
1368
|
func IsPartOfTypeNode(node *Node) bool { return innerast.IsPartOfTypeNode(node) }
|
|
334
1369
|
|
|
335
|
-
// IsLet reports whether
|
|
1370
|
+
// IsLet reports whether a declaration's combined flags contain the let bit.
|
|
1371
|
+
// Pass a non-nil declaration from a parent-linked compiler tree. A plain
|
|
1372
|
+
// using declaration carries a different bit and does not satisfy this test.
|
|
1373
|
+
//
|
|
1374
|
+
// @evidence contracts/common.md#principled-implementation Testing the compiler's Let bit after combined declaration traversal recognizes let declarations without equating resource declarations with let.
|
|
1375
|
+
// @evidence contracts/common.md#clear-and-simple-design The helper expresses one declaration-keyword predicate through the shared flag combiner and one mask.
|
|
1376
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts The mask is the upstream Let constant, with no name-based declaration exception or compensating flag mutation.
|
|
1377
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose states input provenance and the using distinction, followed by separated tags under the documentation guidance.
|
|
1378
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources IsLet acquires no handle, buffer or cache and retains nothing after it returns.
|
|
1379
|
+
// @evidence contracts/performance.md#efficient-algorithms One Let-bit test follows the shared combined-flags helper. Its upstream root search follows H binding parents and then reads at most three declaration/list/statement flag values, costing O(H) time and O(1) temporary space without collecting ancestors.
|
|
1380
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work This mask query owns no completed-result cache or in-flight coordination; compiler-tree owners determine whether declaration flags and parent links remain valid across calls.
|
|
1381
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation IsLet computes from its arguments only; it opens no file, builds no path and calls no platform or process API.
|
|
336
1382
|
func IsLet(node *Node) bool { return GetCombinedNodeFlags(node)&NodeFlagsLet != 0 }
|
|
337
1383
|
|
|
338
|
-
// IsConst reports whether
|
|
339
|
-
//
|
|
1384
|
+
// IsConst reports whether a declaration's combined flags contain the const
|
|
1385
|
+
// bit. Pass a non-nil declaration from a parent-linked compiler tree. The
|
|
1386
|
+
// pinned compiler also sets this bit for await using, but not plain using;
|
|
1387
|
+
// this predicate therefore does not mean every immutable declaration.
|
|
1388
|
+
//
|
|
1389
|
+
// @evidence contracts/common.md#principled-implementation The combined-flags Const mask preserves the pinned compiler encoding, including await using while excluding plain using.
|
|
1390
|
+
// @evidence contracts/common.md#clear-and-simple-design One mask answers the existing const-bit question without introducing a competing resource-declaration classifier.
|
|
1391
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts The helper reads the upstream Const bit without widening its result through consumer-specific exceptions or altered foreign flags.
|
|
1392
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose makes the const-bit versus immutable-declaration distinction explicit and states tree requirements, with a separate tag block following documentation guidance.
|
|
1393
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources IsConst acquires no handle, buffer or cache and retains nothing after it returns.
|
|
1394
|
+
// @evidence contracts/performance.md#efficient-algorithms One Const-bit test follows the shared combined-flags helper. Its upstream root search follows H binding parents and then reads at most three declaration/list/statement flag values, costing O(H) time and O(1) temporary space without collecting ancestors.
|
|
1395
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work This mask query owns no completed-result cache or in-flight coordination; compiler-tree owners determine whether declaration flags and parent links remain valid across calls.
|
|
1396
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation IsConst computes from its arguments only; it opens no file, builds no path and calls no platform or process API.
|
|
340
1397
|
func IsConst(node *Node) bool { return GetCombinedNodeFlags(node)&NodeFlagsConst != 0 }
|
|
341
1398
|
|
|
342
|
-
// IsVar
|
|
343
|
-
//
|
|
1399
|
+
// IsVar recognizes a var declaration by absence of combined block-scoped
|
|
1400
|
+
// bits, including let, const and using bits. Pass a non-nil variable
|
|
1401
|
+
// declaration from a parent-linked compiler tree; an arbitrary unflagged
|
|
1402
|
+
// syntax node is not a valid declaration input to this predicate.
|
|
1403
|
+
//
|
|
1404
|
+
// @evidence contracts/common.md#principled-implementation For variable declarations, the upstream BlockScoped mask distinguishes var from all compiler block-scoped declaration encodings after parent flags are combined.
|
|
1405
|
+
// @evidence contracts/common.md#clear-and-simple-design A single complement-mask test shares parent traversal with the other declaration predicates.
|
|
1406
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts The compiler BlockScoped mask covers resource declarations without invented keyword strings or fixture-specific fallback classification.
|
|
1407
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose states the variable-declaration precondition and why unrelated unflagged nodes are unsuitable, followed by tags separated under the documentation skill.
|
|
1408
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources IsVar acquires no handle, buffer or cache and retains nothing after it returns.
|
|
1409
|
+
// @evidence contracts/performance.md#efficient-algorithms One BlockScoped-mask test follows the shared combined-flags helper. Its upstream root search follows H binding parents and then reads at most three declaration/list/statement flag values, costing O(H) time and O(1) temporary space without collecting ancestors.
|
|
1410
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work This mask query owns no completed-result cache or in-flight coordination; compiler-tree owners establish whether variable flags and parent links remain valid across calls.
|
|
1411
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation IsVar computes from its arguments only; it opens no file, builds no path and calls no platform or process API.
|
|
344
1412
|
func IsVar(node *Node) bool { return GetCombinedNodeFlags(node)&NodeFlagsBlockScoped == 0 }
|