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.
- package/builtin/builtin.ts +161 -65
- package/cmd/goscript/cmd_compile.go +8 -6
- package/compiler/compile.go +28 -11
- package/compiler/compile_decls.go +12 -0
- package/compiler/compile_expr.go +59 -2
- package/compiler/compile_spec.go +110 -3
- package/compiler/compile_stmt.go +89 -15
- package/dist/builtin/builtin.d.ts +57 -1
- package/dist/builtin/builtin.js +73 -0
- package/dist/builtin/builtin.js.map +1 -1
- package/dist/compliance/tests/async_defer_statement/async_defer_statement.gs.d.ts +1 -0
- package/dist/compliance/tests/async_defer_statement/async_defer_statement.gs.js +82 -0
- package/dist/compliance/tests/async_defer_statement/async_defer_statement.gs.js.map +1 -0
- package/dist/compliance/tests/defer_statement/defer_statement.gs.d.ts +1 -0
- package/dist/compliance/tests/defer_statement/defer_statement.gs.js +75 -0
- package/dist/compliance/tests/defer_statement/defer_statement.gs.js.map +1 -0
- package/dist/compliance/tests/embedded_interface_assertion/embedded_interface_assertion.gs.js +1 -1
- package/dist/compliance/tests/embedded_interface_assertion/embedded_interface_assertion.gs.js.map +1 -1
- package/dist/compliance/tests/for_loop_infinite/for_loop_infinite.gs.d.ts +1 -0
- package/dist/compliance/tests/for_loop_infinite/for_loop_infinite.gs.js +14 -0
- package/dist/compliance/tests/for_loop_infinite/for_loop_infinite.gs.js.map +1 -0
- package/dist/compliance/tests/interface_to_interface_type_assertion/interface_to_interface_type_assertion.gs.js +1 -1
- package/dist/compliance/tests/interface_to_interface_type_assertion/interface_to_interface_type_assertion.gs.js.map +1 -1
- package/dist/compliance/tests/interface_type_assertion/interface_type_assertion.gs.js +11 -1
- package/dist/compliance/tests/interface_type_assertion/interface_type_assertion.gs.js.map +1 -1
- package/dist/compliance/tests/interface_type_assertion_signature_mismatch/interface_type_assertion_signature_mismatch.gs.d.ts +1 -0
- package/dist/compliance/tests/interface_type_assertion_signature_mismatch/interface_type_assertion_signature_mismatch.gs.js +51 -0
- package/dist/compliance/tests/interface_type_assertion_signature_mismatch/interface_type_assertion_signature_mismatch.gs.js.map +1 -0
- package/dist/compliance/tests/slices/slices.gs.js +280 -7
- package/dist/compliance/tests/slices/slices.gs.js.map +1 -1
- package/dist/compliance/tests/struct_embedding/struct_embedding.gs.d.ts +1 -0
- package/dist/compliance/tests/struct_embedding/struct_embedding.gs.js +48 -0
- package/dist/compliance/tests/struct_embedding/struct_embedding.gs.js.map +1 -0
- 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.
|
|
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:
|
|
33
|
+
"test": "npm run test:go && npm run test:js",
|
|
34
34
|
"test:go": "go test -v ./...",
|
|
35
|
-
"test:js": "
|
|
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 .",
|