goscript 0.0.37 → 0.0.39
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/compiler/analysis.go +129 -8
- package/compiler/compiler.go +4 -1
- package/compiler/composite-lit.go +2 -4
- package/compiler/expr-call.go +12 -0
- package/compiler/lit.go +100 -6
- package/compiler/protobuf.go +2 -2
- package/compiler/spec-value.go +3 -3
- package/compiler/spec.go +6 -3
- package/compiler/stmt-assign.go +1 -1
- package/dist/gs/builtin/builtin.d.ts +45 -0
- package/dist/gs/builtin/builtin.js +197 -0
- package/dist/gs/builtin/builtin.js.map +1 -1
- package/dist/gs/builtin/slice.js +2 -1
- package/dist/gs/builtin/slice.js.map +1 -1
- package/dist/gs/bytes/buffer.gs.d.ts +56 -0
- package/dist/gs/bytes/buffer.gs.js +611 -0
- package/dist/gs/bytes/buffer.gs.js.map +1 -0
- package/dist/gs/bytes/bytes.gs.d.ts +78 -0
- package/dist/gs/bytes/bytes.gs.js +1011 -0
- package/dist/gs/bytes/bytes.gs.js.map +1 -0
- package/dist/gs/bytes/index.d.ts +4 -0
- package/dist/gs/bytes/index.js +5 -0
- package/dist/gs/bytes/index.js.map +1 -0
- package/dist/gs/bytes/iter.gs.d.ts +9 -0
- package/dist/gs/bytes/iter.gs.js +143 -0
- package/dist/gs/bytes/iter.gs.js.map +1 -0
- package/dist/gs/bytes/reader.gs.d.ts +34 -0
- package/dist/gs/bytes/reader.gs.js +198 -0
- package/dist/gs/bytes/reader.gs.js.map +1 -0
- package/dist/gs/github.com/pkg/errors/errors.d.ts +1 -1
- package/dist/gs/github.com/pkg/errors/errors.js +182 -23
- package/dist/gs/github.com/pkg/errors/errors.js.map +1 -1
- package/dist/gs/github.com/pkg/errors/go113.d.ts +1 -1
- package/dist/gs/github.com/pkg/errors/go113.js +1 -1
- package/dist/gs/github.com/pkg/errors/go113.js.map +1 -1
- package/dist/gs/github.com/pkg/errors/index.d.ts +3 -3
- package/dist/gs/github.com/pkg/errors/index.js +3 -3
- package/dist/gs/github.com/pkg/errors/index.js.map +1 -1
- package/dist/gs/github.com/pkg/errors/stack.d.ts +1 -1
- package/dist/gs/github.com/pkg/errors/stack.js +8 -5
- package/dist/gs/github.com/pkg/errors/stack.js.map +1 -1
- package/dist/gs/internal/abi/index.d.ts +20 -0
- package/dist/gs/internal/abi/index.js +20 -0
- package/dist/gs/internal/abi/index.js.map +1 -0
- package/dist/gs/internal/bytealg/index.d.ts +14 -0
- package/dist/gs/internal/bytealg/index.js +139 -0
- package/dist/gs/internal/bytealg/index.js.map +1 -0
- package/dist/gs/internal/byteorder/index.d.ts +1 -1
- package/dist/gs/internal/byteorder/index.js +4 -4
- package/dist/gs/internal/byteorder/index.js.map +1 -1
- package/dist/gs/math/index.d.ts +44 -44
- package/dist/gs/math/index.js +44 -44
- package/dist/gs/math/index.js.map +1 -1
- package/dist/gs/os/index.d.ts +19 -19
- package/dist/gs/os/index.js +19 -19
- package/dist/gs/os/index.js.map +1 -1
- package/dist/gs/reflect/deepequal.d.ts +2 -0
- package/dist/gs/reflect/deepequal.js +91 -0
- package/dist/gs/reflect/deepequal.js.map +1 -0
- package/dist/gs/reflect/index.d.ts +8 -0
- package/dist/gs/reflect/index.js +10 -0
- package/dist/gs/reflect/index.js.map +1 -0
- package/dist/gs/reflect/iter.d.ts +4 -0
- package/dist/gs/reflect/iter.js +24 -0
- package/dist/gs/reflect/iter.js.map +1 -0
- package/dist/gs/reflect/map.d.ts +20 -0
- package/dist/gs/reflect/map.js +74 -0
- package/dist/gs/reflect/map.js.map +1 -0
- package/dist/gs/reflect/swapper.d.ts +2 -0
- package/dist/gs/reflect/swapper.js +46 -0
- package/dist/gs/reflect/swapper.js.map +1 -0
- package/dist/gs/reflect/type.d.ts +134 -0
- package/dist/gs/reflect/type.js +825 -0
- package/dist/gs/reflect/type.js.map +1 -0
- package/dist/gs/reflect/types.d.ts +90 -0
- package/dist/gs/reflect/types.js +119 -0
- package/dist/gs/reflect/types.js.map +1 -0
- package/dist/gs/reflect/value.d.ts +13 -0
- package/dist/gs/reflect/value.js +202 -0
- package/dist/gs/reflect/value.js.map +1 -0
- package/dist/gs/reflect/visiblefields.d.ts +4 -0
- package/dist/gs/reflect/visiblefields.js +149 -0
- package/dist/gs/reflect/visiblefields.js.map +1 -0
- package/dist/gs/strconv/index.d.ts +6 -6
- package/dist/gs/strconv/index.js +6 -6
- package/dist/gs/strconv/index.js.map +1 -1
- package/dist/gs/strings/index.d.ts +1 -1
- package/dist/gs/strings/index.js +1 -1
- package/dist/gs/strings/index.js.map +1 -1
- package/dist/gs/strings/replace.js.map +1 -1
- package/dist/gs/sync/atomic/index.d.ts +4 -4
- package/dist/gs/sync/atomic/index.js +4 -4
- package/dist/gs/sync/atomic/index.js.map +1 -1
- package/dist/gs/syscall/index.d.ts +6 -6
- package/dist/gs/syscall/index.js +34 -28
- package/dist/gs/syscall/index.js.map +1 -1
- package/dist/gs/unicode/utf8/utf8.d.ts +1 -1
- package/dist/gs/unicode/utf8/utf8.js +4 -2
- package/dist/gs/unicode/utf8/utf8.js.map +1 -1
- package/dist/gs/unsafe/unsafe.js.map +1 -1
- package/gs/builtin/builtin.ts +219 -0
- package/gs/builtin/slice.ts +2 -1
- package/gs/bytes/buffer.gs.ts +614 -0
- package/gs/bytes/bytes.gs.ts +1180 -0
- package/gs/bytes/godoc.txt +69 -0
- package/gs/bytes/index.ts +69 -0
- package/gs/bytes/iter.gs.ts +149 -0
- package/gs/bytes/reader.gs.ts +230 -0
- package/gs/github.com/pkg/errors/errors.ts +408 -238
- package/gs/github.com/pkg/errors/go113.ts +5 -6
- package/gs/github.com/pkg/errors/index.ts +12 -3
- package/gs/github.com/pkg/errors/stack.ts +107 -105
- package/gs/internal/abi/index.ts +37 -0
- package/gs/internal/bytealg/index.ts +149 -0
- package/gs/internal/byteorder/index.ts +5 -5
- package/gs/math/abs.gs.test.ts +1 -1
- package/gs/math/acosh.gs.test.ts +4 -2
- package/gs/math/asin.gs.test.ts +1 -1
- package/gs/math/asinh.gs.test.ts +7 -3
- package/gs/math/atan.gs.test.ts +1 -1
- package/gs/math/atan2.gs.test.ts +17 -9
- package/gs/math/atanh.gs.test.ts +1 -1
- package/gs/math/bits.gs.test.ts +1 -1
- package/gs/math/cbrt.gs.test.ts +1 -1
- package/gs/math/const.gs.test.ts +34 -8
- package/gs/math/copysign.gs.test.ts +7 -3
- package/gs/math/dim.gs.test.ts +19 -7
- package/gs/math/erf.gs.test.ts +1 -1
- package/gs/math/erfinv.gs.test.ts +4 -2
- package/gs/math/exp.gs.test.ts +1 -1
- package/gs/math/expm1.gs.test.ts +6 -4
- package/gs/math/floor.gs.test.ts +17 -4
- package/gs/math/fma.gs.test.ts +53 -53
- package/gs/math/frexp.gs.test.ts +112 -117
- package/gs/math/gamma.gs.test.ts +1 -1
- package/gs/math/hypot.gs.test.ts +53 -53
- package/gs/math/index.ts +80 -44
- package/gs/math/j0.gs.test.ts +6 -2
- package/gs/math/j1.gs.test.ts +6 -2
- package/gs/math/jn.gs.test.ts +9 -5
- package/gs/math/ldexp.gs.test.ts +103 -86
- package/gs/math/lgamma.gs.test.ts +10 -10
- package/gs/math/log.gs.test.ts +1 -1
- package/gs/math/log10.gs.test.ts +1 -1
- package/gs/math/log1p.gs.test.ts +2 -2
- package/gs/math/logb.gs.test.ts +1 -1
- package/gs/math/mod.gs.test.ts +2 -2
- package/gs/math/modf.gs.test.ts +7 -7
- package/gs/math/nextafter.gs.test.ts +9 -7
- package/gs/math/pow.gs.test.ts +6 -4
- package/gs/math/pow10.gs.test.ts +1 -1
- package/gs/math/remainder.gs.test.ts +1 -1
- package/gs/math/signbit.gs.test.ts +1 -1
- package/gs/math/sin.gs.test.ts +1 -1
- package/gs/math/sincos.gs.test.ts +33 -14
- package/gs/math/sinh.gs.test.ts +1 -1
- package/gs/math/sqrt.gs.test.ts +1 -1
- package/gs/math/tan.gs.test.ts +3 -3
- package/gs/math/tanh.gs.test.ts +1 -1
- package/gs/os/index.ts +128 -19
- package/gs/reflect/ANALYSIS.md +278 -0
- package/gs/reflect/deepequal.test.ts +41 -0
- package/gs/reflect/deepequal.ts +169 -0
- package/gs/reflect/function-types.test.ts +146 -0
- package/gs/reflect/godoc.txt +67 -0
- package/gs/reflect/index.ts +83 -0
- package/gs/reflect/iter.ts +44 -0
- package/gs/reflect/map.test.ts +30 -0
- package/gs/reflect/map.ts +85 -0
- package/gs/reflect/swapper.ts +52 -0
- package/gs/reflect/type.ts +1016 -0
- package/gs/reflect/types.ts +214 -0
- package/gs/reflect/value.ts +270 -0
- package/gs/reflect/visiblefields.ts +177 -0
- package/gs/strconv/index.ts +39 -6
- package/gs/strings/index.ts +7 -1
- package/gs/strings/replace.ts +1 -9
- package/gs/sync/atomic/index.ts +53 -4
- package/gs/syscall/index.ts +45 -37
- package/gs/unicode/utf8/utf8.ts +8 -5
- package/gs/unsafe/unsafe.ts +1 -1
- package/package.json +2 -1
- package/dist/gs/internal/testlog/index.d.ts +0 -1
- package/dist/gs/internal/testlog/index.js +0 -5
- package/dist/gs/internal/testlog/index.js.map +0 -1
- package/dist/gs/maps/iter.gs.d.ts +0 -7
- package/dist/gs/maps/iter.gs.js +0 -65
- package/dist/gs/maps/iter.gs.js.map +0 -1
- package/dist/gs/maps/maps.gs.d.ts +0 -7
- package/dist/gs/maps/maps.gs.js +0 -79
- package/dist/gs/maps/maps.gs.js.map +0 -1
- package/dist/gs/stringslite/index.d.ts +0 -1
- package/dist/gs/stringslite/index.js +0 -2
- package/dist/gs/stringslite/index.js.map +0 -1
- package/dist/gs/stringslite/strings.d.ts +0 -11
- package/dist/gs/stringslite/strings.js +0 -67
- package/dist/gs/stringslite/strings.js.map +0 -1
- package/gs/internal/testlog/index.ts +0 -7
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../gs/reflect/index.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,OAAO,EACL,MAAM,EACN,OAAO,EACP,KAAK,EACL,IAAI,EACJ,OAAO,EACP,OAAO,EACP,SAAS,EACT,KAAK,EACL,KAAK,EACL,MAAM,GACP,MAAM,QAAQ,CAAA;AAEf,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EACL,IAAI,EACJ,IAAI,EACJ,QAAQ,EACR,GAAG,EACH,SAAS,EACT,OAAO,EACP,MAAM,EACN,QAAQ,EACR,MAAM,GACP,MAAM,SAAS,CAAA;AAChB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,iCAAiC;AACjC,OAAO,EACL,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,SAAS,EACT,UAAU,EACV,SAAS,EACT,UAAU,EACV,UAAU,EACV,aAAa,EACb,SAAS,GACV,MAAM,SAAS,CAAA;AAYhB,wBAAwB;AACxB,OAAO,EACL,OAAO,EACP,IAAI,EACJ,GAAG,EACH,IAAI,EACJ,KAAK,EACL,KAAK,EACL,KAAK,EACL,IAAI,EACJ,KAAK,EACL,MAAM,EACN,MAAM,EACN,MAAM,EACN,OAAO,EACP,OAAO,EACP,OAAO,EACP,SAAS,EACT,UAAU,EACV,KAAK,EACL,IAAI,EACJ,IAAI,EACJ,SAAS,EACT,GAAG,EACH,GAAG,EACH,KAAK,EACL,MAAM,EACN,MAAM,EACN,aAAa,GACd,MAAM,QAAQ,CAAA"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { Type, Value } from './type.js';
|
|
2
|
+
import { uintptr } from './types.js';
|
|
3
|
+
import * as iter from '@goscript/iter/index.js';
|
|
4
|
+
export declare function rangeNum<T extends number | number | number | number | number | number | number | number | number | number | uintptr, N extends number | number>(num: N, t: Type): iter.Seq<Value>;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ValueOf } from './value.js';
|
|
2
|
+
export function rangeNum(num, t) {
|
|
3
|
+
// cannot use range T(v) because no core type.
|
|
4
|
+
// if the iteration value type is define by
|
|
5
|
+
// type T built-in type.
|
|
6
|
+
return (_yield) => {
|
|
7
|
+
let convert = t.PkgPath() != '';
|
|
8
|
+
// cannot use range T(v) because no core type.
|
|
9
|
+
// if the iteration value type is define by
|
|
10
|
+
// type T built-in type.
|
|
11
|
+
for (let i = 0; i < num; i++) {
|
|
12
|
+
let tmp = ValueOf(i).clone();
|
|
13
|
+
// if the iteration value type is define by
|
|
14
|
+
// type T built-in type.
|
|
15
|
+
if (convert) {
|
|
16
|
+
tmp = tmp.Convert(t).clone();
|
|
17
|
+
}
|
|
18
|
+
if (!_yield(tmp)) {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=iter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iter.js","sourceRoot":"","sources":["../../../gs/reflect/iter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAIpC,MAAM,UAAU,QAAQ,CActB,GAAM,EAAE,CAAO;IACf,8CAA8C;IAE9C,2CAA2C;IAC3C,wBAAwB;IACxB,OAAO,CAAC,MAAsC,EAAQ,EAAE;QACtD,IAAI,OAAO,GAAG,CAAE,CAAC,OAAQ,EAAE,IAAI,EAAE,CAAA;QACjC,8CAA8C;QAE9C,2CAA2C;QAC3C,wBAAwB;QACxB,KAAK,IAAI,CAAC,GAAG,CAAiB,EAAE,CAAC,GAAI,GAAoB,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/D,IAAI,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAA;YAC5B,2CAA2C;YAC3C,wBAAwB;YACxB,IAAI,OAAO,EAAE,CAAC;gBACZ,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAA;YAC9B,CAAC;YACD,IAAI,CAAC,MAAO,CAAC,GAAG,CAAC,EAAE,CAAC;gBAClB,OAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Type, Value } from './type.js';
|
|
2
|
+
export declare function MapOf(key: Type, elem: Type): Type;
|
|
3
|
+
/**
|
|
4
|
+
* MapIter provides an iterator interface for Go maps.
|
|
5
|
+
* It wraps a JavaScript Map iterator and provides methods to iterate over key-value pairs.
|
|
6
|
+
* @template K - The type of keys in the map
|
|
7
|
+
* @template V - The type of values in the map
|
|
8
|
+
*/
|
|
9
|
+
export declare class MapIter<K = unknown, V = unknown> {
|
|
10
|
+
map: Map<K, V>;
|
|
11
|
+
iterator: Iterator<[K, V]>;
|
|
12
|
+
current: IteratorResult<[K, V]> | null;
|
|
13
|
+
constructor(map: Map<K, V>);
|
|
14
|
+
Next(): boolean;
|
|
15
|
+
Key(): K | null;
|
|
16
|
+
Value(): V | null;
|
|
17
|
+
Reset(m: Map<K, V>): void;
|
|
18
|
+
}
|
|
19
|
+
export declare function MakeMap(typ: Type): Value;
|
|
20
|
+
export declare function MakeMapWithSize(typ: Type, _n: number): Value;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { Kind, Value } from './type.js';
|
|
2
|
+
// Simple MapOf implementation using JavaScript Map
|
|
3
|
+
export function MapOf(key, elem) {
|
|
4
|
+
return new MapType(key, elem);
|
|
5
|
+
}
|
|
6
|
+
// Simple map type implementation
|
|
7
|
+
class MapType {
|
|
8
|
+
_keyType;
|
|
9
|
+
_elemType;
|
|
10
|
+
constructor(_keyType, _elemType) {
|
|
11
|
+
this._keyType = _keyType;
|
|
12
|
+
this._elemType = _elemType;
|
|
13
|
+
}
|
|
14
|
+
String() {
|
|
15
|
+
return `map[${this._keyType.String()}]${this._elemType.String()}`;
|
|
16
|
+
}
|
|
17
|
+
Kind() {
|
|
18
|
+
return new Kind(21); // Map kind
|
|
19
|
+
}
|
|
20
|
+
Size() {
|
|
21
|
+
return 8; // pointer size
|
|
22
|
+
}
|
|
23
|
+
Elem() {
|
|
24
|
+
return this._elemType;
|
|
25
|
+
}
|
|
26
|
+
Key() {
|
|
27
|
+
return this._keyType;
|
|
28
|
+
}
|
|
29
|
+
NumField() {
|
|
30
|
+
return 0;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* MapIter provides an iterator interface for Go maps.
|
|
35
|
+
* It wraps a JavaScript Map iterator and provides methods to iterate over key-value pairs.
|
|
36
|
+
* @template K - The type of keys in the map
|
|
37
|
+
* @template V - The type of values in the map
|
|
38
|
+
*/
|
|
39
|
+
export class MapIter {
|
|
40
|
+
map;
|
|
41
|
+
iterator;
|
|
42
|
+
current = null;
|
|
43
|
+
constructor(map) {
|
|
44
|
+
this.map = map;
|
|
45
|
+
this.iterator = map.entries();
|
|
46
|
+
this.Next();
|
|
47
|
+
}
|
|
48
|
+
Next() {
|
|
49
|
+
this.current = this.iterator.next();
|
|
50
|
+
return !this.current.done;
|
|
51
|
+
}
|
|
52
|
+
Key() {
|
|
53
|
+
return this.current?.value?.[0] ?? null;
|
|
54
|
+
}
|
|
55
|
+
Value() {
|
|
56
|
+
return this.current?.value?.[1] ?? null;
|
|
57
|
+
}
|
|
58
|
+
Reset(m) {
|
|
59
|
+
this.map = m;
|
|
60
|
+
this.iterator = m.entries();
|
|
61
|
+
this.current = null;
|
|
62
|
+
this.Next();
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
// Helper functions for map operations
|
|
66
|
+
export function MakeMap(typ) {
|
|
67
|
+
const map = new Map();
|
|
68
|
+
return new Value(map, typ);
|
|
69
|
+
}
|
|
70
|
+
export function MakeMapWithSize(typ, _n) {
|
|
71
|
+
// JavaScript Map doesn't have initial size, so we ignore n
|
|
72
|
+
return MakeMap(typ);
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=map.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"map.js","sourceRoot":"","sources":["../../../gs/reflect/map.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,IAAI,EAAE,KAAK,EAAE,MAAM,WAAW,CAAA;AAE7C,mDAAmD;AACnD,MAAM,UAAU,KAAK,CAAC,GAAS,EAAE,IAAU;IACzC,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;AAC/B,CAAC;AAED,iCAAiC;AACjC,MAAM,OAAO;IAED;IACA;IAFV,YACU,QAAc,EACd,SAAe;QADf,aAAQ,GAAR,QAAQ,CAAM;QACd,cAAS,GAAT,SAAS,CAAM;IACtB,CAAC;IAEG,MAAM;QACX,OAAO,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAA;IACnE,CAAC;IAEM,IAAI;QACT,OAAO,IAAI,IAAI,CAAC,EAAE,CAAC,CAAA,CAAC,WAAW;IACjC,CAAC;IAEM,IAAI;QACT,OAAO,CAAC,CAAA,CAAC,eAAe;IAC1B,CAAC;IAEM,IAAI;QACT,OAAO,IAAI,CAAC,SAAS,CAAA;IACvB,CAAC;IAEM,GAAG;QACR,OAAO,IAAI,CAAC,QAAQ,CAAA;IACtB,CAAC;IAEM,QAAQ;QACb,OAAO,CAAC,CAAA;IACV,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,OAAO,OAAO;IAIC;IAHZ,QAAQ,CAAkB;IAC1B,OAAO,GAAkC,IAAI,CAAA;IAEpD,YAAmB,GAAc;QAAd,QAAG,GAAH,GAAG,CAAW;QAC/B,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,OAAO,EAAE,CAAA;QAC7B,IAAI,CAAC,IAAI,EAAE,CAAA;IACb,CAAC;IAEM,IAAI;QACT,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA;QACnC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAA;IAC3B,CAAC;IAEM,GAAG;QACR,OAAO,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAA;IACzC,CAAC;IAEM,KAAK;QACV,OAAO,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAA;IACzC,CAAC;IAEM,KAAK,CAAC,CAAY;QACvB,IAAI,CAAC,GAAG,GAAG,CAAC,CAAA;QACZ,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,OAAO,EAAE,CAAA;QAC3B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;QACnB,IAAI,CAAC,IAAI,EAAE,CAAA;IACb,CAAC;CACF;AAED,sCAAsC;AACtC,MAAM,UAAU,OAAO,CAAC,GAAS;IAC/B,MAAM,GAAG,GAAG,IAAI,GAAG,EAAE,CAAA;IACrB,OAAO,IAAI,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;AAC5B,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,GAAS,EAAE,EAAU;IACnD,2DAA2D;IAC3D,OAAO,OAAO,CAAC,GAAG,CAAC,CAAA;AACrB,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
// Swapper returns a function that swaps the elements in the provided slice.
|
|
2
|
+
// Swapper panics if the provided interface is not a slice.
|
|
3
|
+
export function Swapper(slice) {
|
|
4
|
+
let actualArray = null;
|
|
5
|
+
// Try to extract the underlying array
|
|
6
|
+
if (Array.isArray(slice)) {
|
|
7
|
+
actualArray = slice;
|
|
8
|
+
}
|
|
9
|
+
else if (slice && typeof slice === 'object' && '__meta__' in slice) {
|
|
10
|
+
// GoScript slice object
|
|
11
|
+
const meta = slice.__meta__;
|
|
12
|
+
if (meta && meta.backing && Array.isArray(meta.backing)) {
|
|
13
|
+
actualArray = meta.backing;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
if (!actualArray) {
|
|
17
|
+
// Return a no-op function if we can't extract an array
|
|
18
|
+
return () => { };
|
|
19
|
+
}
|
|
20
|
+
// Fast path for slices of size 0 and 1. Nothing to swap.
|
|
21
|
+
switch (actualArray.length) {
|
|
22
|
+
case 0:
|
|
23
|
+
return (_i, _j) => {
|
|
24
|
+
throw new Error('reflect: slice index out of range');
|
|
25
|
+
};
|
|
26
|
+
case 1:
|
|
27
|
+
return (i, j) => {
|
|
28
|
+
if (i !== 0 || j !== 0) {
|
|
29
|
+
throw new Error('reflect: slice index out of range');
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
// Return the swapper function
|
|
34
|
+
return (i, j) => {
|
|
35
|
+
if (actualArray &&
|
|
36
|
+
i >= 0 &&
|
|
37
|
+
j >= 0 &&
|
|
38
|
+
i < actualArray.length &&
|
|
39
|
+
j < actualArray.length) {
|
|
40
|
+
const temp = actualArray[i];
|
|
41
|
+
actualArray[i] = actualArray[j];
|
|
42
|
+
actualArray[j] = temp;
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=swapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"swapper.js","sourceRoot":"","sources":["../../../gs/reflect/swapper.ts"],"names":[],"mappings":"AAEA,4EAA4E;AAC5E,2DAA2D;AAC3D,MAAM,UAAU,OAAO,CAAC,KAAmB;IACzC,IAAI,WAAW,GAAqB,IAAI,CAAA;IAExC,sCAAsC;IACtC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,WAAW,GAAG,KAAK,CAAA;IACrB,CAAC;SAAM,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,UAAU,IAAI,KAAK,EAAE,CAAC;QACrE,wBAAwB;QACxB,MAAM,IAAI,GAAI,KAAgD,CAAC,QAAQ,CAAA;QACvE,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACxD,WAAW,GAAG,IAAI,CAAC,OAAO,CAAA;QAC5B,CAAC;IACH,CAAC;IAED,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,uDAAuD;QACvD,OAAO,GAAG,EAAE,GAAE,CAAC,CAAA;IACjB,CAAC;IAED,yDAAyD;IACzD,QAAQ,WAAW,CAAC,MAAM,EAAE,CAAC;QAC3B,KAAK,CAAC;YACJ,OAAO,CAAC,EAAU,EAAE,EAAU,EAAQ,EAAE;gBACtC,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAA;YACtD,CAAC,CAAA;QACH,KAAK,CAAC;YACJ,OAAO,CAAC,CAAS,EAAE,CAAS,EAAQ,EAAE;gBACpC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;oBACvB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAA;gBACtD,CAAC;YACH,CAAC,CAAA;IACL,CAAC;IAED,8BAA8B;IAC9B,OAAO,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE;QAC9B,IACE,WAAW;YACX,CAAC,IAAI,CAAC;YACN,CAAC,IAAI,CAAC;YACN,CAAC,GAAG,WAAW,CAAC,MAAM;YACtB,CAAC,GAAG,WAAW,CAAC,MAAM,EACtB,CAAC;YACD,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,CAAA;YAC3B,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAA;YAC/B,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;QACvB,CAAC;IACH,CAAC,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { ReflectValue, ChanDir, StructField } from './types.js';
|
|
2
|
+
import { MapIter } from './map.js';
|
|
3
|
+
export declare class rtype {
|
|
4
|
+
kind: Kind;
|
|
5
|
+
constructor(kind: Kind);
|
|
6
|
+
Kind(): Kind;
|
|
7
|
+
String(): string;
|
|
8
|
+
Pointers(): boolean;
|
|
9
|
+
}
|
|
10
|
+
export declare class funcType extends rtype {
|
|
11
|
+
inCount: number;
|
|
12
|
+
outCount: number;
|
|
13
|
+
constructor(kind: Kind, inCount?: number, outCount?: number);
|
|
14
|
+
}
|
|
15
|
+
export declare class flag {
|
|
16
|
+
private _value;
|
|
17
|
+
constructor(_value: number | Kind);
|
|
18
|
+
valueOf(): number;
|
|
19
|
+
static from(value: number | Kind): flag;
|
|
20
|
+
}
|
|
21
|
+
export declare class bitVector {
|
|
22
|
+
private bits;
|
|
23
|
+
Set(index: number): void;
|
|
24
|
+
Get(index: number): boolean;
|
|
25
|
+
}
|
|
26
|
+
export declare class Kind {
|
|
27
|
+
private _value;
|
|
28
|
+
constructor(_value: number);
|
|
29
|
+
valueOf(): number;
|
|
30
|
+
toString(): string;
|
|
31
|
+
static from(value: number): Kind;
|
|
32
|
+
String(): string;
|
|
33
|
+
}
|
|
34
|
+
export declare const Invalid: Kind;
|
|
35
|
+
export declare const Bool: Kind;
|
|
36
|
+
export declare const Int: Kind;
|
|
37
|
+
export declare const Int8: Kind;
|
|
38
|
+
export declare const Int16: Kind;
|
|
39
|
+
export declare const Int32: Kind;
|
|
40
|
+
export declare const Int64: Kind;
|
|
41
|
+
export declare const Uint: Kind;
|
|
42
|
+
export declare const Uint8: Kind;
|
|
43
|
+
export declare const Uint16: Kind;
|
|
44
|
+
export declare const Uint32: Kind;
|
|
45
|
+
export declare const Uint64: Kind;
|
|
46
|
+
export declare const Uintptr: Kind;
|
|
47
|
+
export declare const Float32: Kind;
|
|
48
|
+
export declare const Float64: Kind;
|
|
49
|
+
export declare const Complex64: Kind;
|
|
50
|
+
export declare const Complex128: Kind;
|
|
51
|
+
export declare const Array: Kind;
|
|
52
|
+
export declare const Chan: Kind;
|
|
53
|
+
export declare const Func: Kind;
|
|
54
|
+
export declare const Interface: Kind;
|
|
55
|
+
export declare const Map: Kind;
|
|
56
|
+
export declare const Ptr: Kind;
|
|
57
|
+
export declare const Slice: Kind;
|
|
58
|
+
export declare const String: Kind;
|
|
59
|
+
export declare const Struct: Kind;
|
|
60
|
+
export declare const UnsafePointer: Kind;
|
|
61
|
+
export interface Type {
|
|
62
|
+
String(): string;
|
|
63
|
+
Kind(): Kind;
|
|
64
|
+
Size(): number;
|
|
65
|
+
Elem(): Type | null;
|
|
66
|
+
NumField(): number;
|
|
67
|
+
PkgPath?(): string;
|
|
68
|
+
Field?(i: number): StructField | null;
|
|
69
|
+
common?(): rtype;
|
|
70
|
+
}
|
|
71
|
+
export declare class Value {
|
|
72
|
+
private _value;
|
|
73
|
+
private _type;
|
|
74
|
+
constructor(_value: ReflectValue, _type: Type);
|
|
75
|
+
clone(): Value;
|
|
76
|
+
Int(): number;
|
|
77
|
+
Uint(): number;
|
|
78
|
+
Float(): number;
|
|
79
|
+
Bool(): boolean;
|
|
80
|
+
String(): string;
|
|
81
|
+
Len(): number;
|
|
82
|
+
Kind(): Kind;
|
|
83
|
+
Type(): Type;
|
|
84
|
+
IsValid(): boolean;
|
|
85
|
+
IsNil(): boolean;
|
|
86
|
+
Index(i: number): Value;
|
|
87
|
+
Bytes(): Uint8Array;
|
|
88
|
+
Elem(): Value;
|
|
89
|
+
NumField(): number;
|
|
90
|
+
Field(_i: number): Value;
|
|
91
|
+
UnsafePointer(): unknown;
|
|
92
|
+
pointer(): unknown;
|
|
93
|
+
get ptr(): unknown;
|
|
94
|
+
get value(): ReflectValue;
|
|
95
|
+
Convert(t: Type): Value;
|
|
96
|
+
typ(): rtype | null;
|
|
97
|
+
get flag(): number;
|
|
98
|
+
MapRange(): MapIter<unknown, unknown> | null;
|
|
99
|
+
MapIndex(_key: Value): Value;
|
|
100
|
+
Complex(): number | {
|
|
101
|
+
real: number;
|
|
102
|
+
imag: number;
|
|
103
|
+
} | null;
|
|
104
|
+
Send(x: Value): void;
|
|
105
|
+
}
|
|
106
|
+
export declare class BasicType implements Type {
|
|
107
|
+
private _kind;
|
|
108
|
+
private _name;
|
|
109
|
+
private _size;
|
|
110
|
+
constructor(_kind: Kind, _name: string, _size?: number);
|
|
111
|
+
String(): string;
|
|
112
|
+
Kind(): Kind;
|
|
113
|
+
Size(): number;
|
|
114
|
+
Elem(): Type | null;
|
|
115
|
+
NumField(): number;
|
|
116
|
+
PkgPath?(): string;
|
|
117
|
+
Field?(_i: number): StructField | null;
|
|
118
|
+
common?(): rtype;
|
|
119
|
+
}
|
|
120
|
+
export declare function TypeOf(i: ReflectValue): Type;
|
|
121
|
+
export declare function ValueOf(i: ReflectValue): Value;
|
|
122
|
+
export declare function ArrayOf(length: number, elem: Type): Type;
|
|
123
|
+
export declare function SliceOf(t: Type): Type;
|
|
124
|
+
export declare function PointerTo(t: Type): Type;
|
|
125
|
+
export declare function PtrTo(t: Type): Type;
|
|
126
|
+
export declare function MapOf(key: Type, elem: Type): Type;
|
|
127
|
+
export declare function ChanOf(dir: ChanDir, t: Type): Type;
|
|
128
|
+
export declare function canRangeFunc(t: Type): boolean;
|
|
129
|
+
export declare function canRangeFunc2(t: Type): boolean;
|
|
130
|
+
export declare function funcLayout(_t: Type, _rcvr: Type | null): {
|
|
131
|
+
Type: Type | null;
|
|
132
|
+
InCount: number;
|
|
133
|
+
OutCount: number;
|
|
134
|
+
};
|