@tsonic/emitter 0.0.12 → 0.0.13

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.
Files changed (140) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/array.test.js +6 -6
  3. package/dist/array.test.js.map +1 -1
  4. package/dist/core/attributes.d.ts +43 -0
  5. package/dist/core/attributes.d.ts.map +1 -0
  6. package/dist/core/attributes.js +128 -0
  7. package/dist/core/attributes.js.map +1 -0
  8. package/dist/core/attributes.test.d.ts +5 -0
  9. package/dist/core/attributes.test.d.ts.map +1 -0
  10. package/dist/core/attributes.test.js +296 -0
  11. package/dist/core/attributes.test.js.map +1 -0
  12. package/dist/core/index.d.ts +1 -0
  13. package/dist/core/index.d.ts.map +1 -1
  14. package/dist/core/index.js +1 -0
  15. package/dist/core/index.js.map +1 -1
  16. package/dist/core/module-emitter/static-container.d.ts.map +1 -1
  17. package/dist/core/module-emitter/static-container.js +50 -1
  18. package/dist/core/module-emitter/static-container.js.map +1 -1
  19. package/dist/core/module-emitter.test.js +2 -1
  20. package/dist/core/module-emitter.test.js.map +1 -1
  21. package/dist/core/module-map.d.ts.map +1 -1
  22. package/dist/core/module-map.js +5 -1
  23. package/dist/core/module-map.js.map +1 -1
  24. package/dist/core/module-map.test.d.ts +8 -0
  25. package/dist/core/module-map.test.d.ts.map +1 -0
  26. package/dist/core/module-map.test.js +94 -0
  27. package/dist/core/module-map.test.js.map +1 -0
  28. package/dist/core/type-compatibility.d.ts +6 -1
  29. package/dist/core/type-compatibility.d.ts.map +1 -1
  30. package/dist/core/type-compatibility.js +12 -22
  31. package/dist/core/type-compatibility.js.map +1 -1
  32. package/dist/core/type-resolution.d.ts +2 -2
  33. package/dist/core/type-resolution.js +6 -6
  34. package/dist/core/type-resolution.js.map +1 -1
  35. package/dist/emitter.d.ts.map +1 -1
  36. package/dist/emitter.js +47 -1
  37. package/dist/emitter.js.map +1 -1
  38. package/dist/expression-emitter.d.ts.map +1 -1
  39. package/dist/expression-emitter.js +3 -3
  40. package/dist/expression-emitter.js.map +1 -1
  41. package/dist/expressions/access.d.ts.map +1 -1
  42. package/dist/expressions/access.js +46 -15
  43. package/dist/expressions/access.js.map +1 -1
  44. package/dist/expressions/calls.d.ts.map +1 -1
  45. package/dist/expressions/calls.js +86 -13
  46. package/dist/expressions/calls.js.map +1 -1
  47. package/dist/expressions/collections.d.ts.map +1 -1
  48. package/dist/expressions/collections.js +44 -35
  49. package/dist/expressions/collections.js.map +1 -1
  50. package/dist/expressions/identifiers.d.ts.map +1 -1
  51. package/dist/expressions/identifiers.js +1 -0
  52. package/dist/expressions/identifiers.js.map +1 -1
  53. package/dist/expressions/index.test.js +3 -1
  54. package/dist/expressions/index.test.js.map +1 -1
  55. package/dist/expressions/literals.d.ts +7 -15
  56. package/dist/expressions/literals.d.ts.map +1 -1
  57. package/dist/expressions/literals.js +15 -99
  58. package/dist/expressions/literals.js.map +1 -1
  59. package/dist/expressions/literals.test.js +11 -2
  60. package/dist/expressions/literals.test.js.map +1 -1
  61. package/dist/expressions/operators.d.ts +25 -11
  62. package/dist/expressions/operators.d.ts.map +1 -1
  63. package/dist/expressions/operators.js +151 -107
  64. package/dist/expressions/operators.js.map +1 -1
  65. package/dist/expressions/other.d.ts +3 -0
  66. package/dist/expressions/other.d.ts.map +1 -1
  67. package/dist/expressions/other.js +18 -1
  68. package/dist/expressions/other.js.map +1 -1
  69. package/dist/generator.test.js +2 -2
  70. package/dist/generator.test.js.map +1 -1
  71. package/dist/golden-tests/discovery.d.ts +14 -3
  72. package/dist/golden-tests/discovery.d.ts.map +1 -1
  73. package/dist/golden-tests/discovery.js +93 -10
  74. package/dist/golden-tests/discovery.js.map +1 -1
  75. package/dist/golden-tests/index.d.ts +1 -1
  76. package/dist/golden-tests/index.d.ts.map +1 -1
  77. package/dist/golden-tests/index.js.map +1 -1
  78. package/dist/golden-tests/runner.d.ts +1 -0
  79. package/dist/golden-tests/runner.d.ts.map +1 -1
  80. package/dist/golden-tests/runner.js +30 -27
  81. package/dist/golden-tests/runner.js.map +1 -1
  82. package/dist/golden-tests/types.d.ts +7 -0
  83. package/dist/golden-tests/types.d.ts.map +1 -1
  84. package/dist/golden.test.d.ts +12 -5
  85. package/dist/golden.test.d.ts.map +1 -1
  86. package/dist/golden.test.js +40 -21
  87. package/dist/golden.test.js.map +1 -1
  88. package/dist/integration.test.js +8 -8
  89. package/dist/integration.test.js.map +1 -1
  90. package/dist/invariants/emitter-globals-subset.test.js +4 -4
  91. package/dist/invariants/emitter-globals-subset.test.js.map +1 -1
  92. package/dist/invariants/numeric-proof-contract.test.js +20 -15
  93. package/dist/invariants/numeric-proof-contract.test.js.map +1 -1
  94. package/dist/specialization/generic-functions.test.js +366 -0
  95. package/dist/specialization/generic-functions.test.js.map +1 -1
  96. package/dist/specialization/interfaces.test.js +6 -6
  97. package/dist/specialization/interfaces.test.js.map +1 -1
  98. package/dist/specialization/type-aliases.test.js +88 -5
  99. package/dist/specialization/type-aliases.test.js.map +1 -1
  100. package/dist/statements/classes/members/methods.d.ts.map +1 -1
  101. package/dist/statements/classes/members/methods.js +13 -4
  102. package/dist/statements/classes/members/methods.js.map +1 -1
  103. package/dist/statements/classes/members/properties.d.ts.map +1 -1
  104. package/dist/statements/classes/members/properties.js +10 -1
  105. package/dist/statements/classes/members/properties.js.map +1 -1
  106. package/dist/statements/classes/properties.d.ts.map +1 -1
  107. package/dist/statements/classes/properties.js +4 -0
  108. package/dist/statements/classes/properties.js.map +1 -1
  109. package/dist/statements/control/conditionals.d.ts.map +1 -1
  110. package/dist/statements/control/conditionals.js +138 -1
  111. package/dist/statements/control/conditionals.js.map +1 -1
  112. package/dist/statements/declarations/classes.d.ts.map +1 -1
  113. package/dist/statements/declarations/classes.js +7 -1
  114. package/dist/statements/declarations/classes.js.map +1 -1
  115. package/dist/statements/declarations/functions.d.ts.map +1 -1
  116. package/dist/statements/declarations/functions.js +7 -1
  117. package/dist/statements/declarations/functions.js.map +1 -1
  118. package/dist/statements/declarations/structs.test.js +7 -5
  119. package/dist/statements/declarations/structs.test.js.map +1 -1
  120. package/dist/statements/declarations/type-aliases.d.ts.map +1 -1
  121. package/dist/statements/declarations/type-aliases.js +7 -8
  122. package/dist/statements/declarations/type-aliases.js.map +1 -1
  123. package/dist/statements/declarations/variables.d.ts.map +1 -1
  124. package/dist/statements/declarations/variables.js +54 -2
  125. package/dist/statements/declarations/variables.js.map +1 -1
  126. package/dist/statements/index.test.js +2 -3
  127. package/dist/statements/index.test.js.map +1 -1
  128. package/dist/types/parameters.d.ts.map +1 -1
  129. package/dist/types/parameters.js +29 -0
  130. package/dist/types/parameters.js.map +1 -1
  131. package/dist/types/primitives.d.ts +12 -1
  132. package/dist/types/primitives.d.ts.map +1 -1
  133. package/dist/types/primitives.js +14 -1
  134. package/dist/types/primitives.js.map +1 -1
  135. package/dist/types/references.d.ts.map +1 -1
  136. package/dist/types/references.js +19 -12
  137. package/dist/types/references.js.map +1 -1
  138. package/dist/types/references.test.js +6 -8
  139. package/dist/types/references.test.js.map +1 -1
  140. package/package.json +5 -2
@@ -28,14 +28,14 @@ const createModuleWithAccess = (options) => {
28
28
  kind: "literal",
29
29
  value: options.indexValue ?? 0,
30
30
  raw: options.indexRaw ?? "0",
31
- // If indexHasProof is true, pre-annotate with Int32 intent
31
+ // If indexHasProof is true, pre-annotate with int type
32
32
  // (simulating what the proof pass would do)
33
+ // INVARIANT: primitiveType(name="int") is the proven integer type
33
34
  ...(options.indexHasProof
34
35
  ? {
35
36
  inferredType: {
36
37
  kind: "primitiveType",
37
- name: "number",
38
- numericIntent: "Int32",
38
+ name: "int",
39
39
  },
40
40
  }
41
41
  : {}),
@@ -113,13 +113,13 @@ const createModuleWithIdentifierIndex = (options) => {
113
113
  const indexExpr = {
114
114
  kind: "identifier",
115
115
  name: options.indexName,
116
- // If indexHasInt32Type, give it Int32 intent
116
+ // If indexHasInt32Type, give it int type
117
+ // INVARIANT: primitiveType(name="int") is the proven integer type
117
118
  ...(options.indexHasInt32Type
118
119
  ? {
119
120
  inferredType: {
120
121
  kind: "primitiveType",
121
- name: "number",
122
- numericIntent: "Int32",
122
+ name: "int",
123
123
  },
124
124
  }
125
125
  : {
@@ -232,9 +232,10 @@ describe("Numeric Proof Contract (Behavioral)", () => {
232
232
  }
233
233
  const access = varDecl.declarations[0]?.initializer;
234
234
  const indexExpr = access.property;
235
+ // Index should have primitiveType(name="int") after proof pass
235
236
  expect(indexExpr.inferredType?.kind).to.equal("primitiveType");
236
237
  if (indexExpr.inferredType?.kind === "primitiveType") {
237
- expect(indexExpr.inferredType.numericIntent).to.equal("Int32");
238
+ expect(indexExpr.inferredType.name).to.equal("int");
238
239
  }
239
240
  });
240
241
  it("proven identifier passes", () => {
@@ -440,16 +441,17 @@ describe("Numeric Proof Contract (Behavioral)", () => {
440
441
  // 1. accessKind is clrIndexer (default for referenceType without resolvedClrType)
441
442
  // 2. index is literal 0, which is valid Int32
442
443
  expect(result.ok).to.be.true;
443
- // Verify the index got annotated with Int32 marker
444
+ // Verify the index got annotated with int type
444
445
  const varDecl = result.modules[0]?.body[0];
445
446
  if (varDecl?.kind !== "variableDeclaration") {
446
447
  throw new Error("Expected variable declaration");
447
448
  }
448
449
  const access = varDecl.declarations[0]?.initializer;
449
450
  const processedIndex = access.property;
451
+ // Index should have primitiveType(name="int") after proof pass
450
452
  expect(processedIndex.inferredType?.kind).to.equal("primitiveType");
451
453
  if (processedIndex.inferredType?.kind === "primitiveType") {
452
- expect(processedIndex.inferredType.numericIntent).to.equal("Int32");
454
+ expect(processedIndex.inferredType.name).to.equal("int");
453
455
  }
454
456
  });
455
457
  });
@@ -495,7 +497,7 @@ describe("Numeric Proof Contract (Behavioral)", () => {
495
497
  // PROOF PASS ANNOTATION: Markers set correctly for all access kinds
496
498
  // ============================================================================
497
499
  describe("Proof pass annotation", () => {
498
- it("clrIndexer: valid index gets numericIntent:Int32", () => {
500
+ it("clrIndexer: valid index gets primitiveType(name='int')", () => {
499
501
  const module = createModuleWithAccess({
500
502
  accessKind: "clrIndexer",
501
503
  indexHasProof: false,
@@ -510,12 +512,13 @@ describe("Numeric Proof Contract (Behavioral)", () => {
510
512
  }
511
513
  const access = varDecl.declarations[0]?.initializer;
512
514
  const indexExpr = access.property;
515
+ // Index should have primitiveType(name="int") after proof pass
513
516
  expect(indexExpr.inferredType?.kind).to.equal("primitiveType");
514
517
  if (indexExpr.inferredType?.kind === "primitiveType") {
515
- expect(indexExpr.inferredType.numericIntent).to.equal("Int32");
518
+ expect(indexExpr.inferredType.name).to.equal("int");
516
519
  }
517
520
  });
518
- it("jsRuntimeArray: valid index gets numericIntent:Int32", () => {
521
+ it("jsRuntimeArray: valid index gets primitiveType(name='int')", () => {
519
522
  const module = createModuleWithAccess({
520
523
  accessKind: "jsRuntimeArray",
521
524
  indexHasProof: false,
@@ -530,12 +533,13 @@ describe("Numeric Proof Contract (Behavioral)", () => {
530
533
  }
531
534
  const access = varDecl.declarations[0]?.initializer;
532
535
  const indexExpr = access.property;
536
+ // Index should have primitiveType(name="int") after proof pass
533
537
  expect(indexExpr.inferredType?.kind).to.equal("primitiveType");
534
538
  if (indexExpr.inferredType?.kind === "primitiveType") {
535
- expect(indexExpr.inferredType.numericIntent).to.equal("Int32");
539
+ expect(indexExpr.inferredType.name).to.equal("int");
536
540
  }
537
541
  });
538
- it("stringChar: valid index gets numericIntent:Int32", () => {
542
+ it("stringChar: valid index gets primitiveType(name='int')", () => {
539
543
  const module = createModuleWithAccess({
540
544
  accessKind: "stringChar",
541
545
  indexHasProof: false,
@@ -550,9 +554,10 @@ describe("Numeric Proof Contract (Behavioral)", () => {
550
554
  }
551
555
  const access = varDecl.declarations[0]?.initializer;
552
556
  const indexExpr = access.property;
557
+ // Index should have primitiveType(name="int") after proof pass
553
558
  expect(indexExpr.inferredType?.kind).to.equal("primitiveType");
554
559
  if (indexExpr.inferredType?.kind === "primitiveType") {
555
- expect(indexExpr.inferredType.numericIntent).to.equal("Int32");
560
+ expect(indexExpr.inferredType.name).to.equal("int");
556
561
  }
557
562
  });
558
563
  });
@@ -1 +1 @@
1
- {"version":3,"file":"numeric-proof-contract.test.js","sourceRoot":"","sources":["../../src/invariants/numeric-proof-contract.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"numeric-proof-contract.test.js","sourceRoot":"","sources":["../../src/invariants/numeric-proof-contract.test.ts"],"names":[],"mappings":"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"}
@@ -281,5 +281,371 @@ describe("Generic Functions (spec/15 §3-5)", () => {
281
281
  // Function should reference the constraint
282
282
  expect(result).to.include("where T : __Constraint_T");
283
283
  });
284
+ it("should emit generic function with struct constraint", () => {
285
+ const module = {
286
+ kind: "module",
287
+ filePath: "/src/utils.ts",
288
+ namespace: "MyApp",
289
+ className: "utils",
290
+ isStaticContainer: true,
291
+ imports: [],
292
+ body: [
293
+ {
294
+ kind: "functionDeclaration",
295
+ name: "wrapValue",
296
+ typeParameters: [
297
+ {
298
+ kind: "typeParameter",
299
+ name: "T",
300
+ constraint: {
301
+ kind: "referenceType",
302
+ name: "struct",
303
+ typeArguments: [],
304
+ },
305
+ default: undefined,
306
+ variance: undefined,
307
+ isStructuralConstraint: false,
308
+ },
309
+ ],
310
+ parameters: [
311
+ {
312
+ kind: "parameter",
313
+ pattern: { kind: "identifierPattern", name: "value" },
314
+ type: {
315
+ kind: "unionType",
316
+ types: [
317
+ { kind: "typeParameterType", name: "T" },
318
+ { kind: "primitiveType", name: "null" },
319
+ ],
320
+ },
321
+ isOptional: false,
322
+ isRest: false,
323
+ passing: "value",
324
+ },
325
+ ],
326
+ returnType: {
327
+ kind: "unionType",
328
+ types: [
329
+ { kind: "typeParameterType", name: "T" },
330
+ { kind: "primitiveType", name: "null" },
331
+ ],
332
+ },
333
+ body: {
334
+ kind: "blockStatement",
335
+ statements: [
336
+ {
337
+ kind: "returnStatement",
338
+ expression: { kind: "identifier", name: "value" },
339
+ },
340
+ ],
341
+ },
342
+ isExported: true,
343
+ isAsync: false,
344
+ isGenerator: false,
345
+ },
346
+ ],
347
+ exports: [],
348
+ };
349
+ const result = emitModule(module);
350
+ // Should emit where T : struct constraint
351
+ expect(result).to.include("where T : struct");
352
+ // Should use T? for nullable value type parameter/return
353
+ expect(result).to.include("T? value");
354
+ expect(result).to.include("T? wrapValue");
355
+ });
356
+ it("should emit generic function with object constraint (class)", () => {
357
+ const module = {
358
+ kind: "module",
359
+ filePath: "/src/utils.ts",
360
+ namespace: "MyApp",
361
+ className: "utils",
362
+ isStaticContainer: true,
363
+ imports: [],
364
+ body: [
365
+ {
366
+ kind: "functionDeclaration",
367
+ name: "wrapRef",
368
+ typeParameters: [
369
+ {
370
+ kind: "typeParameter",
371
+ name: "T",
372
+ constraint: {
373
+ kind: "referenceType",
374
+ name: "object",
375
+ typeArguments: [],
376
+ },
377
+ default: undefined,
378
+ variance: undefined,
379
+ isStructuralConstraint: false,
380
+ },
381
+ ],
382
+ parameters: [
383
+ {
384
+ kind: "parameter",
385
+ pattern: { kind: "identifierPattern", name: "value" },
386
+ type: {
387
+ kind: "unionType",
388
+ types: [
389
+ { kind: "typeParameterType", name: "T" },
390
+ { kind: "primitiveType", name: "null" },
391
+ ],
392
+ },
393
+ isOptional: false,
394
+ isRest: false,
395
+ passing: "value",
396
+ },
397
+ ],
398
+ returnType: {
399
+ kind: "unionType",
400
+ types: [
401
+ { kind: "typeParameterType", name: "T" },
402
+ { kind: "primitiveType", name: "null" },
403
+ ],
404
+ },
405
+ body: {
406
+ kind: "blockStatement",
407
+ statements: [
408
+ {
409
+ kind: "returnStatement",
410
+ expression: { kind: "identifier", name: "value" },
411
+ },
412
+ ],
413
+ },
414
+ isExported: true,
415
+ isAsync: false,
416
+ isGenerator: false,
417
+ },
418
+ ],
419
+ exports: [],
420
+ };
421
+ const result = emitModule(module);
422
+ // Should emit where T : class constraint
423
+ expect(result).to.include("where T : class");
424
+ // Should use T? for nullable reference type parameter/return
425
+ expect(result).to.include("T? value");
426
+ expect(result).to.include("T? wrapRef");
427
+ });
428
+ it("should emit generic function with multiple interface constraints", () => {
429
+ const module = {
430
+ kind: "module",
431
+ filePath: "/src/utils.ts",
432
+ namespace: "MyApp",
433
+ className: "utils",
434
+ isStaticContainer: true,
435
+ imports: [],
436
+ body: [
437
+ {
438
+ kind: "interfaceDeclaration",
439
+ name: "IComparable",
440
+ isExported: false,
441
+ isStruct: false,
442
+ typeParameters: [],
443
+ extends: [],
444
+ members: [],
445
+ },
446
+ {
447
+ kind: "interfaceDeclaration",
448
+ name: "IEquatable",
449
+ isExported: false,
450
+ isStruct: false,
451
+ typeParameters: [],
452
+ extends: [],
453
+ members: [],
454
+ },
455
+ {
456
+ kind: "functionDeclaration",
457
+ name: "compare",
458
+ typeParameters: [
459
+ {
460
+ kind: "typeParameter",
461
+ name: "T",
462
+ constraint: {
463
+ kind: "intersectionType",
464
+ types: [
465
+ {
466
+ kind: "referenceType",
467
+ name: "IComparable",
468
+ typeArguments: [],
469
+ },
470
+ {
471
+ kind: "referenceType",
472
+ name: "IEquatable",
473
+ typeArguments: [],
474
+ },
475
+ ],
476
+ },
477
+ default: undefined,
478
+ variance: undefined,
479
+ isStructuralConstraint: false,
480
+ },
481
+ ],
482
+ parameters: [
483
+ {
484
+ kind: "parameter",
485
+ pattern: { kind: "identifierPattern", name: "a" },
486
+ type: { kind: "typeParameterType", name: "T" },
487
+ isOptional: false,
488
+ isRest: false,
489
+ passing: "value",
490
+ },
491
+ {
492
+ kind: "parameter",
493
+ pattern: { kind: "identifierPattern", name: "b" },
494
+ type: { kind: "typeParameterType", name: "T" },
495
+ isOptional: false,
496
+ isRest: false,
497
+ passing: "value",
498
+ },
499
+ ],
500
+ returnType: { kind: "primitiveType", name: "boolean" },
501
+ body: {
502
+ kind: "blockStatement",
503
+ statements: [],
504
+ },
505
+ isExported: true,
506
+ isAsync: false,
507
+ isGenerator: false,
508
+ },
509
+ ],
510
+ exports: [],
511
+ };
512
+ const result = emitModule(module);
513
+ // Should emit where T : IComparable, IEquatable
514
+ expect(result).to.include("where T : IComparable, IEquatable");
515
+ });
516
+ it("should emit generic function with struct + interface constraint", () => {
517
+ const module = {
518
+ kind: "module",
519
+ filePath: "/src/utils.ts",
520
+ namespace: "MyApp",
521
+ className: "utils",
522
+ isStaticContainer: true,
523
+ imports: [],
524
+ body: [
525
+ {
526
+ kind: "interfaceDeclaration",
527
+ name: "IFormattable",
528
+ isExported: false,
529
+ isStruct: false,
530
+ typeParameters: [],
531
+ extends: [],
532
+ members: [],
533
+ },
534
+ {
535
+ kind: "functionDeclaration",
536
+ name: "format",
537
+ typeParameters: [
538
+ {
539
+ kind: "typeParameter",
540
+ name: "T",
541
+ constraint: {
542
+ kind: "intersectionType",
543
+ types: [
544
+ { kind: "referenceType", name: "struct", typeArguments: [] },
545
+ {
546
+ kind: "referenceType",
547
+ name: "IFormattable",
548
+ typeArguments: [],
549
+ },
550
+ ],
551
+ },
552
+ default: undefined,
553
+ variance: undefined,
554
+ isStructuralConstraint: false,
555
+ },
556
+ ],
557
+ parameters: [
558
+ {
559
+ kind: "parameter",
560
+ pattern: { kind: "identifierPattern", name: "value" },
561
+ type: { kind: "typeParameterType", name: "T" },
562
+ isOptional: false,
563
+ isRest: false,
564
+ passing: "value",
565
+ },
566
+ ],
567
+ returnType: { kind: "primitiveType", name: "string" },
568
+ body: {
569
+ kind: "blockStatement",
570
+ statements: [],
571
+ },
572
+ isExported: true,
573
+ isAsync: false,
574
+ isGenerator: false,
575
+ },
576
+ ],
577
+ exports: [],
578
+ };
579
+ const result = emitModule(module);
580
+ // Should emit where T : struct, IFormattable
581
+ expect(result).to.include("where T : struct, IFormattable");
582
+ });
583
+ it("should emit generic function with class + interface constraint", () => {
584
+ const module = {
585
+ kind: "module",
586
+ filePath: "/src/utils.ts",
587
+ namespace: "MyApp",
588
+ className: "utils",
589
+ isStaticContainer: true,
590
+ imports: [],
591
+ body: [
592
+ {
593
+ kind: "interfaceDeclaration",
594
+ name: "IDisposable",
595
+ isExported: false,
596
+ isStruct: false,
597
+ typeParameters: [],
598
+ extends: [],
599
+ members: [],
600
+ },
601
+ {
602
+ kind: "functionDeclaration",
603
+ name: "dispose",
604
+ typeParameters: [
605
+ {
606
+ kind: "typeParameter",
607
+ name: "T",
608
+ constraint: {
609
+ kind: "intersectionType",
610
+ types: [
611
+ { kind: "referenceType", name: "object", typeArguments: [] },
612
+ {
613
+ kind: "referenceType",
614
+ name: "IDisposable",
615
+ typeArguments: [],
616
+ },
617
+ ],
618
+ },
619
+ default: undefined,
620
+ variance: undefined,
621
+ isStructuralConstraint: false,
622
+ },
623
+ ],
624
+ parameters: [
625
+ {
626
+ kind: "parameter",
627
+ pattern: { kind: "identifierPattern", name: "resource" },
628
+ type: { kind: "typeParameterType", name: "T" },
629
+ isOptional: false,
630
+ isRest: false,
631
+ passing: "value",
632
+ },
633
+ ],
634
+ returnType: { kind: "voidType" },
635
+ body: {
636
+ kind: "blockStatement",
637
+ statements: [],
638
+ },
639
+ isExported: true,
640
+ isAsync: false,
641
+ isGenerator: false,
642
+ },
643
+ ],
644
+ exports: [],
645
+ };
646
+ const result = emitModule(module);
647
+ // Should emit where T : class, IDisposable
648
+ expect(result).to.include("where T : class, IDisposable");
649
+ });
284
650
  });
285
651
  //# sourceMappingURL=generic-functions.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generic-functions.test.js","sourceRoot":"","sources":["../../src/specialization/generic-functions.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generic-functions.test.js","sourceRoot":"","sources":["../../src/specialization/generic-functions.test.ts"],"names":[],"mappings":"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"}
@@ -53,9 +53,9 @@ describe("Interfaces (spec/16 §2)", () => {
53
53
  // Should emit as C# class, not interface
54
54
  expect(result).to.include("public class User");
55
55
  expect(result).not.to.include("interface User");
56
- // Should have auto-properties
57
- expect(result).to.include("public double id { get; set; }");
58
- expect(result).to.include("public string name { get; set; }");
56
+ // Should have auto-properties (required for non-optional)
57
+ expect(result).to.include("public required double id { get; set; }");
58
+ expect(result).to.include("public required string name { get; set; }");
59
59
  // Optional property should be nullable
60
60
  expect(result).to.include("public bool? active { get; set; }");
61
61
  });
@@ -89,8 +89,8 @@ describe("Interfaces (spec/16 §2)", () => {
89
89
  exports: [],
90
90
  };
91
91
  const result = emitModule(module);
92
- // Readonly should use private set
93
- expect(result).to.include("public string apiUrl { get; }");
92
+ // Readonly should use private set (required for non-optional)
93
+ expect(result).to.include("public required string apiUrl { get; }");
94
94
  });
95
95
  it("should emit generic interface", () => {
96
96
  const module = {
@@ -133,7 +133,7 @@ describe("Interfaces (spec/16 §2)", () => {
133
133
  const result = emitModule(module);
134
134
  // Allow for whitespace variations
135
135
  expect(result).to.match(/public\s+class\s+Result\s*<T>/);
136
- expect(result).to.include("public T data { get; set; }");
136
+ expect(result).to.include("public required T data { get; set; }");
137
137
  });
138
138
  });
139
139
  //# sourceMappingURL=interfaces.test.js.map