@tsonic/frontend 0.0.63 → 0.0.64
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/graph/extraction/imports.d.ts.map +1 -1
- package/dist/graph/extraction/imports.js +10 -2
- package/dist/graph/extraction/imports.js.map +1 -1
- package/dist/ir/binding-resolution.test.js +248 -0
- package/dist/ir/binding-resolution.test.js.map +1 -1
- package/dist/ir/builder/imports.d.ts.map +1 -1
- package/dist/ir/builder/imports.js +8 -1
- package/dist/ir/builder/imports.js.map +1 -1
- package/dist/ir/builder.test.js +137 -0
- package/dist/ir/builder.test.js.map +1 -1
- package/dist/ir/converters/expressions/access/access-converter.d.ts.map +1 -1
- package/dist/ir/converters/expressions/access/access-converter.js +1 -1
- package/dist/ir/converters/expressions/access/access-converter.js.map +1 -1
- package/dist/ir/converters/expressions/access/binding-resolution.d.ts +2 -2
- package/dist/ir/converters/expressions/access/binding-resolution.d.ts.map +1 -1
- package/dist/ir/converters/expressions/access/binding-resolution.js +64 -1
- package/dist/ir/converters/expressions/access/binding-resolution.js.map +1 -1
- package/dist/ir/program-context.d.ts +5 -0
- package/dist/ir/program-context.d.ts.map +1 -1
- package/dist/ir/program-context.js +1 -0
- package/dist/ir/program-context.js.map +1 -1
- package/dist/ir/type-system/internal/type-converter/orchestrator.d.ts.map +1 -1
- package/dist/ir/type-system/internal/type-converter/orchestrator.js +12 -5
- package/dist/ir/type-system/internal/type-converter/orchestrator.js.map +1 -1
- package/dist/ir/type-system/internal/universe/clr-type-parser.d.ts.map +1 -1
- package/dist/ir/type-system/internal/universe/clr-type-parser.js +66 -0
- package/dist/ir/type-system/internal/universe/clr-type-parser.js.map +1 -1
- package/dist/ir/type-system/internal/universe/clr-type-parser.test.d.ts +2 -0
- package/dist/ir/type-system/internal/universe/clr-type-parser.test.d.ts.map +1 -0
- package/dist/ir/type-system/internal/universe/clr-type-parser.test.js +55 -0
- package/dist/ir/type-system/internal/universe/clr-type-parser.test.js.map +1 -0
- package/dist/ir/type-system/type-system-inference.d.ts.map +1 -1
- package/dist/ir/type-system/type-system-inference.js +38 -0
- package/dist/ir/type-system/type-system-inference.js.map +1 -1
- package/dist/ir/validation/anonymous-type-lowering-pass.d.ts.map +1 -1
- package/dist/ir/validation/anonymous-type-lowering-pass.js +34 -0
- package/dist/ir/validation/anonymous-type-lowering-pass.js.map +1 -1
- package/dist/ir/validation/anonymous-type-lowering-regressions.test.d.ts +2 -0
- package/dist/ir/validation/anonymous-type-lowering-regressions.test.d.ts.map +1 -0
- package/dist/ir/validation/anonymous-type-lowering-regressions.test.js +121 -0
- package/dist/ir/validation/anonymous-type-lowering-regressions.test.js.map +1 -0
- package/dist/ir/validation/numeric-invariants.test.js +29 -0
- package/dist/ir/validation/numeric-invariants.test.js.map +1 -1
- package/dist/ir/validation/numeric-proof-pass.d.ts.map +1 -1
- package/dist/ir/validation/numeric-proof-pass.js +21 -0
- package/dist/ir/validation/numeric-proof-pass.js.map +1 -1
- package/dist/program/creation.d.ts.map +1 -1
- package/dist/program/creation.js +104 -13
- package/dist/program/creation.js.map +1 -1
- package/dist/program/creation.test.js +133 -1
- package/dist/program/creation.test.js.map +1 -1
- package/dist/program/diagnostics.d.ts +1 -1
- package/dist/program/diagnostics.d.ts.map +1 -1
- package/dist/program/diagnostics.js +47 -2
- package/dist/program/diagnostics.js.map +1 -1
- package/dist/program/diagnostics.test.d.ts +2 -0
- package/dist/program/diagnostics.test.d.ts.map +1 -0
- package/dist/program/diagnostics.test.js +58 -0
- package/dist/program/diagnostics.test.js.map +1 -0
- package/dist/program/types.d.ts +2 -0
- package/dist/program/types.d.ts.map +1 -1
- package/dist/resolver/import-resolution.d.ts +2 -0
- package/dist/resolver/import-resolution.d.ts.map +1 -1
- package/dist/resolver/import-resolution.js +12 -4
- package/dist/resolver/import-resolution.js.map +1 -1
- package/dist/resolver/node-module-aliases.d.ts +6 -0
- package/dist/resolver/node-module-aliases.d.ts.map +1 -0
- package/dist/resolver/node-module-aliases.js +164 -0
- package/dist/resolver/node-module-aliases.js.map +1 -0
- package/dist/resolver/node-module-aliases.test.d.ts +2 -0
- package/dist/resolver/node-module-aliases.test.d.ts.map +1 -0
- package/dist/resolver/node-module-aliases.test.js +64 -0
- package/dist/resolver/node-module-aliases.test.js.map +1 -0
- package/dist/resolver.test.js +103 -0
- package/dist/resolver.test.js.map +1 -1
- package/dist/surface/js-surface-shims.d.ts +3 -0
- package/dist/surface/js-surface-shims.d.ts.map +1 -0
- package/dist/surface/js-surface-shims.js +332 -0
- package/dist/surface/js-surface-shims.js.map +1 -0
- package/dist/surface/js-surface-shims.test.d.ts +2 -0
- package/dist/surface/js-surface-shims.test.d.ts.map +1 -0
- package/dist/surface/js-surface-shims.test.js +53 -0
- package/dist/surface/js-surface-shims.test.js.map +1 -0
- package/dist/surface/profiles.d.ts +10 -0
- package/dist/surface/profiles.d.ts.map +1 -0
- package/dist/surface/profiles.js +65 -0
- package/dist/surface/profiles.js.map +1 -0
- package/dist/surface/profiles.test.d.ts +2 -0
- package/dist/surface/profiles.test.d.ts.map +1 -0
- package/dist/surface/profiles.test.js +44 -0
- package/dist/surface/profiles.test.js.map +1 -0
- package/dist/validation/imports.d.ts.map +1 -1
- package/dist/validation/imports.js +28 -5
- package/dist/validation/imports.js.map +1 -1
- package/dist/validation/imports.test.js +102 -3
- package/dist/validation/imports.test.js.map +1 -1
- package/package.json +1 -1
|
@@ -531,6 +531,130 @@ describe("Binding Resolution in IR", () => {
|
|
|
531
531
|
});
|
|
532
532
|
});
|
|
533
533
|
describe("Extension Method Binding Resolution", () => {
|
|
534
|
+
it("should resolve js-surface extension methods by receiver type fallback", () => {
|
|
535
|
+
const source = `
|
|
536
|
+
interface String { trim(): string; }
|
|
537
|
+
|
|
538
|
+
export function test(s: string): string {
|
|
539
|
+
return s.trim();
|
|
540
|
+
}
|
|
541
|
+
`;
|
|
542
|
+
const bindings = new BindingRegistry();
|
|
543
|
+
bindings.addBindings("/test/Tsonic.JSRuntime/bindings.json", {
|
|
544
|
+
namespace: "Tsonic.JSRuntime",
|
|
545
|
+
types: [
|
|
546
|
+
{
|
|
547
|
+
clrName: "Tsonic.JSRuntime.String",
|
|
548
|
+
assemblyName: "Tsonic.JSRuntime",
|
|
549
|
+
methods: [
|
|
550
|
+
{
|
|
551
|
+
clrName: "trim",
|
|
552
|
+
normalizedSignature: "trim|(System.String):System.String|static=true",
|
|
553
|
+
parameterCount: 1,
|
|
554
|
+
declaringClrType: "Tsonic.JSRuntime.String",
|
|
555
|
+
declaringAssemblyName: "Tsonic.JSRuntime",
|
|
556
|
+
isExtensionMethod: true,
|
|
557
|
+
},
|
|
558
|
+
],
|
|
559
|
+
properties: [],
|
|
560
|
+
fields: [],
|
|
561
|
+
},
|
|
562
|
+
],
|
|
563
|
+
});
|
|
564
|
+
const { testProgram, options } = createTestProgram(source, bindings);
|
|
565
|
+
const sourceFile = testProgram.sourceFiles[0];
|
|
566
|
+
if (!sourceFile)
|
|
567
|
+
throw new Error("Failed to create source file");
|
|
568
|
+
const jsProgram = {
|
|
569
|
+
...testProgram,
|
|
570
|
+
options: {
|
|
571
|
+
...testProgram.options,
|
|
572
|
+
surface: "js",
|
|
573
|
+
},
|
|
574
|
+
};
|
|
575
|
+
const ctx = createProgramContext(jsProgram, options);
|
|
576
|
+
const result = buildIrModule(sourceFile, jsProgram, options, ctx);
|
|
577
|
+
expect(result.ok).to.equal(true);
|
|
578
|
+
if (!result.ok)
|
|
579
|
+
return;
|
|
580
|
+
const module = result.value;
|
|
581
|
+
const funcDecl = module.body[0];
|
|
582
|
+
if (funcDecl?.kind !== "functionDeclaration")
|
|
583
|
+
return;
|
|
584
|
+
const returnStmt = funcDecl.body.statements[0];
|
|
585
|
+
if (returnStmt?.kind !== "returnStatement" || !returnStmt.expression)
|
|
586
|
+
return;
|
|
587
|
+
if (returnStmt.expression.kind !== "call")
|
|
588
|
+
return;
|
|
589
|
+
if (returnStmt.expression.callee.kind !== "memberAccess")
|
|
590
|
+
return;
|
|
591
|
+
expect(returnStmt.expression.callee.memberBinding).to.not.equal(undefined);
|
|
592
|
+
expect(returnStmt.expression.callee.memberBinding?.isExtensionMethod).to.equal(true);
|
|
593
|
+
expect(returnStmt.expression.callee.memberBinding?.type).to.equal("Tsonic.JSRuntime.String");
|
|
594
|
+
expect(returnStmt.expression.callee.memberBinding?.member).to.equal("trim");
|
|
595
|
+
});
|
|
596
|
+
it("should inherit js-surface extension fallback in nodejs surface", () => {
|
|
597
|
+
const source = `
|
|
598
|
+
interface String { trim(): string; }
|
|
599
|
+
|
|
600
|
+
export function test(s: string): string {
|
|
601
|
+
return s.trim();
|
|
602
|
+
}
|
|
603
|
+
`;
|
|
604
|
+
const bindings = new BindingRegistry();
|
|
605
|
+
bindings.addBindings("/test/Tsonic.JSRuntime/bindings.json", {
|
|
606
|
+
namespace: "Tsonic.JSRuntime",
|
|
607
|
+
types: [
|
|
608
|
+
{
|
|
609
|
+
clrName: "Tsonic.JSRuntime.String",
|
|
610
|
+
assemblyName: "Tsonic.JSRuntime",
|
|
611
|
+
methods: [
|
|
612
|
+
{
|
|
613
|
+
clrName: "trim",
|
|
614
|
+
normalizedSignature: "trim|(System.String):System.String|static=true",
|
|
615
|
+
parameterCount: 1,
|
|
616
|
+
declaringClrType: "Tsonic.JSRuntime.String",
|
|
617
|
+
declaringAssemblyName: "Tsonic.JSRuntime",
|
|
618
|
+
isExtensionMethod: true,
|
|
619
|
+
},
|
|
620
|
+
],
|
|
621
|
+
properties: [],
|
|
622
|
+
fields: [],
|
|
623
|
+
},
|
|
624
|
+
],
|
|
625
|
+
});
|
|
626
|
+
const { testProgram, options } = createTestProgram(source, bindings);
|
|
627
|
+
const sourceFile = testProgram.sourceFiles[0];
|
|
628
|
+
if (!sourceFile)
|
|
629
|
+
throw new Error("Failed to create source file");
|
|
630
|
+
const jsProgram = {
|
|
631
|
+
...testProgram,
|
|
632
|
+
options: {
|
|
633
|
+
...testProgram.options,
|
|
634
|
+
surface: "nodejs",
|
|
635
|
+
},
|
|
636
|
+
};
|
|
637
|
+
const ctx = createProgramContext(jsProgram, options);
|
|
638
|
+
const result = buildIrModule(sourceFile, jsProgram, options, ctx);
|
|
639
|
+
expect(result.ok).to.equal(true);
|
|
640
|
+
if (!result.ok)
|
|
641
|
+
return;
|
|
642
|
+
const module = result.value;
|
|
643
|
+
const funcDecl = module.body[0];
|
|
644
|
+
if (funcDecl?.kind !== "functionDeclaration")
|
|
645
|
+
return;
|
|
646
|
+
const returnStmt = funcDecl.body.statements[0];
|
|
647
|
+
if (returnStmt?.kind !== "returnStatement" || !returnStmt.expression)
|
|
648
|
+
return;
|
|
649
|
+
if (returnStmt.expression.kind !== "call")
|
|
650
|
+
return;
|
|
651
|
+
if (returnStmt.expression.callee.kind !== "memberAccess")
|
|
652
|
+
return;
|
|
653
|
+
expect(returnStmt.expression.callee.memberBinding).to.not.equal(undefined);
|
|
654
|
+
expect(returnStmt.expression.callee.memberBinding?.isExtensionMethod).to.equal(true);
|
|
655
|
+
expect(returnStmt.expression.callee.memberBinding?.type).to.equal("Tsonic.JSRuntime.String");
|
|
656
|
+
expect(returnStmt.expression.callee.memberBinding?.member).to.equal("trim");
|
|
657
|
+
});
|
|
534
658
|
it("should resolve instance-style tsbindgen extension methods via __Ext_* container", () => {
|
|
535
659
|
const source = `
|
|
536
660
|
interface IEnumerable_1<T> {}
|
|
@@ -689,6 +813,130 @@ describe("Binding Resolution in IR", () => {
|
|
|
689
813
|
"out",
|
|
690
814
|
]);
|
|
691
815
|
});
|
|
816
|
+
it("should resolve js-surface number receiver extensions by primitive fallback", () => {
|
|
817
|
+
const source = `
|
|
818
|
+
interface Number { toFixed(fractionDigits?: number): string; }
|
|
819
|
+
|
|
820
|
+
export function test(n: number): string {
|
|
821
|
+
return n.toFixed(2);
|
|
822
|
+
}
|
|
823
|
+
`;
|
|
824
|
+
const bindings = new BindingRegistry();
|
|
825
|
+
bindings.addBindings("/test/Tsonic.JSRuntime/bindings.json", {
|
|
826
|
+
namespace: "Tsonic.JSRuntime",
|
|
827
|
+
types: [
|
|
828
|
+
{
|
|
829
|
+
clrName: "Tsonic.JSRuntime.Number",
|
|
830
|
+
assemblyName: "Tsonic.JSRuntime",
|
|
831
|
+
methods: [
|
|
832
|
+
{
|
|
833
|
+
clrName: "toFixed",
|
|
834
|
+
normalizedSignature: "toFixed|(System.Double,System.Int32):System.String|static=true",
|
|
835
|
+
parameterCount: 2,
|
|
836
|
+
declaringClrType: "Tsonic.JSRuntime.Number",
|
|
837
|
+
declaringAssemblyName: "Tsonic.JSRuntime",
|
|
838
|
+
isExtensionMethod: true,
|
|
839
|
+
},
|
|
840
|
+
],
|
|
841
|
+
properties: [],
|
|
842
|
+
fields: [],
|
|
843
|
+
},
|
|
844
|
+
],
|
|
845
|
+
});
|
|
846
|
+
const { testProgram, options } = createTestProgram(source, bindings);
|
|
847
|
+
const sourceFile = testProgram.sourceFiles[0];
|
|
848
|
+
if (!sourceFile)
|
|
849
|
+
throw new Error("Failed to create source file");
|
|
850
|
+
const jsProgram = {
|
|
851
|
+
...testProgram,
|
|
852
|
+
options: {
|
|
853
|
+
...testProgram.options,
|
|
854
|
+
surface: "js",
|
|
855
|
+
},
|
|
856
|
+
};
|
|
857
|
+
const ctx = createProgramContext(jsProgram, options);
|
|
858
|
+
const result = buildIrModule(sourceFile, jsProgram, options, ctx);
|
|
859
|
+
expect(result.ok).to.equal(true);
|
|
860
|
+
if (!result.ok)
|
|
861
|
+
return;
|
|
862
|
+
const module = result.value;
|
|
863
|
+
const fn = module.body[0];
|
|
864
|
+
if (fn?.kind !== "functionDeclaration")
|
|
865
|
+
return;
|
|
866
|
+
const ret = fn.body.statements[0];
|
|
867
|
+
if (ret?.kind !== "returnStatement" || !ret.expression)
|
|
868
|
+
return;
|
|
869
|
+
if (ret.expression.kind !== "call")
|
|
870
|
+
return;
|
|
871
|
+
if (ret.expression.callee.kind !== "memberAccess")
|
|
872
|
+
return;
|
|
873
|
+
expect(ret.expression.callee.memberBinding).to.not.equal(undefined);
|
|
874
|
+
expect(ret.expression.callee.memberBinding?.type).to.equal("Tsonic.JSRuntime.Number");
|
|
875
|
+
expect(ret.expression.callee.memberBinding?.member).to.equal("toFixed");
|
|
876
|
+
expect(ret.expression.callee.memberBinding?.isExtensionMethod).to.equal(true);
|
|
877
|
+
});
|
|
878
|
+
it("should resolve js-surface array receiver extensions by array fallback candidates", () => {
|
|
879
|
+
const source = `
|
|
880
|
+
interface Array<T> { join(separator?: string): string; }
|
|
881
|
+
|
|
882
|
+
export function test(xs: number[]): string {
|
|
883
|
+
return xs.join(",");
|
|
884
|
+
}
|
|
885
|
+
`;
|
|
886
|
+
const bindings = new BindingRegistry();
|
|
887
|
+
bindings.addBindings("/test/Tsonic.JSRuntime/bindings.json", {
|
|
888
|
+
namespace: "Tsonic.JSRuntime",
|
|
889
|
+
types: [
|
|
890
|
+
{
|
|
891
|
+
clrName: "Tsonic.JSRuntime.Array",
|
|
892
|
+
assemblyName: "Tsonic.JSRuntime",
|
|
893
|
+
methods: [
|
|
894
|
+
{
|
|
895
|
+
clrName: "join",
|
|
896
|
+
normalizedSignature: "join|(JSArray_1,System.String):System.String|static=true",
|
|
897
|
+
parameterCount: 2,
|
|
898
|
+
declaringClrType: "Tsonic.JSRuntime.Array",
|
|
899
|
+
declaringAssemblyName: "Tsonic.JSRuntime",
|
|
900
|
+
isExtensionMethod: true,
|
|
901
|
+
},
|
|
902
|
+
],
|
|
903
|
+
properties: [],
|
|
904
|
+
fields: [],
|
|
905
|
+
},
|
|
906
|
+
],
|
|
907
|
+
});
|
|
908
|
+
const { testProgram, options } = createTestProgram(source, bindings);
|
|
909
|
+
const sourceFile = testProgram.sourceFiles[0];
|
|
910
|
+
if (!sourceFile)
|
|
911
|
+
throw new Error("Failed to create source file");
|
|
912
|
+
const jsProgram = {
|
|
913
|
+
...testProgram,
|
|
914
|
+
options: {
|
|
915
|
+
...testProgram.options,
|
|
916
|
+
surface: "js",
|
|
917
|
+
},
|
|
918
|
+
};
|
|
919
|
+
const ctx = createProgramContext(jsProgram, options);
|
|
920
|
+
const result = buildIrModule(sourceFile, jsProgram, options, ctx);
|
|
921
|
+
expect(result.ok).to.equal(true);
|
|
922
|
+
if (!result.ok)
|
|
923
|
+
return;
|
|
924
|
+
const module = result.value;
|
|
925
|
+
const fn = module.body[0];
|
|
926
|
+
if (fn?.kind !== "functionDeclaration")
|
|
927
|
+
return;
|
|
928
|
+
const ret = fn.body.statements[0];
|
|
929
|
+
if (ret?.kind !== "returnStatement" || !ret.expression)
|
|
930
|
+
return;
|
|
931
|
+
if (ret.expression.kind !== "call")
|
|
932
|
+
return;
|
|
933
|
+
if (ret.expression.callee.kind !== "memberAccess")
|
|
934
|
+
return;
|
|
935
|
+
expect(ret.expression.callee.memberBinding).to.not.equal(undefined);
|
|
936
|
+
expect(ret.expression.callee.memberBinding?.type).to.equal("Tsonic.JSRuntime.Array");
|
|
937
|
+
expect(ret.expression.callee.memberBinding?.member).to.equal("join");
|
|
938
|
+
expect(ret.expression.callee.memberBinding?.isExtensionMethod).to.equal(true);
|
|
939
|
+
});
|
|
692
940
|
});
|
|
693
941
|
describe("Call-site argument modifier intrinsics (out/ref/inref)", () => {
|
|
694
942
|
it("should erase out(x) marker for out-parameter extension methods", () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"binding-resolution.test.js","sourceRoot":"","sources":["../../src/ir/binding-resolution.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"binding-resolution.test.js","sourceRoot":"","sources":["../../src/ir/binding-resolution.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"imports.d.ts","sourceRoot":"","sources":["../../../src/ir/builder/imports.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAGjC,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"imports.d.ts","sourceRoot":"","sources":["../../../src/ir/builder/imports.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAGjC,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAsBnE;;;;GAIG;AACH,eAAO,MAAM,cAAc,GACzB,YAAY,EAAE,CAAC,UAAU,EACzB,KAAK,cAAc,KAClB,SAAS,QAAQ,EAkOnB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,uBAAuB,GAClC,MAAM,EAAE,CAAC,iBAAiB,EAC1B,SAAS,OAAO,EAChB,YAAY,aAAa,KACxB,SAAS,iBAAiB,EAkC5B,CAAC"}
|
|
@@ -8,6 +8,8 @@ import { existsSync, readFileSync } from "node:fs";
|
|
|
8
8
|
import { basename, dirname, join } from "node:path";
|
|
9
9
|
import { createDiagnostic } from "../../types/diagnostic.js";
|
|
10
10
|
import { getSourceLocation } from "../../program/diagnostics.js";
|
|
11
|
+
import { resolveNodeModuleAlias } from "../../resolver/node-module-aliases.js";
|
|
12
|
+
import { resolveSurfaceCapabilities } from "../../surface/profiles.js";
|
|
11
13
|
const getSourceSpan = (node) => {
|
|
12
14
|
try {
|
|
13
15
|
const sourceFile = node.getSourceFile();
|
|
@@ -30,7 +32,12 @@ export const extractImports = (sourceFile, ctx) => {
|
|
|
30
32
|
const visitor = (node) => {
|
|
31
33
|
if (ts.isImportDeclaration(node) &&
|
|
32
34
|
ts.isStringLiteral(node.moduleSpecifier)) {
|
|
33
|
-
const
|
|
35
|
+
const originalSource = node.moduleSpecifier.text;
|
|
36
|
+
const surfaceCapabilities = resolveSurfaceCapabilities(ctx.surface);
|
|
37
|
+
const source = surfaceCapabilities.enableNodeModuleAliases
|
|
38
|
+
? (resolveNodeModuleAlias(originalSource)?.canonicalSpecifier ??
|
|
39
|
+
originalSource)
|
|
40
|
+
: originalSource;
|
|
34
41
|
const isLocal = source.startsWith(".") || source.startsWith("/");
|
|
35
42
|
// Use import-driven resolution to detect CLR imports
|
|
36
43
|
// This works for any package that provides bindings.json
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"imports.js","sourceRoot":"","sources":["../../../src/ir/builder/imports.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAKpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"imports.js","sourceRoot":"","sources":["../../../src/ir/builder/imports.ts"],"names":[],"mappings":"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"}
|
package/dist/ir/builder.test.js
CHANGED
|
@@ -963,6 +963,143 @@ describe("IR Builder", () => {
|
|
|
963
963
|
const result = buildIrModule(sourceFile, testProgram, options, ctx);
|
|
964
964
|
expect(result.ok).to.equal(true);
|
|
965
965
|
});
|
|
966
|
+
it("types Record<string, unknown>.Keys as string[] without unknown poison", () => {
|
|
967
|
+
const source = `
|
|
968
|
+
export function firstKey(settings: Record<string, unknown>): string | undefined {
|
|
969
|
+
const settingsKeys = settings.Keys;
|
|
970
|
+
if (settingsKeys.Length === 0) {
|
|
971
|
+
return undefined;
|
|
972
|
+
}
|
|
973
|
+
return settingsKeys[0];
|
|
974
|
+
}
|
|
975
|
+
`;
|
|
976
|
+
const { testProgram, ctx, options } = createTestProgram(source);
|
|
977
|
+
const sourceFile = testProgram.sourceFiles[0];
|
|
978
|
+
if (!sourceFile)
|
|
979
|
+
throw new Error("Failed to create source file");
|
|
980
|
+
const result = buildIrModule(sourceFile, testProgram, options, ctx);
|
|
981
|
+
expect(result.ok).to.equal(true);
|
|
982
|
+
expect(ctx.diagnostics.some((d) => d.code === "TSN5203")).to.equal(false);
|
|
983
|
+
expect(ctx.diagnostics.some((d) => d.code === "TSN5107")).to.equal(false);
|
|
984
|
+
if (!result.ok)
|
|
985
|
+
return;
|
|
986
|
+
const fn = result.value.body.find((stmt) => stmt.kind === "functionDeclaration" && stmt.name === "firstKey");
|
|
987
|
+
expect(fn).to.not.equal(undefined);
|
|
988
|
+
if (!fn)
|
|
989
|
+
return;
|
|
990
|
+
const keyDecl = fn.body.statements.find((stmt) => stmt.kind === "variableDeclaration" &&
|
|
991
|
+
stmt.declarations.some((d) => d.name.kind === "identifierPattern" &&
|
|
992
|
+
d.name.name === "settingsKeys"));
|
|
993
|
+
expect(keyDecl).to.not.equal(undefined);
|
|
994
|
+
const keyInit = keyDecl?.declarations[0]?.initializer;
|
|
995
|
+
expect(keyInit?.kind).to.equal("memberAccess");
|
|
996
|
+
if (!keyInit || keyInit.kind !== "memberAccess")
|
|
997
|
+
return;
|
|
998
|
+
expect(keyInit.inferredType).to.deep.equal({
|
|
999
|
+
kind: "arrayType",
|
|
1000
|
+
elementType: { kind: "primitiveType", name: "string" },
|
|
1001
|
+
});
|
|
1002
|
+
});
|
|
1003
|
+
it("types Record<string, unknown>.Values as unknown[] deterministically", () => {
|
|
1004
|
+
const source = `
|
|
1005
|
+
export function firstValue(settings: Record<string, unknown>): unknown | undefined {
|
|
1006
|
+
const values = settings.Values;
|
|
1007
|
+
return values.Length > 0 ? values[0] : undefined;
|
|
1008
|
+
}
|
|
1009
|
+
`;
|
|
1010
|
+
const { testProgram, ctx, options } = createTestProgram(source);
|
|
1011
|
+
const sourceFile = testProgram.sourceFiles[0];
|
|
1012
|
+
if (!sourceFile)
|
|
1013
|
+
throw new Error("Failed to create source file");
|
|
1014
|
+
const result = buildIrModule(sourceFile, testProgram, options, ctx);
|
|
1015
|
+
expect(result.ok).to.equal(true);
|
|
1016
|
+
expect(ctx.diagnostics.some((d) => d.code === "TSN5203")).to.equal(false);
|
|
1017
|
+
expect(ctx.diagnostics.some((d) => d.code === "TSN5107")).to.equal(false);
|
|
1018
|
+
if (!result.ok)
|
|
1019
|
+
return;
|
|
1020
|
+
const fn = result.value.body.find((stmt) => stmt.kind === "functionDeclaration" && stmt.name === "firstValue");
|
|
1021
|
+
expect(fn).to.not.equal(undefined);
|
|
1022
|
+
if (!fn)
|
|
1023
|
+
return;
|
|
1024
|
+
const valuesDecl = fn.body.statements.find((stmt) => stmt.kind === "variableDeclaration" &&
|
|
1025
|
+
stmt.declarations.some((d) => d.name.kind === "identifierPattern" && d.name.name === "values"));
|
|
1026
|
+
expect(valuesDecl).to.not.equal(undefined);
|
|
1027
|
+
const valuesInit = valuesDecl?.declarations[0]?.initializer;
|
|
1028
|
+
expect(valuesInit?.kind).to.equal("memberAccess");
|
|
1029
|
+
if (!valuesInit || valuesInit.kind !== "memberAccess")
|
|
1030
|
+
return;
|
|
1031
|
+
expect(valuesInit.inferredType).to.deep.equal({
|
|
1032
|
+
kind: "arrayType",
|
|
1033
|
+
elementType: { kind: "unknownType" },
|
|
1034
|
+
});
|
|
1035
|
+
});
|
|
1036
|
+
it("types inferred array Length access as int without unknown poison", () => {
|
|
1037
|
+
const source = `
|
|
1038
|
+
export function count(items: string[]): int {
|
|
1039
|
+
const copy = items;
|
|
1040
|
+
return copy.Length;
|
|
1041
|
+
}
|
|
1042
|
+
`;
|
|
1043
|
+
const { testProgram, ctx, options } = createTestProgram(source);
|
|
1044
|
+
const sourceFile = testProgram.sourceFiles[0];
|
|
1045
|
+
if (!sourceFile)
|
|
1046
|
+
throw new Error("Failed to create source file");
|
|
1047
|
+
const result = buildIrModule(sourceFile, testProgram, options, ctx);
|
|
1048
|
+
expect(result.ok).to.equal(true);
|
|
1049
|
+
expect(ctx.diagnostics.some((d) => d.code === "TSN5203")).to.equal(false);
|
|
1050
|
+
if (!result.ok)
|
|
1051
|
+
return;
|
|
1052
|
+
const fn = result.value.body.find((stmt) => stmt.kind === "functionDeclaration" && stmt.name === "count");
|
|
1053
|
+
expect(fn).to.not.equal(undefined);
|
|
1054
|
+
if (!fn)
|
|
1055
|
+
return;
|
|
1056
|
+
const returnStmt = fn.body.statements.find((s) => s.kind === "returnStatement");
|
|
1057
|
+
expect(returnStmt).to.not.equal(undefined);
|
|
1058
|
+
if (!returnStmt ||
|
|
1059
|
+
returnStmt.kind !== "returnStatement" ||
|
|
1060
|
+
!returnStmt.expression)
|
|
1061
|
+
return;
|
|
1062
|
+
expect(returnStmt.expression.kind).to.equal("memberAccess");
|
|
1063
|
+
if (returnStmt.expression.kind !== "memberAccess")
|
|
1064
|
+
return;
|
|
1065
|
+
expect(returnStmt.expression.inferredType).to.deep.equal({
|
|
1066
|
+
kind: "primitiveType",
|
|
1067
|
+
name: "int",
|
|
1068
|
+
});
|
|
1069
|
+
});
|
|
1070
|
+
it("types tuple Length access as int without unknown poison", () => {
|
|
1071
|
+
const source = `
|
|
1072
|
+
export function tupleCount(pair: [string, int]): int {
|
|
1073
|
+
return pair.Length;
|
|
1074
|
+
}
|
|
1075
|
+
`;
|
|
1076
|
+
const { testProgram, ctx, options } = createTestProgram(source);
|
|
1077
|
+
const sourceFile = testProgram.sourceFiles[0];
|
|
1078
|
+
if (!sourceFile)
|
|
1079
|
+
throw new Error("Failed to create source file");
|
|
1080
|
+
const result = buildIrModule(sourceFile, testProgram, options, ctx);
|
|
1081
|
+
expect(result.ok).to.equal(true);
|
|
1082
|
+
expect(ctx.diagnostics.some((d) => d.code === "TSN5203")).to.equal(false);
|
|
1083
|
+
if (!result.ok)
|
|
1084
|
+
return;
|
|
1085
|
+
const fn = result.value.body.find((stmt) => stmt.kind === "functionDeclaration" && stmt.name === "tupleCount");
|
|
1086
|
+
expect(fn).to.not.equal(undefined);
|
|
1087
|
+
if (!fn)
|
|
1088
|
+
return;
|
|
1089
|
+
const returnStmt = fn.body.statements.find((s) => s.kind === "returnStatement");
|
|
1090
|
+
expect(returnStmt).to.not.equal(undefined);
|
|
1091
|
+
if (!returnStmt ||
|
|
1092
|
+
returnStmt.kind !== "returnStatement" ||
|
|
1093
|
+
!returnStmt.expression)
|
|
1094
|
+
return;
|
|
1095
|
+
expect(returnStmt.expression.kind).to.equal("memberAccess");
|
|
1096
|
+
if (returnStmt.expression.kind !== "memberAccess")
|
|
1097
|
+
return;
|
|
1098
|
+
expect(returnStmt.expression.inferredType).to.deep.equal({
|
|
1099
|
+
kind: "primitiveType",
|
|
1100
|
+
name: "int",
|
|
1101
|
+
});
|
|
1102
|
+
});
|
|
966
1103
|
});
|
|
967
1104
|
describe("For-Await Loop Conversion", () => {
|
|
968
1105
|
it("should set isAwait=true for 'for await' loop", () => {
|