@velarscript/compiler 0.12.1 → 0.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/advisory-suppression.d.ts +62 -0
- package/dist/advisory-suppression.d.ts.map +1 -0
- package/dist/advisory-suppression.js +179 -0
- package/dist/advisory-suppression.js.map +1 -0
- package/dist/analyzer.d.ts +405 -17
- package/dist/analyzer.d.ts.map +1 -1
- package/dist/analyzer.js +1755 -211
- package/dist/analyzer.js.map +1 -1
- package/dist/ast.d.ts +6 -3
- package/dist/ast.d.ts.map +1 -1
- package/dist/ast.js.map +1 -1
- package/dist/binding-stability.d.ts +22 -0
- package/dist/binding-stability.d.ts.map +1 -0
- package/dist/binding-stability.js +63 -0
- package/dist/binding-stability.js.map +1 -0
- package/dist/collection-lowering-runtime.d.ts +1 -1
- package/dist/collection-lowering-runtime.d.ts.map +1 -1
- package/dist/collection-lowering-runtime.js +183 -56
- package/dist/collection-lowering-runtime.js.map +1 -1
- package/dist/diagnostic.d.ts +34 -0
- package/dist/diagnostic.d.ts.map +1 -1
- package/dist/diagnostic.js +11 -1
- package/dist/diagnostic.js.map +1 -1
- package/dist/embedded-javascript.d.ts +12 -1
- package/dist/embedded-javascript.d.ts.map +1 -1
- package/dist/embedded-javascript.js +111 -2
- package/dist/embedded-javascript.js.map +1 -1
- package/dist/embedded-module.d.ts.map +1 -1
- package/dist/embedded-module.js +22 -0
- package/dist/embedded-module.js.map +1 -1
- package/dist/emitter.d.ts +83 -1
- package/dist/emitter.d.ts.map +1 -1
- package/dist/emitter.js +518 -41
- package/dist/emitter.js.map +1 -1
- package/dist/error-runtime.d.ts +9 -0
- package/dist/error-runtime.d.ts.map +1 -1
- package/dist/error-runtime.js +21 -0
- package/dist/error-runtime.js.map +1 -1
- package/dist/extension.d.ts +5 -2
- package/dist/extension.d.ts.map +1 -1
- package/dist/extension.js +2 -1
- package/dist/extension.js.map +1 -1
- package/dist/formatter.d.ts.map +1 -1
- package/dist/formatter.js +222 -91
- package/dist/formatter.js.map +1 -1
- package/dist/index.d.ts +10 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +43 -5
- package/dist/index.js.map +1 -1
- package/dist/interpolated-string.d.ts.map +1 -1
- package/dist/interpolated-string.js +29 -2
- package/dist/interpolated-string.js.map +1 -1
- package/dist/json-runtime.d.ts.map +1 -1
- package/dist/json-runtime.js +27 -3
- package/dist/json-runtime.js.map +1 -1
- package/dist/lexer.d.ts +217 -1
- package/dist/lexer.d.ts.map +1 -1
- package/dist/lexer.js +799 -37
- package/dist/lexer.js.map +1 -1
- package/dist/limits.d.ts +9 -0
- package/dist/limits.d.ts.map +1 -1
- package/dist/limits.js +9 -0
- package/dist/limits.js.map +1 -1
- package/dist/mechanical-fix.d.ts.map +1 -1
- package/dist/mechanical-fix.js +38 -0
- package/dist/mechanical-fix.js.map +1 -1
- package/dist/parser.d.ts +30 -1
- package/dist/parser.d.ts.map +1 -1
- package/dist/parser.js +137 -21
- package/dist/parser.js.map +1 -1
- package/dist/promise-runtime.d.ts +20 -1
- package/dist/promise-runtime.d.ts.map +1 -1
- package/dist/promise-runtime.js +38 -3
- package/dist/promise-runtime.js.map +1 -1
- package/dist/reactive-bridge-runtime.d.ts.map +1 -1
- package/dist/reactive-bridge-runtime.js +7 -1
- package/dist/reactive-bridge-runtime.js.map +1 -1
- package/dist/runtime-abi.d.ts +21 -1
- package/dist/runtime-abi.d.ts.map +1 -1
- package/dist/runtime-abi.js +23 -3
- package/dist/runtime-abi.js.map +1 -1
- package/dist/source-names.d.ts +26 -0
- package/dist/source-names.d.ts.map +1 -1
- package/dist/source-names.js +49 -5
- package/dist/source-names.js.map +1 -1
- package/dist/source.d.ts.map +1 -1
- package/dist/source.js +13 -0
- package/dist/source.js.map +1 -1
- package/dist/stable-order.d.ts +16 -0
- package/dist/stable-order.d.ts.map +1 -0
- package/dist/stable-order.js +18 -0
- package/dist/stable-order.js.map +1 -0
- package/dist/text-runtime.d.ts.map +1 -1
- package/dist/text-runtime.js +182 -41
- package/dist/text-runtime.js.map +1 -1
- package/dist/token.d.ts +11 -0
- package/dist/token.d.ts.map +1 -1
- package/dist/token.js.map +1 -1
- package/dist/type-registry-runtime.d.ts.map +1 -1
- package/dist/type-registry-runtime.js +8 -1
- package/dist/type-registry-runtime.js.map +1 -1
- package/dist/type-validation-runtime.d.ts.map +1 -1
- package/dist/type-validation-runtime.js +129 -1
- package/dist/type-validation-runtime.js.map +1 -1
- package/dist/types.d.ts +17 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +161 -17
- package/dist/types.js.map +1 -1
- package/package.json +1 -1
package/dist/lexer.d.ts
CHANGED
|
@@ -1,9 +1,14 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type AdvisorySuppression } from "./advisory-suppression.ts";
|
|
2
|
+
import { type Advisory, type Diagnostic } from "./diagnostic.ts";
|
|
2
3
|
import type { CompilerLexicalExtension } from "./extension.ts";
|
|
3
4
|
import { type Token } from "./token.ts";
|
|
4
5
|
export interface LexResult {
|
|
5
6
|
readonly tokens: readonly Token[];
|
|
6
7
|
readonly diagnostics: readonly Diagnostic[];
|
|
8
|
+
/** D89: the advisory channel, accumulated beside the diagnostics and never merged into them. */
|
|
9
|
+
readonly advisories: readonly Advisory[];
|
|
10
|
+
/** D89: the reasoned `velar-allow` suppressions this module's line comments carry. */
|
|
11
|
+
readonly suppressions: readonly AdvisorySuppression[];
|
|
7
12
|
}
|
|
8
13
|
export declare class Lexer {
|
|
9
14
|
private readonly text;
|
|
@@ -12,11 +17,22 @@ export declare class Lexer {
|
|
|
12
17
|
private readonly numericSuffixes;
|
|
13
18
|
private readonly tokens;
|
|
14
19
|
private readonly diagnostics;
|
|
20
|
+
private readonly advisories;
|
|
21
|
+
private readonly suppressions;
|
|
15
22
|
private readonly diagnosedBidirectionalOffsets;
|
|
16
23
|
private readonly indentStack;
|
|
24
|
+
private readonly classBodyStack;
|
|
25
|
+
private readonly openBrackets;
|
|
17
26
|
private index;
|
|
18
27
|
private atLineStart;
|
|
28
|
+
private bracketLineStart;
|
|
19
29
|
private nesting;
|
|
30
|
+
private logicalLineIndent;
|
|
31
|
+
private scannedLineStart;
|
|
32
|
+
private scannedTo;
|
|
33
|
+
private cachedLineEndFrom;
|
|
34
|
+
private cachedLineEnd;
|
|
35
|
+
private semicolonRunEnd;
|
|
20
36
|
private readonly bracketFragment;
|
|
21
37
|
private readonly scanSourceHygiene;
|
|
22
38
|
constructor(text: string, extensions?: readonly CompilerLexicalExtension[], options?: {
|
|
@@ -25,14 +41,152 @@ export declare class Lexer {
|
|
|
25
41
|
});
|
|
26
42
|
lex(): LexResult;
|
|
27
43
|
private readIndentation;
|
|
44
|
+
/** The width of a leading member step, or 0 where the line does not open with one. */
|
|
45
|
+
private leadingDotWidth;
|
|
46
|
+
/**
|
|
47
|
+
* Whether the leading-dot line at `width` joins the line above it. Two
|
|
48
|
+
* conditions, and the file's own contract has always claimed both:
|
|
49
|
+
*
|
|
50
|
+
* - It is the *next* line. The backward walk used to skip an unbounded run of
|
|
51
|
+
* `newline` tokens, so a chain joined a value that appeared any number of
|
|
52
|
+
* blank lines and whole-line comments earlier — the case the header comment
|
|
53
|
+
* says "never join accidentally" (D90, compiler-front-10). One `newline`
|
|
54
|
+
* token is the line that ended the statement; a second is a blank or
|
|
55
|
+
* comment line, and the statement ended there.
|
|
56
|
+
* - It is indented past the statement it continues. The charter called the
|
|
57
|
+
* deeper indentation canonical and nothing enforced it, so a column-0
|
|
58
|
+
* `.sorted()` dedented out of a function body and silently became part of
|
|
59
|
+
* it. `logicalLineIndent` is the *statement's* indentation rather than the
|
|
60
|
+
* previous physical line's, so every line of one chain answers to one rule.
|
|
61
|
+
*/
|
|
28
62
|
private isChainContinuation;
|
|
63
|
+
/**
|
|
64
|
+
* Whether the logical line that just ended opens a class body. Read by the
|
|
65
|
+
* member-name exemption: `def with(...)` declares a member here and a binding
|
|
66
|
+
* anywhere else, and only the enclosing block distinguishes them.
|
|
67
|
+
*/
|
|
68
|
+
private opensClassBody;
|
|
29
69
|
private readNewline;
|
|
70
|
+
/**
|
|
71
|
+
* D90 (compiler-front-14): an unclosed bracket used to swallow the rest of
|
|
72
|
+
* the module. While `nesting > 0` no newline token is emitted and no
|
|
73
|
+
* indentation is read, so one mistyped `(` turned every declaration below it
|
|
74
|
+
* into a continuation of one logical line — a file of fifty exports became
|
|
75
|
+
* one symbol, and none of the reported diagnostics named the bracket.
|
|
76
|
+
*
|
|
77
|
+
* Recovery is narrow because line breaks inside brackets really are
|
|
78
|
+
* insignificant: `compute(` with its arguments at column 0 is legal and must
|
|
79
|
+
* keep compiling, so indentation alone decides nothing. What decides is a
|
|
80
|
+
* physical line that begins a declaration or a statement — a word no
|
|
81
|
+
* bracketed expression can continue with — at or below the indentation of the
|
|
82
|
+
* line that opened the bracket. An indentation-significant language can read
|
|
83
|
+
* on from there; a brace language cannot.
|
|
84
|
+
*/
|
|
85
|
+
private recoverUnclosedBrackets;
|
|
86
|
+
private openBracket;
|
|
87
|
+
private closeBracket;
|
|
30
88
|
private readComment;
|
|
89
|
+
/**
|
|
90
|
+
* D89 A1: `//` is VelarScript's only comment spelling, so a Python author's
|
|
91
|
+
* floor division reads as a finished line followed by a comment and the
|
|
92
|
+
* compiler has nothing to object to. `#` cannot take the comment role over:
|
|
93
|
+
* of the branches the `#` dispatch reads (`readJavaScriptPrivateIdentifier`,
|
|
94
|
+
* `readHexColor`, `readHashComment`), `readHexColor` carries bare
|
|
95
|
+
* hexadecimal colors — a hot path in a language with `look:` — and a `#`
|
|
96
|
+
* that opened a comment would swallow `#ff0000` and the rest of its line
|
|
97
|
+
* instead of guiding it to the quoted spelling. With no comment spelling
|
|
98
|
+
* left to give up, an advisory is the only remaining move.
|
|
99
|
+
*
|
|
100
|
+
* The trigger is narrow on both sides. D89 asks for a syntactically complete
|
|
101
|
+
* expression or assignment ahead of the `//`, which here means three things:
|
|
102
|
+
* the line carries code, every bracket *this physical line* opened is closed
|
|
103
|
+
* before the comment (an unclosed one leaves the line unfinished, so
|
|
104
|
+
* `print( // 2` is silent), and the last token can end a dividend. The
|
|
105
|
+
* bracket test counts opens and closes on the line itself rather than reading
|
|
106
|
+
* `nesting`: a bracket opened on an earlier line and closed on a later one
|
|
107
|
+
* leaves the text before `//` complete, so `print(` / ` total // 2` / `)`
|
|
108
|
+
* is exactly the mistake this advisory exists for and used to compile in
|
|
109
|
+
* silence (D90). The comment's own text — with any `velar-allow` clause
|
|
110
|
+
* removed, which is what `contentEnd` is for — must then be a bare arithmetic
|
|
111
|
+
* body carrying a digit and no letter anywhere, so `// TODO`,
|
|
112
|
+
* `// 2. then handle X`, a bare `//`, and a whole-line comment are all
|
|
113
|
+
* silent.
|
|
114
|
+
*
|
|
115
|
+
* A bracket fragment is exempt because its lexer holds the fragment's text
|
|
116
|
+
* rather than the module's: `lineStart` there answers with the fragment's own
|
|
117
|
+
* beginning, and "the rest of this line is a comment" would be a claim about
|
|
118
|
+
* an interpolation rather than about a physical line.
|
|
119
|
+
*
|
|
120
|
+
* No mechanical fix is registered: deciding that the comment really was a
|
|
121
|
+
* divisor is the judgment D38 §48 keeps out of the fix registry.
|
|
122
|
+
*/
|
|
123
|
+
private adviseFloorDivisionComment;
|
|
124
|
+
/**
|
|
125
|
+
* Whether a bracket opened on this physical line is still open at the
|
|
126
|
+
* comment. This is the "syntactically complete" half of A1's trigger that
|
|
127
|
+
* `nesting` was standing in for: `nesting` also counts a bracket opened three
|
|
128
|
+
* lines up, whose text before the `//` is complete all the same.
|
|
129
|
+
*/
|
|
130
|
+
private hasBracketOpenedOnLine;
|
|
131
|
+
/**
|
|
132
|
+
* What Python's `//` would have divided: the primary expression the comment
|
|
133
|
+
* follows, read back from the source so the advisory quotes the author's own
|
|
134
|
+
* spelling. The walk stops at the first operator or keyword outside brackets,
|
|
135
|
+
* because `//` binds as tightly as `*` — in `a + b // 2` the dividend is `b`,
|
|
136
|
+
* and naming `a + b` would hand back a rewrite that changes the result.
|
|
137
|
+
*
|
|
138
|
+
* A leading unary sign belongs to the dividend. Python's `-7 // 2` is -4, so
|
|
139
|
+
* quoting `7` and suggesting `(7 / 2).floor()` — which answers 3 — is the same
|
|
140
|
+
* class of wrong rewrite the divisor side used to hand back. The sign is unary
|
|
141
|
+
* exactly when nothing that could end an operand stands in front of it, which
|
|
142
|
+
* keeps the binary reading in `a - 7 // 2`, where the dividend is still `7`.
|
|
143
|
+
*
|
|
144
|
+
* `target` is the name the value lands in, and only a plain `=` produces one:
|
|
145
|
+
* a compound assignment reads its target as well as writing it, so calling it
|
|
146
|
+
* the receiver would be a second claim this advisory has not checked.
|
|
147
|
+
*/
|
|
148
|
+
private dividendBeforeComment;
|
|
31
149
|
private readBlockComment;
|
|
32
150
|
private blockCommentOwnsLine;
|
|
33
151
|
private readIdentifier;
|
|
152
|
+
/**
|
|
153
|
+
* The three positions in which a name is a member name rather than a binding:
|
|
154
|
+
* after a member step, as a record-literal key, and as the name of a member
|
|
155
|
+
* declared in a class body. The first two are the reads — `q.with("cte")`,
|
|
156
|
+
* `{with: 1}` — and the third is the declaration an extern module needs to
|
|
157
|
+
* describe such an API at all.
|
|
158
|
+
*
|
|
159
|
+
* A class body is the only place the declaration is legal: `def with(...)`
|
|
160
|
+
* outside one binds a name, and the generated module would say
|
|
161
|
+
* `function with`, which is not JavaScript.
|
|
162
|
+
*/
|
|
163
|
+
private isMemberNamePosition;
|
|
164
|
+
/**
|
|
165
|
+
* D90 (coherence): the one position where `this` is the Python receiver
|
|
166
|
+
* reflex rather than JavaScript's dynamic receiver — a parameter name in the
|
|
167
|
+
* list of an instance method or a constructor inside a class body. The
|
|
168
|
+
* analyzer owns that report, because only it knows the declaration carries
|
|
169
|
+
* an implicit receiver, and its rewrite deletes the parameter instead of
|
|
170
|
+
* renaming it to a spelling that is an error in the same position.
|
|
171
|
+
*
|
|
172
|
+
* The walk is paren-balanced so a default value cannot be mistaken for the
|
|
173
|
+
* list that encloses it — `def m(a = f(this))` is an ordinary receiver read
|
|
174
|
+
* — and `static def make(this)` is excluded because a static method has no
|
|
175
|
+
* receiver to delete, so the rename is still the honest answer there.
|
|
176
|
+
*/
|
|
177
|
+
private isReceiverParameterPosition;
|
|
34
178
|
private readNumber;
|
|
35
179
|
private readRadixNumber;
|
|
180
|
+
/**
|
|
181
|
+
* A number token, carrying the author's own spelling whenever the value it
|
|
182
|
+
* holds is spelled differently — `1_000` loses its separators and `0X20`
|
|
183
|
+
* loses its uppercase prefix on the way to the token. D90 R6 quotes the
|
|
184
|
+
* literal back when it is not exactly representable, and it must quote what
|
|
185
|
+
* was written: reporting `'10000000000000000001'` for a source line that
|
|
186
|
+
* reads `1_000_000_000_000_000_000_1` sends the author looking for text that
|
|
187
|
+
* is not there.
|
|
188
|
+
*/
|
|
189
|
+
private pushNumber;
|
|
36
190
|
private isRadixDigit;
|
|
37
191
|
/**
|
|
38
192
|
* LOK-I5: `%` right after a number is the percentage unit only where a
|
|
@@ -45,6 +199,49 @@ export declare class Lexer {
|
|
|
45
199
|
private readDigitsWithSeparators;
|
|
46
200
|
private readString;
|
|
47
201
|
private readEmbeddedJavaScript;
|
|
202
|
+
/**
|
|
203
|
+
* D89 A5/A6: JavaScript's `${...}` never interpolates in VelarScript. The
|
|
204
|
+
* charter keeps it literal on purpose — generating JavaScript source is a
|
|
205
|
+
* real use of these literals — so the spelling cannot become an error, and a
|
|
206
|
+
* string that carries it compiles in silence with a meaning the JavaScript
|
|
207
|
+
* reflex behind it did not intend. That is D89's admission shape exactly,
|
|
208
|
+
* on both sides of the `f` prefix:
|
|
209
|
+
*
|
|
210
|
+
* - A5, a plain double-quoted or backtick string: nothing interpolates, the
|
|
211
|
+
* `${name}` stays text. The way out is the `f` prefix with `{name}`.
|
|
212
|
+
* - A6, an `f` or `rf` string: the `$` ahead of `{` keeps that brace
|
|
213
|
+
* literal, so the author who wrote the prefix *and* the JavaScript
|
|
214
|
+
* spelling still gets text. The way out is dropping the `$`.
|
|
215
|
+
*
|
|
216
|
+
* The non-triggers, each deliberate: an empty `${}` or an unclosed `${`
|
|
217
|
+
* carries no expression to interpolate; a raw `r"..."` string is the author
|
|
218
|
+
* asking for literal text by name, so the deliberate-literal reading wins
|
|
219
|
+
* there (`rf` still triggers A6 — its rawness is about backslashes, not
|
|
220
|
+
* about interpolation); a single-quoted string is already VEL1005; an
|
|
221
|
+
* unterminated string is already VEL1003; and an inline `extern js` /
|
|
222
|
+
* `unsafe js` block never reaches this method at all — it is scanned by
|
|
223
|
+
* `readEmbeddedJavaScript`, where `${...}` is documented literal
|
|
224
|
+
* JavaScript. One advisory speaks per literal: the rewrite names the whole
|
|
225
|
+
* string, so a second occurrence adds nothing the first did not say.
|
|
226
|
+
*
|
|
227
|
+
* The fix is registered only where D38 §48's no-judgment bar holds: every
|
|
228
|
+
* `${...}` well-formed, every body a plain dotted name path (see
|
|
229
|
+
* `interpolationPathBody`), no `$` immediately ahead of an occurrence's own
|
|
230
|
+
* `$` — JavaScript's `$${x}` spells a literal `$` before an interpolation,
|
|
231
|
+
* and deleting the occurrence's `$` leaves `${x}`, whose surviving `$`
|
|
232
|
+
* holds the brace literal all over again, so the quoted rewrite would not
|
|
233
|
+
* interpolate — and, for A5, no bare brace outside the occurrences, because
|
|
234
|
+
* the `f` prefix would turn `{` into an interpolation opener and `{{` into
|
|
235
|
+
* a single literal brace. Everything else keeps the message and loses the
|
|
236
|
+
* one-click edit.
|
|
237
|
+
*
|
|
238
|
+
* A bracket fragment is exempt for A1's reason: its lexer holds the
|
|
239
|
+
* fragment's text rather than the module's, so a span there would not land
|
|
240
|
+
* on the physical line a `velar-allow` reads.
|
|
241
|
+
*/
|
|
242
|
+
private adviseTemplateInterpolation;
|
|
243
|
+
/** The literal's source text with each occurrence's `$` removed, for the message that quotes the rewrite. */
|
|
244
|
+
private literalWithoutDollars;
|
|
48
245
|
private diagnoseStringContents;
|
|
49
246
|
private decodeStringText;
|
|
50
247
|
private legacyTripleQuotePrefix;
|
|
@@ -72,7 +269,26 @@ export declare class Lexer {
|
|
|
72
269
|
private diagnoseForbiddenSourceCharacters;
|
|
73
270
|
private isBidirectionalControl;
|
|
74
271
|
private isForbiddenLiteralControl;
|
|
272
|
+
/**
|
|
273
|
+
* The start of the physical line `index` sits on. D90 (compiler-front-2): the
|
|
274
|
+
* backward scan this used to be is O(column) per call, and its callers — A1,
|
|
275
|
+
* the block-comment reader, the semicolon fix, and every opening bracket —
|
|
276
|
+
* run once per token, so one long physical line cost O(n²). A line of 20000
|
|
277
|
+
* semicolons took 673 ms and a 4 MiB one would have taken hours, with nothing
|
|
278
|
+
* to stop it: a ';' produces no token, so `MAX_TOKENS` never fires.
|
|
279
|
+
*
|
|
280
|
+
* The offsets those callers ask about only move forward, so the scan is
|
|
281
|
+
* carried across the file once and each call pays for the characters since
|
|
282
|
+
* the last one. An earlier offset still falls back to the backward scan,
|
|
283
|
+
* which is correct and, being off the hot path, is not the cost.
|
|
284
|
+
*/
|
|
75
285
|
private lineStart;
|
|
286
|
+
/**
|
|
287
|
+
* The end of the physical line `index` sits on. Every offset between a line's
|
|
288
|
+
* start and its end shares that end, so one line answers every call about it
|
|
289
|
+
* once — which is what keeps a line of N semicolons from paying N forward
|
|
290
|
+
* scans of its own tail.
|
|
291
|
+
*/
|
|
76
292
|
private lineEnd;
|
|
77
293
|
private invalidCharacter;
|
|
78
294
|
private isAtEnd;
|
package/dist/lexer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lexer.d.ts","sourceRoot":"","sources":["../src/lexer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"lexer.d.ts","sourceRoot":"","sources":["../src/lexer.ts"],"names":[],"mappings":"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"}
|