goscript 0.0.10 → 0.0.11

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 (34) hide show
  1. package/builtin/builtin.ts +161 -65
  2. package/cmd/goscript/cmd_compile.go +8 -6
  3. package/compiler/compile.go +28 -11
  4. package/compiler/compile_decls.go +12 -0
  5. package/compiler/compile_expr.go +59 -2
  6. package/compiler/compile_spec.go +110 -3
  7. package/compiler/compile_stmt.go +89 -15
  8. package/dist/builtin/builtin.d.ts +57 -1
  9. package/dist/builtin/builtin.js +73 -0
  10. package/dist/builtin/builtin.js.map +1 -1
  11. package/dist/compliance/tests/async_defer_statement/async_defer_statement.gs.d.ts +1 -0
  12. package/dist/compliance/tests/async_defer_statement/async_defer_statement.gs.js +82 -0
  13. package/dist/compliance/tests/async_defer_statement/async_defer_statement.gs.js.map +1 -0
  14. package/dist/compliance/tests/defer_statement/defer_statement.gs.d.ts +1 -0
  15. package/dist/compliance/tests/defer_statement/defer_statement.gs.js +75 -0
  16. package/dist/compliance/tests/defer_statement/defer_statement.gs.js.map +1 -0
  17. package/dist/compliance/tests/embedded_interface_assertion/embedded_interface_assertion.gs.js +1 -1
  18. package/dist/compliance/tests/embedded_interface_assertion/embedded_interface_assertion.gs.js.map +1 -1
  19. package/dist/compliance/tests/for_loop_infinite/for_loop_infinite.gs.d.ts +1 -0
  20. package/dist/compliance/tests/for_loop_infinite/for_loop_infinite.gs.js +14 -0
  21. package/dist/compliance/tests/for_loop_infinite/for_loop_infinite.gs.js.map +1 -0
  22. package/dist/compliance/tests/interface_to_interface_type_assertion/interface_to_interface_type_assertion.gs.js +1 -1
  23. package/dist/compliance/tests/interface_to_interface_type_assertion/interface_to_interface_type_assertion.gs.js.map +1 -1
  24. package/dist/compliance/tests/interface_type_assertion/interface_type_assertion.gs.js +11 -1
  25. package/dist/compliance/tests/interface_type_assertion/interface_type_assertion.gs.js.map +1 -1
  26. package/dist/compliance/tests/interface_type_assertion_signature_mismatch/interface_type_assertion_signature_mismatch.gs.d.ts +1 -0
  27. package/dist/compliance/tests/interface_type_assertion_signature_mismatch/interface_type_assertion_signature_mismatch.gs.js +51 -0
  28. package/dist/compliance/tests/interface_type_assertion_signature_mismatch/interface_type_assertion_signature_mismatch.gs.js.map +1 -0
  29. package/dist/compliance/tests/slices/slices.gs.js +280 -7
  30. package/dist/compliance/tests/slices/slices.gs.js.map +1 -1
  31. package/dist/compliance/tests/struct_embedding/struct_embedding.gs.d.ts +1 -0
  32. package/dist/compliance/tests/struct_embedding/struct_embedding.gs.js +48 -0
  33. package/dist/compliance/tests/struct_embedding/struct_embedding.gs.js.map +1 -0
  34. package/package.json +4 -3
@@ -0,0 +1,48 @@
1
+ // Generated file based on struct_embedding.go
2
+ // Updated when compliance tests are re-run, DO NOT EDIT!
3
+ import * as goscript from "@go/builtin";
4
+ class Person {
5
+ Name = "";
6
+ Age = 0;
7
+ Greet() {
8
+ const p = this;
9
+ console.log("Hello, my name is " + p.Name);
10
+ }
11
+ constructor(init) { if (init)
12
+ Object.assign(this, init); }
13
+ clone() { return Object.assign(Object.create(Person.prototype), this); }
14
+ // Register this type with the runtime type system
15
+ static __typeInfo = goscript.registerType('Person', goscript.TypeKind.Struct, new Person(), new Set(['Greet']), Person);
16
+ }
17
+ class Employee extends Person {
18
+ // Embedded struct
19
+ ID = 0;
20
+ constructor(init) {
21
+ super(init?.Person || init);
22
+ if (init) {
23
+ const { Person, ...rest } = init;
24
+ Object.assign(this, rest);
25
+ }
26
+ }
27
+ clone() { return Object.assign(Object.create(Employee.prototype), this); }
28
+ // Register this type with the runtime type system
29
+ static __typeInfo = goscript.registerType('Employee', goscript.TypeKind.Struct, new Employee(), new Set([]), Employee);
30
+ }
31
+ export async function main() {
32
+ let e = new Employee({ Person: new Person({ Name: "Alice", Age: 30 }), ID: 123 });
33
+ // Accessing embedded fields
34
+ console.log("Employee Name:", e.Name);
35
+ console.log("Employee Age:", e.Age);
36
+ console.log("Employee ID:", e.ID);
37
+ // Calling embedded method
38
+ e.Greet();
39
+ // Test with a pointer to Employee
40
+ let ep = new Employee({ Person: new Person({ Name: "Bob", Age: 25 }), ID: 456 });
41
+ // Accessing embedded fields via pointer
42
+ console.log("Employee Pointer Name:", ep.Name);
43
+ console.log("Employee Pointer Age:", ep.Age);
44
+ console.log("Employee Pointer ID:", ep.ID);
45
+ // Calling embedded method via pointer
46
+ ep.Greet();
47
+ }
48
+ //# sourceMappingURL=struct_embedding.gs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"struct_embedding.gs.js","sourceRoot":"","sources":["../../../../compliance/tests/struct_embedding/struct_embedding.gs.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "goscript",
3
- "version": "0.0.10",
3
+ "version": "0.0.11",
4
4
  "description": "Go to TypeScript compiler",
5
5
  "bin": {
6
6
  "goscript": "./cmd/goscript/main.js"
@@ -30,9 +30,10 @@
30
30
  "build": "tsc",
31
31
  "prepublishOnly": "npm run build",
32
32
  "example": "cd ./example/simple && bash run.bash",
33
- "test": "npm run test:js && npm run test:go",
33
+ "test": "npm run test:go && npm run test:js",
34
34
  "test:go": "go test -v ./...",
35
- "test:js": "tsc --noEmit && vitest run",
35
+ "test:js": "npm run typecheck && vitest run",
36
+ "typecheck": "tsc --noEmit",
36
37
  "format": "npm run format:go && npm run format:js && npm run format:config",
37
38
  "format:config": "prettier --write tsconfig.json package.json",
38
39
  "format:go": "gofumpt -w .",