@velarscript/compiler 0.10.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/LICENSE +201 -0
- package/README.md +70 -0
- package/dist/analyzer.d.ts +1175 -0
- package/dist/analyzer.d.ts.map +1 -0
- package/dist/analyzer.js +12130 -0
- package/dist/analyzer.js.map +1 -0
- package/dist/application-package-host.d.ts +28 -0
- package/dist/application-package-host.d.ts.map +1 -0
- package/dist/application-package-host.js +2 -0
- package/dist/application-package-host.js.map +1 -0
- package/dist/ast.d.ts +853 -0
- package/dist/ast.d.ts.map +1 -0
- package/dist/ast.js +245 -0
- package/dist/ast.js.map +1 -0
- package/dist/class-runtime.d.ts +6 -0
- package/dist/class-runtime.d.ts.map +1 -0
- package/dist/class-runtime.js +45 -0
- package/dist/class-runtime.js.map +1 -0
- package/dist/collection-lowering-runtime.d.ts +7 -0
- package/dist/collection-lowering-runtime.d.ts.map +1 -0
- package/dist/collection-lowering-runtime.js +952 -0
- package/dist/collection-lowering-runtime.js.map +1 -0
- package/dist/collection-runtime.d.ts +16 -0
- package/dist/collection-runtime.d.ts.map +1 -0
- package/dist/collection-runtime.js +231 -0
- package/dist/collection-runtime.js.map +1 -0
- package/dist/core-vocabulary.d.ts +141 -0
- package/dist/core-vocabulary.d.ts.map +1 -0
- package/dist/core-vocabulary.js +88 -0
- package/dist/core-vocabulary.js.map +1 -0
- package/dist/diagnostic.d.ts +42 -0
- package/dist/diagnostic.d.ts.map +1 -0
- package/dist/diagnostic.js +66 -0
- package/dist/diagnostic.js.map +1 -0
- package/dist/embedded-javascript.d.ts +74 -0
- package/dist/embedded-javascript.d.ts.map +1 -0
- package/dist/embedded-javascript.js +341 -0
- package/dist/embedded-javascript.js.map +1 -0
- package/dist/embedded-module.d.ts +11 -0
- package/dist/embedded-module.d.ts.map +1 -0
- package/dist/embedded-module.js +67 -0
- package/dist/embedded-module.js.map +1 -0
- package/dist/embedded-source.d.ts +19 -0
- package/dist/embedded-source.d.ts.map +1 -0
- package/dist/embedded-source.js +61 -0
- package/dist/embedded-source.js.map +1 -0
- package/dist/emitter.d.ts +188 -0
- package/dist/emitter.d.ts.map +1 -0
- package/dist/emitter.js +3254 -0
- package/dist/emitter.js.map +1 -0
- package/dist/error-runtime.d.ts +17 -0
- package/dist/error-runtime.d.ts.map +1 -0
- package/dist/error-runtime.js +109 -0
- package/dist/error-runtime.js.map +1 -0
- package/dist/extension.d.ts +373 -0
- package/dist/extension.d.ts.map +1 -0
- package/dist/extension.js +25 -0
- package/dist/extension.js.map +1 -0
- package/dist/formatter.d.ts +13 -0
- package/dist/formatter.d.ts.map +1 -0
- package/dist/formatter.js +1440 -0
- package/dist/formatter.js.map +1 -0
- package/dist/framework-host.d.ts +87 -0
- package/dist/framework-host.d.ts.map +1 -0
- package/dist/framework-host.js +2 -0
- package/dist/framework-host.js.map +1 -0
- package/dist/index.d.ts +75 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +932 -0
- package/dist/index.js.map +1 -0
- package/dist/interpolated-string.d.ts +47 -0
- package/dist/interpolated-string.d.ts.map +1 -0
- package/dist/interpolated-string.js +344 -0
- package/dist/interpolated-string.js.map +1 -0
- package/dist/json-runtime.d.ts +2 -0
- package/dist/json-runtime.d.ts.map +1 -0
- package/dist/json-runtime.js +193 -0
- package/dist/json-runtime.js.map +1 -0
- package/dist/language-guidance.d.ts +31 -0
- package/dist/language-guidance.d.ts.map +1 -0
- package/dist/language-guidance.js +187 -0
- package/dist/language-guidance.js.map +1 -0
- package/dist/lexer.d.ts +85 -0
- package/dist/lexer.d.ts.map +1 -0
- package/dist/lexer.js +1004 -0
- package/dist/lexer.js.map +1 -0
- package/dist/limits.d.ts +2 -0
- package/dist/limits.d.ts.map +1 -0
- package/dist/limits.js +2 -0
- package/dist/limits.js.map +1 -0
- package/dist/mechanical-fix.d.ts +26 -0
- package/dist/mechanical-fix.d.ts.map +1 -0
- package/dist/mechanical-fix.js +61 -0
- package/dist/mechanical-fix.js.map +1 -0
- package/dist/narrowing-runtime.d.ts +5 -0
- package/dist/narrowing-runtime.d.ts.map +1 -0
- package/dist/narrowing-runtime.js +27 -0
- package/dist/narrowing-runtime.js.map +1 -0
- package/dist/number-runtime.d.ts +3 -0
- package/dist/number-runtime.d.ts.map +1 -0
- package/dist/number-runtime.js +37 -0
- package/dist/number-runtime.js.map +1 -0
- package/dist/parser.d.ts +245 -0
- package/dist/parser.d.ts.map +1 -0
- package/dist/parser.js +3582 -0
- package/dist/parser.js.map +1 -0
- package/dist/primitive-runtime.d.ts +4 -0
- package/dist/primitive-runtime.d.ts.map +1 -0
- package/dist/primitive-runtime.js +39 -0
- package/dist/primitive-runtime.js.map +1 -0
- package/dist/promise-runtime.d.ts +6 -0
- package/dist/promise-runtime.d.ts.map +1 -0
- package/dist/promise-runtime.js +86 -0
- package/dist/promise-runtime.js.map +1 -0
- package/dist/reactive-bridge-runtime.d.ts +7 -0
- package/dist/reactive-bridge-runtime.d.ts.map +1 -0
- package/dist/reactive-bridge-runtime.js +112 -0
- package/dist/reactive-bridge-runtime.js.map +1 -0
- package/dist/runtime-abi.d.ts +24 -0
- package/dist/runtime-abi.d.ts.map +1 -0
- package/dist/runtime-abi.js +24 -0
- package/dist/runtime-abi.js.map +1 -0
- package/dist/semantic.d.ts +142 -0
- package/dist/semantic.d.ts.map +1 -0
- package/dist/semantic.js +845 -0
- package/dist/semantic.js.map +1 -0
- package/dist/source-names.d.ts +32 -0
- package/dist/source-names.d.ts.map +1 -0
- package/dist/source-names.js +101 -0
- package/dist/source-names.js.map +1 -0
- package/dist/source.d.ts +19 -0
- package/dist/source.d.ts.map +1 -0
- package/dist/source.js +64 -0
- package/dist/source.js.map +1 -0
- package/dist/text-runtime.d.ts +2 -0
- package/dist/text-runtime.d.ts.map +1 -0
- package/dist/text-runtime.js +285 -0
- package/dist/text-runtime.js.map +1 -0
- package/dist/token.d.ts +19 -0
- package/dist/token.d.ts.map +1 -0
- package/dist/token.js +51 -0
- package/dist/token.js.map +1 -0
- package/dist/type-registry-runtime.d.ts +7 -0
- package/dist/type-registry-runtime.d.ts.map +1 -0
- package/dist/type-registry-runtime.js +51 -0
- package/dist/type-registry-runtime.js.map +1 -0
- package/dist/type-validation-runtime.d.ts +17 -0
- package/dist/type-validation-runtime.d.ts.map +1 -0
- package/dist/type-validation-runtime.js +150 -0
- package/dist/type-validation-runtime.js.map +1 -0
- package/dist/types.d.ts +356 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +1170 -0
- package/dist/types.js.map +1 -0
- package/dist/utf8-runtime.d.ts +7 -0
- package/dist/utf8-runtime.d.ts.map +1 -0
- package/dist/utf8-runtime.js +43 -0
- package/dist/utf8-runtime.js.map +1 -0
- package/package.json +48 -0
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scans an opaque multiline payload without knowing its language or owner.
|
|
3
|
+
* The closing backtick must appear at `declarationIndentation`, alone except
|
|
4
|
+
* for a tail accepted by its language owner. Content is never decoded,
|
|
5
|
+
* dedented, or searched for language constructs.
|
|
6
|
+
*/
|
|
7
|
+
export function scanOpaqueEmbeddedSource(source, start, declarationIndentation, acceptsClosingTail) {
|
|
8
|
+
const openingBreakLength = newlineLength(source, start + 1);
|
|
9
|
+
const openingLineBreak = openingBreakLength > 0;
|
|
10
|
+
const firstBoundary = nextLineBoundary(source, start + 1);
|
|
11
|
+
const sourceStart = openingLineBreak ? start + 1 + openingBreakLength : firstBoundary.nextStart;
|
|
12
|
+
let lineStart = sourceStart;
|
|
13
|
+
while (lineStart < source.length) {
|
|
14
|
+
const boundary = nextLineBoundary(source, lineStart);
|
|
15
|
+
const expected = `${declarationIndentation}\``;
|
|
16
|
+
if (source.startsWith(expected, lineStart)) {
|
|
17
|
+
const delimiter = lineStart + expected.length - 1;
|
|
18
|
+
const closingTailStart = delimiter + 1;
|
|
19
|
+
const closingTailEnd = boundary.newlineStart;
|
|
20
|
+
if (acceptsClosingTail(source.slice(closingTailStart, closingTailEnd))) {
|
|
21
|
+
return {
|
|
22
|
+
start,
|
|
23
|
+
sourceStart,
|
|
24
|
+
sourceEnd: lineStart,
|
|
25
|
+
end: delimiter + 1,
|
|
26
|
+
closed: true,
|
|
27
|
+
openingLineBreak,
|
|
28
|
+
closingTailStart,
|
|
29
|
+
closingTailEnd,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
if (boundary.nextStart <= lineStart || boundary.nextStart >= source.length)
|
|
34
|
+
break;
|
|
35
|
+
lineStart = boundary.nextStart;
|
|
36
|
+
}
|
|
37
|
+
return {
|
|
38
|
+
start,
|
|
39
|
+
sourceStart,
|
|
40
|
+
sourceEnd: source.length,
|
|
41
|
+
end: source.length,
|
|
42
|
+
closed: false,
|
|
43
|
+
openingLineBreak,
|
|
44
|
+
closingTailStart: null,
|
|
45
|
+
closingTailEnd: null,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
function nextLineBoundary(source, start) {
|
|
49
|
+
for (let index = start; index < source.length; index += 1) {
|
|
50
|
+
const length = newlineLength(source, index);
|
|
51
|
+
if (length > 0)
|
|
52
|
+
return { newlineStart: index, nextStart: index + length };
|
|
53
|
+
}
|
|
54
|
+
return { newlineStart: source.length, nextStart: source.length };
|
|
55
|
+
}
|
|
56
|
+
function newlineLength(source, index) {
|
|
57
|
+
if (source[index] === "\r")
|
|
58
|
+
return source[index + 1] === "\n" ? 2 : 1;
|
|
59
|
+
return source[index] === "\n" ? 1 : 0;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=embedded-source.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embedded-source.js","sourceRoot":"","sources":["../src/embedded-source.ts"],"names":[],"mappings":"AAYA;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CACtC,MAAc,EACd,KAAa,EACb,sBAA8B,EAC9B,kBAA6C;IAE7C,MAAM,kBAAkB,GAAG,aAAa,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;IAC5D,MAAM,gBAAgB,GAAG,kBAAkB,GAAG,CAAC,CAAC;IAChD,MAAM,aAAa,GAAG,gBAAgB,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;IAC1D,MAAM,WAAW,GAAG,gBAAgB,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC;IAChG,IAAI,SAAS,GAAG,WAAW,CAAC;IAE5B,OAAO,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACrD,MAAM,QAAQ,GAAG,GAAG,sBAAsB,IAAI,CAAC;QAC/C,IAAI,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,CAAC;YAC3C,MAAM,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;YAClD,MAAM,gBAAgB,GAAG,SAAS,GAAG,CAAC,CAAC;YACvC,MAAM,cAAc,GAAG,QAAQ,CAAC,YAAY,CAAC;YAC7C,IAAI,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC;gBACvE,OAAO;oBACL,KAAK;oBACL,WAAW;oBACX,SAAS,EAAE,SAAS;oBACpB,GAAG,EAAE,SAAS,GAAG,CAAC;oBAClB,MAAM,EAAE,IAAI;oBACZ,gBAAgB;oBAChB,gBAAgB;oBAChB,cAAc;iBACf,CAAC;YACJ,CAAC;QACH,CAAC;QACD,IAAI,QAAQ,CAAC,SAAS,IAAI,SAAS,IAAI,QAAQ,CAAC,SAAS,IAAI,MAAM,CAAC,MAAM;YAAE,MAAM;QAClF,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;IACjC,CAAC;IAED,OAAO;QACL,KAAK;QACL,WAAW;QACX,SAAS,EAAE,MAAM,CAAC,MAAM;QACxB,GAAG,EAAE,MAAM,CAAC,MAAM;QAClB,MAAM,EAAE,KAAK;QACb,gBAAgB;QAChB,gBAAgB,EAAE,IAAI;QACtB,cAAc,EAAE,IAAI;KACrB,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAc,EAAE,KAAa;IACrD,KAAK,IAAI,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAC1D,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC5C,IAAI,MAAM,GAAG,CAAC;YAAE,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,GAAG,MAAM,EAAE,CAAC;IAC5E,CAAC;IACD,OAAO,EAAE,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;AACnE,CAAC;AAED,SAAS,aAAa,CAAC,MAAc,EAAE,KAAa;IAClD,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtE,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,CAAC"}
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
import type { BindingPattern, Expression, Program, Statement } from "./ast.ts";
|
|
2
|
+
import { type ValueType } from "./types.ts";
|
|
3
|
+
import { type LoweringHints } from "./analyzer.ts";
|
|
4
|
+
import type { CompilerEmbeddedJavaScriptModule, CompilerEmitterOptions } from "./extension.ts";
|
|
5
|
+
import { type SourceText, type Span } from "./source.ts";
|
|
6
|
+
export declare class JavaScriptEmitter {
|
|
7
|
+
private readonly typeDeclarations;
|
|
8
|
+
private readonly runtimeTypes;
|
|
9
|
+
private readonly expandedRuntimeTypes;
|
|
10
|
+
/**
|
|
11
|
+
* D55 rule 121: the type parameters of the generic record currently being
|
|
12
|
+
* emitted. Inside that body a `T`-typed position is checked by the argument
|
|
13
|
+
* predicate the instantiation supplied, which is the only reading of `T` a
|
|
14
|
+
* validator can have once the type is erased.
|
|
15
|
+
*/
|
|
16
|
+
private genericTypeParameters;
|
|
17
|
+
/** Hoisted `function __velarTypeOf_N()` bodies for instantiations written outside a generic. */
|
|
18
|
+
private readonly hoistedGenericInstances;
|
|
19
|
+
private readonly externModuleExports;
|
|
20
|
+
private needsExternExportHelper;
|
|
21
|
+
protected readonly hints: LoweringHints;
|
|
22
|
+
private readonly forcedFunctionExports;
|
|
23
|
+
private readonly sharedRuntimeModules;
|
|
24
|
+
private readonly requiredRuntimeModules;
|
|
25
|
+
private needsIndexHelpers;
|
|
26
|
+
private needsBinaryHelpers;
|
|
27
|
+
private needsBitwiseHelpers;
|
|
28
|
+
private needsCollectionHelpers;
|
|
29
|
+
private needsPrimitiveHelpers;
|
|
30
|
+
private needsRecordHelpers;
|
|
31
|
+
private needsObjectBindingHelpers;
|
|
32
|
+
private needsListBindingHelpers;
|
|
33
|
+
private needsDirectCollectionInfrastructure;
|
|
34
|
+
private needsRuntimeTypeHelpers;
|
|
35
|
+
private needsNumberHelper;
|
|
36
|
+
private needsThrownValueHelper;
|
|
37
|
+
private needsErrorCodeHelper;
|
|
38
|
+
private readonly requiredHostErrorClasses;
|
|
39
|
+
private needsDetachedTaskHelper;
|
|
40
|
+
private needsDisposalHelper;
|
|
41
|
+
private needsIntegrityFailureHelper;
|
|
42
|
+
private needsNarrowingErrorClass;
|
|
43
|
+
private suppressPromiseNormalization;
|
|
44
|
+
private nextJavaScriptNodeId;
|
|
45
|
+
private readonly javaScriptNodeSpans;
|
|
46
|
+
private generatedMappings;
|
|
47
|
+
private generatedCode;
|
|
48
|
+
private readonly sourcePath;
|
|
49
|
+
private readonly embeddedJavaScript;
|
|
50
|
+
constructor(hints: LoweringHints, forcedFunctionExports?: ReadonlySet<string>, options?: CompilerEmitterOptions);
|
|
51
|
+
emit(program: Program): string;
|
|
52
|
+
sourceMap(source: SourceText): string;
|
|
53
|
+
embeddedModules(source: SourceText): readonly CompilerEmbeddedJavaScriptModule[];
|
|
54
|
+
runtimeModules(): readonly string[];
|
|
55
|
+
private emitJavaScriptNode;
|
|
56
|
+
private markJavaScriptNode;
|
|
57
|
+
protected emitMappedJavaScript(sourceSpan: Span, render: () => string): string;
|
|
58
|
+
private renderJavaScriptNode;
|
|
59
|
+
protected additionalHelpers(_program: Program): readonly string[];
|
|
60
|
+
protected reactiveBridgeHelpers(needsJavaScriptCallBoundary: boolean, needsCollections: boolean): readonly string[];
|
|
61
|
+
protected usesSharedRuntimeModules(): boolean;
|
|
62
|
+
protected detachedTaskHelpers(): readonly string[];
|
|
63
|
+
/**
|
|
64
|
+
* D43 item 69 rule 8: a release that fails while an error is already in
|
|
65
|
+
* flight must not replace it. The original error keeps the throw; the release
|
|
66
|
+
* failure is normalized and reported through the host channel. The reporter
|
|
67
|
+
* itself never fails outward, for the same reason the detached-task reporter
|
|
68
|
+
* does not — a throw inside it would end the process.
|
|
69
|
+
*/
|
|
70
|
+
protected disposalHelpers(): readonly string[];
|
|
71
|
+
/**
|
|
72
|
+
* D51 rule 103: the three failures that mean "this program has a bug", by the
|
|
73
|
+
* one name each of them stamps on itself. A forged name can only make a
|
|
74
|
+
* failure propagate instead of becoming `null`, which is the safe direction:
|
|
75
|
+
* `try` never hides a guard, and `catch` still receives everything.
|
|
76
|
+
*/
|
|
77
|
+
protected integrityFailureHelpers(): readonly string[];
|
|
78
|
+
protected requireRuntimeModule(source: string): void;
|
|
79
|
+
protected includesErrorNormalizationRuntime(): boolean;
|
|
80
|
+
protected visitExtensionRuntimeExpression(_expression: Expression, _visitExpression: (expression: Expression) => void): boolean;
|
|
81
|
+
protected visitExtensionRuntimeStatement(_statement: Statement, _visitExpression: (expression: Expression) => void, _visitStatement: (statement: Statement) => void): boolean;
|
|
82
|
+
protected extensionExpressionContainsDirectAwait(_expression: Expression, _contains: (expression: Expression) => boolean): boolean | undefined;
|
|
83
|
+
protected extensionStatementContainsDirectAwait(_statement: Statement, _containsExpression: (expression: Expression) => boolean, _containsBlock: (statements: readonly Statement[]) => boolean): boolean | undefined;
|
|
84
|
+
private collectDeclarations;
|
|
85
|
+
private collectRuntimeUses;
|
|
86
|
+
private markRuntimeType;
|
|
87
|
+
private markRuntimeNarrowingType;
|
|
88
|
+
protected emitMappedStatement(statement: Statement, depth: number): string;
|
|
89
|
+
/**
|
|
90
|
+
* D43 item 69: a `using` binding owns the rest of its block, so a statement
|
|
91
|
+
* list is emitted as a whole. Everything after the binding moves inside the
|
|
92
|
+
* release frame; a second `using` nests inside the first, which is what makes
|
|
93
|
+
* release order the reverse of declaration order.
|
|
94
|
+
*/
|
|
95
|
+
protected emitStatementLines(statements: readonly Statement[], depth: number): readonly string[];
|
|
96
|
+
private emitUsingScope;
|
|
97
|
+
protected emitStatement(statement: Statement, depth: number): string;
|
|
98
|
+
private emitImport;
|
|
99
|
+
private prepareEmbeddedJavaScript;
|
|
100
|
+
private emitEmbeddedJavaScript;
|
|
101
|
+
private emitTypeDeclaration;
|
|
102
|
+
private emitRecordTypeDeclaration;
|
|
103
|
+
/** The record predicate itself: identical for a plain record and a generic one but for the arguments it carries. */
|
|
104
|
+
private recordCheckFunctionLines;
|
|
105
|
+
private emitTypeAliasDeclaration;
|
|
106
|
+
private emitEnumDeclaration;
|
|
107
|
+
protected emitTypeCheck(type: ValueType, value: string, state?: string): string;
|
|
108
|
+
protected emitIsCheck(type: ValueType, value: string): string;
|
|
109
|
+
protected emitNarrowingCheck(type: ValueType, value: string, state?: string): string;
|
|
110
|
+
private runtimeTypeCheckName;
|
|
111
|
+
/**
|
|
112
|
+
* D55 rule 121: the name a module writes for a generic record is a JavaScript
|
|
113
|
+
* binding holding its instantiation factory — declared here, or imported from
|
|
114
|
+
* the module that declares it. Nothing else may be written into `.of(...)`.
|
|
115
|
+
*/
|
|
116
|
+
protected genericTypeBinding(name: string): boolean;
|
|
117
|
+
/** The instantiation a `named` application stands for, as a JavaScript expression. */
|
|
118
|
+
private genericInstanceExpression;
|
|
119
|
+
/**
|
|
120
|
+
* A type argument's memo key or display text. Both are plain strings when the
|
|
121
|
+
* argument is closed; inside a generic body a mention of the enclosing
|
|
122
|
+
* parameters reads them off the arguments the instantiation supplied, so
|
|
123
|
+
* `type Wrapper<T>: inner: Box<List<T>>` keys and prints correctly at every
|
|
124
|
+
* instantiation without the emitter having seen one.
|
|
125
|
+
*/
|
|
126
|
+
private genericArgumentExpression;
|
|
127
|
+
/**
|
|
128
|
+
* The display text of a field's declared type, as a JavaScript expression.
|
|
129
|
+
* A generic record's `parse` failure names the type the caller instantiated
|
|
130
|
+
* — `field 'value' does not match string`, not `does not match T`.
|
|
131
|
+
*/
|
|
132
|
+
private typeTextExpression;
|
|
133
|
+
/**
|
|
134
|
+
* A declared type inside a generic record's body. The emitter has no analyzer
|
|
135
|
+
* frame, so the declaration's own parameter names are turned into `parameter`
|
|
136
|
+
* kinds here — the one place the emitter learns that `T` is erased rather
|
|
137
|
+
* than unknown.
|
|
138
|
+
*/
|
|
139
|
+
private resolveDeclarationType;
|
|
140
|
+
/**
|
|
141
|
+
* D60 rule 148: a `named` ValueType carries the type's *display* name, which
|
|
142
|
+
* is a runtime binding only when this module really has a Type object under
|
|
143
|
+
* it — a local `type` declaration, an imported one, an enum, or a class. An
|
|
144
|
+
* unresolved generic formats to type text (`Component<(label: string) ->
|
|
145
|
+
* WebNode>`) that is not even a JavaScript identifier, and an extension host
|
|
146
|
+
* scalar (`Color`, `Length`, `WebNode`) has no binding at all. Writing either
|
|
147
|
+
* into the output is how `velar check` passed and `velar build` then failed
|
|
148
|
+
* to parse its own emission; the narrowing path (FLW-U1) already asks this
|
|
149
|
+
* question, and every other check path now asks it too.
|
|
150
|
+
*/
|
|
151
|
+
protected runtimeTypeBinding(name: string): boolean;
|
|
152
|
+
/** The runtime class behind a nameable builtin error type, marking the runtime it needs. */
|
|
153
|
+
private builtinErrorRuntimeName;
|
|
154
|
+
/** The enum an alias (or alias chain) resolves to, or null when the name is not an alias of an enum. */
|
|
155
|
+
private enumAliasTarget;
|
|
156
|
+
private emitClass;
|
|
157
|
+
/**
|
|
158
|
+
* D51 rule 102: derived first, base after — construction order reversed, the
|
|
159
|
+
* same intuition LIFO release already has. The base runs on every exit from
|
|
160
|
+
* the derived body, including a `return`, and when the derived part already
|
|
161
|
+
* failed the base failure is reported to the host instead of replacing the
|
|
162
|
+
* error in flight, exactly as rule 8 of D43 item 69 decides for `using`.
|
|
163
|
+
*/
|
|
164
|
+
private chainedDisposeLines;
|
|
165
|
+
protected emitParameter(name: string, defaultValue: Expression | null, rest?: boolean): string;
|
|
166
|
+
protected emitMappedExpression(expression: Expression, normalizeNull?: boolean): string;
|
|
167
|
+
private emitMappedAssignmentTarget;
|
|
168
|
+
private bitwiseAssignmentOperator;
|
|
169
|
+
private emitCompoundOperation;
|
|
170
|
+
protected emitExpression(expression: Expression): string;
|
|
171
|
+
protected emitCondition(expression: Expression): string;
|
|
172
|
+
private emitBinaryOperand;
|
|
173
|
+
private emitPostfixReceiver;
|
|
174
|
+
private emitComparisonChain;
|
|
175
|
+
protected expressionContainsDirectAwait(expression: Expression): boolean;
|
|
176
|
+
private typeRuntimeName;
|
|
177
|
+
private collectionHelper;
|
|
178
|
+
private binaryHelper;
|
|
179
|
+
private binaryIndexHelper;
|
|
180
|
+
private binarySetIndexHelper;
|
|
181
|
+
private primitiveHelper;
|
|
182
|
+
protected emitObjectKey(name: string): string;
|
|
183
|
+
private emitMatchPatternAttempt;
|
|
184
|
+
protected emitBindingPatternStatements(pattern: BindingPattern, value: string, binding: "const" | "let", exported: boolean, depth: number, label: string): readonly string[];
|
|
185
|
+
private escapeTemplateText;
|
|
186
|
+
protected blockAlwaysReturns(statements: readonly Statement[]): boolean;
|
|
187
|
+
}
|
|
188
|
+
//# sourceMappingURL=emitter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emitter.d.ts","sourceRoot":"","sources":["../src/emitter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,cAAc,EAGd,UAAU,EAGV,OAAO,EACP,SAAS,EAQV,MAAM,UAAU,CAAC;AAKlB,OAAO,EAA2L,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AACrO,OAAO,EAAsC,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AAGvF,OAAO,KAAK,EAAE,gCAAgC,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAM/F,OAAO,EAAgB,KAAK,UAAU,EAAE,KAAK,IAAI,EAAE,MAAM,aAAa,CAAC;AAyCvE,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA6D;IAC9F,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqB;IAClD,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAqB;IAC1D;;;;;OAKG;IACH,OAAO,CAAC,qBAAqB,CAAkC;IAC/D,gGAAgG;IAChG,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAA6B;IACrE,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAA0C;IAC9E,OAAO,CAAC,uBAAuB,CAAS;IACxC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IACxC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAsB;IAC5D,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAU;IAC/C,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAqB;IAC5D,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,sBAAsB,CAAS;IACvC,OAAO,CAAC,qBAAqB,CAAS;IACtC,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,yBAAyB,CAAS;IAC1C,OAAO,CAAC,uBAAuB,CAAS;IACxC,OAAO,CAAC,mCAAmC,CAAS;IACpD,OAAO,CAAC,uBAAuB,CAAS;IACxC,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,sBAAsB,CAAS;IACvC,OAAO,CAAC,oBAAoB,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAqB;IAC9D,OAAO,CAAC,uBAAuB,CAAS;IACxC,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,2BAA2B,CAAS;IAC5C,OAAO,CAAC,wBAAwB,CAAS;IACzC,OAAO,CAAC,4BAA4B,CAAK;IACzC,OAAO,CAAC,oBAAoB,CAAK;IACjC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAA2B;IAC/D,OAAO,CAAC,iBAAiB,CAAmC;IAC5D,OAAO,CAAC,aAAa,CAAM;IAC3B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA8E;IAEjH,YAAY,KAAK,EAAE,aAAa,EAAE,qBAAqB,GAAE,WAAW,CAAC,MAAM,CAAa,EAAE,OAAO,GAAE,sBAA2B,EAK7H;IAED,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAgd7B;IAED,SAAS,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAEpC;IAED,eAAe,CAAC,MAAM,EAAE,UAAU,GAAG,SAAS,gCAAgC,EAAE,CAO/E;IAED,cAAc,IAAI,SAAS,MAAM,EAAE,CAElC;IAED,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,kBAAkB;IAI1B,SAAS,CAAC,oBAAoB,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,MAAM,GAAG,MAAM,CAE7E;IAED,OAAO,CAAC,oBAAoB;IAgB5B,SAAS,CAAC,iBAAiB,CAAC,QAAQ,EAAE,OAAO,GAAG,SAAS,MAAM,EAAE,CAEhE;IAED,SAAS,CAAC,qBAAqB,CAAC,2BAA2B,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAO,GAAG,SAAS,MAAM,EAAE,CAoBlH;IAED,SAAS,CAAC,wBAAwB,IAAI,OAAO,CAE5C;IAeD,SAAS,CAAC,mBAAmB,IAAI,SAAS,MAAM,EAAE,CA+BjD;IAED;;;;;;OAMG;IACH,SAAS,CAAC,eAAe,IAAI,SAAS,MAAM,EAAE,CAqB7C;IAED;;;;;OAKG;IACH,SAAS,CAAC,uBAAuB,IAAI,SAAS,MAAM,EAAE,CAWrD;IAED,SAAS,CAAC,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAEnD;IAED,SAAS,CAAC,iCAAiC,IAAI,OAAO,CAErD;IAED,SAAS,CAAC,+BAA+B,CAAC,WAAW,EAAE,UAAU,EAAE,gBAAgB,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,IAAI,GAAG,OAAO,CAE9H;IAED,SAAS,CAAC,8BAA8B,CACtC,UAAU,EAAE,SAAS,EACrB,gBAAgB,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,IAAI,EAClD,eAAe,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,IAAI,GAC9C,OAAO,CAET;IAED,SAAS,CAAC,sCAAsC,CAC9C,WAAW,EAAE,UAAU,EACvB,SAAS,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,OAAO,GAC7C,OAAO,GAAG,SAAS,CAErB;IAED,SAAS,CAAC,qCAAqC,CAC7C,UAAU,EAAE,SAAS,EACrB,mBAAmB,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,OAAO,EACxD,cAAc,EAAE,CAAC,UAAU,EAAE,SAAS,SAAS,EAAE,KAAK,OAAO,GAC5D,OAAO,GAAG,SAAS,CAErB;IAED,OAAO,CAAC,mBAAmB;IAoB3B,OAAO,CAAC,kBAAkB;IA0K1B,OAAO,CAAC,eAAe;IA0CvB,OAAO,CAAC,wBAAwB;IAehC,SAAS,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEzE;IAED;;;;;OAKG;IACH,SAAS,CAAC,kBAAkB,CAAC,UAAU,EAAE,SAAS,SAAS,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAS/F;IAED,OAAO,CAAC,cAAc;IAkCtB,SAAS,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAmVnE;IAED,OAAO,CAAC,UAAU;IA8ClB,OAAO,CAAC,yBAAyB;IAyBjC,OAAO,CAAC,sBAAsB;IAuC9B,OAAO,CAAC,mBAAmB;IAW3B,OAAO,CAAC,yBAAyB;IA+GjC,oHAAoH;IACpH,OAAO,CAAC,wBAAwB;IAsChC,OAAO,CAAC,wBAAwB;IAyChC,OAAO,CAAC,mBAAmB;IA2B3B,SAAS,CAAC,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,SAAc,GAAG,MAAM,CAyEnF;IAED,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAQ5D;IAED,SAAS,CAAC,kBAAkB,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,SAAc,GAAG,MAAM,CAkCxF;IAED,OAAO,CAAC,oBAAoB;IAI5B;;;;OAIG;IACH,SAAS,CAAC,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAIlD;IAED,sFAAsF;IACtF,OAAO,CAAC,yBAAyB;IAgBjC;;;;;;OAMG;IACH,OAAO,CAAC,yBAAyB;IAkCjC;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAM1B;;;;;OAKG;IACH,OAAO,CAAC,sBAAsB;IAc9B;;;;;;;;;;OAUG;IACH,SAAS,CAAC,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAKlD;IAED,4FAA4F;IAC5F,OAAO,CAAC,uBAAuB;IAa/B,wGAAwG;IACxG,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,SAAS;IA+GjB;;;;;;OAMG;IACH,OAAO,CAAC,mBAAmB;IA0B3B,SAAS,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,GAAG,IAAI,EAAE,IAAI,UAAQ,GAAG,MAAM,CAG3F;IAED,SAAS,CAAC,oBAAoB,CAAC,UAAU,EAAE,UAAU,EAAE,aAAa,UAAO,GAAG,MAAM,CA6BnF;IAED,OAAO,CAAC,0BAA0B;IAQlC,OAAO,CAAC,yBAAyB;IAMjC,OAAO,CAAC,qBAAqB;IAS7B,SAAS,CAAC,cAAc,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAyavD;IAKD,SAAS,CAAC,aAAa,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAGtD;IAED,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,mBAAmB;IAW3B,OAAO,CAAC,mBAAmB;IAuC3B,SAAS,CAAC,6BAA6B,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAEvE;IAED,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,gBAAgB;IA8CxB,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,oBAAoB;IAS5B,OAAO,CAAC,eAAe;IA+BvB,SAAS,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE5C;IAED,OAAO,CAAC,uBAAuB;IA0H/B,SAAS,CAAC,4BAA4B,CACpC,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,OAAO,GAAG,KAAK,EACxB,QAAQ,EAAE,OAAO,EACjB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,GACZ,SAAS,MAAM,EAAE,CA2DnB;IAED,OAAO,CAAC,kBAAkB;IAI1B,SAAS,CAAC,kBAAkB,CAAC,UAAU,EAAE,SAAS,SAAS,EAAE,GAAG,OAAO,CAatE;CACF"}
|