@tsonic/emitter 0.0.13 → 0.0.15
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/array.test.d.ts +1 -1
- package/dist/array.test.js +17 -16
- package/dist/array.test.js.map +1 -1
- package/dist/core/attributes.test.js +2 -2
- package/dist/core/attributes.test.js.map +1 -1
- package/dist/core/imports.d.ts.map +1 -1
- package/dist/core/imports.js +1 -9
- package/dist/core/imports.js.map +1 -1
- package/dist/core/module-emitter/static-container.d.ts.map +1 -1
- package/dist/core/module-emitter/static-container.js +3 -1
- package/dist/core/module-emitter/static-container.js.map +1 -1
- package/dist/core/unsafe.d.ts +11 -0
- package/dist/core/unsafe.d.ts.map +1 -0
- package/dist/core/unsafe.js +264 -0
- package/dist/core/unsafe.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 +4 -3
- package/dist/emitter-types/context.js.map +1 -1
- package/dist/emitter-types/core.d.ts +4 -2
- package/dist/emitter-types/core.d.ts.map +1 -1
- package/dist/emitter-types/fqn.d.ts +0 -7
- package/dist/emitter-types/fqn.d.ts.map +1 -1
- package/dist/emitter-types/fqn.js +0 -8
- package/dist/emitter-types/fqn.js.map +1 -1
- package/dist/expression-emitter.d.ts.map +1 -1
- package/dist/expression-emitter.js +268 -63
- package/dist/expression-emitter.js.map +1 -1
- package/dist/expressions/access.d.ts.map +1 -1
- package/dist/expressions/access.js +36 -40
- package/dist/expressions/access.js.map +1 -1
- package/dist/expressions/calls.d.ts.map +1 -1
- package/dist/expressions/calls.js +233 -70
- package/dist/expressions/calls.js.map +1 -1
- package/dist/expressions/collections.d.ts.map +1 -1
- package/dist/expressions/collections.js +37 -41
- package/dist/expressions/collections.js.map +1 -1
- package/dist/expressions/functions.d.ts.map +1 -1
- package/dist/expressions/functions.js +30 -10
- package/dist/expressions/functions.js.map +1 -1
- package/dist/expressions/identifiers.d.ts.map +1 -1
- package/dist/expressions/identifiers.js +5 -30
- package/dist/expressions/identifiers.js.map +1 -1
- package/dist/expressions/index.test.js +87 -198
- package/dist/expressions/index.test.js.map +1 -1
- package/dist/expressions/literals.d.ts +4 -5
- package/dist/expressions/literals.d.ts.map +1 -1
- package/dist/expressions/literals.js +62 -15
- package/dist/expressions/literals.js.map +1 -1
- package/dist/expressions/operators.d.ts +0 -4
- package/dist/expressions/operators.d.ts.map +1 -1
- package/dist/expressions/operators.js +49 -19
- package/dist/expressions/operators.js.map +1 -1
- package/dist/expressions/other.d.ts.map +1 -1
- package/dist/expressions/other.js +21 -3
- package/dist/expressions/other.js.map +1 -1
- package/dist/extension-methods.test.d.ts +5 -0
- package/dist/extension-methods.test.d.ts.map +1 -0
- package/dist/extension-methods.test.js +110 -0
- package/dist/extension-methods.test.js.map +1 -0
- package/dist/generator-exchange.d.ts.map +1 -1
- package/dist/generator-exchange.js +2 -1
- package/dist/generator-exchange.js.map +1 -1
- package/dist/generator.test.js +9 -9
- package/dist/generator.test.js.map +1 -1
- package/dist/golden-tests/discovery.d.ts +6 -11
- package/dist/golden-tests/discovery.d.ts.map +1 -1
- package/dist/golden-tests/discovery.js +14 -79
- package/dist/golden-tests/discovery.js.map +1 -1
- package/dist/golden-tests/index.d.ts +1 -1
- package/dist/golden-tests/index.d.ts.map +1 -1
- package/dist/golden-tests/index.js.map +1 -1
- package/dist/golden-tests/runner.d.ts.map +1 -1
- package/dist/golden-tests/runner.js +6 -7
- package/dist/golden-tests/runner.js.map +1 -1
- package/dist/golden-tests/types.d.ts +0 -7
- package/dist/golden-tests/types.d.ts.map +1 -1
- package/dist/golden.test.d.ts +3 -10
- package/dist/golden.test.d.ts.map +1 -1
- package/dist/golden.test.js +8 -24
- package/dist/golden.test.js.map +1 -1
- package/dist/hierarchical-bindings.test.js +17 -11
- package/dist/hierarchical-bindings.test.js.map +1 -1
- package/dist/integration.test.js +61 -20
- package/dist/integration.test.js.map +1 -1
- package/dist/invariants/emitter-globals-subset.test.d.ts +1 -1
- package/dist/invariants/emitter-globals-subset.test.js +34 -74
- package/dist/invariants/emitter-globals-subset.test.js.map +1 -1
- package/dist/invariants/numeric-proof-contract.test.js +3 -3
- package/dist/invariants/numeric-proof-contract.test.js.map +1 -1
- package/dist/patterns.d.ts +98 -0
- package/dist/patterns.d.ts.map +1 -0
- package/dist/patterns.js +366 -0
- package/dist/patterns.js.map +1 -0
- package/dist/patterns.test.d.ts +15 -0
- package/dist/patterns.test.d.ts.map +1 -0
- package/dist/patterns.test.js +1262 -0
- package/dist/patterns.test.js.map +1 -0
- package/dist/specialization/generation.d.ts.map +1 -1
- package/dist/specialization/generation.js +2 -2
- package/dist/specialization/generation.js.map +1 -1
- package/dist/specialization/substitution.d.ts.map +1 -1
- package/dist/specialization/substitution.js +4 -0
- package/dist/specialization/substitution.js.map +1 -1
- package/dist/specialization/type-aliases.test.js +1 -1
- package/dist/specialization/type-aliases.test.js.map +1 -1
- package/dist/statement-emitter.d.ts.map +1 -1
- package/dist/statement-emitter.js +1 -1
- package/dist/statement-emitter.js.map +1 -1
- package/dist/statements/blocks.d.ts.map +1 -1
- package/dist/statements/blocks.js +14 -45
- package/dist/statements/blocks.js.map +1 -1
- package/dist/statements/classes/index.d.ts +1 -1
- package/dist/statements/classes/index.d.ts.map +1 -1
- package/dist/statements/classes/index.js +1 -1
- package/dist/statements/classes/index.js.map +1 -1
- package/dist/statements/classes/inline-types.d.ts.map +1 -1
- package/dist/statements/classes/inline-types.js +11 -1
- 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 +30 -12
- 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 +51 -23
- package/dist/statements/classes/members/methods.js.map +1 -1
- package/dist/statements/classes/members/orchestrator.d.ts.map +1 -1
- package/dist/statements/classes/members/orchestrator.js +1 -3
- package/dist/statements/classes/members/orchestrator.js.map +1 -1
- package/dist/statements/classes/members/properties.d.ts.map +1 -1
- package/dist/statements/classes/members/properties.js +56 -9
- package/dist/statements/classes/members/properties.js.map +1 -1
- package/dist/statements/classes/parameters.d.ts +43 -1
- package/dist/statements/classes/parameters.d.ts.map +1 -1
- package/dist/statements/classes/parameters.js +73 -13
- package/dist/statements/classes/parameters.js.map +1 -1
- package/dist/statements/classes/properties.d.ts.map +1 -1
- package/dist/statements/classes/properties.js +1 -1
- package/dist/statements/classes/properties.js.map +1 -1
- package/dist/statements/classes.d.ts +1 -1
- package/dist/statements/classes.d.ts.map +1 -1
- package/dist/statements/classes.js +1 -1
- package/dist/statements/classes.js.map +1 -1
- package/dist/statements/control/conditionals.d.ts.map +1 -1
- package/dist/statements/control/conditionals.js +78 -23
- package/dist/statements/control/conditionals.js.map +1 -1
- package/dist/statements/control/loops.d.ts.map +1 -1
- package/dist/statements/control/loops.js +25 -5
- package/dist/statements/control/loops.js.map +1 -1
- package/dist/statements/declarations/classes.d.ts.map +1 -1
- package/dist/statements/declarations/classes.js +128 -10
- package/dist/statements/declarations/classes.js.map +1 -1
- package/dist/statements/declarations/functions.d.ts.map +1 -1
- package/dist/statements/declarations/functions.js +28 -12
- 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 +50 -7
- package/dist/statements/declarations/interfaces.js.map +1 -1
- package/dist/statements/declarations/type-aliases.d.ts.map +1 -1
- package/dist/statements/declarations/type-aliases.js +6 -1
- 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 +196 -38
- package/dist/statements/declarations/variables.js.map +1 -1
- package/dist/statements/index.test.js +7 -5
- package/dist/statements/index.test.js.map +1 -1
- package/dist/types/arrays.d.ts +3 -9
- package/dist/types/arrays.d.ts.map +1 -1
- package/dist/types/arrays.js +5 -19
- package/dist/types/arrays.js.map +1 -1
- package/dist/types/parameters.d.ts.map +1 -1
- package/dist/types/parameters.js +36 -1
- package/dist/types/parameters.js.map +1 -1
- package/dist/types/parameters.test.js +1 -1
- package/dist/types/parameters.test.js.map +1 -1
- package/dist/types/references.d.ts.map +1 -1
- package/dist/types/references.js +86 -51
- package/dist/types/references.js.map +1 -1
- package/dist/types/references.test.js +35 -95
- package/dist/types/references.test.js.map +1 -1
- package/dist/types/unions.d.ts.map +1 -1
- package/dist/types/unions.js +20 -0
- package/dist/types/unions.js.map +1 -1
- package/package.json +3 -3
|
@@ -4,9 +4,18 @@
|
|
|
4
4
|
import { getIndent, indent, dedent, withAsync, withScoped, } from "../../../types.js";
|
|
5
5
|
import { emitType, emitTypeParameters } from "../../../type-emitter.js";
|
|
6
6
|
import { emitBlockStatement } from "../../blocks.js";
|
|
7
|
-
import {
|
|
7
|
+
import { emitParametersWithDestructuring, generateParameterDestructuring, } from "../parameters.js";
|
|
8
8
|
import { escapeCSharpIdentifier } from "../../../emitter-types/index.js";
|
|
9
9
|
import { emitAttributes } from "../../../core/attributes.js";
|
|
10
|
+
const seedLocalNameMapFromParameters = (params, context) => {
|
|
11
|
+
const map = new Map(context.localNameMap ?? []);
|
|
12
|
+
for (const p of params) {
|
|
13
|
+
if (p.pattern.kind === "identifierPattern") {
|
|
14
|
+
map.set(p.pattern.name, escapeCSharpIdentifier(p.pattern.name));
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
return { ...context, localNameMap: map };
|
|
18
|
+
};
|
|
10
19
|
/**
|
|
11
20
|
* Emit a method declaration
|
|
12
21
|
*/
|
|
@@ -14,6 +23,21 @@ export const emitMethodMember = (member, context) => {
|
|
|
14
23
|
const ind = getIndent(context);
|
|
15
24
|
let currentContext = context;
|
|
16
25
|
const parts = [];
|
|
26
|
+
// Build method type parameter names FIRST - needed before emitting return/parameter types
|
|
27
|
+
// Type parameters must be in scope before we emit types that reference them
|
|
28
|
+
const methodTypeParams = new Set([
|
|
29
|
+
...(context.typeParameters ?? []),
|
|
30
|
+
...(member.typeParameters?.map((tp) => tp.name) ?? []),
|
|
31
|
+
]);
|
|
32
|
+
// Create signatureContext with method type parameters in scope
|
|
33
|
+
const signatureContext = {
|
|
34
|
+
...context,
|
|
35
|
+
typeParameters: methodTypeParams,
|
|
36
|
+
};
|
|
37
|
+
// Emit the <T, U> syntax and where clauses EARLY so nullable union emission
|
|
38
|
+
// can see type parameter constraint kinds when emitting return/parameter types.
|
|
39
|
+
const [typeParamsStr, whereClauses, typeParamContext] = emitTypeParameters(member.typeParameters, signatureContext);
|
|
40
|
+
currentContext = typeParamContext;
|
|
17
41
|
// Access modifier
|
|
18
42
|
const accessibility = member.accessibility ?? "public";
|
|
19
43
|
parts.push(accessibility);
|
|
@@ -24,10 +48,14 @@ export const emitMethodMember = (member, context) => {
|
|
|
24
48
|
if (member.isOverride) {
|
|
25
49
|
parts.push("override");
|
|
26
50
|
}
|
|
51
|
+
// Base method virtual (required when overridden in derived types)
|
|
52
|
+
if (!member.isStatic && !member.isOverride && member.isVirtual) {
|
|
53
|
+
parts.push("virtual");
|
|
54
|
+
}
|
|
27
55
|
if (member.isAsync) {
|
|
28
56
|
parts.push("async");
|
|
29
57
|
}
|
|
30
|
-
// Return type
|
|
58
|
+
// Return type - use signatureContext which has method type parameters in scope
|
|
31
59
|
if (member.returnType) {
|
|
32
60
|
const [returnType, newContext] = emitType(member.returnType, currentContext);
|
|
33
61
|
currentContext = newContext;
|
|
@@ -49,18 +77,15 @@ export const emitMethodMember = (member, context) => {
|
|
|
49
77
|
}
|
|
50
78
|
// Method name (escape C# keywords)
|
|
51
79
|
parts.push(escapeCSharpIdentifier(member.name));
|
|
52
|
-
//
|
|
53
|
-
const
|
|
54
|
-
currentContext =
|
|
55
|
-
// Parameters
|
|
56
|
-
const params = emitParameters(member.parameters, currentContext);
|
|
57
|
-
currentContext = params[1];
|
|
80
|
+
// Parameters (with destructuring support) - use signatureContext for type parameter scope
|
|
81
|
+
const paramsResult = emitParametersWithDestructuring(member.parameters, currentContext);
|
|
82
|
+
currentContext = paramsResult.context;
|
|
58
83
|
const whereClause = whereClauses.length > 0
|
|
59
84
|
? `\n${ind} ${whereClauses.join(`\n${ind} `)}`
|
|
60
85
|
: "";
|
|
61
86
|
// Method body
|
|
62
87
|
// Use withScoped to set typeParameters and returnType for nested expressions
|
|
63
|
-
const baseBodyContext = withAsync(indent(currentContext), member.isAsync);
|
|
88
|
+
const baseBodyContext = seedLocalNameMapFromParameters(member.parameters, withAsync(indent(currentContext), member.isAsync));
|
|
64
89
|
if (!member.body) {
|
|
65
90
|
// Abstract method without body
|
|
66
91
|
// Emit attributes before the method declaration
|
|
@@ -68,15 +93,11 @@ export const emitMethodMember = (member, context) => {
|
|
|
68
93
|
const signature = parts.join(" ");
|
|
69
94
|
// Build final code with attributes (if any)
|
|
70
95
|
const attrPrefix = attributesCode ? attributesCode + "\n" : "";
|
|
71
|
-
const code = `${attrPrefix}${ind}${signature}${typeParamsStr}(${
|
|
96
|
+
const code = `${attrPrefix}${ind}${signature}${typeParamsStr}(${paramsResult.parameterList})${whereClause};`;
|
|
72
97
|
return [code, attrContext];
|
|
73
98
|
}
|
|
74
|
-
// Build type parameter names set for this method (includes class type params from context)
|
|
75
|
-
const methodTypeParams = new Set([
|
|
76
|
-
...(currentContext.typeParameters ?? []),
|
|
77
|
-
...(member.typeParameters?.map((tp) => tp.name) ?? []),
|
|
78
|
-
]);
|
|
79
99
|
// Emit body with scoped typeParameters and returnType
|
|
100
|
+
// Reuse methodTypeParams defined at the top of this function
|
|
80
101
|
// Note: member.body is guaranteed to exist here (early return above handles undefined case)
|
|
81
102
|
const body = member.body;
|
|
82
103
|
const [bodyCode, finalContext] = withScoped(baseBodyContext, {
|
|
@@ -100,14 +121,21 @@ export const emitMethodMember = (member, context) => {
|
|
|
100
121
|
});
|
|
101
122
|
}
|
|
102
123
|
}
|
|
103
|
-
// Inject out parameter initializations
|
|
124
|
+
// Inject destructuring and out parameter initializations
|
|
104
125
|
let finalBodyCode = bodyCode;
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
126
|
+
const bodyInd = getIndent(baseBodyContext);
|
|
127
|
+
const injectLines = [];
|
|
128
|
+
// Generate parameter destructuring statements
|
|
129
|
+
if (paramsResult.destructuringParams.length > 0) {
|
|
130
|
+
const [destructuringStmts] = generateParameterDestructuring(paramsResult.destructuringParams, bodyInd, finalContext);
|
|
131
|
+
injectLines.push(...destructuringStmts);
|
|
132
|
+
}
|
|
133
|
+
// Add out parameter initializations
|
|
134
|
+
for (const outParam of outParams) {
|
|
135
|
+
injectLines.push(`${bodyInd}${outParam.name} = default;`);
|
|
136
|
+
}
|
|
137
|
+
// Inject lines after opening brace
|
|
138
|
+
if (injectLines.length > 0) {
|
|
111
139
|
const lines = bodyCode.split("\n");
|
|
112
140
|
if (lines.length > 1) {
|
|
113
141
|
lines.splice(1, 0, ...injectLines, "");
|
|
@@ -119,7 +147,7 @@ export const emitMethodMember = (member, context) => {
|
|
|
119
147
|
const signature = parts.join(" ");
|
|
120
148
|
// Build final code with attributes (if any)
|
|
121
149
|
const attrPrefix = attributesCode ? attributesCode + "\n" : "";
|
|
122
|
-
const code = `${attrPrefix}${ind}${signature}${typeParamsStr}(${
|
|
150
|
+
const code = `${attrPrefix}${ind}${signature}${typeParamsStr}(${paramsResult.parameterList})${whereClause}\n${finalBodyCode}`;
|
|
123
151
|
return [code, dedent(attrContext)];
|
|
124
152
|
};
|
|
125
153
|
//# sourceMappingURL=methods.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"methods.js","sourceRoot":"","sources":["../../../../src/statements/classes/members/methods.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAEL,SAAS,EACT,MAAM,EACN,MAAM,EACN,SAAS,EACT,UAAU,GACX,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,
|
|
1
|
+
{"version":3,"file":"methods.js","sourceRoot":"","sources":["../../../../src/statements/classes/members/methods.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../../../src/statements/classes/members/orchestrator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../../../src/statements/classes/members/orchestrator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAKnD;;GAEG;AACH,eAAO,MAAM,eAAe,GAC1B,QAAQ,aAAa,EACrB,SAAS,cAAc,KACtB,CAAC,MAAM,EAAE,cAAc,CAgBzB,CAAC"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Class member emission orchestrator
|
|
3
3
|
*/
|
|
4
|
-
import { getIndent } from "../../../types.js";
|
|
5
4
|
import { emitPropertyMember } from "./properties.js";
|
|
6
5
|
import { emitMethodMember } from "./methods.js";
|
|
7
6
|
import { emitConstructorMember } from "./constructors.js";
|
|
@@ -9,7 +8,6 @@ import { emitConstructorMember } from "./constructors.js";
|
|
|
9
8
|
* Emit a class member (property, method, or constructor)
|
|
10
9
|
*/
|
|
11
10
|
export const emitClassMember = (member, context) => {
|
|
12
|
-
const ind = getIndent(context);
|
|
13
11
|
switch (member.kind) {
|
|
14
12
|
case "propertyDeclaration":
|
|
15
13
|
return emitPropertyMember(member, context);
|
|
@@ -18,7 +16,7 @@ export const emitClassMember = (member, context) => {
|
|
|
18
16
|
case "constructorDeclaration":
|
|
19
17
|
return emitConstructorMember(member, context);
|
|
20
18
|
default:
|
|
21
|
-
|
|
19
|
+
throw new Error(`Unhandled IR class member kind: ${String(member.kind)}`);
|
|
22
20
|
}
|
|
23
21
|
};
|
|
24
22
|
//# sourceMappingURL=orchestrator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../../../src/statements/classes/members/orchestrator.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../../../src/statements/classes/members/orchestrator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE1D;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,MAAqB,EACrB,OAAuB,EACG,EAAE;IAC5B,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,qBAAqB;YACxB,OAAO,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAE7C,KAAK,mBAAmB;YACtB,OAAO,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAE3C,KAAK,wBAAwB;YAC3B,OAAO,qBAAqB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAEhD;YACE,MAAM,IAAI,KAAK,CACb,mCAAmC,MAAM,CAAE,MAA6B,CAAC,IAAI,CAAC,EAAE,CACjF,CAAC;IACN,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"properties.d.ts","sourceRoot":"","sources":["../../../../src/statements/classes/members/properties.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,
|
|
1
|
+
{"version":3,"file":"properties.d.ts","sourceRoot":"","sources":["../../../../src/statements/classes/members/properties.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EACL,cAAc,EAKf,MAAM,mBAAmB,CAAC;AAO3B;;GAEG;AACH,eAAO,MAAM,kBAAkB,GAC7B,QAAQ,aAAa,GAAG;IAAE,IAAI,EAAE,qBAAqB,CAAA;CAAE,EACvD,SAAS,cAAc,KACtB,CAAC,MAAM,EAAE,cAAc,CA6HzB,CAAC"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Property member emission
|
|
3
3
|
*/
|
|
4
|
-
import { getIndent } from "../../../types.js";
|
|
4
|
+
import { dedent, getIndent, indent, withScoped, } from "../../../types.js";
|
|
5
5
|
import { emitExpression } from "../../../expression-emitter.js";
|
|
6
6
|
import { emitType } from "../../../type-emitter.js";
|
|
7
7
|
import { escapeCSharpIdentifier } from "../../../emitter-types/index.js";
|
|
8
8
|
import { emitAttributes } from "../../../core/attributes.js";
|
|
9
|
+
import { emitBlockStatement } from "../../blocks.js";
|
|
9
10
|
/**
|
|
10
11
|
* Emit a property declaration
|
|
11
12
|
*/
|
|
@@ -13,6 +14,7 @@ export const emitPropertyMember = (member, context) => {
|
|
|
13
14
|
const ind = getIndent(context);
|
|
14
15
|
let currentContext = context;
|
|
15
16
|
const parts = [];
|
|
17
|
+
const hasAccessors = !!(member.getterBody || member.setterBody);
|
|
16
18
|
// Access modifier
|
|
17
19
|
const accessibility = member.accessibility ?? "public";
|
|
18
20
|
parts.push(accessibility);
|
|
@@ -27,7 +29,7 @@ export const emitPropertyMember = (member, context) => {
|
|
|
27
29
|
if (member.isRequired) {
|
|
28
30
|
parts.push("required");
|
|
29
31
|
}
|
|
30
|
-
if (member.isReadonly) {
|
|
32
|
+
if (!hasAccessors && member.isReadonly) {
|
|
31
33
|
parts.push("readonly");
|
|
32
34
|
}
|
|
33
35
|
// Property type - uses standard type emission pipeline
|
|
@@ -45,14 +47,59 @@ export const emitPropertyMember = (member, context) => {
|
|
|
45
47
|
// Emit attributes before the property declaration
|
|
46
48
|
const [attributesCode, attrContext] = emitAttributes(member.attributes, currentContext);
|
|
47
49
|
currentContext = attrContext;
|
|
48
|
-
// Emit as field (TypeScript class fields map to C# fields, not properties)
|
|
49
50
|
const attrPrefix = attributesCode ? attributesCode + "\n" : "";
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
51
|
+
if (!hasAccessors) {
|
|
52
|
+
// Emit as field (TypeScript class fields map to C# fields, not properties)
|
|
53
|
+
let code = `${attrPrefix}${ind}${parts.join(" ")}`;
|
|
54
|
+
if (member.initializer) {
|
|
55
|
+
const [initFrag, finalContext] = emitExpression(member.initializer, currentContext);
|
|
56
|
+
code += ` = ${initFrag.text}`;
|
|
57
|
+
currentContext = finalContext;
|
|
58
|
+
}
|
|
59
|
+
return [`${code};`, currentContext];
|
|
55
60
|
}
|
|
56
|
-
|
|
61
|
+
const lines = [];
|
|
62
|
+
lines.push(`${attrPrefix}${ind}${parts.join(" ")}`);
|
|
63
|
+
// Property body scope (indentation + locals)
|
|
64
|
+
let bodyContext = indent(currentContext);
|
|
65
|
+
const bodyInd = getIndent(bodyContext);
|
|
66
|
+
lines.push(`${bodyInd}{`);
|
|
67
|
+
if (member.getterBody) {
|
|
68
|
+
lines.push(`${bodyInd}get`);
|
|
69
|
+
const getterBodyContext = indent(bodyContext);
|
|
70
|
+
const [getterBlock, getterCtx] = withScoped(getterBodyContext, { returnType: member.type }, (scopedCtx) => emitBlockStatement(member.getterBody, scopedCtx));
|
|
71
|
+
lines.push(getterBlock);
|
|
72
|
+
bodyContext = dedent(getterCtx);
|
|
73
|
+
}
|
|
74
|
+
if (member.setterBody) {
|
|
75
|
+
lines.push(`${bodyInd}set`);
|
|
76
|
+
const setterBodyContext = indent(bodyContext);
|
|
77
|
+
const setterParamName = member.setterParamName;
|
|
78
|
+
const [rawSetterBlock, setterCtx] = withScoped(setterBodyContext, {
|
|
79
|
+
localNameMap: setterParamName && setterParamName !== "value"
|
|
80
|
+
? new Map([
|
|
81
|
+
...(setterBodyContext.localNameMap ?? []),
|
|
82
|
+
[setterParamName, escapeCSharpIdentifier(setterParamName)],
|
|
83
|
+
])
|
|
84
|
+
: setterBodyContext.localNameMap,
|
|
85
|
+
}, (scopedCtx) => emitBlockStatement(member.setterBody, scopedCtx));
|
|
86
|
+
const setterBlock = (() => {
|
|
87
|
+
if (!setterParamName || setterParamName === "value")
|
|
88
|
+
return rawSetterBlock;
|
|
89
|
+
const escapedParam = escapeCSharpIdentifier(setterParamName);
|
|
90
|
+
const stmtInd = getIndent(setterBodyContext);
|
|
91
|
+
const injectLine = `${stmtInd}var ${escapedParam} = value;`;
|
|
92
|
+
const blockLines = rawSetterBlock.split("\n");
|
|
93
|
+
if (blockLines.length > 1) {
|
|
94
|
+
blockLines.splice(1, 0, injectLine, "");
|
|
95
|
+
return blockLines.join("\n");
|
|
96
|
+
}
|
|
97
|
+
return rawSetterBlock;
|
|
98
|
+
})();
|
|
99
|
+
lines.push(setterBlock);
|
|
100
|
+
bodyContext = dedent(setterCtx);
|
|
101
|
+
}
|
|
102
|
+
lines.push(`${bodyInd}}`);
|
|
103
|
+
return [lines.join("\n"), dedent(bodyContext)];
|
|
57
104
|
};
|
|
58
105
|
//# sourceMappingURL=properties.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"properties.js","sourceRoot":"","sources":["../../../../src/statements/classes/members/properties.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,
|
|
1
|
+
{"version":3,"file":"properties.js","sourceRoot":"","sources":["../../../../src/statements/classes/members/properties.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,52 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Parameter emission for functions and methods
|
|
3
|
+
*
|
|
4
|
+
* Handles both simple identifier patterns and destructuring patterns.
|
|
5
|
+
* For destructuring patterns, generates synthetic parameter names (__param0, etc.)
|
|
6
|
+
* and returns lowering info for the caller to inject destructuring statements.
|
|
3
7
|
*/
|
|
4
|
-
import { IrParameter } from "@tsonic/frontend";
|
|
8
|
+
import { IrParameter, IrType } from "@tsonic/frontend";
|
|
5
9
|
import { EmitterContext } from "../../types.js";
|
|
10
|
+
/**
|
|
11
|
+
* Info about a parameter that needs destructuring in the function body
|
|
12
|
+
*/
|
|
13
|
+
type ParameterDestructuringInfo = {
|
|
14
|
+
readonly syntheticName: string;
|
|
15
|
+
readonly pattern: IrParameter["pattern"];
|
|
16
|
+
readonly type: IrType | undefined;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Result of parameter emission
|
|
20
|
+
*/
|
|
21
|
+
export type ParameterEmissionResult = {
|
|
22
|
+
/** The C# parameter list string */
|
|
23
|
+
readonly parameterList: string;
|
|
24
|
+
/** Parameters that need destructuring in the function body */
|
|
25
|
+
readonly destructuringParams: readonly ParameterDestructuringInfo[];
|
|
26
|
+
/** Updated context */
|
|
27
|
+
readonly context: EmitterContext;
|
|
28
|
+
};
|
|
6
29
|
/**
|
|
7
30
|
* Emit parameters for functions and methods
|
|
31
|
+
*
|
|
32
|
+
* For simple identifier patterns, emits directly as C# parameters.
|
|
33
|
+
* For complex patterns (array/object), generates synthetic parameter names
|
|
34
|
+
* and returns info for destructuring in the function body.
|
|
8
35
|
*/
|
|
9
36
|
export declare const emitParameters: (parameters: readonly IrParameter[], context: EmitterContext) => [string, EmitterContext];
|
|
37
|
+
/**
|
|
38
|
+
* Emit parameters with full destructuring support
|
|
39
|
+
*
|
|
40
|
+
* Returns both the parameter list and info about parameters that need
|
|
41
|
+
* destructuring statements in the function body.
|
|
42
|
+
*/
|
|
43
|
+
export declare const emitParametersWithDestructuring: (parameters: readonly IrParameter[], context: EmitterContext) => ParameterEmissionResult;
|
|
44
|
+
/**
|
|
45
|
+
* Generate destructuring statements for parameters
|
|
46
|
+
*
|
|
47
|
+
* Call this after emitParametersWithDestructuring to get the statements
|
|
48
|
+
* that should be injected at the start of the function body.
|
|
49
|
+
*/
|
|
50
|
+
export declare const generateParameterDestructuring: (destructuringParams: readonly ParameterDestructuringInfo[], indent: string, context: EmitterContext) => [readonly string[], EmitterContext];
|
|
51
|
+
export {};
|
|
10
52
|
//# sourceMappingURL=parameters.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parameters.d.ts","sourceRoot":"","sources":["../../../src/statements/classes/parameters.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"parameters.d.ts","sourceRoot":"","sources":["../../../src/statements/classes/parameters.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAMhD;;GAEG;AACH,KAAK,0BAA0B,GAAG;IAChC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;IACzC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;CACnC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG;IACpC,mCAAmC;IACnC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,8DAA8D;IAC9D,QAAQ,CAAC,mBAAmB,EAAE,SAAS,0BAA0B,EAAE,CAAC;IACpE,sBAAsB;IACtB,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;CAClC,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,GACzB,YAAY,SAAS,WAAW,EAAE,EAClC,SAAS,cAAc,KACtB,CAAC,MAAM,EAAE,cAAc,CAGzB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,+BAA+B,GAC1C,YAAY,SAAS,WAAW,EAAE,EAClC,SAAS,cAAc,KACtB,uBA8EF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,8BAA8B,GACzC,qBAAqB,SAAS,0BAA0B,EAAE,EAC1D,QAAQ,MAAM,EACd,SAAS,cAAc,KACtB,CAAC,SAAS,MAAM,EAAE,EAAE,cAAc,CAiBpC,CAAC"}
|
|
@@ -1,20 +1,48 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Parameter emission for functions and methods
|
|
3
|
+
*
|
|
4
|
+
* Handles both simple identifier patterns and destructuring patterns.
|
|
5
|
+
* For destructuring patterns, generates synthetic parameter names (__param0, etc.)
|
|
6
|
+
* and returns lowering info for the caller to inject destructuring statements.
|
|
3
7
|
*/
|
|
4
8
|
import { emitExpression } from "../../expression-emitter.js";
|
|
5
9
|
import { emitParameterType } from "../../type-emitter.js";
|
|
6
10
|
import { escapeCSharpIdentifier } from "../../emitter-types/index.js";
|
|
11
|
+
import { lowerParameterPattern } from "../../patterns.js";
|
|
7
12
|
/**
|
|
8
13
|
* Emit parameters for functions and methods
|
|
14
|
+
*
|
|
15
|
+
* For simple identifier patterns, emits directly as C# parameters.
|
|
16
|
+
* For complex patterns (array/object), generates synthetic parameter names
|
|
17
|
+
* and returns info for destructuring in the function body.
|
|
9
18
|
*/
|
|
10
19
|
export const emitParameters = (parameters, context) => {
|
|
20
|
+
const result = emitParametersWithDestructuring(parameters, context);
|
|
21
|
+
return [result.parameterList, result.context];
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Emit parameters with full destructuring support
|
|
25
|
+
*
|
|
26
|
+
* Returns both the parameter list and info about parameters that need
|
|
27
|
+
* destructuring statements in the function body.
|
|
28
|
+
*/
|
|
29
|
+
export const emitParametersWithDestructuring = (parameters, context) => {
|
|
11
30
|
let currentContext = context;
|
|
12
31
|
const params = [];
|
|
32
|
+
const destructuringParams = [];
|
|
33
|
+
let syntheticParamIndex = 0;
|
|
13
34
|
for (const param of parameters) {
|
|
14
35
|
const isRest = param.isRest;
|
|
15
36
|
const isOptional = param.isOptional;
|
|
37
|
+
const modifiers = [];
|
|
38
|
+
if (param.isExtensionReceiver) {
|
|
39
|
+
modifiers.push("this");
|
|
40
|
+
}
|
|
16
41
|
// Use the passing mode from IR (frontend already unwrapped ref<T>/out<T>/in<T>)
|
|
17
|
-
|
|
42
|
+
if (param.passing !== "value") {
|
|
43
|
+
modifiers.push(param.passing);
|
|
44
|
+
}
|
|
45
|
+
const modifierPrefix = modifiers.length > 0 ? `${modifiers.join(" ")} ` : "";
|
|
18
46
|
const actualType = param.type;
|
|
19
47
|
// Parameter type
|
|
20
48
|
let paramType = "object";
|
|
@@ -22,30 +50,62 @@ export const emitParameters = (parameters, context) => {
|
|
|
22
50
|
const [typeName, newContext] = emitParameterType(actualType, isOptional, currentContext);
|
|
23
51
|
currentContext = newContext;
|
|
24
52
|
paramType = typeName;
|
|
25
|
-
//
|
|
26
|
-
|
|
27
|
-
|
|
53
|
+
// Rest parameters use native T[] arrays with params modifier
|
|
54
|
+
}
|
|
55
|
+
// Determine parameter name based on pattern kind
|
|
56
|
+
let paramName;
|
|
57
|
+
const isComplexPattern = param.pattern.kind === "arrayPattern" ||
|
|
58
|
+
param.pattern.kind === "objectPattern";
|
|
59
|
+
if (isComplexPattern) {
|
|
60
|
+
// Generate synthetic name for complex patterns
|
|
61
|
+
paramName = `__param${syntheticParamIndex}`;
|
|
62
|
+
syntheticParamIndex++;
|
|
63
|
+
// Record for destructuring in function body
|
|
64
|
+
destructuringParams.push({
|
|
65
|
+
syntheticName: paramName,
|
|
66
|
+
pattern: param.pattern,
|
|
67
|
+
type: actualType,
|
|
68
|
+
});
|
|
28
69
|
}
|
|
29
|
-
|
|
30
|
-
let paramName = "param";
|
|
31
|
-
if (param.pattern.kind === "identifierPattern") {
|
|
70
|
+
else if (param.pattern.kind === "identifierPattern") {
|
|
32
71
|
paramName = escapeCSharpIdentifier(param.pattern.name);
|
|
33
72
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
73
|
+
else {
|
|
74
|
+
paramName = "param";
|
|
75
|
+
}
|
|
76
|
+
// Construct parameter string with modifiers if present
|
|
77
|
+
let paramStr = `${modifierPrefix}${paramType} ${paramName}`;
|
|
38
78
|
if (param.initializer) {
|
|
39
79
|
// Emit the default value directly
|
|
40
80
|
const [defaultExpr, newContext] = emitExpression(param.initializer, currentContext);
|
|
41
81
|
currentContext = newContext;
|
|
42
|
-
paramStr = `${paramType} ${paramName} = ${defaultExpr.text}`;
|
|
82
|
+
paramStr = `${modifierPrefix}${paramType} ${paramName} = ${defaultExpr.text}`;
|
|
43
83
|
}
|
|
44
84
|
else if (isOptional && !isRest) {
|
|
45
85
|
paramStr += " = default";
|
|
46
86
|
}
|
|
47
87
|
params.push(paramStr);
|
|
48
88
|
}
|
|
49
|
-
return
|
|
89
|
+
return {
|
|
90
|
+
parameterList: params.join(", "),
|
|
91
|
+
destructuringParams,
|
|
92
|
+
context: currentContext,
|
|
93
|
+
};
|
|
94
|
+
};
|
|
95
|
+
/**
|
|
96
|
+
* Generate destructuring statements for parameters
|
|
97
|
+
*
|
|
98
|
+
* Call this after emitParametersWithDestructuring to get the statements
|
|
99
|
+
* that should be injected at the start of the function body.
|
|
100
|
+
*/
|
|
101
|
+
export const generateParameterDestructuring = (destructuringParams, indent, context) => {
|
|
102
|
+
let currentContext = context;
|
|
103
|
+
const statements = [];
|
|
104
|
+
for (const info of destructuringParams) {
|
|
105
|
+
const result = lowerParameterPattern(info.pattern, info.syntheticName, info.type, indent, currentContext);
|
|
106
|
+
statements.push(...result.statements);
|
|
107
|
+
currentContext = result.context;
|
|
108
|
+
}
|
|
109
|
+
return [statements, currentContext];
|
|
50
110
|
};
|
|
51
111
|
//# sourceMappingURL=parameters.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parameters.js","sourceRoot":"","sources":["../../../src/statements/classes/parameters.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"parameters.js","sourceRoot":"","sources":["../../../src/statements/classes/parameters.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"properties.d.ts","sourceRoot":"","sources":["../../../src/statements/classes/properties.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAa,MAAM,gBAAgB,CAAC;AAM3D;;;GAGG;AACH,eAAO,MAAM,6BAA6B,GACxC,QAAQ,iBAAiB,EACzB,SAAS,cAAc,KACtB,CAAC,MAAM,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"properties.d.ts","sourceRoot":"","sources":["../../../src/statements/classes/properties.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAa,MAAM,gBAAgB,CAAC;AAM3D;;;GAGG;AACH,eAAO,MAAM,6BAA6B,GACxC,QAAQ,iBAAiB,EACzB,SAAS,cAAc,KACtB,CAAC,MAAM,EAAE,cAAc,CAoFzB,CAAC"}
|
|
@@ -73,7 +73,7 @@ export const emitInterfaceMemberAsProperty = (member, context) => {
|
|
|
73
73
|
];
|
|
74
74
|
}
|
|
75
75
|
default:
|
|
76
|
-
|
|
76
|
+
throw new Error(`Unhandled IR interface member kind: ${String(member.kind)}`);
|
|
77
77
|
}
|
|
78
78
|
};
|
|
79
79
|
//# sourceMappingURL=properties.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"properties.js","sourceRoot":"","sources":["../../../src/statements/classes/properties.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"properties.js","sourceRoot":"","sources":["../../../src/statements/classes/properties.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
* Class-related helpers (members, constructors, parameters, interface members)
|
|
3
3
|
* Main dispatcher - re-exports from classes/ subdirectory
|
|
4
4
|
*/
|
|
5
|
-
export { emitClassMember, emitInterfaceMemberAsProperty, extractInlineObjectTypes, emitExtractedType, type ExtractedType, emitParameters, capitalize, } from "./classes/index.js";
|
|
5
|
+
export { emitClassMember, emitInterfaceMemberAsProperty, extractInlineObjectTypes, emitExtractedType, type ExtractedType, emitParameters, emitParametersWithDestructuring, generateParameterDestructuring, type ParameterEmissionResult, capitalize, } from "./classes/index.js";
|
|
6
6
|
//# sourceMappingURL=classes.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"classes.d.ts","sourceRoot":"","sources":["../../src/statements/classes.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,eAAe,EACf,6BAA6B,EAC7B,wBAAwB,EACxB,iBAAiB,EACjB,KAAK,aAAa,EAClB,cAAc,EACd,UAAU,GACX,MAAM,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"classes.d.ts","sourceRoot":"","sources":["../../src/statements/classes.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,eAAe,EACf,6BAA6B,EAC7B,wBAAwB,EACxB,iBAAiB,EACjB,KAAK,aAAa,EAClB,cAAc,EACd,+BAA+B,EAC/B,8BAA8B,EAC9B,KAAK,uBAAuB,EAC5B,UAAU,GACX,MAAM,oBAAoB,CAAC"}
|
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
* Class-related helpers (members, constructors, parameters, interface members)
|
|
3
3
|
* Main dispatcher - re-exports from classes/ subdirectory
|
|
4
4
|
*/
|
|
5
|
-
export { emitClassMember, emitInterfaceMemberAsProperty, extractInlineObjectTypes, emitExtractedType, emitParameters, capitalize, } from "./classes/index.js";
|
|
5
|
+
export { emitClassMember, emitInterfaceMemberAsProperty, extractInlineObjectTypes, emitExtractedType, emitParameters, emitParametersWithDestructuring, generateParameterDestructuring, capitalize, } from "./classes/index.js";
|
|
6
6
|
//# sourceMappingURL=classes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"classes.js","sourceRoot":"","sources":["../../src/statements/classes.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,eAAe,EACf,6BAA6B,EAC7B,wBAAwB,EACxB,iBAAiB,EAEjB,cAAc,EACd,UAAU,GACX,MAAM,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"classes.js","sourceRoot":"","sources":["../../src/statements/classes.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,eAAe,EACf,6BAA6B,EAC7B,wBAAwB,EACxB,iBAAiB,EAEjB,cAAc,EACd,+BAA+B,EAC/B,8BAA8B,EAE9B,UAAU,GACX,MAAM,oBAAoB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conditionals.d.ts","sourceRoot":"","sources":["../../../src/statements/control/conditionals.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAgB,WAAW,EAAU,MAAM,kBAAkB,CAAC;AACrE,OAAO,EACL,cAAc,EAKf,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"conditionals.d.ts","sourceRoot":"","sources":["../../../src/statements/control/conditionals.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAgB,WAAW,EAAU,MAAM,kBAAkB,CAAC;AACrE,OAAO,EACL,cAAc,EAKf,MAAM,gBAAgB,CAAC;AAiWxB;;GAEG;AACH,eAAO,MAAM,eAAe,GAC1B,MAAM,OAAO,CAAC,WAAW,EAAE;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,CAAC,EACnD,SAAS,cAAc,KACtB,CAAC,MAAM,EAAE,cAAc,CA8SzB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAC9B,MAAM,OAAO,CAAC,WAAW,EAAE;IAAE,IAAI,EAAE,iBAAiB,CAAA;CAAE,CAAC,EACvD,SAAS,cAAc,KACtB,CAAC,MAAM,EAAE,cAAc,CA4CzB,CAAC"}
|