@tsonic/frontend 0.0.2 → 0.0.5

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 (167) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/graph/extraction/imports.js +3 -3
  3. package/dist/graph/extraction/imports.js.map +1 -1
  4. package/dist/ir/binding-resolution.test.js +8 -3
  5. package/dist/ir/binding-resolution.test.js.map +1 -1
  6. package/dist/ir/builder/exports.d.ts.map +1 -1
  7. package/dist/ir/builder/exports.js +8 -6
  8. package/dist/ir/builder/exports.js.map +1 -1
  9. package/dist/ir/builder/imports.d.ts +3 -3
  10. package/dist/ir/builder/imports.d.ts.map +1 -1
  11. package/dist/ir/builder/imports.js +16 -9
  12. package/dist/ir/builder/imports.js.map +1 -1
  13. package/dist/ir/builder/orchestrator.js +1 -1
  14. package/dist/ir/builder/orchestrator.js.map +1 -1
  15. package/dist/ir/builder/statements.d.ts +7 -1
  16. package/dist/ir/builder/statements.d.ts.map +1 -1
  17. package/dist/ir/builder/statements.js +18 -5
  18. package/dist/ir/builder/statements.js.map +1 -1
  19. package/dist/ir/builder.test.js +20 -10
  20. package/dist/ir/builder.test.js.map +1 -1
  21. package/dist/ir/converters/anonymous-synthesis.d.ts +76 -0
  22. package/dist/ir/converters/anonymous-synthesis.d.ts.map +1 -0
  23. package/dist/ir/converters/anonymous-synthesis.js +307 -0
  24. package/dist/ir/converters/anonymous-synthesis.js.map +1 -0
  25. package/dist/ir/converters/expressions/access.d.ts.map +1 -1
  26. package/dist/ir/converters/expressions/access.js +48 -1
  27. package/dist/ir/converters/expressions/access.js.map +1 -1
  28. package/dist/ir/converters/expressions/calls.d.ts.map +1 -1
  29. package/dist/ir/converters/expressions/calls.js +47 -0
  30. package/dist/ir/converters/expressions/calls.js.map +1 -1
  31. package/dist/ir/converters/expressions/collections.d.ts +3 -0
  32. package/dist/ir/converters/expressions/collections.d.ts.map +1 -1
  33. package/dist/ir/converters/expressions/collections.js +39 -1
  34. package/dist/ir/converters/expressions/collections.js.map +1 -1
  35. package/dist/ir/converters/expressions/functions.d.ts.map +1 -1
  36. package/dist/ir/converters/expressions/functions.js +49 -4
  37. package/dist/ir/converters/expressions/functions.js.map +1 -1
  38. package/dist/ir/converters/expressions/helpers.d.ts.map +1 -1
  39. package/dist/ir/converters/expressions/helpers.js +8 -1
  40. package/dist/ir/converters/expressions/helpers.js.map +1 -1
  41. package/dist/ir/converters/statements/control/conditionals.d.ts.map +1 -1
  42. package/dist/ir/converters/statements/control/conditionals.js +4 -6
  43. package/dist/ir/converters/statements/control/conditionals.js.map +1 -1
  44. package/dist/ir/converters/statements/control/loops.js +5 -5
  45. package/dist/ir/converters/statements/control/loops.js.map +1 -1
  46. package/dist/ir/converters/statements/declarations/interfaces.d.ts +4 -3
  47. package/dist/ir/converters/statements/declarations/interfaces.d.ts.map +1 -1
  48. package/dist/ir/converters/statements/declarations/interfaces.js +55 -1
  49. package/dist/ir/converters/statements/declarations/interfaces.js.map +1 -1
  50. package/dist/ir/converters/statements/declarations/type-aliases.d.ts +8 -3
  51. package/dist/ir/converters/statements/declarations/type-aliases.d.ts.map +1 -1
  52. package/dist/ir/converters/statements/declarations/type-aliases.js +12 -2
  53. package/dist/ir/converters/statements/declarations/type-aliases.js.map +1 -1
  54. package/dist/ir/converters/synthetic-types.d.ts +38 -0
  55. package/dist/ir/converters/synthetic-types.d.ts.map +1 -0
  56. package/dist/ir/converters/synthetic-types.js +123 -0
  57. package/dist/ir/converters/synthetic-types.js.map +1 -0
  58. package/dist/ir/hierarchical-bindings-e2e.test.js +8 -3
  59. package/dist/ir/hierarchical-bindings-e2e.test.js.map +1 -1
  60. package/dist/ir/statement-converter.d.ts +16 -1
  61. package/dist/ir/statement-converter.d.ts.map +1 -1
  62. package/dist/ir/statement-converter.js +32 -0
  63. package/dist/ir/statement-converter.js.map +1 -1
  64. package/dist/ir/type-converter/index.d.ts +1 -1
  65. package/dist/ir/type-converter/index.d.ts.map +1 -1
  66. package/dist/ir/type-converter/index.js +1 -1
  67. package/dist/ir/type-converter/index.js.map +1 -1
  68. package/dist/ir/type-converter/inference.d.ts +12 -0
  69. package/dist/ir/type-converter/inference.d.ts.map +1 -1
  70. package/dist/ir/type-converter/inference.js +145 -6
  71. package/dist/ir/type-converter/inference.js.map +1 -1
  72. package/dist/ir/type-converter/objects.d.ts.map +1 -1
  73. package/dist/ir/type-converter/objects.js +3 -2
  74. package/dist/ir/type-converter/objects.js.map +1 -1
  75. package/dist/ir/type-converter/orchestrator.d.ts +2 -2
  76. package/dist/ir/type-converter/orchestrator.d.ts.map +1 -1
  77. package/dist/ir/type-converter/orchestrator.js +37 -0
  78. package/dist/ir/type-converter/orchestrator.js.map +1 -1
  79. package/dist/ir/type-converter/references.d.ts.map +1 -1
  80. package/dist/ir/type-converter/references.js +16 -5
  81. package/dist/ir/type-converter/references.js.map +1 -1
  82. package/dist/ir/type-converter.d.ts +1 -1
  83. package/dist/ir/type-converter.d.ts.map +1 -1
  84. package/dist/ir/type-converter.js +1 -1
  85. package/dist/ir/type-converter.js.map +1 -1
  86. package/dist/ir/types/expressions.d.ts +8 -0
  87. package/dist/ir/types/expressions.d.ts.map +1 -1
  88. package/dist/ir/types/index.d.ts +1 -1
  89. package/dist/ir/types/index.d.ts.map +1 -1
  90. package/dist/ir/types/index.js.map +1 -1
  91. package/dist/ir/types/ir-types.d.ts +24 -1
  92. package/dist/ir/types/ir-types.d.ts.map +1 -1
  93. package/dist/ir/types/module.d.ts +1 -1
  94. package/dist/ir/types/module.d.ts.map +1 -1
  95. package/dist/ir/types.d.ts +1 -1
  96. package/dist/ir/types.d.ts.map +1 -1
  97. package/dist/ir/types.js.map +1 -1
  98. package/dist/program/bindings.d.ts +51 -3
  99. package/dist/program/bindings.d.ts.map +1 -1
  100. package/dist/program/bindings.js +181 -19
  101. package/dist/program/bindings.js.map +1 -1
  102. package/dist/program/creation.d.ts.map +1 -1
  103. package/dist/program/creation.js +11 -9
  104. package/dist/program/creation.js.map +1 -1
  105. package/dist/program/dependency-graph.d.ts.map +1 -1
  106. package/dist/program/dependency-graph.js +65 -1
  107. package/dist/program/dependency-graph.js.map +1 -1
  108. package/dist/program/types.d.ts +4 -3
  109. package/dist/program/types.d.ts.map +1 -1
  110. package/dist/resolver/clr-bindings-resolver.d.ts +93 -0
  111. package/dist/resolver/clr-bindings-resolver.d.ts.map +1 -0
  112. package/dist/resolver/{dotnet-import-resolver.js → clr-bindings-resolver.js} +114 -24
  113. package/dist/resolver/clr-bindings-resolver.js.map +1 -0
  114. package/dist/resolver/import-resolution.d.ts +4 -4
  115. package/dist/resolver/import-resolution.d.ts.map +1 -1
  116. package/dist/resolver/import-resolution.js +17 -17
  117. package/dist/resolver/import-resolution.js.map +1 -1
  118. package/dist/resolver/index.d.ts +2 -2
  119. package/dist/resolver/index.d.ts.map +1 -1
  120. package/dist/resolver/index.js +2 -2
  121. package/dist/resolver/index.js.map +1 -1
  122. package/dist/resolver/types.d.ts +1 -1
  123. package/dist/resolver/types.d.ts.map +1 -1
  124. package/dist/resolver.d.ts +2 -2
  125. package/dist/resolver.d.ts.map +1 -1
  126. package/dist/resolver.js +1 -1
  127. package/dist/resolver.js.map +1 -1
  128. package/dist/resolver.test.js +1 -1
  129. package/dist/resolver.test.js.map +1 -1
  130. package/dist/types/diagnostic.d.ts +1 -1
  131. package/dist/types/diagnostic.d.ts.map +1 -1
  132. package/dist/types/diagnostic.js.map +1 -1
  133. package/dist/types/metadata.d.ts +1 -1
  134. package/dist/types/metadata.d.ts.map +1 -1
  135. package/dist/types/module.d.ts +1 -1
  136. package/dist/types/module.d.ts.map +1 -1
  137. package/dist/types/parameter-modifiers.d.ts.map +1 -1
  138. package/dist/types/parameter-modifiers.js +7 -3
  139. package/dist/types/parameter-modifiers.js.map +1 -1
  140. package/dist/types/support-types.test.js +6 -3
  141. package/dist/types/support-types.test.js.map +1 -1
  142. package/dist/validation/imports.js +1 -1
  143. package/dist/validation/imports.js.map +1 -1
  144. package/dist/validation/static-safety.d.ts +6 -1
  145. package/dist/validation/static-safety.d.ts.map +1 -1
  146. package/dist/validation/static-safety.js +146 -38
  147. package/dist/validation/static-safety.js.map +1 -1
  148. package/dist/validation/unsupported-utility-types.d.ts +38 -0
  149. package/dist/validation/unsupported-utility-types.d.ts.map +1 -0
  150. package/dist/validation/unsupported-utility-types.js +53 -0
  151. package/dist/validation/unsupported-utility-types.js.map +1 -0
  152. package/dist/validator.test.js +307 -16
  153. package/dist/validator.test.js.map +1 -1
  154. package/package.json +1 -1
  155. package/dist/ir/type-converter/clr-type-resolver.d.ts +0 -15
  156. package/dist/ir/type-converter/clr-type-resolver.d.ts.map +0 -1
  157. package/dist/ir/type-converter/clr-type-resolver.js +0 -120
  158. package/dist/ir/type-converter/clr-type-resolver.js.map +0 -1
  159. package/dist/resolver/dotnet-import-resolver.d.ts +0 -74
  160. package/dist/resolver/dotnet-import-resolver.d.ts.map +0 -1
  161. package/dist/resolver/dotnet-import-resolver.js.map +0 -1
  162. package/dist/types/test-debug.d.ts.map +0 -1
  163. package/dist/types/test-debug.js.map +0 -1
  164. package/dist/validation/aot-safety.d.ts +0 -24
  165. package/dist/validation/aot-safety.d.ts.map +0 -1
  166. package/dist/validation/aot-safety.js +0 -114
  167. package/dist/validation/aot-safety.js.map +0 -1
@@ -13,7 +13,7 @@ import * as ts from "typescript";
13
13
  import { validateProgram } from "./validator.js";
14
14
  import { DotnetMetadataRegistry } from "./dotnet-metadata.js";
15
15
  import { BindingRegistry } from "./program/bindings.js";
16
- import { createDotNetImportResolver } from "./resolver/dotnet-import-resolver.js";
16
+ import { createClrBindingsResolver } from "./resolver/clr-bindings-resolver.js";
17
17
  /**
18
18
  * Helper to create a test program from source code
19
19
  */
@@ -38,13 +38,14 @@ const createTestProgram = (source, fileName = "test.ts") => {
38
38
  program,
39
39
  checker: program.getTypeChecker(),
40
40
  options: {
41
+ projectRoot: "/test",
41
42
  sourceRoot: "/test",
42
43
  rootNamespace: "Test",
43
44
  },
44
45
  sourceFiles: [sourceFile],
45
46
  metadata: new DotnetMetadataRegistry(),
46
47
  bindings: new BindingRegistry(),
47
- dotnetResolver: createDotNetImportResolver("/test"),
48
+ clrResolver: createClrBindingsResolver("/test"),
48
49
  };
49
50
  };
50
51
  describe("Generic Validation", () => {
@@ -208,15 +209,26 @@ describe("Static Safety Validation", () => {
208
209
  });
209
210
  });
210
211
  describe("TSN7403 - Object literal requires nominal type", () => {
211
- it("should reject object literal without contextual type", () => {
212
+ it("should allow simple object literal (auto-synthesis)", () => {
213
+ // Simple object literals with identifier keys are now synthesized automatically
212
214
  const source = `
213
215
  const a = { x: 1 };
216
+ `;
217
+ const program = createTestProgram(source);
218
+ const diagnostics = validateProgram(program);
219
+ const objDiag = diagnostics.diagnostics.find((d) => d.code === "TSN7403");
220
+ expect(objDiag).to.equal(undefined);
221
+ });
222
+ it("should reject object literal with method shorthand", () => {
223
+ // Method shorthand is not eligible for synthesis
224
+ const source = `
225
+ const a = { foo() { return 1; } };
214
226
  `;
215
227
  const program = createTestProgram(source);
216
228
  const diagnostics = validateProgram(program);
217
229
  const objDiag = diagnostics.diagnostics.find((d) => d.code === "TSN7403");
218
230
  expect(objDiag).not.to.equal(undefined);
219
- expect(objDiag?.message).to.include("contextual nominal type");
231
+ expect(objDiag?.message).to.include("Method shorthand");
220
232
  });
221
233
  it("should allow object literal with interface type", () => {
222
234
  const source = `
@@ -291,23 +303,139 @@ describe("Static Safety Validation", () => {
291
303
  const paramDiag = diagnostics.diagnostics.find((d) => d.code === "TSN7405");
292
304
  expect(paramDiag).to.equal(undefined);
293
305
  });
306
+ // Contextual type inference tests
307
+ it("should allow lambda with contextually inferred params in array.sort", () => {
308
+ const source = `
309
+ const nums: number[] = [3, 1, 2];
310
+ const sorted = nums.sort((a, b) => a - b);
311
+ `;
312
+ const program = createTestProgram(source);
313
+ const diagnostics = validateProgram(program);
314
+ const paramDiag = diagnostics.diagnostics.find((d) => d.code === "TSN7405");
315
+ expect(paramDiag).to.equal(undefined);
316
+ });
317
+ it("should allow lambda with contextually inferred params in array.map", () => {
318
+ const source = `
319
+ const nums: number[] = [1, 2, 3];
320
+ const doubled = nums.map((x) => x * 2);
321
+ `;
322
+ const program = createTestProgram(source);
323
+ const diagnostics = validateProgram(program);
324
+ const paramDiag = diagnostics.diagnostics.find((d) => d.code === "TSN7405");
325
+ expect(paramDiag).to.equal(undefined);
326
+ });
327
+ it("should allow lambda with contextually inferred params in array.filter", () => {
328
+ const source = `
329
+ const nums: number[] = [1, 2, 3, 4];
330
+ const evens = nums.filter((x) => x % 2 === 0);
331
+ `;
332
+ const program = createTestProgram(source);
333
+ const diagnostics = validateProgram(program);
334
+ const paramDiag = diagnostics.diagnostics.find((d) => d.code === "TSN7405");
335
+ expect(paramDiag).to.equal(undefined);
336
+ });
337
+ it("should allow lambda with contextually inferred params in array.find", () => {
338
+ const source = `
339
+ const nums: number[] = [1, 2, 3];
340
+ const found = nums.find((x) => x > 2);
341
+ `;
342
+ const program = createTestProgram(source);
343
+ const diagnostics = validateProgram(program);
344
+ const paramDiag = diagnostics.diagnostics.find((d) => d.code === "TSN7405");
345
+ expect(paramDiag).to.equal(undefined);
346
+ });
347
+ it("should allow lambda assigned to typed function variable", () => {
348
+ const source = `
349
+ const fn: (x: number) => number = (x) => x + 1;
350
+ `;
351
+ const program = createTestProgram(source);
352
+ const diagnostics = validateProgram(program);
353
+ const paramDiag = diagnostics.diagnostics.find((d) => d.code === "TSN7405");
354
+ expect(paramDiag).to.equal(undefined);
355
+ });
356
+ it("should allow lambda passed to higher-order function", () => {
357
+ const source = `
358
+ function apply(fn: (x: number) => number, value: number): number {
359
+ return fn(value);
360
+ }
361
+ const result = apply((x) => x * 2, 5);
362
+ `;
363
+ const program = createTestProgram(source);
364
+ const diagnostics = validateProgram(program);
365
+ const paramDiag = diagnostics.diagnostics.find((d) => d.code === "TSN7405");
366
+ expect(paramDiag).to.equal(undefined);
367
+ });
368
+ it("should allow Promise executor callback without explicit types", () => {
369
+ const source = `
370
+ export async function delay(ms: number): Promise<void> {
371
+ return new Promise((resolve) => {
372
+ setTimeout(resolve, ms);
373
+ });
374
+ }
375
+ `;
376
+ const program = createTestProgram(source);
377
+ const diagnostics = validateProgram(program);
378
+ const paramDiag = diagnostics.diagnostics.find((d) => d.code === "TSN7405");
379
+ expect(paramDiag).to.equal(undefined);
380
+ });
381
+ it("should allow Promise executor with both resolve and reject", () => {
382
+ const source = `
383
+ export function fetchData(): Promise<string> {
384
+ return new Promise((resolve, reject) => {
385
+ resolve("data");
386
+ });
387
+ }
388
+ `;
389
+ const program = createTestProgram(source);
390
+ const diagnostics = validateProgram(program);
391
+ const paramDiag = diagnostics.diagnostics.find((d) => d.code === "TSN7405");
392
+ expect(paramDiag).to.equal(undefined);
393
+ });
294
394
  });
295
- describe("TSN7413 - Dictionary key must be string", () => {
296
- it("should reject Record with number key", () => {
395
+ describe("TSN7413 - Dictionary key type validation", () => {
396
+ it("should allow Record with string key", () => {
397
+ const source = `
398
+ const d: Record<string, number> = {};
399
+ `;
400
+ const program = createTestProgram(source);
401
+ const diagnostics = validateProgram(program);
402
+ const keyDiag = diagnostics.diagnostics.find((d) => d.code === "TSN7413");
403
+ expect(keyDiag).to.equal(undefined);
404
+ });
405
+ it("should allow Record with number key", () => {
297
406
  const source = `
298
407
  const d: Record<number, string> = {};
299
408
  `;
300
409
  const program = createTestProgram(source);
301
410
  const diagnostics = validateProgram(program);
302
411
  const keyDiag = diagnostics.diagnostics.find((d) => d.code === "TSN7413");
303
- expect(keyDiag).not.to.equal(undefined);
304
- expect(keyDiag?.message).to.include("string");
412
+ expect(keyDiag).to.equal(undefined);
413
+ });
414
+ it("should allow index signature with string key", () => {
415
+ const source = `
416
+ interface StringIndexed {
417
+ [key: string]: number;
418
+ }
419
+ `;
420
+ const program = createTestProgram(source);
421
+ const diagnostics = validateProgram(program);
422
+ const keyDiag = diagnostics.diagnostics.find((d) => d.code === "TSN7413");
423
+ expect(keyDiag).to.equal(undefined);
305
424
  });
306
- it("should reject index signature with number key", () => {
425
+ it("should allow index signature with number key", () => {
307
426
  const source = `
308
427
  interface NumIndexed {
309
428
  [key: number]: string;
310
429
  }
430
+ `;
431
+ const program = createTestProgram(source);
432
+ const diagnostics = validateProgram(program);
433
+ const keyDiag = diagnostics.diagnostics.find((d) => d.code === "TSN7413");
434
+ expect(keyDiag).to.equal(undefined);
435
+ });
436
+ it("should reject Record with symbol key", () => {
437
+ const source = `
438
+ const d: Record<symbol, string> = {};
311
439
  `;
312
440
  const program = createTestProgram(source);
313
441
  const diagnostics = validateProgram(program);
@@ -315,26 +443,189 @@ describe("Static Safety Validation", () => {
315
443
  expect(keyDiag).not.to.equal(undefined);
316
444
  expect(keyDiag?.message).to.include("string");
317
445
  });
318
- it("should allow Record with string key", () => {
446
+ it("should reject Record with object key type", () => {
319
447
  const source = `
320
- const d: Record<string, number> = {};
448
+ interface Key { id: string; }
449
+ const d: Record<Key, string> = {};
321
450
  `;
322
451
  const program = createTestProgram(source);
323
452
  const diagnostics = validateProgram(program);
324
453
  const keyDiag = diagnostics.diagnostics.find((d) => d.code === "TSN7413");
325
- expect(keyDiag).to.equal(undefined);
454
+ expect(keyDiag).not.to.equal(undefined);
326
455
  });
327
- it("should allow index signature with string key", () => {
456
+ });
457
+ describe("TSN7410 - Intersection types not supported", () => {
458
+ it("should reject intersection type", () => {
328
459
  const source = `
329
- interface StringIndexed {
330
- [key: string]: number;
331
- }
460
+ interface Named { name: string; }
461
+ interface Aged { age: number; }
462
+ type Person = Named & Aged;
332
463
  `;
333
464
  const program = createTestProgram(source);
334
465
  const diagnostics = validateProgram(program);
466
+ const intDiag = diagnostics.diagnostics.find((d) => d.code === "TSN7410");
467
+ expect(intDiag).not.to.equal(undefined);
468
+ expect(intDiag?.message).to.include("Intersection types");
469
+ });
470
+ it("should reject nested intersection type", () => {
471
+ const source = `
472
+ interface A { a: string; }
473
+ interface B { b: number; }
474
+ interface C { c: boolean; }
475
+ type ABC = A & B & C;
476
+ `;
477
+ const program = createTestProgram(source);
478
+ const diagnostics = validateProgram(program);
479
+ const intDiag = diagnostics.diagnostics.find((d) => d.code === "TSN7410");
480
+ expect(intDiag).not.to.equal(undefined);
481
+ });
482
+ });
483
+ describe("TSN7406 - Mapped utility types not supported", () => {
484
+ it("should reject Partial<T>", () => {
485
+ const source = `
486
+ interface Person { name: string; age: number; }
487
+ type PartialPerson = Partial<Person>;
488
+ `;
489
+ const program = createTestProgram(source);
490
+ const diagnostics = validateProgram(program);
491
+ const diag = diagnostics.diagnostics.find((d) => d.code === "TSN7406");
492
+ expect(diag).not.to.equal(undefined);
493
+ expect(diag?.message).to.include("Partial");
494
+ });
495
+ it("should reject Required<T>", () => {
496
+ const source = `
497
+ interface Person { name?: string; }
498
+ type RequiredPerson = Required<Person>;
499
+ `;
500
+ const program = createTestProgram(source);
501
+ const diagnostics = validateProgram(program);
502
+ const diag = diagnostics.diagnostics.find((d) => d.code === "TSN7406");
503
+ expect(diag).not.to.equal(undefined);
504
+ expect(diag?.message).to.include("Required");
505
+ });
506
+ it("should reject Pick<T, K>", () => {
507
+ const source = `
508
+ interface Person { name: string; age: number; email: string; }
509
+ type NameOnly = Pick<Person, "name">;
510
+ `;
511
+ const program = createTestProgram(source);
512
+ const diagnostics = validateProgram(program);
513
+ const diag = diagnostics.diagnostics.find((d) => d.code === "TSN7406");
514
+ expect(diag).not.to.equal(undefined);
515
+ expect(diag?.message).to.include("Pick");
516
+ });
517
+ it("should reject Omit<T, K>", () => {
518
+ const source = `
519
+ interface Person { name: string; age: number; }
520
+ type NoAge = Omit<Person, "age">;
521
+ `;
522
+ const program = createTestProgram(source);
523
+ const diagnostics = validateProgram(program);
524
+ const diag = diagnostics.diagnostics.find((d) => d.code === "TSN7406");
525
+ expect(diag).not.to.equal(undefined);
526
+ expect(diag?.message).to.include("Omit");
527
+ });
528
+ });
529
+ describe("TSN7407 - Conditional utility types not supported", () => {
530
+ it("should reject Extract<T, U>", () => {
531
+ const source = `
532
+ type StringOrNumber = string | number;
533
+ type OnlyStrings = Extract<StringOrNumber, string>;
534
+ `;
535
+ const program = createTestProgram(source);
536
+ const diagnostics = validateProgram(program);
537
+ const diag = diagnostics.diagnostics.find((d) => d.code === "TSN7407");
538
+ expect(diag).not.to.equal(undefined);
539
+ expect(diag?.message).to.include("Extract");
540
+ });
541
+ it("should reject Exclude<T, U>", () => {
542
+ const source = `
543
+ type StringOrNumber = string | number;
544
+ type NoStrings = Exclude<StringOrNumber, string>;
545
+ `;
546
+ const program = createTestProgram(source);
547
+ const diagnostics = validateProgram(program);
548
+ const diag = diagnostics.diagnostics.find((d) => d.code === "TSN7407");
549
+ expect(diag).not.to.equal(undefined);
550
+ expect(diag?.message).to.include("Exclude");
551
+ });
552
+ it("should reject NonNullable<T>", () => {
553
+ const source = `
554
+ type MaybeString = string | null | undefined;
555
+ type DefinitelyString = NonNullable<MaybeString>;
556
+ `;
557
+ const program = createTestProgram(source);
558
+ const diagnostics = validateProgram(program);
559
+ const diag = diagnostics.diagnostics.find((d) => d.code === "TSN7407");
560
+ expect(diag).not.to.equal(undefined);
561
+ expect(diag?.message).to.include("NonNullable");
562
+ });
563
+ it("should reject ReturnType<T>", () => {
564
+ const source = `
565
+ function greet(name: string): string { return name; }
566
+ type GreetReturn = ReturnType<typeof greet>;
567
+ `;
568
+ const program = createTestProgram(source);
569
+ const diagnostics = validateProgram(program);
570
+ const diag = diagnostics.diagnostics.find((d) => d.code === "TSN7407");
571
+ expect(diag).not.to.equal(undefined);
572
+ expect(diag?.message).to.include("ReturnType");
573
+ });
574
+ it("should reject Parameters<T>", () => {
575
+ const source = `
576
+ function add(a: number, b: number): number { return a + b; }
577
+ type AddParams = Parameters<typeof add>;
578
+ `;
579
+ const program = createTestProgram(source);
580
+ const diagnostics = validateProgram(program);
581
+ const diag = diagnostics.diagnostics.find((d) => d.code === "TSN7407");
582
+ expect(diag).not.to.equal(undefined);
583
+ expect(diag?.message).to.include("Parameters");
584
+ });
585
+ });
586
+ describe("No false positives for utility-like names", () => {
587
+ it("should allow user-defined type named Partial without type args", () => {
588
+ const source = `
589
+ interface Partial { x: number; y: number; }
590
+ const p: Partial = { x: 1, y: 2 };
591
+ `;
592
+ const program = createTestProgram(source);
593
+ const diagnostics = validateProgram(program);
594
+ const diag = diagnostics.diagnostics.find((d) => d.code === "TSN7406");
595
+ expect(diag).to.equal(undefined);
596
+ });
597
+ it("should allow Record<string, T> (string keys are supported)", () => {
598
+ const source = `
599
+ type StringDict = Record<string, number>;
600
+ const d: StringDict = { a: 1, b: 2 };
601
+ `;
602
+ const program = createTestProgram(source);
603
+ const diagnostics = validateProgram(program);
604
+ // Should not have TSN7406 (mapped type) or TSN7413 (non-string key)
605
+ const mappedDiag = diagnostics.diagnostics.find((d) => d.code === "TSN7406");
335
606
  const keyDiag = diagnostics.diagnostics.find((d) => d.code === "TSN7413");
607
+ expect(mappedDiag).to.equal(undefined);
336
608
  expect(keyDiag).to.equal(undefined);
337
609
  });
610
+ it("should allow ReadonlyArray<T> (not a mapped type)", () => {
611
+ const source = `
612
+ const arr: ReadonlyArray<number> = [1, 2, 3];
613
+ `;
614
+ const program = createTestProgram(source);
615
+ const diagnostics = validateProgram(program);
616
+ const diag = diagnostics.diagnostics.find((d) => d.code === "TSN7406");
617
+ expect(diag).to.equal(undefined);
618
+ });
619
+ it("should allow user-defined Extract without type args", () => {
620
+ const source = `
621
+ interface Extract { value: string; }
622
+ const e: Extract = { value: "test" };
623
+ `;
624
+ const program = createTestProgram(source);
625
+ const diagnostics = validateProgram(program);
626
+ const diag = diagnostics.diagnostics.find((d) => d.code === "TSN7407");
627
+ expect(diag).to.equal(undefined);
628
+ });
338
629
  });
339
630
  });
340
631
  //# sourceMappingURL=validator.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"validator.test.js","sourceRoot":"","sources":["../src/validator.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validator.test.js","sourceRoot":"","sources":["../src/validator.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tsonic/frontend",
3
- "version": "0.0.2",
3
+ "version": "0.0.5",
4
4
  "description": "TypeScript parser and IR builder for Tsonic compiler",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,15 +0,0 @@
1
- /**
2
- * CLR type resolver - Maps TypeScript inferred types to CLR type strings
3
- *
4
- * Used for module-level const declarations and class fields where C# requires
5
- * explicit types (cannot use 'var').
6
- */
7
- import * as ts from "typescript";
8
- /**
9
- * Resolve CLR type string from a TypeScript declaration node.
10
- * Uses the type checker to get the inferred type.
11
- *
12
- * Returns undefined if the type cannot be resolved to a CLR primitive.
13
- */
14
- export declare const resolveClrType: (node: ts.VariableDeclaration | ts.PropertyDeclaration, checker: ts.TypeChecker) => string | undefined;
15
- //# sourceMappingURL=clr-type-resolver.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"clr-type-resolver.d.ts","sourceRoot":"","sources":["../../../src/ir/type-converter/clr-type-resolver.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjC;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GACzB,MAAM,EAAE,CAAC,mBAAmB,GAAG,EAAE,CAAC,mBAAmB,EACrD,SAAS,EAAE,CAAC,WAAW,KACtB,MAAM,GAAG,SAGX,CAAC"}
@@ -1,120 +0,0 @@
1
- /**
2
- * CLR type resolver - Maps TypeScript inferred types to CLR type strings
3
- *
4
- * Used for module-level const declarations and class fields where C# requires
5
- * explicit types (cannot use 'var').
6
- */
7
- import * as ts from "typescript";
8
- /**
9
- * Resolve CLR type string from a TypeScript declaration node.
10
- * Uses the type checker to get the inferred type.
11
- *
12
- * Returns undefined if the type cannot be resolved to a CLR primitive.
13
- */
14
- export const resolveClrType = (node, checker) => {
15
- const type = checker.getTypeAtLocation(node);
16
- return mapTypeToClr(type, checker);
17
- };
18
- /**
19
- * Map a TypeScript type to its CLR equivalent.
20
- * Returns undefined for complex types that require IR representation.
21
- */
22
- const mapTypeToClr = (type, checker) => {
23
- const flags = type.flags;
24
- // Primitives
25
- if (flags & ts.TypeFlags.Number) {
26
- return "double";
27
- }
28
- if (flags & ts.TypeFlags.String) {
29
- return "string";
30
- }
31
- if (flags & ts.TypeFlags.Boolean) {
32
- return "bool";
33
- }
34
- if (flags & ts.TypeFlags.BooleanLiteral) {
35
- return "bool";
36
- }
37
- if (flags & ts.TypeFlags.Void) {
38
- return "void";
39
- }
40
- // Number literal types (e.g., const x = 42)
41
- if (flags & ts.TypeFlags.NumberLiteral) {
42
- return "double";
43
- }
44
- // String literal types (e.g., const x = "hello")
45
- if (flags & ts.TypeFlags.StringLiteral) {
46
- return "string";
47
- }
48
- // Null and undefined
49
- if (flags & ts.TypeFlags.Null) {
50
- return "object";
51
- }
52
- if (flags & ts.TypeFlags.Undefined) {
53
- return "object";
54
- }
55
- // Object type - check if it's an array
56
- if (flags & ts.TypeFlags.Object) {
57
- const objectType = type;
58
- // Check for array type
59
- if (checker.isArrayType(type)) {
60
- const typeArgs = checker.getTypeArguments(type);
61
- if (typeArgs.length > 0) {
62
- const elementClr = mapTypeToClr(typeArgs[0], checker);
63
- if (elementClr) {
64
- return `Tsonic.Runtime.Array<${elementClr}>`;
65
- }
66
- }
67
- return "Tsonic.Runtime.Array<object>";
68
- }
69
- // Check for callable signatures (function types) - return undefined to let emitter handle
70
- const callSignatures = type.getCallSignatures();
71
- if (callSignatures.length > 0) {
72
- return undefined; // Function types need special handling in emitter
73
- }
74
- // Check for symbol with name (could be class, interface, etc.)
75
- if (objectType.symbol) {
76
- const name = objectType.symbol.name;
77
- // Known runtime types
78
- if (name === "Array") {
79
- return "Tsonic.Runtime.Array<object>";
80
- }
81
- if (name === "Object") {
82
- return "object";
83
- }
84
- if (name === "Function") {
85
- return "Delegate";
86
- }
87
- // Skip internal TypeScript symbol names
88
- if (name.startsWith("__")) {
89
- return undefined;
90
- }
91
- // For other named types, return the name (may need qualification later)
92
- if (name) {
93
- return name;
94
- }
95
- }
96
- // Anonymous object type - cannot resolve to simple CLR type
97
- return undefined;
98
- }
99
- // Any and unknown
100
- if (flags & ts.TypeFlags.Any) {
101
- return "object";
102
- }
103
- if (flags & ts.TypeFlags.Unknown) {
104
- return "object";
105
- }
106
- // Never type
107
- if (flags & ts.TypeFlags.Never) {
108
- return undefined;
109
- }
110
- // Union types - cannot resolve to simple CLR type
111
- if (flags & ts.TypeFlags.Union) {
112
- return undefined;
113
- }
114
- // Intersection types - cannot resolve to simple CLR type
115
- if (flags & ts.TypeFlags.Intersection) {
116
- return undefined;
117
- }
118
- return undefined;
119
- };
120
- //# sourceMappingURL=clr-type-resolver.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"clr-type-resolver.js","sourceRoot":"","sources":["../../../src/ir/type-converter/clr-type-resolver.ts"],"names":[],"mappings":"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"}