@tsonic/emitter 0.0.15 → 0.0.16
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/.tsbuildinfo +1 -1
- package/dist/adapter-generator.js +3 -3
- package/dist/adapter-generator.js.map +1 -1
- package/dist/array.test.js +2 -2
- package/dist/core/imports.d.ts.map +1 -1
- package/dist/core/imports.js +6 -3
- package/dist/core/imports.js.map +1 -1
- package/dist/core/local-types.d.ts.map +1 -1
- package/dist/core/local-types.js +12 -0
- package/dist/core/local-types.js.map +1 -1
- package/dist/core/module-emitter/orchestrator.d.ts.map +1 -1
- package/dist/core/module-emitter/orchestrator.js +15 -2
- package/dist/core/module-emitter/orchestrator.js.map +1 -1
- package/dist/core/module-emitter/static-container.d.ts.map +1 -1
- package/dist/core/module-emitter/static-container.js +27 -3
- package/dist/core/module-emitter/static-container.js.map +1 -1
- package/dist/core/module-emitter.test.js +6 -6
- package/dist/core/module-map.d.ts.map +1 -1
- package/dist/core/module-map.js +42 -0
- package/dist/core/module-map.js.map +1 -1
- package/dist/core/naming-collisions.d.ts +4 -0
- package/dist/core/naming-collisions.d.ts.map +1 -0
- package/dist/core/naming-collisions.js +191 -0
- package/dist/core/naming-collisions.js.map +1 -0
- package/dist/core/type-member-index.d.ts +4 -0
- package/dist/core/type-member-index.d.ts.map +1 -0
- package/dist/core/type-member-index.js +62 -0
- package/dist/core/type-member-index.js.map +1 -0
- package/dist/emitter-types/context.d.ts +1 -1
- package/dist/emitter-types/context.d.ts.map +1 -1
- package/dist/emitter-types/context.js +1 -0
- package/dist/emitter-types/context.js.map +1 -1
- package/dist/emitter-types/core.d.ts +41 -0
- package/dist/emitter-types/core.d.ts.map +1 -1
- package/dist/emitter-types/index.d.ts +1 -1
- package/dist/emitter-types/index.d.ts.map +1 -1
- package/dist/emitter-types/index.js.map +1 -1
- package/dist/emitter.d.ts.map +1 -1
- package/dist/emitter.js +12 -1
- package/dist/emitter.js.map +1 -1
- package/dist/expression-emitter.d.ts.map +1 -1
- package/dist/expression-emitter.js +8 -4
- package/dist/expression-emitter.js.map +1 -1
- package/dist/expressions/access.d.ts +3 -1
- package/dist/expressions/access.d.ts.map +1 -1
- package/dist/expressions/access.js +112 -14
- package/dist/expressions/access.js.map +1 -1
- package/dist/expressions/calls.d.ts.map +1 -1
- package/dist/expressions/calls.js +58 -43
- package/dist/expressions/calls.js.map +1 -1
- package/dist/expressions/collections.d.ts.map +1 -1
- package/dist/expressions/collections.js +132 -16
- package/dist/expressions/collections.js.map +1 -1
- package/dist/expressions/identifiers.d.ts.map +1 -1
- package/dist/expressions/identifiers.js +6 -0
- package/dist/expressions/identifiers.js.map +1 -1
- package/dist/expressions/index.test.js +2 -2
- package/dist/expressions/literals.d.ts.map +1 -1
- package/dist/expressions/literals.js +32 -0
- package/dist/expressions/literals.js.map +1 -1
- package/dist/expressions/operators.d.ts.map +1 -1
- package/dist/expressions/operators.js +35 -5
- package/dist/expressions/operators.js.map +1 -1
- package/dist/expressions/parentheses.d.ts +4 -0
- package/dist/expressions/parentheses.d.ts.map +1 -0
- package/dist/expressions/parentheses.js +83 -0
- package/dist/expressions/parentheses.js.map +1 -0
- package/dist/extension-methods.test.js +2 -2
- package/dist/generator-exchange.d.ts.map +1 -1
- package/dist/generator-exchange.js +3 -1
- package/dist/generator-exchange.js.map +1 -1
- package/dist/generator-wrapper.d.ts.map +1 -1
- package/dist/generator-wrapper.js +13 -7
- package/dist/generator-wrapper.js.map +1 -1
- package/dist/generator-wrapper.test.js +12 -12
- package/dist/generator-wrapper.test.js.map +1 -1
- package/dist/generator.test.js +33 -33
- package/dist/generator.test.js.map +1 -1
- package/dist/hierarchical-bindings.test.js +1 -1
- package/dist/integration.test.js +16 -16
- package/dist/naming-policy.d.ts +5 -0
- package/dist/naming-policy.d.ts.map +1 -0
- package/dist/naming-policy.js +10 -0
- package/dist/naming-policy.js.map +1 -0
- package/dist/specialization/generic-classes.test.js +1 -1
- package/dist/specialization/generic-functions.test.js +6 -6
- package/dist/specialization/interfaces.test.js +5 -5
- package/dist/specialization/type-aliases.test.js +6 -6
- package/dist/statements/classes/inline-types.d.ts +1 -1
- package/dist/statements/classes/inline-types.d.ts.map +1 -1
- package/dist/statements/classes/inline-types.js +4 -4
- package/dist/statements/classes/inline-types.js.map +1 -1
- package/dist/statements/classes/members/constructors.d.ts.map +1 -1
- package/dist/statements/classes/members/constructors.js +10 -2
- package/dist/statements/classes/members/constructors.js.map +1 -1
- package/dist/statements/classes/members/methods.d.ts.map +1 -1
- package/dist/statements/classes/members/methods.js +11 -2
- package/dist/statements/classes/members/methods.js.map +1 -1
- package/dist/statements/classes/members/properties.d.ts.map +1 -1
- package/dist/statements/classes/members/properties.js +15 -2
- package/dist/statements/classes/members/properties.js.map +1 -1
- package/dist/statements/classes/properties.d.ts.map +1 -1
- package/dist/statements/classes/properties.js +5 -6
- package/dist/statements/classes/properties.js.map +1 -1
- package/dist/statements/control/conditionals.d.ts.map +1 -1
- package/dist/statements/control/conditionals.js +115 -0
- package/dist/statements/control/conditionals.js.map +1 -1
- package/dist/statements/declarations/classes.d.ts.map +1 -1
- package/dist/statements/declarations/classes.js +23 -3
- package/dist/statements/declarations/classes.js.map +1 -1
- package/dist/statements/declarations/enums.d.ts.map +1 -1
- package/dist/statements/declarations/enums.js +2 -1
- package/dist/statements/declarations/enums.js.map +1 -1
- package/dist/statements/declarations/functions.d.ts.map +1 -1
- package/dist/statements/declarations/functions.js +16 -7
- package/dist/statements/declarations/functions.js.map +1 -1
- package/dist/statements/declarations/interfaces.d.ts.map +1 -1
- package/dist/statements/declarations/interfaces.js +23 -5
- package/dist/statements/declarations/interfaces.js.map +1 -1
- package/dist/statements/declarations/structs.test.js +5 -5
- package/dist/statements/declarations/type-aliases.d.ts.map +1 -1
- package/dist/statements/declarations/type-aliases.js +18 -4
- package/dist/statements/declarations/type-aliases.js.map +1 -1
- package/dist/statements/declarations/variables.d.ts.map +1 -1
- package/dist/statements/declarations/variables.js +20 -3
- package/dist/statements/declarations/variables.js.map +1 -1
- package/dist/type-assertion.test.js +1 -1
- package/dist/types/emitter.d.ts.map +1 -1
- package/dist/types/emitter.js +3 -2
- package/dist/types/emitter.js.map +1 -1
- package/dist/types/index.test.js +3 -3
- package/dist/types/parameters.d.ts +1 -1
- package/dist/types/parameters.d.ts.map +1 -1
- package/dist/types/parameters.js +41 -7
- package/dist/types/parameters.js.map +1 -1
- package/dist/types/references.d.ts.map +1 -1
- package/dist/types/references.js +40 -4
- package/dist/types/references.js.map +1 -1
- package/dist/types/references.test.js +11 -11
- package/dist/types/unions.test.js +9 -9
- package/dist/types.d.ts +1 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parenthesization helpers for C# precedence correctness.
|
|
3
|
+
*
|
|
4
|
+
* C# precedence differs from TS in a few critical places:
|
|
5
|
+
* - Cast expressions like `(T)x` bind *less* tightly than postfix operators like `.`, `[]`, `()`.
|
|
6
|
+
* So `(${T})x.Member` parses as `(${T})(x.Member)` unless wrapped: `((T)x).Member`.
|
|
7
|
+
* - The `as` operator also requires parentheses when used as a postfix receiver: `(x as T).Member`.
|
|
8
|
+
* - The `?:` conditional operator must be parenthesized before postfix: `(cond ? a : b).Member`.
|
|
9
|
+
*
|
|
10
|
+
* Additionally, conditional access chains (`?.`, `?[`) must NOT be wrapped when continuing a chain,
|
|
11
|
+
* otherwise null-propagation semantics change:
|
|
12
|
+
* `x?.Y.Z` is not equivalent to `(x?.Y).Z`.
|
|
13
|
+
*/
|
|
14
|
+
const hasConditionalAccessChain = (text) => text.includes("?.") || text.includes("?[");
|
|
15
|
+
const needsParensForPostfixByKind = (kind) => {
|
|
16
|
+
// These IR kinds emit C# primary/postfix expressions that can be directly followed by
|
|
17
|
+
// `.member`, `[index]`, or `(args)` without changing parse/semantics.
|
|
18
|
+
switch (kind) {
|
|
19
|
+
case "identifier":
|
|
20
|
+
case "memberAccess":
|
|
21
|
+
case "call":
|
|
22
|
+
case "new":
|
|
23
|
+
case "this":
|
|
24
|
+
case "literal":
|
|
25
|
+
case "array":
|
|
26
|
+
case "object":
|
|
27
|
+
case "templateLiteral":
|
|
28
|
+
return false;
|
|
29
|
+
default:
|
|
30
|
+
return true;
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
const needsParensForPostfixByText = (text) => {
|
|
34
|
+
const trimmed = text.trim();
|
|
35
|
+
// Cast-like forms frequently start with '(' (e.g. `(int)expr`) and must be wrapped
|
|
36
|
+
// when used as a postfix receiver/callee.
|
|
37
|
+
if (trimmed.startsWith("("))
|
|
38
|
+
return true;
|
|
39
|
+
// `as` has low precedence and must be wrapped before postfix operators.
|
|
40
|
+
if (trimmed.includes(" as "))
|
|
41
|
+
return true;
|
|
42
|
+
return false;
|
|
43
|
+
};
|
|
44
|
+
export const formatPostfixExpressionText = (expr, text) => {
|
|
45
|
+
// Never wrap conditional access chains when continuing a postfix chain, otherwise
|
|
46
|
+
// we change null-propagation semantics.
|
|
47
|
+
if (hasConditionalAccessChain(text))
|
|
48
|
+
return text;
|
|
49
|
+
if (needsParensForPostfixByKind(expr.kind) || needsParensForPostfixByText(text)) {
|
|
50
|
+
return `(${text})`;
|
|
51
|
+
}
|
|
52
|
+
return text;
|
|
53
|
+
};
|
|
54
|
+
const needsParensForCastOperandByKind = (kind) => {
|
|
55
|
+
// Cast operands must be a C# unary-expression; wrap composite expressions.
|
|
56
|
+
switch (kind) {
|
|
57
|
+
case "identifier":
|
|
58
|
+
case "memberAccess":
|
|
59
|
+
case "call":
|
|
60
|
+
case "new":
|
|
61
|
+
case "this":
|
|
62
|
+
case "literal":
|
|
63
|
+
case "array":
|
|
64
|
+
case "object":
|
|
65
|
+
case "templateLiteral":
|
|
66
|
+
case "unary":
|
|
67
|
+
case "update":
|
|
68
|
+
case "await":
|
|
69
|
+
case "numericNarrowing":
|
|
70
|
+
case "typeAssertion":
|
|
71
|
+
case "trycast":
|
|
72
|
+
case "stackalloc":
|
|
73
|
+
return false;
|
|
74
|
+
default:
|
|
75
|
+
return true;
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
export const formatCastOperandText = (expr, text) => {
|
|
79
|
+
if (needsParensForCastOperandByKind(expr.kind))
|
|
80
|
+
return `(${text})`;
|
|
81
|
+
return text;
|
|
82
|
+
};
|
|
83
|
+
//# sourceMappingURL=parentheses.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parentheses.js","sourceRoot":"","sources":["../../src/expressions/parentheses.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AAEH,MAAM,yBAAyB,GAAG,CAAC,IAAY,EAAW,EAAE,CAC1D,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAE7C,MAAM,2BAA2B,GAAG,CAAC,IAA0B,EAAW,EAAE;IAC1E,sFAAsF;IACtF,sEAAsE;IACtE,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,YAAY,CAAC;QAClB,KAAK,cAAc,CAAC;QACpB,KAAK,MAAM,CAAC;QACZ,KAAK,KAAK,CAAC;QACX,KAAK,MAAM,CAAC;QACZ,KAAK,SAAS,CAAC;QACf,KAAK,OAAO,CAAC;QACb,KAAK,QAAQ,CAAC;QACd,KAAK,iBAAiB;YACpB,OAAO,KAAK,CAAC;QACf;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,2BAA2B,GAAG,CAAC,IAAY,EAAW,EAAE;IAC5D,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAE5B,mFAAmF;IACnF,0CAA0C;IAC1C,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAEzC,wEAAwE;IACxE,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IAE1C,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAAG,CACzC,IAAkB,EAClB,IAAY,EACJ,EAAE;IACV,kFAAkF;IAClF,wCAAwC;IACxC,IAAI,yBAAyB,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAEjD,IAAI,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,2BAA2B,CAAC,IAAI,CAAC,EAAE,CAAC;QAChF,OAAO,IAAI,IAAI,GAAG,CAAC;IACrB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,+BAA+B,GAAG,CAAC,IAA0B,EAAW,EAAE;IAC9E,2EAA2E;IAC3E,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,YAAY,CAAC;QAClB,KAAK,cAAc,CAAC;QACpB,KAAK,MAAM,CAAC;QACZ,KAAK,KAAK,CAAC;QACX,KAAK,MAAM,CAAC;QACZ,KAAK,SAAS,CAAC;QACf,KAAK,OAAO,CAAC;QACb,KAAK,QAAQ,CAAC;QACd,KAAK,iBAAiB,CAAC;QACvB,KAAK,OAAO,CAAC;QACb,KAAK,QAAQ,CAAC;QACd,KAAK,OAAO,CAAC;QACb,KAAK,kBAAkB,CAAC;QACxB,KAAK,eAAe,CAAC;QACrB,KAAK,SAAS,CAAC;QACf,KAAK,YAAY;YACf,OAAO,KAAK,CAAC;QACf;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,IAAkB,EAClB,IAAY,EACJ,EAAE;IACV,IAAI,+BAA+B,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,IAAI,GAAG,CAAC;IACnE,OAAO,IAAI,CAAC;AACd,CAAC,CAAC"}
|
|
@@ -51,7 +51,7 @@ describe("Extension Method Emission", () => {
|
|
|
51
51
|
],
|
|
52
52
|
};
|
|
53
53
|
const result = emitModule(module);
|
|
54
|
-
expect(result).to.include("
|
|
54
|
+
expect(result).to.include("AddOne(this int x)");
|
|
55
55
|
});
|
|
56
56
|
it("should emit `this ref` for ref receivers", () => {
|
|
57
57
|
const module = {
|
|
@@ -104,7 +104,7 @@ describe("Extension Method Emission", () => {
|
|
|
104
104
|
],
|
|
105
105
|
};
|
|
106
106
|
const result = emitModule(module);
|
|
107
|
-
expect(result).to.include("
|
|
107
|
+
expect(result).to.include("Inc(this ref int x)");
|
|
108
108
|
});
|
|
109
109
|
});
|
|
110
110
|
//# sourceMappingURL=extension-methods.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator-exchange.d.ts","sourceRoot":"","sources":["../src/generator-exchange.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAyB,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,cAAc,EAAqB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"generator-exchange.d.ts","sourceRoot":"","sources":["../src/generator-exchange.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAyB,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,cAAc,EAAqB,MAAM,YAAY,CAAC;AA6F/D;;GAEG;AACH,eAAO,MAAM,0BAA0B,GACrC,QAAQ,QAAQ,EAChB,SAAS,cAAc,KACtB,CAAC,MAAM,EAAE,cAAc,CAmCzB,CAAC"}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
import { getIndent, indent } from "./types.js";
|
|
6
6
|
import { emitType } from "./type-emitter.js";
|
|
7
7
|
import { needsBidirectionalSupport, generateWrapperClass, } from "./generator-wrapper.js";
|
|
8
|
+
import { getCSharpName } from "./naming-policy.js";
|
|
8
9
|
/**
|
|
9
10
|
* Collect all generator functions from a module
|
|
10
11
|
*/
|
|
@@ -37,7 +38,8 @@ const generateExchangeClass = (func, context) => {
|
|
|
37
38
|
const bodyInd = getIndent(indent(context));
|
|
38
39
|
const parts = [];
|
|
39
40
|
let currentContext = context;
|
|
40
|
-
const
|
|
41
|
+
const csharpBaseName = getCSharpName(func.name, "methods", context);
|
|
42
|
+
const exchangeName = `${csharpBaseName}_exchange`;
|
|
41
43
|
parts.push(`${ind}public sealed class ${exchangeName}`);
|
|
42
44
|
parts.push(`${ind}{`);
|
|
43
45
|
// Determine output type from return type or yield expressions
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator-exchange.js","sourceRoot":"","sources":["../src/generator-exchange.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAkB,SAAS,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EACL,yBAAyB,EACzB,oBAAoB,GACrB,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"generator-exchange.js","sourceRoot":"","sources":["../src/generator-exchange.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator-wrapper.d.ts","sourceRoot":"","sources":["../src/generator-wrapper.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,cAAc,EAAqB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"generator-wrapper.d.ts","sourceRoot":"","sources":["../src/generator-wrapper.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,cAAc,EAAqB,MAAM,YAAY,CAAC;AAI/D;;;GAGG;AACH,eAAO,MAAM,wBAAwB,GACnC,YAAY,MAAM,GAAG,SAAS,EAC9B,SAAS,cAAc,KACtB;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,cAAc,CAAC;CA4D5B,CAAC;AAKF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,eAAO,MAAM,oBAAoB,GAC/B,MAAM,qBAAqB,EAC3B,SAAS,cAAc,KACtB,CAAC,MAAM,EAAE,cAAc,CAiOzB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,yBAAyB,GACpC,MAAM,qBAAqB,KAC1B,OAqBF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,sBAAsB,GACjC,MAAM,qBAAqB,KAC1B,OAuBF,CAAC"}
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
*/
|
|
13
13
|
import { getIndent, indent } from "./types.js";
|
|
14
14
|
import { emitType } from "./type-emitter.js";
|
|
15
|
+
import { emitCSharpName, getCSharpName } from "./naming-policy.js";
|
|
15
16
|
/**
|
|
16
17
|
* Extract Generator type arguments from a return type
|
|
17
18
|
* Generator<T, TReturn, TNext> -> { yieldType: T, returnType: TReturn, nextType: TNext }
|
|
@@ -119,8 +120,13 @@ export const generateWrapperClass = (func, context) => {
|
|
|
119
120
|
const innerInd = getIndent(indent(indent(context)));
|
|
120
121
|
const parts = [];
|
|
121
122
|
let currentContext = context;
|
|
122
|
-
const
|
|
123
|
-
const
|
|
123
|
+
const csharpBaseName = getCSharpName(func.name, "methods", context);
|
|
124
|
+
const wrapperName = `${csharpBaseName}_Generator`;
|
|
125
|
+
const exchangeName = `${csharpBaseName}_exchange`;
|
|
126
|
+
const nextMethodName = emitCSharpName("next", "methods", context);
|
|
127
|
+
const returnMethodName = emitCSharpName("return", "methods", context);
|
|
128
|
+
const throwMethodName = emitCSharpName("throw", "methods", context);
|
|
129
|
+
const returnValuePropertyName = emitCSharpName("returnValue", "properties", context);
|
|
124
130
|
// Extract type arguments
|
|
125
131
|
const { yieldType, returnType, nextType, hasNextType, newContext } = extractGeneratorTypeArgs(func.returnType, currentContext);
|
|
126
132
|
currentContext = newContext;
|
|
@@ -169,7 +175,7 @@ export const generateWrapperClass = (func, context) => {
|
|
|
169
175
|
const asyncKeyword = func.isAsync ? "async " : "";
|
|
170
176
|
const awaitKeyword = func.isAsync ? "await " : "";
|
|
171
177
|
const moveNextMethod = func.isAsync ? "MoveNextAsync()" : "MoveNext()";
|
|
172
|
-
parts.push(`${bodyInd}public ${asyncKeyword}${nextReturnType}
|
|
178
|
+
parts.push(`${bodyInd}public ${asyncKeyword}${nextReturnType} ${nextMethodName}(${nextParamType} value = default)`);
|
|
173
179
|
parts.push(`${bodyInd}{`);
|
|
174
180
|
// When already done, return cached result (with TReturn value if available)
|
|
175
181
|
// Note: JS IteratorResult has value: TYield | TReturn on completion
|
|
@@ -192,10 +198,10 @@ export const generateWrapperClass = (func, context) => {
|
|
|
192
198
|
parts.push(`${bodyInd}/// <summary>`);
|
|
193
199
|
parts.push(`${bodyInd}/// Gets the return value of the generator after it completes.`);
|
|
194
200
|
parts.push(`${bodyInd}/// Only valid after the generator is done (next() returned done=true).`);
|
|
195
|
-
parts.push(`${bodyInd}/// If terminated via
|
|
201
|
+
parts.push(`${bodyInd}/// If terminated via return(value), returns that value.`);
|
|
196
202
|
parts.push(`${bodyInd}/// Otherwise, returns the value from the generator's return statement.`);
|
|
197
203
|
parts.push(`${bodyInd}/// </summary>`);
|
|
198
|
-
parts.push(`${bodyInd}public ${returnType}
|
|
204
|
+
parts.push(`${bodyInd}public ${returnType} ${returnValuePropertyName} => _wasExternallyTerminated ? _returnValue : _getReturnValue();`);
|
|
199
205
|
parts.push("");
|
|
200
206
|
}
|
|
201
207
|
// return() method - use @ prefix since 'return' is a C# keyword
|
|
@@ -217,7 +223,7 @@ export const generateWrapperClass = (func, context) => {
|
|
|
217
223
|
parts.push(`${bodyInd}/// C# cannot represent JavaScript's TYield | TReturn union type.`);
|
|
218
224
|
parts.push(`${bodyInd}/// Access the return value via the 'returnValue' property after calling this method.`);
|
|
219
225
|
parts.push(`${bodyInd}/// </remarks>`);
|
|
220
|
-
parts.push(`${bodyInd}public ${asyncKeyword}${returnReturnType}
|
|
226
|
+
parts.push(`${bodyInd}public ${asyncKeyword}${returnReturnType} ${returnMethodName}(${returnParamType} value = default!)`);
|
|
221
227
|
parts.push(`${bodyInd}{`);
|
|
222
228
|
parts.push(`${innerInd}_done = true;`);
|
|
223
229
|
// If TReturn is not void, capture the return value for the returnValue property
|
|
@@ -250,7 +256,7 @@ export const generateWrapperClass = (func, context) => {
|
|
|
250
256
|
parts.push(`${bodyInd}/// suspended yield point. The exception is thrown externally after`);
|
|
251
257
|
parts.push(`${bodyInd}/// disposing the enumerator. This is a limitation of C# iterators.`);
|
|
252
258
|
parts.push(`${bodyInd}/// </summary>`);
|
|
253
|
-
parts.push(`${bodyInd}public ${throwReturnType}
|
|
259
|
+
parts.push(`${bodyInd}public ${throwReturnType} ${throwMethodName}(object e)`);
|
|
254
260
|
parts.push(`${bodyInd}{`);
|
|
255
261
|
parts.push(`${innerInd}_done = true;`);
|
|
256
262
|
if (func.isAsync) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator-wrapper.js","sourceRoot":"","sources":["../src/generator-wrapper.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAAkB,SAAS,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"generator-wrapper.js","sourceRoot":"","sources":["../src/generator-wrapper.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAAkB,SAAS,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnE;;;GAGG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CACtC,UAA8B,EAC9B,OAAuB,EAOvB,EAAE;IACF,IAAI,SAAS,GAAG,QAAQ,CAAC;IACzB,IAAI,OAAO,GAAG,MAAM,CAAC;IACrB,IAAI,QAAQ,GAAG,QAAQ,CAAC;IACxB,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,IAAI,cAAc,GAAG,OAAO,CAAC;IAE7B,IAAI,UAAU,EAAE,IAAI,KAAK,eAAe,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,UAAU,CAAC;QAC3B,wEAAwE;QACxE,IAAI,OAAO,CAAC,aAAa,IAAI,OAAO,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9D,MAAM,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;YAC9C,IAAI,YAAY,EAAE,CAAC;gBACjB,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,QAAQ,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;gBAC1D,cAAc,GAAG,IAAI,CAAC;gBACtB,SAAS,GAAG,EAAE,CAAC;YACjB,CAAC;YAED,IAAI,OAAO,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrC,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;gBAC/C,IACE,aAAa;oBACb,aAAa,CAAC,IAAI,KAAK,UAAU;oBACjC,CAAC,CACC,aAAa,CAAC,IAAI,KAAK,eAAe;wBACtC,aAAa,CAAC,IAAI,KAAK,WAAW,CACnC,EACD,CAAC;oBACD,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,QAAQ,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;oBAC3D,cAAc,GAAG,IAAI,CAAC;oBACtB,OAAO,GAAG,EAAE,CAAC;gBACf,CAAC;YACH,CAAC;YAED,IAAI,OAAO,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrC,MAAM,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;gBAC7C,IACE,WAAW;oBACX,CAAC,CACC,WAAW,CAAC,IAAI,KAAK,eAAe;wBACpC,WAAW,CAAC,IAAI,KAAK,WAAW,CACjC,EACD,CAAC;oBACD,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,QAAQ,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;oBACzD,cAAc,GAAG,IAAI,CAAC;oBACtB,QAAQ,GAAG,EAAE,CAAC;oBACd,WAAW,GAAG,IAAI,CAAC;gBACrB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO;QACL,SAAS;QACT,UAAU,EAAE,OAAO;QACnB,QAAQ;QACR,WAAW;QACX,UAAU,EAAE,cAAc;KAC3B,CAAC;AACJ,CAAC,CAAC;AAEF,sEAAsE;AACtE,iEAAiE;AAEjE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,IAA2B,EAC3B,OAAuB,EACG,EAAE;IAC5B,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IAC/B,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACpD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,cAAc,GAAG,OAAO,CAAC;IAE7B,MAAM,cAAc,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IACpE,MAAM,WAAW,GAAG,GAAG,cAAc,YAAY,CAAC;IAClD,MAAM,YAAY,GAAG,GAAG,cAAc,WAAW,CAAC;IAClD,MAAM,cAAc,GAAG,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAClE,MAAM,gBAAgB,GAAG,cAAc,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IACtE,MAAM,eAAe,GAAG,cAAc,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IACpE,MAAM,uBAAuB,GAAG,cAAc,CAC5C,aAAa,EACb,YAAY,EACZ,OAAO,CACR,CAAC;IAEF,yBAAyB;IACzB,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,GAChE,wBAAwB,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;IAC5D,cAAc,GAAG,UAAU,CAAC;IAE5B,mCAAmC;IACnC,MAAM,UAAU,GAAG,SAAS,CAAC;IAE7B,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,uBAAuB,WAAW,EAAE,CAAC,CAAC;IACvD,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IAEtB,iBAAiB;IACjB,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO;QACjC,CAAC,CAAC,uDAAuD,YAAY,GAAG;QACxE,CAAC,CAAC,kDAAkD,YAAY,GAAG,CAAC;IACtE,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,oBAAoB,cAAc,eAAe,CAAC,CAAC;IACxE,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,oBAAoB,YAAY,aAAa,CAAC,CAAC;IACpE,+FAA+F;IAC/F,MAAM,aAAa,GAAG,UAAU,KAAK,MAAM,CAAC;IAC5C,IAAI,aAAa,EAAE,CAAC;QAClB,KAAK,CAAC,IAAI,CACR,GAAG,OAAO,wCAAwC,UAAU,oBAAoB,CACjF,CAAC;QACF,oDAAoD;QACpD,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,WAAW,UAAU,2BAA2B,CAAC,CAAC;QACvE,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,gDAAgD,CAAC,CAAC;IACzE,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,6BAA6B,CAAC,CAAC;IACpD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,cAAc;IACd,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO;QACjC,CAAC,CAAC,uDAAuD,YAAY,GAAG;QACxE,CAAC,CAAC,kDAAkD,YAAY,GAAG,CAAC;IAEtE,4EAA4E;IAC5E,MAAM,iBAAiB,GAAG,aAAa;QACrC,CAAC,CAAC,GAAG,cAAc,gBAAgB,YAAY,kCAAkC,UAAU,kBAAkB;QAC7G,CAAC,CAAC,GAAG,cAAc,gBAAgB,YAAY,WAAW,CAAC;IAE7D,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,UAAU,WAAW,IAAI,iBAAiB,GAAG,CAAC,CAAC;IACpE,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC;IAC1B,KAAK,CAAC,IAAI,CACR,GAAG,QAAQ,4BAA4B,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,iBAAiB,GAAG,CACpG,CAAC;IACF,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,uBAAuB,CAAC,CAAC;IAC/C,IAAI,aAAa,EAAE,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,mCAAmC,CAAC,CAAC;IAC7D,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC;IAC1B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,gBAAgB;IAChB,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO;QACjC,CAAC,CAAC,6EAA6E,UAAU,IAAI;QAC7F,CAAC,CAAC,yCAAyC,UAAU,GAAG,CAAC;IAC3D,MAAM,aAAa,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/D,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IAClD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IAClD,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,YAAY,CAAC;IAEvE,KAAK,CAAC,IAAI,CACR,GAAG,OAAO,UAAU,YAAY,GAAG,cAAc,IAAI,cAAc,IAAI,aAAa,mBAAmB,CACxG,CAAC;IACF,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC;IAC1B,4EAA4E;IAC5E,oEAAoE;IACpE,2EAA2E;IAC3E,KAAK,CAAC,IAAI,CACR,GAAG,QAAQ,+DAA+D,UAAU,oBAAoB,CACzG,CAAC;IACF,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,0BAA0B,CAAC,CAAC;IAClD,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,OAAO,YAAY,eAAe,cAAc,GAAG,CAAC,CAAC;IAC3E,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,GAAG,CAAC,CAAC;IAC3B,KAAK,CAAC,IAAI,CACR,GAAG,QAAQ,wDAAwD,UAAU,6BAA6B,CAC3G,CAAC;IACF,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,GAAG,CAAC,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,eAAe,CAAC,CAAC;IACvC,yDAAyD;IACzD,uFAAuF;IACvF,iGAAiG;IACjG,KAAK,CAAC,IAAI,CACR,GAAG,QAAQ,oDAAoD,UAAU,oBAAoB,CAC9F,CAAC;IACF,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC;IAC1B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,6EAA6E;IAC7E,IAAI,aAAa,EAAE,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,eAAe,CAAC,CAAC;QACtC,KAAK,CAAC,IAAI,CACR,GAAG,OAAO,gEAAgE,CAC3E,CAAC;QACF,KAAK,CAAC,IAAI,CACR,GAAG,OAAO,yEAAyE,CACpF,CAAC;QACF,KAAK,CAAC,IAAI,CACR,GAAG,OAAO,0DAA0D,CACrE,CAAC;QACF,KAAK,CAAC,IAAI,CACR,GAAG,OAAO,yEAAyE,CACpF,CAAC;QACF,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,gBAAgB,CAAC,CAAC;QACvC,KAAK,CAAC,IAAI,CACR,GAAG,OAAO,UAAU,UAAU,IAAI,uBAAuB,kEAAkE,CAC5H,CAAC;QACF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,gEAAgE;IAChE,uDAAuD;IACvD,iFAAiF;IACjF,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO;QACnC,CAAC,CAAC,6EAA6E,UAAU,IAAI;QAC7F,CAAC,CAAC,yCAAyC,UAAU,GAAG,CAAC;IAE3D,kEAAkE;IAClE,wFAAwF;IACxF,MAAM,eAAe,GAAG,UAAU,KAAK,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;IAEvE,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,eAAe,CAAC,CAAC;IACtC,KAAK,CAAC,IAAI,CACR,GAAG,OAAO,yDAAyD,CACpE,CAAC;IACF,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,gBAAgB,CAAC,CAAC;IACvC,KAAK,CAAC,IAAI,CACR,GAAG,OAAO,iEAAiE,CAC5E,CAAC;IACF,KAAK,CAAC,IAAI,CACR,GAAG,OAAO,+EAA+E,CAC1F,CAAC;IACF,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,eAAe,CAAC,CAAC;IACtC,KAAK,CAAC,IAAI,CACR,GAAG,OAAO,kFAAkF,CAC7F,CAAC;IACF,KAAK,CAAC,IAAI,CACR,GAAG,OAAO,mEAAmE,CAC9E,CAAC;IACF,KAAK,CAAC,IAAI,CACR,GAAG,OAAO,uFAAuF,CAClG,CAAC;IACF,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,gBAAgB,CAAC,CAAC;IACvC,KAAK,CAAC,IAAI,CACR,GAAG,OAAO,UAAU,YAAY,GAAG,gBAAgB,IAAI,gBAAgB,IAAI,eAAe,oBAAoB,CAC/G,CAAC;IACF,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC;IAC1B,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,eAAe,CAAC,CAAC;IACvC,gFAAgF;IAChF,IAAI,aAAa,EAAE,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,uBAAuB,CAAC,CAAC;QAC/C,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,kCAAkC,CAAC,CAAC;IAC5D,CAAC;IACD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,mCAAmC,CAAC,CAAC;IAC7D,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,wBAAwB,CAAC,CAAC;IAClD,CAAC;IACD,qGAAqG;IACrG,KAAK,CAAC,IAAI,CACR,GAAG,QAAQ,oDAAoD,UAAU,oBAAoB,CAC9F,CAAC;IACF,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC;IAC1B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,8DAA8D;IAC9D,+EAA+E;IAC/E,sEAAsE;IACtE,4EAA4E;IAC5E,4EAA4E;IAC5E,mEAAmE;IACnE,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO;QAClC,CAAC,CAAC,6EAA6E,UAAU,IAAI;QAC7F,CAAC,CAAC,yCAAyC,UAAU,GAAG,CAAC;IAE3D,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,eAAe,CAAC,CAAC;IACtC,KAAK,CAAC,IAAI,CACR,GAAG,OAAO,iEAAiE,CAC5E,CAAC;IACF,KAAK,CAAC,IAAI,CACR,GAAG,OAAO,wEAAwE,CACnF,CAAC;IACF,KAAK,CAAC,IAAI,CACR,GAAG,OAAO,qEAAqE,CAChF,CAAC;IACF,KAAK,CAAC,IAAI,CACR,GAAG,OAAO,qEAAqE,CAChF,CAAC;IACF,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,gBAAgB,CAAC,CAAC;IACvC,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,UAAU,eAAe,IAAI,eAAe,YAAY,CAAC,CAAC;IAC/E,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC;IAC1B,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,eAAe,CAAC,CAAC;IACvC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,6CAA6C,CAAC,CAAC;IACvE,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,wBAAwB,CAAC,CAAC;IAClD,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,iDAAiD,CAAC,CAAC;IACzE,KAAK,CAAC,IAAI,CACR,GAAG,QAAQ,uEAAuE,CACnF,CAAC;IACF,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC;IAE1B,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IAEtB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,cAAc,CAAC,CAAC;AAC5C,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACvC,IAA2B,EAClB,EAAE;IACX,IAAI,CAAC,IAAI,CAAC,WAAW;QAAE,OAAO,KAAK,CAAC;IAEpC,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,KAAK,eAAe,EAAE,CAAC;QAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC;QAChC,IAAI,OAAO,CAAC,aAAa,IAAI,OAAO,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9D,MAAM,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;YAC7C,kCAAkC;YAClC,IACE,WAAW;gBACX,CAAC,CACC,WAAW,CAAC,IAAI,KAAK,eAAe;oBACpC,WAAW,CAAC,IAAI,KAAK,WAAW,CACjC,EACD,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,IAA2B,EAClB,EAAE;IACX,IAAI,CAAC,IAAI,CAAC,WAAW;QAAE,OAAO,KAAK,CAAC;IAEpC,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,KAAK,eAAe,EAAE,CAAC;QAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC;QAChC,sEAAsE;QACtE,IAAI,OAAO,CAAC,aAAa,IAAI,OAAO,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9D,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;YAC/C,yCAAyC;YACzC,IACE,aAAa;gBACb,aAAa,CAAC,IAAI,KAAK,UAAU;gBACjC,CAAC,CACC,aAAa,CAAC,IAAI,KAAK,eAAe;oBACtC,aAAa,CAAC,IAAI,KAAK,WAAW,CACnC,EACD,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC,CAAC"}
|
|
@@ -118,28 +118,28 @@ describe("Generator Wrapper", () => {
|
|
|
118
118
|
const context = createContext({ rootNamespace: "Test" });
|
|
119
119
|
const [code] = generateWrapperClass(func, context);
|
|
120
120
|
// Class declaration
|
|
121
|
-
expect(code).to.include("public sealed class
|
|
121
|
+
expect(code).to.include("public sealed class Counter_Generator");
|
|
122
122
|
// Private fields
|
|
123
123
|
expect(code).to.include("private readonly");
|
|
124
|
-
expect(code).to.include("IEnumerator<
|
|
124
|
+
expect(code).to.include("IEnumerator<Counter_exchange>");
|
|
125
125
|
expect(code).to.include("_enumerator");
|
|
126
|
-
expect(code).to.include("
|
|
126
|
+
expect(code).to.include("Counter_exchange _exchange");
|
|
127
127
|
expect(code).to.include("bool _done = false");
|
|
128
128
|
// Constructor
|
|
129
|
-
expect(code).to.include("public
|
|
130
|
-
expect(code).to.include("IEnumerable<
|
|
129
|
+
expect(code).to.include("public Counter_Generator(");
|
|
130
|
+
expect(code).to.include("IEnumerable<Counter_exchange> enumerable");
|
|
131
131
|
expect(code).to.include("GetEnumerator()");
|
|
132
132
|
// next() method
|
|
133
|
-
expect(code).to.include("public global::Tsonic.Runtime.IteratorResult<double>
|
|
133
|
+
expect(code).to.include("public global::Tsonic.Runtime.IteratorResult<double> Next(");
|
|
134
134
|
expect(code).to.include("double? value = default");
|
|
135
135
|
expect(code).to.include("_exchange.Input = value");
|
|
136
136
|
expect(code).to.include("MoveNext()");
|
|
137
137
|
expect(code).to.include("_exchange.Output");
|
|
138
138
|
// return() method - takes object when TReturn is void
|
|
139
|
-
expect(code).to.include("public global::Tsonic.Runtime.IteratorResult<double>
|
|
139
|
+
expect(code).to.include("public global::Tsonic.Runtime.IteratorResult<double> Return(");
|
|
140
140
|
expect(code).to.include("Dispose()");
|
|
141
141
|
// throw() method
|
|
142
|
-
expect(code).to.include("public global::Tsonic.Runtime.IteratorResult<double>
|
|
142
|
+
expect(code).to.include("public global::Tsonic.Runtime.IteratorResult<double> Throw(object e)");
|
|
143
143
|
expect(code).to.include("System.Exception");
|
|
144
144
|
});
|
|
145
145
|
it("should generate async wrapper class for async generator", () => {
|
|
@@ -155,13 +155,13 @@ describe("Generator Wrapper", () => {
|
|
|
155
155
|
const context = createContext({ rootNamespace: "Test" });
|
|
156
156
|
const [code] = generateWrapperClass(func, context);
|
|
157
157
|
// Async class
|
|
158
|
-
expect(code).to.include("public sealed class
|
|
158
|
+
expect(code).to.include("public sealed class AsyncCounter_Generator");
|
|
159
159
|
// Async enumerator
|
|
160
|
-
expect(code).to.include("IAsyncEnumerator<
|
|
161
|
-
expect(code).to.include("IAsyncEnumerable<
|
|
160
|
+
expect(code).to.include("IAsyncEnumerator<AsyncCounter_exchange>");
|
|
161
|
+
expect(code).to.include("IAsyncEnumerable<AsyncCounter_exchange>");
|
|
162
162
|
expect(code).to.include("GetAsyncEnumerator()");
|
|
163
163
|
// Async next() method
|
|
164
|
-
expect(code).to.include("public async global::System.Threading.Tasks.Task<global::Tsonic.Runtime.IteratorResult<double>>
|
|
164
|
+
expect(code).to.include("public async global::System.Threading.Tasks.Task<global::Tsonic.Runtime.IteratorResult<double>> Next(");
|
|
165
165
|
expect(code).to.include("await _enumerator.MoveNextAsync()");
|
|
166
166
|
// Async return() method
|
|
167
167
|
expect(code).to.include("public async");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator-wrapper.test.js","sourceRoot":"","sources":["../src/generator-wrapper.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"generator-wrapper.test.js","sourceRoot":"","sources":["../src/generator-wrapper.test.ts"],"names":[],"mappings":"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"}
|
package/dist/generator.test.js
CHANGED
|
@@ -11,7 +11,7 @@ describe("Generator Emission", () => {
|
|
|
11
11
|
kind: "module",
|
|
12
12
|
filePath: "/test/counter.ts",
|
|
13
13
|
namespace: "Test",
|
|
14
|
-
className: "
|
|
14
|
+
className: "Counter",
|
|
15
15
|
isStaticContainer: true,
|
|
16
16
|
imports: [],
|
|
17
17
|
exports: [],
|
|
@@ -81,15 +81,15 @@ describe("Generator Emission", () => {
|
|
|
81
81
|
};
|
|
82
82
|
const code = emitModule(module);
|
|
83
83
|
// Should contain exchange class
|
|
84
|
-
expect(code).to.include("public sealed class
|
|
84
|
+
expect(code).to.include("public sealed class Counter_exchange");
|
|
85
85
|
expect(code).to.include("public object? Input { get; set; }");
|
|
86
86
|
expect(code).to.include("public double Output { get; set; }");
|
|
87
87
|
// Should have IEnumerable return type with fully-qualified name
|
|
88
|
-
expect(code).to.include("
|
|
88
|
+
expect(code).to.include("Counter_exchange> Counter()");
|
|
89
89
|
// Should NOT use using directives - all types use global:: FQN
|
|
90
90
|
expect(code).to.not.include("using System.Collections.Generic");
|
|
91
91
|
// Should initialize exchange variable
|
|
92
|
-
expect(code).to.include("var exchange = new
|
|
92
|
+
expect(code).to.include("var exchange = new Counter_exchange()");
|
|
93
93
|
// Should emit yield with exchange object pattern
|
|
94
94
|
expect(code).to.include("exchange.Output = i");
|
|
95
95
|
expect(code).to.include("yield return exchange");
|
|
@@ -99,7 +99,7 @@ describe("Generator Emission", () => {
|
|
|
99
99
|
kind: "module",
|
|
100
100
|
filePath: "/test/asyncCounter.ts",
|
|
101
101
|
namespace: "Test",
|
|
102
|
-
className: "
|
|
102
|
+
className: "AsyncCounter",
|
|
103
103
|
isStaticContainer: true,
|
|
104
104
|
imports: [],
|
|
105
105
|
exports: [],
|
|
@@ -169,9 +169,9 @@ describe("Generator Emission", () => {
|
|
|
169
169
|
};
|
|
170
170
|
const code = emitModule(module);
|
|
171
171
|
// Should contain exchange class
|
|
172
|
-
expect(code).to.include("public sealed class
|
|
172
|
+
expect(code).to.include("public sealed class AsyncCounter_exchange");
|
|
173
173
|
// Should have IAsyncEnumerable return type with async and global:: FQN
|
|
174
|
-
expect(code).to.include("public static async global::System.Collections.Generic.IAsyncEnumerable<
|
|
174
|
+
expect(code).to.include("public static async global::System.Collections.Generic.IAsyncEnumerable<AsyncCounter_exchange> AsyncCounter()");
|
|
175
175
|
});
|
|
176
176
|
describe("Bidirectional Generators", () => {
|
|
177
177
|
it("should generate wrapper class for bidirectional generator", () => {
|
|
@@ -179,7 +179,7 @@ describe("Generator Emission", () => {
|
|
|
179
179
|
kind: "module",
|
|
180
180
|
filePath: "/test/accumulator.ts",
|
|
181
181
|
namespace: "Test",
|
|
182
|
-
className: "
|
|
182
|
+
className: "Accumulator",
|
|
183
183
|
isStaticContainer: true,
|
|
184
184
|
imports: [],
|
|
185
185
|
exports: [],
|
|
@@ -267,32 +267,32 @@ describe("Generator Emission", () => {
|
|
|
267
267
|
const code = emitModule(module);
|
|
268
268
|
// Note: IteratorResult<T> is now in Tsonic.Runtime, not emitted per-module
|
|
269
269
|
// Should generate exchange class
|
|
270
|
-
expect(code).to.include("public sealed class
|
|
270
|
+
expect(code).to.include("public sealed class Accumulator_exchange");
|
|
271
271
|
expect(code).to.include("public double? Input { get; set; }");
|
|
272
272
|
expect(code).to.include("public double Output { get; set; }");
|
|
273
273
|
// Should generate wrapper class
|
|
274
|
-
expect(code).to.include("public sealed class
|
|
275
|
-
expect(code).to.include("IEnumerator<
|
|
276
|
-
expect(code).to.include("
|
|
274
|
+
expect(code).to.include("public sealed class Accumulator_Generator");
|
|
275
|
+
expect(code).to.include("IEnumerator<Accumulator_exchange> _enumerator");
|
|
276
|
+
expect(code).to.include("Accumulator_exchange _exchange");
|
|
277
277
|
// next() method with nullable parameter
|
|
278
|
-
expect(code).to.include("global::Tsonic.Runtime.IteratorResult<double>
|
|
278
|
+
expect(code).to.include("global::Tsonic.Runtime.IteratorResult<double> Next(double? value");
|
|
279
279
|
expect(code).to.include("_exchange.Input = value");
|
|
280
280
|
expect(code).to.include("MoveNext()");
|
|
281
281
|
// return() and throw() methods
|
|
282
|
-
expect(code).to.include("global::Tsonic.Runtime.IteratorResult<double>
|
|
283
|
-
expect(code).to.include("global::Tsonic.Runtime.IteratorResult<double>
|
|
282
|
+
expect(code).to.include("global::Tsonic.Runtime.IteratorResult<double> Return(");
|
|
283
|
+
expect(code).to.include("global::Tsonic.Runtime.IteratorResult<double> Throw(object e)");
|
|
284
284
|
// Function should return wrapper type
|
|
285
|
-
expect(code).to.include("
|
|
285
|
+
expect(code).to.include("Accumulator_Generator Accumulator(");
|
|
286
286
|
// Should use local iterator pattern
|
|
287
287
|
expect(code).to.include("__iterator()");
|
|
288
|
-
expect(code).to.include("return new
|
|
288
|
+
expect(code).to.include("return new Accumulator_Generator(__iterator(), exchange)");
|
|
289
289
|
});
|
|
290
290
|
it("should emit yieldStatement with receiveTarget", () => {
|
|
291
291
|
const module = {
|
|
292
292
|
kind: "module",
|
|
293
293
|
filePath: "/test/receiver.ts",
|
|
294
294
|
namespace: "Test",
|
|
295
|
-
className: "
|
|
295
|
+
className: "Receiver",
|
|
296
296
|
isStaticContainer: true,
|
|
297
297
|
imports: [],
|
|
298
298
|
exports: [],
|
|
@@ -340,7 +340,7 @@ describe("Generator Emission", () => {
|
|
|
340
340
|
kind: "module",
|
|
341
341
|
filePath: "/test/unidirectional.ts",
|
|
342
342
|
namespace: "Test",
|
|
343
|
-
className: "
|
|
343
|
+
className: "Unidirectional",
|
|
344
344
|
isStaticContainer: true,
|
|
345
345
|
imports: [],
|
|
346
346
|
exports: [],
|
|
@@ -379,19 +379,19 @@ describe("Generator Emission", () => {
|
|
|
379
379
|
};
|
|
380
380
|
const code = emitModule(module);
|
|
381
381
|
// Should NOT generate wrapper class for unidirectional
|
|
382
|
-
expect(code).to.not.include("
|
|
382
|
+
expect(code).to.not.include("Range_Generator");
|
|
383
383
|
expect(code).to.not.include("IteratorResult<");
|
|
384
384
|
// Should use IEnumerable return type
|
|
385
|
-
expect(code).to.include("IEnumerable<
|
|
385
|
+
expect(code).to.include("IEnumerable<Range_exchange> Range()");
|
|
386
386
|
// Should generate exchange class
|
|
387
|
-
expect(code).to.include("public sealed class
|
|
387
|
+
expect(code).to.include("public sealed class Range_exchange");
|
|
388
388
|
});
|
|
389
389
|
it("should handle async bidirectional generator", () => {
|
|
390
390
|
const module = {
|
|
391
391
|
kind: "module",
|
|
392
392
|
filePath: "/test/asyncBidir.ts",
|
|
393
393
|
namespace: "Test",
|
|
394
|
-
className: "
|
|
394
|
+
className: "AsyncBidir",
|
|
395
395
|
isStaticContainer: true,
|
|
396
396
|
imports: [],
|
|
397
397
|
exports: [],
|
|
@@ -428,9 +428,9 @@ describe("Generator Emission", () => {
|
|
|
428
428
|
};
|
|
429
429
|
const code = emitModule(module);
|
|
430
430
|
// Should generate async wrapper
|
|
431
|
-
expect(code).to.include("
|
|
432
|
-
expect(code).to.include("IAsyncEnumerator<
|
|
433
|
-
expect(code).to.include("async global::System.Threading.Tasks.Task<global::Tsonic.Runtime.IteratorResult<double>>
|
|
431
|
+
expect(code).to.include("AsyncAccumulator_Generator");
|
|
432
|
+
expect(code).to.include("IAsyncEnumerator<AsyncAccumulator_exchange>");
|
|
433
|
+
expect(code).to.include("async global::System.Threading.Tasks.Task<global::Tsonic.Runtime.IteratorResult<double>> Next(");
|
|
434
434
|
expect(code).to.include("await _enumerator.MoveNextAsync()");
|
|
435
435
|
});
|
|
436
436
|
describe("Edge Cases", () => {
|
|
@@ -440,7 +440,7 @@ describe("Generator Emission", () => {
|
|
|
440
440
|
kind: "module",
|
|
441
441
|
filePath: "/test/stringNext.ts",
|
|
442
442
|
namespace: "Test",
|
|
443
|
-
className: "
|
|
443
|
+
className: "StringNext",
|
|
444
444
|
isStaticContainer: true,
|
|
445
445
|
imports: [],
|
|
446
446
|
exports: [],
|
|
@@ -479,7 +479,7 @@ describe("Generator Emission", () => {
|
|
|
479
479
|
// Should generate wrapper with string? Input
|
|
480
480
|
expect(code).to.include("public string? Input { get; set; }");
|
|
481
481
|
// next() method should accept string?
|
|
482
|
-
expect(code).to.include("
|
|
482
|
+
expect(code).to.include("Next(string? value = default)");
|
|
483
483
|
});
|
|
484
484
|
it("should use await foreach for async yield* delegation", () => {
|
|
485
485
|
// Async generator with yield* should use await foreach
|
|
@@ -487,7 +487,7 @@ describe("Generator Emission", () => {
|
|
|
487
487
|
kind: "module",
|
|
488
488
|
filePath: "/test/asyncYieldStar.ts",
|
|
489
489
|
namespace: "Test",
|
|
490
|
-
className: "
|
|
490
|
+
className: "AsyncYieldStar",
|
|
491
491
|
isStaticContainer: true,
|
|
492
492
|
imports: [],
|
|
493
493
|
exports: [],
|
|
@@ -534,7 +534,7 @@ describe("Generator Emission", () => {
|
|
|
534
534
|
kind: "module",
|
|
535
535
|
filePath: "/test/arrayPattern.ts",
|
|
536
536
|
namespace: "Test",
|
|
537
|
-
className: "
|
|
537
|
+
className: "ArrayPattern",
|
|
538
538
|
isStaticContainer: true,
|
|
539
539
|
imports: [],
|
|
540
540
|
exports: [],
|
|
@@ -592,7 +592,7 @@ describe("Generator Emission", () => {
|
|
|
592
592
|
kind: "module",
|
|
593
593
|
filePath: "/test/objectPattern.ts",
|
|
594
594
|
namespace: "Test",
|
|
595
|
-
className: "
|
|
595
|
+
className: "ObjectPattern",
|
|
596
596
|
isStaticContainer: true,
|
|
597
597
|
imports: [],
|
|
598
598
|
exports: [],
|
|
@@ -664,7 +664,7 @@ describe("Generator Emission", () => {
|
|
|
664
664
|
kind: "module",
|
|
665
665
|
filePath: "/test/generatorReturn.ts",
|
|
666
666
|
namespace: "Test",
|
|
667
|
-
className: "
|
|
667
|
+
className: "GeneratorReturn",
|
|
668
668
|
isStaticContainer: true,
|
|
669
669
|
imports: [],
|
|
670
670
|
exports: [],
|
|
@@ -717,7 +717,7 @@ describe("Generator Emission", () => {
|
|
|
717
717
|
kind: "module",
|
|
718
718
|
filePath: "/test/bareReturn.ts",
|
|
719
719
|
namespace: "Test",
|
|
720
|
-
className: "
|
|
720
|
+
className: "BareReturn",
|
|
721
721
|
isStaticContainer: true,
|
|
722
722
|
imports: [],
|
|
723
723
|
exports: [],
|