goscript 0.0.42 → 0.0.44

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 (116) hide show
  1. package/compiler/analysis.go +87 -0
  2. package/compiler/assignment.go +6 -0
  3. package/compiler/compiler.go +85 -5
  4. package/compiler/composite-lit.go +17 -0
  5. package/compiler/decl.go +42 -20
  6. package/compiler/expr-call.go +37 -1
  7. package/compiler/expr-type.go +20 -0
  8. package/compiler/lit.go +4 -20
  9. package/compiler/spec-struct.go +3 -4
  10. package/compiler/spec-value.go +18 -1
  11. package/compiler/spec.go +15 -8
  12. package/compiler/stmt-range.go +1 -1
  13. package/compiler/type-assert.go +4 -4
  14. package/compiler/type.go +63 -5
  15. package/dist/gs/builtin/map.d.ts +4 -4
  16. package/dist/gs/builtin/map.js +6 -3
  17. package/dist/gs/builtin/map.js.map +1 -1
  18. package/dist/gs/builtin/slice.d.ts +7 -0
  19. package/dist/gs/builtin/slice.js +12 -0
  20. package/dist/gs/builtin/slice.js.map +1 -1
  21. package/dist/gs/builtin/type.js +8 -85
  22. package/dist/gs/builtin/type.js.map +1 -1
  23. package/dist/gs/fmt/fmt.d.ts +22 -21
  24. package/dist/gs/fmt/fmt.js +12 -12
  25. package/dist/gs/fmt/fmt.js.map +1 -1
  26. package/dist/gs/fmt/index.d.ts +2 -1
  27. package/dist/gs/fmt/index.js.map +1 -1
  28. package/dist/gs/internal/testlog/index.d.ts +1 -0
  29. package/dist/gs/internal/testlog/index.js +5 -0
  30. package/dist/gs/internal/testlog/index.js.map +1 -0
  31. package/dist/gs/io/io.d.ts +13 -13
  32. package/dist/gs/io/io.js +31 -21
  33. package/dist/gs/io/io.js.map +1 -1
  34. package/dist/gs/maps/iter.gs.d.ts +7 -0
  35. package/dist/gs/maps/iter.gs.js +65 -0
  36. package/dist/gs/maps/iter.gs.js.map +1 -0
  37. package/dist/gs/maps/maps.gs.d.ts +7 -0
  38. package/dist/gs/maps/maps.gs.js +79 -0
  39. package/dist/gs/maps/maps.gs.js.map +1 -0
  40. package/dist/gs/os/error.gs.d.ts +1 -1
  41. package/dist/gs/os/error.gs.js +1 -1
  42. package/dist/gs/os/error.gs.js.map +1 -1
  43. package/dist/gs/path/filepath/match.d.ts +4 -3
  44. package/dist/gs/path/filepath/match.js +2 -2
  45. package/dist/gs/path/filepath/match.js.map +1 -1
  46. package/dist/gs/path/filepath/path.d.ts +2 -2
  47. package/dist/gs/path/filepath/path.js +3 -3
  48. package/dist/gs/path/filepath/path.js.map +1 -1
  49. package/dist/gs/reflect/abi.d.ts +59 -0
  50. package/dist/gs/reflect/abi.gs.d.ts +59 -0
  51. package/dist/gs/reflect/abi.gs.js +79 -0
  52. package/dist/gs/reflect/abi.gs.js.map +1 -0
  53. package/dist/gs/reflect/abi.js +79 -0
  54. package/dist/gs/reflect/abi.js.map +1 -0
  55. package/dist/gs/reflect/badlinkname.d.ts +52 -0
  56. package/dist/gs/reflect/badlinkname.gs.d.ts +52 -0
  57. package/dist/gs/reflect/badlinkname.gs.js +72 -0
  58. package/dist/gs/reflect/badlinkname.gs.js.map +1 -0
  59. package/dist/gs/reflect/badlinkname.js +72 -0
  60. package/dist/gs/reflect/badlinkname.js.map +1 -0
  61. package/dist/gs/reflect/deepequal.gs.d.ts +25 -0
  62. package/dist/gs/reflect/deepequal.gs.js +308 -0
  63. package/dist/gs/reflect/deepequal.gs.js.map +1 -0
  64. package/dist/gs/reflect/float32reg_generic.gs.d.ts +2 -0
  65. package/dist/gs/reflect/float32reg_generic.gs.js +10 -0
  66. package/dist/gs/reflect/float32reg_generic.gs.js.map +1 -0
  67. package/dist/gs/reflect/index.gs.d.ts +1 -0
  68. package/dist/gs/reflect/index.gs.js +3 -0
  69. package/dist/gs/reflect/index.gs.js.map +1 -0
  70. package/dist/gs/reflect/iter.gs.d.ts +3 -0
  71. package/dist/gs/reflect/iter.gs.js +24 -0
  72. package/dist/gs/reflect/iter.gs.js.map +1 -0
  73. package/dist/gs/reflect/makefunc.gs.d.ts +34 -0
  74. package/dist/gs/reflect/makefunc.gs.js +288 -0
  75. package/dist/gs/reflect/makefunc.gs.js.map +1 -0
  76. package/dist/gs/reflect/map_swiss.gs.d.ts +14 -0
  77. package/dist/gs/reflect/map_swiss.gs.js +70 -0
  78. package/dist/gs/reflect/map_swiss.gs.js.map +1 -0
  79. package/dist/gs/reflect/reflect.gs.d.ts +132 -0
  80. package/dist/gs/reflect/reflect.gs.js +437 -0
  81. package/dist/gs/reflect/reflect.gs.js.map +1 -0
  82. package/dist/gs/reflect/swapper.gs.d.ts +1 -0
  83. package/dist/gs/reflect/swapper.gs.js +32 -0
  84. package/dist/gs/reflect/swapper.gs.js.map +1 -0
  85. package/dist/gs/reflect/type.gs.d.ts +4 -0
  86. package/dist/gs/reflect/type.gs.js +21 -0
  87. package/dist/gs/reflect/type.gs.js.map +1 -0
  88. package/dist/gs/reflect/value.gs.d.ts +4 -0
  89. package/dist/gs/reflect/value.gs.js +12 -0
  90. package/dist/gs/reflect/value.gs.js.map +1 -0
  91. package/dist/gs/reflect/visiblefields.gs.d.ts +3 -0
  92. package/dist/gs/reflect/visiblefields.gs.js +123 -0
  93. package/dist/gs/reflect/visiblefields.gs.js.map +1 -0
  94. package/dist/gs/strings/reader.d.ts +1 -1
  95. package/dist/gs/strings/reader.js.map +1 -1
  96. package/dist/gs/stringslite/index.d.ts +1 -0
  97. package/dist/gs/stringslite/index.js +2 -0
  98. package/dist/gs/stringslite/index.js.map +1 -0
  99. package/dist/gs/stringslite/strings.d.ts +11 -0
  100. package/dist/gs/stringslite/strings.js +67 -0
  101. package/dist/gs/stringslite/strings.js.map +1 -0
  102. package/dist/gs/time/time.d.ts +69 -0
  103. package/dist/gs/time/time.js +350 -0
  104. package/dist/gs/time/time.js.map +1 -1
  105. package/gs/builtin/map.ts +12 -8
  106. package/gs/builtin/slice.ts +13 -0
  107. package/gs/builtin/type.ts +8 -116
  108. package/gs/fmt/fmt.ts +33 -33
  109. package/gs/fmt/index.ts +4 -0
  110. package/gs/io/io.ts +47 -39
  111. package/gs/os/error.gs.ts +1 -1
  112. package/gs/path/filepath/match.ts +4 -4
  113. package/gs/path/filepath/path.ts +3 -3
  114. package/gs/strings/reader.ts +1 -1
  115. package/gs/time/time.ts +403 -0
  116. package/package.json +1 -1
@@ -0,0 +1,437 @@
1
+ // StructField represents a single field in a struct
2
+ export class StructField {
3
+ Name = "";
4
+ Type = new BasicType(Invalid, "invalid");
5
+ Tag;
6
+ Offset;
7
+ Index;
8
+ Anonymous;
9
+ constructor(init) {
10
+ if (init) {
11
+ Object.assign(this, init);
12
+ }
13
+ }
14
+ clone() {
15
+ return new StructField({
16
+ Name: this.Name,
17
+ Type: this.Type,
18
+ Tag: this.Tag,
19
+ Offset: this.Offset,
20
+ Index: this.Index ? [...this.Index] : undefined,
21
+ Anonymous: this.Anonymous
22
+ });
23
+ }
24
+ }
25
+ // bitVector class for tracking pointers
26
+ export class bitVector {
27
+ bits = [];
28
+ Set(index) {
29
+ const wordIndex = Math.floor(index / 32);
30
+ const bitIndex = index % 32;
31
+ while (this.bits.length <= wordIndex) {
32
+ this.bits.push(0);
33
+ }
34
+ this.bits[wordIndex] |= (1 << bitIndex);
35
+ }
36
+ Get(index) {
37
+ const wordIndex = Math.floor(index / 32);
38
+ const bitIndex = index % 32;
39
+ if (wordIndex >= this.bits.length) {
40
+ return false;
41
+ }
42
+ return (this.bits[wordIndex] & (1 << bitIndex)) !== 0;
43
+ }
44
+ }
45
+ // flag type for internal use
46
+ export class flag {
47
+ _value;
48
+ constructor(_value) {
49
+ this._value = _value;
50
+ if (typeof _value === 'number') {
51
+ this._value = _value;
52
+ }
53
+ else {
54
+ this._value = _value.valueOf();
55
+ }
56
+ }
57
+ valueOf() {
58
+ return typeof this._value === 'number' ? this._value : this._value.valueOf();
59
+ }
60
+ // Support arithmetic operations
61
+ static from(value) {
62
+ return new flag(value);
63
+ }
64
+ }
65
+ // rtype is the common implementation of most values
66
+ export class rtype {
67
+ kind;
68
+ constructor(kind) {
69
+ this.kind = kind;
70
+ }
71
+ Kind() {
72
+ return this.kind;
73
+ }
74
+ String() {
75
+ return this.kind.String();
76
+ }
77
+ Pointers() {
78
+ // Return true for pointer-like types
79
+ const k = this.kind.valueOf();
80
+ return k === Ptr.valueOf() || k === Map.valueOf() || k === Slice.valueOf() || k === Interface.valueOf();
81
+ }
82
+ }
83
+ // funcType represents a function type
84
+ export class funcType extends rtype {
85
+ inCount;
86
+ outCount;
87
+ constructor(kind, inCount = 0, outCount = 0) {
88
+ super(kind);
89
+ this.inCount = inCount;
90
+ this.outCount = outCount;
91
+ }
92
+ }
93
+ export class Kind {
94
+ _value;
95
+ constructor(_value) {
96
+ this._value = _value;
97
+ }
98
+ valueOf() {
99
+ return this._value;
100
+ }
101
+ toString() {
102
+ return this.String();
103
+ }
104
+ static from(value) {
105
+ return new Kind(value);
106
+ }
107
+ String() {
108
+ const kindNames = [
109
+ "invalid", "bool", "int", "int8", "int16", "int32", "int64",
110
+ "uint", "uint8", "uint16", "uint32", "uint64", "uintptr",
111
+ "float32", "float64", "complex64", "complex128",
112
+ "array", "chan", "func", "interface", "map", "ptr", "slice", "string", "struct", "unsafe.Pointer"
113
+ ];
114
+ if (this._value >= 0 && this._value < kindNames.length) {
115
+ return kindNames[this._value];
116
+ }
117
+ return "invalid";
118
+ }
119
+ }
120
+ // Kind constants
121
+ export const Invalid = new Kind(0);
122
+ export const Bool = new Kind(1);
123
+ export const Int = new Kind(2);
124
+ export const Int8 = new Kind(3);
125
+ export const Int16 = new Kind(4);
126
+ export const Int32 = new Kind(5);
127
+ export const Int64 = new Kind(6);
128
+ export const Uint = new Kind(7);
129
+ export const Uint8 = new Kind(8);
130
+ export const Uint16 = new Kind(9);
131
+ export const Uint32 = new Kind(10);
132
+ export const Uint64 = new Kind(11);
133
+ export const Uintptr = new Kind(12);
134
+ export const Float32 = new Kind(13);
135
+ export const Float64 = new Kind(14);
136
+ export const Complex64 = new Kind(15);
137
+ export const Complex128 = new Kind(16);
138
+ export const Array = new Kind(17);
139
+ export const Chan = new Kind(18);
140
+ export const Func = new Kind(19);
141
+ export const Interface = new Kind(20);
142
+ export const Map = new Kind(21);
143
+ export const Ptr = new Kind(22);
144
+ export const Slice = new Kind(23);
145
+ export const String = new Kind(24);
146
+ export const Struct = new Kind(25);
147
+ export const UnsafePointer = new Kind(26);
148
+ export class Value {
149
+ _value;
150
+ _type;
151
+ constructor(_value = null, _type = new BasicType(Invalid, "invalid")) {
152
+ this._value = _value;
153
+ this._type = _type;
154
+ }
155
+ clone() {
156
+ return new Value(this._value, this._type);
157
+ }
158
+ Int() {
159
+ if (typeof this._value === 'number' && Number.isInteger(this._value)) {
160
+ return this._value;
161
+ }
162
+ throw new Error("reflect: call of reflect.Value.Int on " + this._type.Kind().String() + " Value");
163
+ }
164
+ String() {
165
+ if (typeof this._value === 'string') {
166
+ return this._value;
167
+ }
168
+ return this._type.String();
169
+ }
170
+ Len() {
171
+ if (globalThis.Array.isArray(this._value)) {
172
+ return this._value.length;
173
+ }
174
+ if (typeof this._value === 'string') {
175
+ return this._value.length;
176
+ }
177
+ throw new Error("reflect: call of reflect.Value.Len on " + this._type.Kind().String() + " Value");
178
+ }
179
+ Kind() {
180
+ return this._type.Kind();
181
+ }
182
+ Type() {
183
+ return this._type;
184
+ }
185
+ // Add typ() method for compatibility
186
+ typ() {
187
+ return new rtype(this._type.Kind());
188
+ }
189
+ // Add flag property for compatibility
190
+ get flag() {
191
+ return 0;
192
+ }
193
+ // Add Convert method
194
+ Convert(t) {
195
+ // Simple conversion - just wrap the value with new type
196
+ return new Value(this._value, t);
197
+ }
198
+ // Additional methods needed by deepequal
199
+ IsValid() {
200
+ return this._value !== null && this._value !== undefined;
201
+ }
202
+ IsNil() {
203
+ return this._value === null || this._value === undefined;
204
+ }
205
+ UnsafePointer() {
206
+ return this._value;
207
+ }
208
+ Index(i) {
209
+ if (globalThis.Array.isArray(this._value)) {
210
+ return new Value(this._value[i], getTypeOf(this._value[i]));
211
+ }
212
+ throw new Error("reflect: call of reflect.Value.Index on " + this._type.Kind().String() + " Value");
213
+ }
214
+ Bytes() {
215
+ if (this._value instanceof Uint8Array) {
216
+ return this._value;
217
+ }
218
+ throw new Error("reflect: call of reflect.Value.Bytes on " + this._type.Kind().String() + " Value");
219
+ }
220
+ Elem() {
221
+ // For pointers and interfaces, return the element
222
+ return new Value(this._value, this._type);
223
+ }
224
+ NumField() {
225
+ // Placeholder for struct field count
226
+ return 0;
227
+ }
228
+ Field(i) {
229
+ // Placeholder for struct field access
230
+ return new Value(null, new BasicType(Invalid, "invalid"));
231
+ }
232
+ MapRange() {
233
+ // Placeholder for map iteration
234
+ return null;
235
+ }
236
+ MapIndex(key) {
237
+ // Placeholder for map access
238
+ return new Value(null, new BasicType(Invalid, "invalid"));
239
+ }
240
+ Uint() {
241
+ if (typeof this._value === 'number' && this._value >= 0) {
242
+ return this._value;
243
+ }
244
+ throw new Error("reflect: call of reflect.Value.Uint on " + this._type.Kind().String() + " Value");
245
+ }
246
+ Bool() {
247
+ if (typeof this._value === 'boolean') {
248
+ return this._value;
249
+ }
250
+ throw new Error("reflect: call of reflect.Value.Bool on " + this._type.Kind().String() + " Value");
251
+ }
252
+ Float() {
253
+ if (typeof this._value === 'number') {
254
+ return this._value;
255
+ }
256
+ throw new Error("reflect: call of reflect.Value.Float on " + this._type.Kind().String() + " Value");
257
+ }
258
+ Complex() {
259
+ // Placeholder for complex number support
260
+ return this._value;
261
+ }
262
+ pointer() {
263
+ return this._value;
264
+ }
265
+ get ptr() {
266
+ return this._value;
267
+ }
268
+ }
269
+ export class BasicType {
270
+ _kind;
271
+ _name;
272
+ constructor(_kind, _name) {
273
+ this._kind = _kind;
274
+ this._name = _name;
275
+ }
276
+ String() {
277
+ return this._name;
278
+ }
279
+ Kind() {
280
+ return this._kind;
281
+ }
282
+ Elem() {
283
+ return null;
284
+ }
285
+ NumField() {
286
+ return 0;
287
+ }
288
+ Field(i) {
289
+ return new StructField();
290
+ }
291
+ PkgPath() {
292
+ return "";
293
+ }
294
+ common() {
295
+ return new rtype(this._kind);
296
+ }
297
+ }
298
+ class SliceType {
299
+ _elemType;
300
+ constructor(_elemType) {
301
+ this._elemType = _elemType;
302
+ }
303
+ String() {
304
+ return "[]" + this._elemType.String();
305
+ }
306
+ Kind() {
307
+ return Slice;
308
+ }
309
+ Elem() {
310
+ return this._elemType;
311
+ }
312
+ }
313
+ function getTypeOf(value) {
314
+ if (value === null || value === undefined) {
315
+ return new BasicType(Invalid, "invalid");
316
+ }
317
+ switch (typeof value) {
318
+ case 'boolean':
319
+ return new BasicType(Bool, "bool");
320
+ case 'number':
321
+ if (Number.isInteger(value)) {
322
+ return new BasicType(Int, "int");
323
+ }
324
+ else {
325
+ return new BasicType(Float64, "float64");
326
+ }
327
+ case 'string':
328
+ return new BasicType(String, "string");
329
+ case 'object':
330
+ if (globalThis.Array.isArray(value)) {
331
+ if (value.length > 0) {
332
+ const elemType = getTypeOf(value[0]);
333
+ return new SliceType(elemType);
334
+ }
335
+ else {
336
+ // Empty array, assume []interface{}
337
+ return new SliceType(new BasicType(Interface, "interface{}"));
338
+ }
339
+ }
340
+ break;
341
+ }
342
+ return new BasicType(Interface, "interface{}");
343
+ }
344
+ export function TypeOf(i) {
345
+ return getTypeOf(i);
346
+ }
347
+ export function ValueOf(i) {
348
+ const type = getTypeOf(i);
349
+ return new Value(i, type);
350
+ }
351
+ export function DeepEqual(x, y) {
352
+ if (x === y) {
353
+ return true;
354
+ }
355
+ if (x === null || y === null || x === undefined || y === undefined) {
356
+ return x === y;
357
+ }
358
+ if (typeof x !== typeof y) {
359
+ return false;
360
+ }
361
+ if (globalThis.Array.isArray(x) && globalThis.Array.isArray(y)) {
362
+ if (x.length !== y.length) {
363
+ return false;
364
+ }
365
+ for (let i = 0; i < x.length; i++) {
366
+ if (!DeepEqual(x[i], y[i])) {
367
+ return false;
368
+ }
369
+ }
370
+ return true;
371
+ }
372
+ if (typeof x === 'object' && typeof y === 'object') {
373
+ const keysX = Object.keys(x);
374
+ const keysY = Object.keys(y);
375
+ if (keysX.length !== keysY.length) {
376
+ return false;
377
+ }
378
+ for (const key of keysX) {
379
+ if (!keysY.includes(key) || !DeepEqual(x[key], y[key])) {
380
+ return false;
381
+ }
382
+ }
383
+ return true;
384
+ }
385
+ return false;
386
+ }
387
+ export function Zero(typ) {
388
+ let zeroValue;
389
+ switch (typ.Kind().valueOf()) {
390
+ case Bool.valueOf():
391
+ zeroValue = false;
392
+ break;
393
+ case Int.valueOf():
394
+ case Int8.valueOf():
395
+ case Int16.valueOf():
396
+ case Int32.valueOf():
397
+ case Int64.valueOf():
398
+ case Uint.valueOf():
399
+ case Uint8.valueOf():
400
+ case Uint16.valueOf():
401
+ case Uint32.valueOf():
402
+ case Uint64.valueOf():
403
+ case Uintptr.valueOf():
404
+ case Float32.valueOf():
405
+ case Float64.valueOf():
406
+ zeroValue = 0;
407
+ break;
408
+ case String.valueOf():
409
+ zeroValue = "";
410
+ break;
411
+ case Slice.valueOf():
412
+ case Array.valueOf():
413
+ zeroValue = [];
414
+ break;
415
+ default:
416
+ zeroValue = null;
417
+ break;
418
+ }
419
+ return new Value(zeroValue, typ);
420
+ }
421
+ // uintptr class for pointer operations
422
+ export class UintptrClass {
423
+ value;
424
+ constructor(value) {
425
+ this.value = value;
426
+ }
427
+ static from(ptr) {
428
+ return new UintptrClass(0);
429
+ }
430
+ // Make it callable like a function
431
+ static call(ptr) {
432
+ return new UintptrClass(0);
433
+ }
434
+ }
435
+ // Make uintptr callable
436
+ export const uintptr = (ptr) => new UintptrClass(0);
437
+ //# sourceMappingURL=reflect.gs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reflect.gs.js","sourceRoot":"","sources":["../../../gs/reflect/reflect.gs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function Swapper(slice: any): (i: number, j: number) => void;
@@ -0,0 +1,32 @@
1
+ import * as $ from "@goscript/builtin/builtin.js";
2
+ import { ValueOf } from "./type.js";
3
+ import { ValueError } from "./types.js";
4
+ // Simple swapper implementation using JavaScript array operations
5
+ export function Swapper(slice) {
6
+ const v = ValueOf(slice);
7
+ if (v.Kind().valueOf() !== 23) { // Not a slice
8
+ $.panic(new ValueError({ Kind: v.Kind(), Method: "Swapper" }));
9
+ }
10
+ // For JavaScript arrays, we can use simple element swapping
11
+ if (Array.isArray(slice)) {
12
+ return (i, j) => {
13
+ if (i >= 0 && j >= 0 && i < slice.length && j < slice.length) {
14
+ const temp = slice[i];
15
+ slice[i] = slice[j];
16
+ slice[j] = temp;
17
+ }
18
+ };
19
+ }
20
+ // For other slice-like objects, try to access via indexing
21
+ return (i, j) => {
22
+ try {
23
+ const temp = slice[i];
24
+ slice[i] = slice[j];
25
+ slice[j] = temp;
26
+ }
27
+ catch (e) {
28
+ // Ignore errors for now
29
+ }
30
+ };
31
+ }
32
+ //# sourceMappingURL=swapper.gs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"swapper.gs.js","sourceRoot":"","sources":["../../../gs/reflect/swapper.gs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,8BAA8B,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,kEAAkE;AAClE,MAAM,UAAU,OAAO,CAAC,KAAU;IACjC,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAEzB,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,cAAc;QAC9C,CAAC,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,EAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,SAAS,EAAC,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED,4DAA4D;IAC5D,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE;YAC/B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;gBAC9D,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBACtB,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBACpB,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YACjB,CAAC;QACF,CAAC,CAAC;IACH,CAAC;IAED,2DAA2D;IAC3D,OAAO,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE;QAC/B,IAAI,CAAC;YACJ,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACpB,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;QACjB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACZ,wBAAwB;QACzB,CAAC;IACF,CAAC,CAAC;AACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { Type } from "./reflect.gs.js";
2
+ export declare function canRangeFunc(t: Type): boolean;
3
+ export declare function canRangeFunc2(t: Type): boolean;
4
+ export declare function funcLayout(t: Type, rcvr: Type | null): any;
@@ -0,0 +1,21 @@
1
+ // canRangeFunc and canRangeFunc2 are used by iter.gs.ts
2
+ export function canRangeFunc(t) {
3
+ // Placeholder implementation - check if type can be ranged over
4
+ const kind = t.Kind().valueOf();
5
+ return kind === 23 || kind === 17 || kind === 24; // slice, array, string
6
+ }
7
+ export function canRangeFunc2(t) {
8
+ // Placeholder implementation for 2-value range
9
+ const kind = t.Kind().valueOf();
10
+ return kind === 21; // map
11
+ }
12
+ // funcLayout is used by makefunc.gs.ts
13
+ export function funcLayout(t, rcvr) {
14
+ // Placeholder implementation
15
+ return {
16
+ Type: null,
17
+ InCount: 0,
18
+ OutCount: 0
19
+ };
20
+ }
21
+ //# sourceMappingURL=type.gs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type.gs.js","sourceRoot":"","sources":["../../../gs/reflect/type.gs.ts"],"names":[],"mappings":"AAGA,wDAAwD;AACxD,MAAM,UAAU,YAAY,CAAC,CAAO;IAChC,gEAAgE;IAChE,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;IAChC,OAAO,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC,uBAAuB;AAC7E,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,CAAO;IACjC,+CAA+C;IAC/C,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;IAChC,OAAO,IAAI,KAAK,EAAE,CAAC,CAAC,MAAM;AAC9B,CAAC;AAED,uCAAuC;AACvC,MAAM,UAAU,UAAU,CAAC,CAAO,EAAE,IAAiB;IACjD,6BAA6B;IAC7B,OAAO;QACH,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,CAAC;QACV,QAAQ,EAAE,CAAC;KACd,CAAC;AACN,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { Value } from "./reflect.gs.js";
2
+ export { ValueOf } from "./reflect.gs.js";
3
+ export declare function valueInterface(v: Value, safe?: boolean): any;
4
+ export declare function methodReceiver(op: string, v: Value, methodIndex: number): Value;
@@ -0,0 +1,12 @@
1
+ // Export ValueOf and valueInterface for compatibility with generated code
2
+ export { ValueOf } from "./reflect.gs.js";
3
+ // valueInterface is used by deepequal - just return the underlying value
4
+ export function valueInterface(v, safe) {
5
+ return v._value;
6
+ }
7
+ // methodReceiver is used by makefunc - placeholder implementation
8
+ export function methodReceiver(op, v, methodIndex) {
9
+ // Placeholder implementation
10
+ return v;
11
+ }
12
+ //# sourceMappingURL=value.gs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"value.gs.js","sourceRoot":"","sources":["../../../gs/reflect/value.gs.ts"],"names":[],"mappings":"AAGA,0EAA0E;AAC1E,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,yEAAyE;AACzE,MAAM,UAAU,cAAc,CAAC,CAAQ,EAAE,IAAc;IACnD,OAAQ,CAAS,CAAC,MAAM,CAAC;AAC7B,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,cAAc,CAAC,EAAU,EAAE,CAAQ,EAAE,WAAmB;IACpE,6BAA6B;IAC7B,OAAO,CAAC,CAAC;AACb,CAAC"}
@@ -0,0 +1,3 @@
1
+ import * as $ from "@goscript/builtin/builtin.js";
2
+ import { Type, StructField } from "./reflect.gs.js";
3
+ export declare function VisibleFields(t: Type): $.Slice<StructField>;
@@ -0,0 +1,123 @@
1
+ import * as $ from "@goscript/builtin/builtin.js";
2
+ // VisibleFields returns all the visible fields in t, which must be a
3
+ // struct type. A field is defined as visible if it's accessible
4
+ // directly with a FieldByName call. The returned fields include fields
5
+ // inside anonymous struct members and unexported fields. They follow
6
+ // the same order found in the struct, with anonymous fields followed
7
+ // immediately by their promoted fields.
8
+ //
9
+ // For each element e of the returned slice, the corresponding field
10
+ // can be retrieved from a value v of type t by calling v.FieldByIndex(e.Index).
11
+ export function VisibleFields(t) {
12
+ if (t == null) {
13
+ $.panic("reflect: VisibleFields(nil)");
14
+ }
15
+ if (t.Kind().valueOf() != 25) {
16
+ $.panic("reflect.VisibleFields of non-struct type " + t.String());
17
+ }
18
+ let w = new visibleFieldsWalker({ byName: $.makeMap(), fields: $.makeSlice(0, t.NumField()), index: $.makeSlice(0, 2, 'number'), visiting: $.makeMap() });
19
+ w.walk(t);
20
+ // Remove all the fields that have been hidden.
21
+ // Use an in-place removal that avoids copying in
22
+ // the common case that there are no hidden fields.
23
+ let j = 0;
24
+ // A field has been removed. We need to shuffle
25
+ // all the subsequent elements up.
26
+ for (let i = 0; i < $.len(w.fields); i++) {
27
+ {
28
+ let f = w.fields[i];
29
+ if (f.Name == "") {
30
+ continue;
31
+ }
32
+ // A field has been removed. We need to shuffle
33
+ // all the subsequent elements up.
34
+ if (i != j) {
35
+ // A field has been removed. We need to shuffle
36
+ // all the subsequent elements up.
37
+ w.fields[j] = f.clone();
38
+ }
39
+ j++;
40
+ }
41
+ }
42
+ return $.goSlice(w.fields, undefined, j);
43
+ }
44
+ class visibleFieldsWalker {
45
+ get byName() {
46
+ return this._fields.byName.value;
47
+ }
48
+ set byName(value) {
49
+ this._fields.byName.value = value;
50
+ }
51
+ get visiting() {
52
+ return this._fields.visiting.value;
53
+ }
54
+ set visiting(value) {
55
+ this._fields.visiting.value = value;
56
+ }
57
+ get fields() {
58
+ return this._fields.fields.value;
59
+ }
60
+ set fields(value) {
61
+ this._fields.fields.value = value;
62
+ }
63
+ get index() {
64
+ return this._fields.index.value;
65
+ }
66
+ set index(value) {
67
+ this._fields.index.value = value;
68
+ }
69
+ _fields;
70
+ constructor(init) {
71
+ this._fields = {
72
+ byName: $.varRef(init?.byName ?? $.makeMap()),
73
+ visiting: $.varRef(init?.visiting ?? $.makeMap()),
74
+ fields: $.varRef(init?.fields ?? $.makeSlice(0, 0)),
75
+ index: $.varRef(init?.index ?? $.makeSlice(0, 2, 'number'))
76
+ };
77
+ }
78
+ clone() {
79
+ const cloned = new visibleFieldsWalker();
80
+ cloned._fields = {
81
+ byName: $.varRef(this._fields.byName.value),
82
+ visiting: $.varRef(this._fields.visiting.value),
83
+ fields: $.varRef(this._fields.fields.value),
84
+ index: $.varRef(this._fields.index.value)
85
+ };
86
+ return cloned;
87
+ }
88
+ // walk walks all the fields in the struct type t, visiting
89
+ // fields in index preorder and appending them to w.fields
90
+ // (this maintains the required ordering).
91
+ // Fields that have been overridden have their
92
+ // Name field cleared.
93
+ walk(t) {
94
+ const w = this;
95
+ if ($.mapGet(w.visiting, t, false)[0]) {
96
+ return;
97
+ }
98
+ $.mapSet(w.visiting, t, true);
99
+ for (let i = 0; i < t.NumField(); i++) {
100
+ let f = t.Field(i).clone();
101
+ f.Index = $.append(null, w.index);
102
+ if (f.Anonymous) {
103
+ let t = f.Type;
104
+ if (f.Type.Kind().valueOf() == 22) {
105
+ const elemType = f.Type.Elem();
106
+ if (elemType) {
107
+ f.Type = elemType;
108
+ }
109
+ }
110
+ if (f.Type.Kind().valueOf() == 25) {
111
+ w.walk(f.Type);
112
+ }
113
+ }
114
+ else {
115
+ w.fields = $.append(w.fields, f);
116
+ }
117
+ }
118
+ $.deleteMapEntry(w.visiting, t);
119
+ }
120
+ // Register this type with the runtime type system
121
+ static __typeInfo = $.registerStructType('visibleFieldsWalker', new visibleFieldsWalker(), [{ name: "walk", args: [{ name: "t", type: "Type" }], returns: [] }], visibleFieldsWalker, { "byName": { kind: $.TypeKind.Map, keyType: { kind: $.TypeKind.Basic, name: "string" }, elemType: { kind: $.TypeKind.Basic, name: "number" } }, "visiting": { kind: $.TypeKind.Map, keyType: "Type", elemType: { kind: $.TypeKind.Basic, name: "boolean" } }, "fields": { kind: $.TypeKind.Slice, elemType: "StructField" }, "index": { kind: $.TypeKind.Slice, elemType: { kind: $.TypeKind.Basic, name: "number" } } });
122
+ }
123
+ //# sourceMappingURL=visiblefields.gs.js.map