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
|
@@ -1,276 +1,425 @@
|
|
|
1
|
-
import * as $ from
|
|
2
|
-
import { callers } from
|
|
1
|
+
import * as $ from '../../../builtin/builtin.js'
|
|
2
|
+
import { callers } from './stack.js'
|
|
3
3
|
|
|
4
4
|
// Type definitions
|
|
5
|
-
export type Frame = any
|
|
6
|
-
export type StackTrace = Frame[] | null
|
|
7
|
-
export type stack = any
|
|
8
|
-
export type uintptr = number
|
|
5
|
+
export type Frame = any // Simplified frame type
|
|
6
|
+
export type StackTrace = Frame[] | null
|
|
7
|
+
export type stack = any // Simplified stack type
|
|
8
|
+
export type uintptr = number
|
|
9
9
|
|
|
10
10
|
// Simplified fmt functions for basic string formatting
|
|
11
11
|
const fmt = {
|
|
12
12
|
Sprintf: (format: string, ...args: any[]): string => {
|
|
13
13
|
// Basic sprintf implementation for the errors package
|
|
14
|
-
let result = format
|
|
15
|
-
let argIndex = 0
|
|
14
|
+
let result = format
|
|
15
|
+
let argIndex = 0
|
|
16
16
|
result = result.replace(/%[sdqv%]/g, (match) => {
|
|
17
|
-
if (match === '%%') return '%'
|
|
18
|
-
if (argIndex >= args.length) return match
|
|
19
|
-
const arg = args[argIndex++]
|
|
17
|
+
if (match === '%%') return '%'
|
|
18
|
+
if (argIndex >= args.length) return match
|
|
19
|
+
const arg = args[argIndex++]
|
|
20
20
|
switch (match) {
|
|
21
|
-
case '%s':
|
|
22
|
-
|
|
23
|
-
case '%
|
|
24
|
-
|
|
25
|
-
|
|
21
|
+
case '%s':
|
|
22
|
+
return String(arg)
|
|
23
|
+
case '%d':
|
|
24
|
+
return String(Number(arg))
|
|
25
|
+
case '%q':
|
|
26
|
+
return JSON.stringify(String(arg))
|
|
27
|
+
case '%v':
|
|
28
|
+
return String(arg)
|
|
29
|
+
default:
|
|
30
|
+
return match
|
|
26
31
|
}
|
|
27
|
-
})
|
|
28
|
-
return result
|
|
29
|
-
}
|
|
30
|
-
}
|
|
32
|
+
})
|
|
33
|
+
return result
|
|
34
|
+
},
|
|
35
|
+
}
|
|
31
36
|
|
|
32
37
|
// New returns an error with the supplied message.
|
|
33
38
|
// New also records the stack trace at the point it was called.
|
|
34
39
|
export function New(message: string): $.GoError {
|
|
35
|
-
|
|
40
|
+
return new fundamental({ msg: message, stack: callers() })
|
|
36
41
|
}
|
|
37
42
|
|
|
38
43
|
// Errorf formats according to a format specifier and returns the string
|
|
39
44
|
// as a value that satisfies error.
|
|
40
45
|
// Errorf also records the stack trace at the point it was called.
|
|
41
46
|
export function Errorf(format: string, ...args: any[]): $.GoError {
|
|
42
|
-
|
|
47
|
+
return new fundamental({
|
|
48
|
+
msg: fmt.Sprintf(format, ...args),
|
|
49
|
+
stack: callers(),
|
|
50
|
+
})
|
|
43
51
|
}
|
|
44
52
|
|
|
45
53
|
class fundamental {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
54
|
+
public get msg(): string {
|
|
55
|
+
return this._fields.msg.value
|
|
56
|
+
}
|
|
57
|
+
public set msg(value: string) {
|
|
58
|
+
this._fields.msg.value = value
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
public get stack(): $.VarRef<stack> | null {
|
|
62
|
+
return this._fields.stack.value
|
|
63
|
+
}
|
|
64
|
+
public set stack(value: $.VarRef<stack> | null) {
|
|
65
|
+
this._fields.stack.value = value
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
public _fields: {
|
|
69
|
+
msg: $.VarRef<string>
|
|
70
|
+
stack: $.VarRef<$.VarRef<stack> | null>
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
constructor(
|
|
74
|
+
init?: Partial<{ msg?: string; stack?: $.VarRef<stack> | null }>,
|
|
75
|
+
) {
|
|
76
|
+
this._fields = {
|
|
77
|
+
msg: $.varRef(init?.msg ?? ''),
|
|
78
|
+
stack: $.varRef(init?.stack ?? null),
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
public clone(): fundamental {
|
|
83
|
+
const cloned = new fundamental()
|
|
84
|
+
cloned._fields = {
|
|
85
|
+
msg: $.varRef(this._fields.msg.value),
|
|
86
|
+
stack: $.varRef(this._fields.stack.value),
|
|
87
|
+
}
|
|
88
|
+
return cloned
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
public Error(): string {
|
|
92
|
+
const f = this
|
|
93
|
+
return f!.msg
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
public StackTrace(): StackTrace {
|
|
97
|
+
return null // Simplified - no stack trace for now
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
// Register this type with the runtime type system
|
|
101
|
+
static __typeInfo = $.registerStructType(
|
|
102
|
+
'fundamental',
|
|
103
|
+
new fundamental(),
|
|
104
|
+
[
|
|
105
|
+
{
|
|
106
|
+
name: 'Error',
|
|
107
|
+
args: [],
|
|
108
|
+
returns: [{ type: { kind: $.TypeKind.Basic, name: 'string' } }],
|
|
109
|
+
},
|
|
110
|
+
],
|
|
111
|
+
fundamental,
|
|
112
|
+
{
|
|
113
|
+
msg: { kind: $.TypeKind.Basic, name: 'string' },
|
|
114
|
+
stack: { kind: $.TypeKind.Pointer, elemType: 'stack' },
|
|
115
|
+
},
|
|
116
|
+
)
|
|
98
117
|
}
|
|
99
118
|
|
|
100
119
|
// WithStack annotates err with a stack trace at the point WithStack was called.
|
|
101
120
|
// If err is nil, WithStack returns nil.
|
|
102
121
|
export function WithStack(err: $.GoError): $.GoError {
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
122
|
+
if (err == null) {
|
|
123
|
+
return null
|
|
124
|
+
}
|
|
125
|
+
return new withStack({ error: err, stack: callers() })
|
|
107
126
|
}
|
|
108
127
|
|
|
109
128
|
class withStack {
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
129
|
+
public get error(): $.GoError {
|
|
130
|
+
return this._fields.error.value
|
|
131
|
+
}
|
|
132
|
+
public set error(value: $.GoError) {
|
|
133
|
+
this._fields.error.value = value
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
public get stack(): $.VarRef<stack> | null {
|
|
137
|
+
return this._fields.stack.value
|
|
138
|
+
}
|
|
139
|
+
public set stack(value: $.VarRef<stack> | null) {
|
|
140
|
+
this._fields.stack.value = value
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
public _fields: {
|
|
144
|
+
error: $.VarRef<$.GoError>
|
|
145
|
+
stack: $.VarRef<$.VarRef<stack> | null>
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
constructor(
|
|
149
|
+
init?: Partial<{ error?: $.GoError; stack?: $.VarRef<stack> | null }>,
|
|
150
|
+
) {
|
|
151
|
+
this._fields = {
|
|
152
|
+
error: $.varRef(init?.error ?? null),
|
|
153
|
+
stack: $.varRef(init?.stack ?? null),
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
public clone(): withStack {
|
|
158
|
+
const cloned = new withStack()
|
|
159
|
+
cloned._fields = {
|
|
160
|
+
error: $.varRef(this._fields.error.value),
|
|
161
|
+
stack: $.varRef(this._fields.stack.value),
|
|
162
|
+
}
|
|
163
|
+
return cloned
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
public Cause(): $.GoError {
|
|
167
|
+
const w = this
|
|
168
|
+
return w!.error
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
// Unwrap provides compatibility for Go 1.13 error chains.
|
|
172
|
+
public Unwrap(): $.GoError {
|
|
173
|
+
const w = this
|
|
174
|
+
return w!.error
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
public Error(): string {
|
|
178
|
+
return this.error?.Error() ?? ''
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
public StackTrace(): StackTrace {
|
|
182
|
+
return null // Simplified - no stack trace for now
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
// Register this type with the runtime type system
|
|
186
|
+
static __typeInfo = $.registerStructType(
|
|
187
|
+
'withStack',
|
|
188
|
+
new withStack(),
|
|
189
|
+
[
|
|
190
|
+
{
|
|
191
|
+
name: 'Cause',
|
|
192
|
+
args: [],
|
|
193
|
+
returns: [
|
|
194
|
+
{
|
|
195
|
+
type: {
|
|
196
|
+
kind: $.TypeKind.Interface,
|
|
197
|
+
name: 'GoError',
|
|
198
|
+
methods: [
|
|
199
|
+
{
|
|
200
|
+
name: 'Error',
|
|
201
|
+
args: [],
|
|
202
|
+
returns: [
|
|
203
|
+
{ type: { kind: $.TypeKind.Basic, name: 'string' } },
|
|
204
|
+
],
|
|
205
|
+
},
|
|
206
|
+
],
|
|
207
|
+
},
|
|
208
|
+
},
|
|
209
|
+
],
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
name: 'Unwrap',
|
|
213
|
+
args: [],
|
|
214
|
+
returns: [
|
|
215
|
+
{
|
|
216
|
+
type: {
|
|
217
|
+
kind: $.TypeKind.Interface,
|
|
218
|
+
name: 'GoError',
|
|
219
|
+
methods: [
|
|
220
|
+
{
|
|
221
|
+
name: 'Error',
|
|
222
|
+
args: [],
|
|
223
|
+
returns: [
|
|
224
|
+
{ type: { kind: $.TypeKind.Basic, name: 'string' } },
|
|
225
|
+
],
|
|
226
|
+
},
|
|
227
|
+
],
|
|
228
|
+
},
|
|
229
|
+
},
|
|
230
|
+
],
|
|
231
|
+
},
|
|
232
|
+
],
|
|
233
|
+
withStack,
|
|
234
|
+
{
|
|
235
|
+
error: {
|
|
236
|
+
kind: $.TypeKind.Interface,
|
|
237
|
+
name: 'GoError',
|
|
238
|
+
methods: [
|
|
239
|
+
{
|
|
240
|
+
name: 'Error',
|
|
241
|
+
args: [],
|
|
242
|
+
returns: [{ type: { kind: $.TypeKind.Basic, name: 'string' } }],
|
|
243
|
+
},
|
|
244
|
+
],
|
|
245
|
+
},
|
|
246
|
+
stack: { kind: $.TypeKind.Pointer, elemType: 'stack' },
|
|
247
|
+
},
|
|
248
|
+
)
|
|
172
249
|
}
|
|
173
250
|
|
|
174
251
|
// Wrap returns an error annotating err with a stack trace
|
|
175
252
|
// at the point Wrap is called, and the supplied message.
|
|
176
253
|
// If err is nil, Wrap returns nil.
|
|
177
254
|
export function Wrap(err: $.GoError, message: string): $.GoError {
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
255
|
+
if (err == null) {
|
|
256
|
+
return null
|
|
257
|
+
}
|
|
258
|
+
const wrappedErr = new withMessage({ cause: err, msg: message })
|
|
259
|
+
return new withStack({ error: wrappedErr, stack: callers() })
|
|
183
260
|
}
|
|
184
261
|
|
|
185
262
|
// Wrapf returns an error annotating err with a stack trace
|
|
186
263
|
// at the point Wrapf is called, and the format specifier.
|
|
187
264
|
// If err is nil, Wrapf returns nil.
|
|
188
|
-
export function Wrapf(
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
265
|
+
export function Wrapf(
|
|
266
|
+
err: $.GoError,
|
|
267
|
+
format: string,
|
|
268
|
+
...args: any[]
|
|
269
|
+
): $.GoError {
|
|
270
|
+
if (err == null) {
|
|
271
|
+
return null
|
|
272
|
+
}
|
|
273
|
+
const wrappedErr = new withMessage({
|
|
274
|
+
cause: err,
|
|
275
|
+
msg: fmt.Sprintf(format, ...args),
|
|
276
|
+
})
|
|
277
|
+
return new withStack({ error: wrappedErr, stack: callers() })
|
|
194
278
|
}
|
|
195
279
|
|
|
196
280
|
// WithMessage annotates err with a new message.
|
|
197
281
|
// If err is nil, WithMessage returns nil.
|
|
198
282
|
export function WithMessage(err: $.GoError, message: string): $.GoError {
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
283
|
+
if (err == null) {
|
|
284
|
+
return null
|
|
285
|
+
}
|
|
286
|
+
return new withMessage({ cause: err, msg: message })
|
|
203
287
|
}
|
|
204
288
|
|
|
205
289
|
// WithMessagef annotates err with the format specifier.
|
|
206
290
|
// If err is nil, WithMessagef returns nil.
|
|
207
|
-
export function WithMessagef(
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
291
|
+
export function WithMessagef(
|
|
292
|
+
err: $.GoError,
|
|
293
|
+
format: string,
|
|
294
|
+
...args: any[]
|
|
295
|
+
): $.GoError {
|
|
296
|
+
if (err == null) {
|
|
297
|
+
return null
|
|
298
|
+
}
|
|
299
|
+
return new withMessage({ cause: err, msg: fmt.Sprintf(format, ...args) })
|
|
212
300
|
}
|
|
213
301
|
|
|
214
302
|
class withMessage {
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
303
|
+
public get cause(): $.GoError {
|
|
304
|
+
return this._fields.cause.value
|
|
305
|
+
}
|
|
306
|
+
public set cause(value: $.GoError) {
|
|
307
|
+
this._fields.cause.value = value
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
public get msg(): string {
|
|
311
|
+
return this._fields.msg.value
|
|
312
|
+
}
|
|
313
|
+
public set msg(value: string) {
|
|
314
|
+
this._fields.msg.value = value
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
public _fields: {
|
|
318
|
+
cause: $.VarRef<$.GoError>
|
|
319
|
+
msg: $.VarRef<string>
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
constructor(init?: Partial<{ cause?: $.GoError; msg?: string }>) {
|
|
323
|
+
this._fields = {
|
|
324
|
+
cause: $.varRef(init?.cause ?? null),
|
|
325
|
+
msg: $.varRef(init?.msg ?? ''),
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
public clone(): withMessage {
|
|
330
|
+
const cloned = new withMessage()
|
|
331
|
+
cloned._fields = {
|
|
332
|
+
cause: $.varRef(this._fields.cause.value),
|
|
333
|
+
msg: $.varRef(this._fields.msg.value),
|
|
334
|
+
}
|
|
335
|
+
return cloned
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
public Error(): string {
|
|
339
|
+
const w = this
|
|
340
|
+
return w!.msg + ': ' + w!.cause!.Error()
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
public Cause(): $.GoError {
|
|
344
|
+
const w = this
|
|
345
|
+
return w!.cause
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
// Unwrap provides compatibility for Go 1.13 error chains.
|
|
349
|
+
public Unwrap(): $.GoError {
|
|
350
|
+
const w = this
|
|
351
|
+
return w!.cause
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
// Register this type with the runtime type system
|
|
355
|
+
static __typeInfo = $.registerStructType(
|
|
356
|
+
'withMessage',
|
|
357
|
+
new withMessage(),
|
|
358
|
+
[
|
|
359
|
+
{
|
|
360
|
+
name: 'Error',
|
|
361
|
+
args: [],
|
|
362
|
+
returns: [{ type: { kind: $.TypeKind.Basic, name: 'string' } }],
|
|
363
|
+
},
|
|
364
|
+
{
|
|
365
|
+
name: 'Cause',
|
|
366
|
+
args: [],
|
|
367
|
+
returns: [
|
|
368
|
+
{
|
|
369
|
+
type: {
|
|
370
|
+
kind: $.TypeKind.Interface,
|
|
371
|
+
name: 'GoError',
|
|
372
|
+
methods: [
|
|
373
|
+
{
|
|
374
|
+
name: 'Error',
|
|
375
|
+
args: [],
|
|
376
|
+
returns: [
|
|
377
|
+
{ type: { kind: $.TypeKind.Basic, name: 'string' } },
|
|
378
|
+
],
|
|
379
|
+
},
|
|
380
|
+
],
|
|
381
|
+
},
|
|
382
|
+
},
|
|
383
|
+
],
|
|
384
|
+
},
|
|
385
|
+
{
|
|
386
|
+
name: 'Unwrap',
|
|
387
|
+
args: [],
|
|
388
|
+
returns: [
|
|
389
|
+
{
|
|
390
|
+
type: {
|
|
391
|
+
kind: $.TypeKind.Interface,
|
|
392
|
+
name: 'GoError',
|
|
393
|
+
methods: [
|
|
394
|
+
{
|
|
395
|
+
name: 'Error',
|
|
396
|
+
args: [],
|
|
397
|
+
returns: [
|
|
398
|
+
{ type: { kind: $.TypeKind.Basic, name: 'string' } },
|
|
399
|
+
],
|
|
400
|
+
},
|
|
401
|
+
],
|
|
402
|
+
},
|
|
403
|
+
},
|
|
404
|
+
],
|
|
405
|
+
},
|
|
406
|
+
],
|
|
407
|
+
withMessage,
|
|
408
|
+
{
|
|
409
|
+
cause: {
|
|
410
|
+
kind: $.TypeKind.Interface,
|
|
411
|
+
name: 'GoError',
|
|
412
|
+
methods: [
|
|
413
|
+
{
|
|
414
|
+
name: 'Error',
|
|
415
|
+
args: [],
|
|
416
|
+
returns: [{ type: { kind: $.TypeKind.Basic, name: 'string' } }],
|
|
417
|
+
},
|
|
418
|
+
],
|
|
419
|
+
},
|
|
420
|
+
msg: { kind: $.TypeKind.Basic, name: 'string' },
|
|
421
|
+
},
|
|
422
|
+
)
|
|
274
423
|
}
|
|
275
424
|
|
|
276
425
|
// Cause returns the underlying cause of the error, if possible.
|
|
@@ -285,23 +434,44 @@ class withMessage {
|
|
|
285
434
|
// be returned. If the error is nil, nil will be returned without further
|
|
286
435
|
// investigation.
|
|
287
436
|
export function Cause(err: $.GoError): $.GoError {
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
$.registerInterfaceType(
|
|
293
|
-
'causer',
|
|
294
|
-
null, // Zero value for interface is null
|
|
295
|
-
[{ name: "Cause", args: [], returns: [{ type: { kind: $.TypeKind.Interface, name: 'GoError', methods: [{ name: 'Error', args: [], returns: [{ type: { kind: $.TypeKind.Basic, name: 'string' } }] }] } }] }]
|
|
296
|
-
);
|
|
297
|
-
|
|
298
|
-
for (; err != null; ) {
|
|
299
|
-
let { value: cause, ok: ok } = $.typeAssert<causer>(err, 'causer')
|
|
300
|
-
if (!ok) {
|
|
301
|
-
break
|
|
302
|
-
}
|
|
303
|
-
err = cause!.Cause()
|
|
304
|
-
}
|
|
305
|
-
return err
|
|
306
|
-
}
|
|
437
|
+
type causer = null | {
|
|
438
|
+
Cause(): $.GoError
|
|
439
|
+
}
|
|
307
440
|
|
|
441
|
+
$.registerInterfaceType(
|
|
442
|
+
'causer',
|
|
443
|
+
null, // Zero value for interface is null
|
|
444
|
+
[
|
|
445
|
+
{
|
|
446
|
+
name: 'Cause',
|
|
447
|
+
args: [],
|
|
448
|
+
returns: [
|
|
449
|
+
{
|
|
450
|
+
type: {
|
|
451
|
+
kind: $.TypeKind.Interface,
|
|
452
|
+
name: 'GoError',
|
|
453
|
+
methods: [
|
|
454
|
+
{
|
|
455
|
+
name: 'Error',
|
|
456
|
+
args: [],
|
|
457
|
+
returns: [
|
|
458
|
+
{ type: { kind: $.TypeKind.Basic, name: 'string' } },
|
|
459
|
+
],
|
|
460
|
+
},
|
|
461
|
+
],
|
|
462
|
+
},
|
|
463
|
+
},
|
|
464
|
+
],
|
|
465
|
+
},
|
|
466
|
+
],
|
|
467
|
+
)
|
|
468
|
+
|
|
469
|
+
for (; err != null; ) {
|
|
470
|
+
let { value: cause, ok: ok } = $.typeAssert<causer>(err, 'causer')
|
|
471
|
+
if (!ok) {
|
|
472
|
+
break
|
|
473
|
+
}
|
|
474
|
+
err = cause!.Cause()
|
|
475
|
+
}
|
|
476
|
+
return err
|
|
477
|
+
}
|