goscript 0.1.2 → 0.1.3

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 (49) hide show
  1. package/compiler/lowered-program.go +1 -0
  2. package/compiler/lowering.go +715 -44
  3. package/compiler/override-registry_test.go +43 -0
  4. package/compiler/skeleton_test.go +464 -12
  5. package/compiler/typescript-emitter.go +28 -2
  6. package/dist/gs/builtin/channel.js +36 -9
  7. package/dist/gs/builtin/channel.js.map +1 -1
  8. package/dist/gs/builtin/type.js +8 -3
  9. package/dist/gs/builtin/type.js.map +1 -1
  10. package/dist/gs/bytes/bytes.gs.d.ts +7 -5
  11. package/dist/gs/bytes/bytes.gs.js +10 -4
  12. package/dist/gs/bytes/bytes.gs.js.map +1 -1
  13. package/dist/gs/crypto/sha1/index.d.ts +5 -0
  14. package/dist/gs/crypto/sha1/index.js +106 -0
  15. package/dist/gs/crypto/sha1/index.js.map +1 -0
  16. package/dist/gs/fmt/fmt.d.ts +1 -1
  17. package/dist/gs/fmt/fmt.js +64 -3
  18. package/dist/gs/fmt/fmt.js.map +1 -1
  19. package/dist/gs/io/io.d.ts +8 -5
  20. package/dist/gs/io/io.js +20 -2
  21. package/dist/gs/io/io.js.map +1 -1
  22. package/dist/gs/net/http/httptest/index.js +7 -5
  23. package/dist/gs/net/http/httptest/index.js.map +1 -1
  24. package/dist/gs/net/http/index.d.ts +8 -0
  25. package/dist/gs/net/http/index.js +139 -10
  26. package/dist/gs/net/http/index.js.map +1 -1
  27. package/dist/gs/os/zero_copy_posix.gs.js +1 -1
  28. package/dist/gs/os/zero_copy_posix.gs.js.map +1 -1
  29. package/gs/builtin/channel.ts +47 -9
  30. package/gs/builtin/runtime-contract.test.ts +33 -0
  31. package/gs/builtin/type.ts +12 -3
  32. package/gs/bytes/bytes.gs.ts +19 -10
  33. package/gs/bytes/bytes.test.ts +17 -0
  34. package/gs/context/context.test.ts +5 -1
  35. package/gs/crypto/sha1/index.test.ts +28 -0
  36. package/gs/crypto/sha1/index.ts +130 -0
  37. package/gs/crypto/sha1/meta.json +8 -0
  38. package/gs/fmt/fmt.test.ts +20 -0
  39. package/gs/fmt/fmt.ts +75 -5
  40. package/gs/github.com/aperturerobotics/util/conc/index.test.ts +1 -1
  41. package/gs/io/io.test.ts +64 -0
  42. package/gs/io/io.ts +30 -12
  43. package/gs/net/http/httptest/index.test.ts +34 -2
  44. package/gs/net/http/httptest/index.ts +23 -8
  45. package/gs/net/http/index.test.ts +30 -0
  46. package/gs/net/http/index.ts +159 -10
  47. package/gs/os/zero_copy_posix.gs.ts +1 -2
  48. package/gs/sync/meta.json +1 -0
  49. package/package.json +1 -1
@@ -1,4 +1,5 @@
1
1
  import * as $ from '@goscript/builtin/index.js';
2
+ import * as bytes from '@goscript/bytes/index.js';
2
3
  import * as context from '@goscript/context/index.js';
3
4
  import * as errors from '@goscript/errors/index.js';
4
5
  import * as time from '@goscript/time/index.js';
@@ -7,9 +8,14 @@ export const StatusCreated = 201;
7
8
  export const StatusPartialContent = 206;
8
9
  export const StatusMovedPermanently = 301;
9
10
  export const StatusBadRequest = 400;
11
+ export const StatusUnauthorized = 401;
12
+ export const StatusForbidden = 403;
13
+ export const StatusMethodNotAllowed = 405;
10
14
  export const StatusRequestTimeout = 408;
11
15
  export const StatusConflict = 409;
12
16
  export const StatusNotFound = 404;
17
+ export const StatusUnsupportedMediaType = 415;
18
+ export const StatusTeapot = 418;
13
19
  export const StatusTooManyRequests = 429;
14
20
  export const StatusRequestedRangeNotSatisfiable = 416;
15
21
  export const StatusInternalServerError = 500;
@@ -25,6 +31,12 @@ export function StatusText(code) {
25
31
  return 'OK';
26
32
  case StatusMovedPermanently:
27
33
  return 'Moved Permanently';
34
+ case StatusUnauthorized:
35
+ return 'Unauthorized';
36
+ case StatusForbidden:
37
+ return 'Forbidden';
38
+ case StatusMethodNotAllowed:
39
+ return 'Method Not Allowed';
28
40
  case StatusBadRequest:
29
41
  return 'Bad Request';
30
42
  case StatusRequestTimeout:
@@ -33,12 +45,16 @@ export function StatusText(code) {
33
45
  return 'Conflict';
34
46
  case StatusNotFound:
35
47
  return 'Not Found';
48
+ case StatusUnsupportedMediaType:
49
+ return 'Unsupported Media Type';
36
50
  case StatusTooManyRequests:
37
51
  return 'Too Many Requests';
38
52
  case StatusPartialContent:
39
53
  return 'Partial Content';
40
54
  case StatusRequestedRangeNotSatisfiable:
41
55
  return 'Requested Range Not Satisfiable';
56
+ case StatusTeapot:
57
+ return "I'm a teapot";
42
58
  case StatusInternalServerError:
43
59
  return 'Internal Server Error';
44
60
  case StatusServiceUnavailable:
@@ -49,19 +65,35 @@ export function StatusText(code) {
49
65
  }
50
66
  export const Header = Map;
51
67
  export function Header_Add(h, key, value) {
68
+ key = canonicalMIMEHeaderKey(key);
52
69
  const values = Array.from(h.get(key) ?? []);
53
70
  values.push(value);
54
71
  h.set(key, $.arrayToSlice(values));
55
72
  }
56
73
  export function Header_Del(h, key) {
57
- h.delete(key);
74
+ h.delete(canonicalMIMEHeaderKey(key));
58
75
  }
59
76
  export function Header_Get(h, key) {
60
- const values = h.get(key);
77
+ const values = h.get(canonicalMIMEHeaderKey(key));
61
78
  return values == null || values.length === 0 ? '' : String(values[0]);
62
79
  }
63
80
  export function Header_Set(h, key, value) {
64
- h.set(key, $.arrayToSlice([value]));
81
+ h.set(canonicalMIMEHeaderKey(key), $.arrayToSlice([value]));
82
+ }
83
+ function canonicalMIMEHeaderKey(key) {
84
+ let upper = true;
85
+ let out = '';
86
+ for (let i = 0; i < key.length; i++) {
87
+ const ch = key[i];
88
+ if (ch === '-') {
89
+ upper = true;
90
+ out += ch;
91
+ continue;
92
+ }
93
+ out += upper ? ch.toUpperCase() : ch.toLowerCase();
94
+ upper = false;
95
+ }
96
+ return out;
65
97
  }
66
98
  class QueryValues extends Map {
67
99
  Add(key, value) {
@@ -73,11 +105,24 @@ class QueryValues extends Map {
73
105
  const values = this.get(key);
74
106
  return values == null || values.length === 0 ? '' : String(values[0]);
75
107
  }
108
+ Encode() {
109
+ const params = new URLSearchParams();
110
+ for (const [key, values] of this.entries()) {
111
+ for (const value of Array.from(values ?? [])) {
112
+ params.append(key, String(value));
113
+ }
114
+ }
115
+ return params.toString();
116
+ }
76
117
  }
77
118
  class RequestURL {
119
+ Scheme;
120
+ Host;
78
121
  Path;
79
122
  RawQuery;
80
- constructor(path, rawQuery) {
123
+ constructor(path, rawQuery, scheme = '', host = '') {
124
+ this.Scheme = scheme;
125
+ this.Host = host;
81
126
  this.Path = path;
82
127
  this.RawQuery = rawQuery;
83
128
  }
@@ -88,18 +133,81 @@ class RequestURL {
88
133
  return values;
89
134
  }
90
135
  clone() {
91
- return new RequestURL(this.Path, this.RawQuery);
136
+ return new RequestURL(this.Path, this.RawQuery, this.Scheme, this.Host);
137
+ }
138
+ String() {
139
+ const query = this.RawQuery === '' ? '' : `?${this.RawQuery}`;
140
+ const path = this.Path === '' ? '/' : this.Path;
141
+ if (this.Scheme === '' || this.Host === '') {
142
+ return `${path}${query}`;
143
+ }
144
+ return `${this.Scheme}://${this.Host}${path}${query}`;
92
145
  }
93
146
  }
94
147
  function parseRequestURL(rawURL) {
95
148
  try {
96
149
  const parsed = new URL(rawURL, 'http://goscript.invalid');
97
- return new RequestURL(parsed.pathname, parsed.search.startsWith('?') ? parsed.search.slice(1) : parsed.search);
150
+ const hasHost = /^[a-zA-Z][a-zA-Z0-9+.-]*:\/\//.test(rawURL);
151
+ return new RequestURL(parsed.pathname, parsed.search.startsWith('?') ? parsed.search.slice(1) : parsed.search, hasHost ? parsed.protocol.replace(/:$/, '') : '', hasHost ? parsed.host : '');
98
152
  }
99
153
  catch {
100
154
  return new RequestURL('', '');
101
155
  }
102
156
  }
157
+ class responseBody {
158
+ reader;
159
+ constructor(data) {
160
+ this.reader = bytes.NewReader(Uint8Array.from(data ?? []));
161
+ }
162
+ Read(p) {
163
+ return this.reader.Read(p);
164
+ }
165
+ Close() {
166
+ return null;
167
+ }
168
+ }
169
+ class memoryResponseWriter {
170
+ Code = StatusOK;
171
+ Body = new bytes.Buffer();
172
+ headerMap = new Header();
173
+ wroteHeader = false;
174
+ Header() {
175
+ return this.headerMap;
176
+ }
177
+ Write(p) {
178
+ if (!this.wroteHeader) {
179
+ this.WriteHeader(StatusOK);
180
+ }
181
+ return this.Body.Write(p);
182
+ }
183
+ WriteHeader(statusCode) {
184
+ if (this.wroteHeader) {
185
+ return;
186
+ }
187
+ this.wroteHeader = true;
188
+ this.Code = statusCode;
189
+ }
190
+ Result() {
191
+ return new Response({
192
+ Body: new responseBody(this.Body.Bytes()),
193
+ Header: this.headerMap,
194
+ StatusCode: this.Code,
195
+ });
196
+ }
197
+ }
198
+ const inProcessServers = new Map();
199
+ let nextInProcessServerID = 1;
200
+ export function RegisterInProcessServer(handler) {
201
+ const host = `goscript-httptest-${nextInProcessServerID++}.invalid`;
202
+ inProcessServers.set(host, handler ?? { ServeHTTP: NotFound });
203
+ return `http://${host}`;
204
+ }
205
+ export function UnregisterInProcessServer(rawURL) {
206
+ const parsed = parseRequestURL(rawURL);
207
+ if (parsed.Host !== '') {
208
+ inProcessServers.delete(parsed.Host);
209
+ }
210
+ }
103
211
  export class Request {
104
212
  Method;
105
213
  URL;
@@ -146,18 +254,25 @@ export class Request {
146
254
  }
147
255
  }
148
256
  export class Response {
257
+ Status;
149
258
  StatusCode;
150
259
  Body;
151
260
  Header;
152
261
  constructor(init) {
262
+ this.Status = init?.Status ?? '';
153
263
  this.StatusCode = init?.StatusCode ?? 0;
154
264
  this.Body = init?.Body ?? null;
155
265
  this.Header = init?.Header ?? new Header();
266
+ if (this.Status === '' && this.StatusCode !== 0) {
267
+ const text = StatusText(this.StatusCode);
268
+ this.Status = text === '' ? String(this.StatusCode) : `${this.StatusCode} ${text}`;
269
+ }
156
270
  }
157
271
  clone() {
158
272
  return new Response({
159
273
  Body: this.Body,
160
274
  Header: this.Header,
275
+ Status: this.Status,
161
276
  StatusCode: this.StatusCode,
162
277
  });
163
278
  }
@@ -172,12 +287,26 @@ export class Client {
172
287
  }
173
288
  }
174
289
  export const DefaultClient = new Client();
175
- class unsupportedTransport {
176
- async RoundTrip(_req) {
177
- return [null, errors.New('net/http: Client.Do is not implemented in GoScript')];
290
+ class defaultTransport {
291
+ async RoundTrip(req) {
292
+ const request = $.pointerValue(req);
293
+ if (request == null) {
294
+ return [null, errors.New('net/http: nil Request')];
295
+ }
296
+ const host = request.URL?.Host ?? '';
297
+ const handler = host === '' ? null : inProcessServers.get(host);
298
+ if (handler == null) {
299
+ return [null, errors.New('net/http: Client.Do is not implemented in GoScript')];
300
+ }
301
+ const recorder = new memoryResponseWriter();
302
+ const served = handler.ServeHTTP(recorder, request);
303
+ if (served instanceof Promise) {
304
+ await served;
305
+ }
306
+ return [recorder.Result(), null];
178
307
  }
179
308
  }
180
- export const DefaultTransport = new unsupportedTransport();
309
+ export const DefaultTransport = new defaultTransport();
181
310
  export function HandlerFunc_ServeHTTP(h, w, r) {
182
311
  return h(w, r);
183
312
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../gs/net/http/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../gs/net/http/index.ts"],"names":[],"mappings":"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"}
@@ -22,6 +22,6 @@ export function tryLimitedReader(r) {
22
22
  return [null, r, remain];
23
23
  }
24
24
  remain = lr.N;
25
- return [lr, lr.R, remain];
25
+ return [lr, lr.R ?? r, remain];
26
26
  }
27
27
  //# sourceMappingURL=zero_copy_posix.gs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"zero_copy_posix.gs.js","sourceRoot":"","sources":["../../../gs/os/zero_copy_posix.gs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,4BAA4B,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAMhD,sEAAsE;AACtE,6EAA6E;AAC7E,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,GAAc;IAC5D,CAAC;QACA,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,UAAU,CAAgB,GAAG,EAAE,eAAe,CAAC,CAAA;QAClE,IAAI,EAAE,EAAE,CAAC;YACR,GAAG,GAAG,eAAe,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QACjC,CAAC;IACF,CAAC;IACD,OAAO,GAAG,CAAA;AACX,CAAC;AAED,uGAAuG;AACvG,wFAAwF;AACxF,4GAA4G;AAC5G,MAAM,UAAU,gBAAgB,CAAC,CAAY;IAC5C,6BAA6B;IAC7B,IAAI,MAAM,GAAW,MAAM,CAAC,gBAAgB,GAAG,CAAC,CAAA;IAEhD,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,UAAU,CAA0B,CAAC,EAAE,EAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAC,CAAC,CAAA;IAC9H,IAAI,CAAC,EAAE,EAAE,CAAC;QACT,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM,CAAC,CAAA;IACzB,CAAC;IAED,MAAM,GAAG,EAAG,CAAC,CAAC,CAAA;IACd,OAAO,CAAC,EAAE,EAAE,EAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;AAC3B,CAAC"}
1
+ {"version":3,"file":"zero_copy_posix.gs.js","sourceRoot":"","sources":["../../../gs/os/zero_copy_posix.gs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,4BAA4B,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAMhD,sEAAsE;AACtE,6EAA6E;AAC7E,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,GAAc;IAC5D,CAAC;QACA,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,UAAU,CAAgB,GAAG,EAAE,eAAe,CAAC,CAAA;QAClE,IAAI,EAAE,EAAE,CAAC;YACR,GAAG,GAAG,eAAe,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QACjC,CAAC;IACF,CAAC;IACD,OAAO,GAAG,CAAA;AACX,CAAC;AAED,uGAAuG;AACvG,wFAAwF;AACxF,4GAA4G;AAC5G,MAAM,UAAU,gBAAgB,CAAC,CAAY;IAC5C,6BAA6B;IAC7B,IAAI,MAAM,GAAW,MAAM,CAAC,gBAAgB,GAAG,CAAC,CAAA;IAEhD,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,UAAU,CAA0B,CAAC,EAAE,EAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAC,CAAC,CAAA;IAC9H,IAAI,CAAC,EAAE,EAAE,CAAC;QACT,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM,CAAC,CAAA;IACzB,CAAC;IAED,MAAM,GAAG,EAAG,CAAC,CAAC,CAAA;IACd,OAAO,CAAC,EAAE,EAAE,EAAG,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAA;AAChC,CAAC"}
@@ -15,6 +15,38 @@ export interface SelectResult<T> {
15
15
  id: number
16
16
  }
17
17
 
18
+ function scheduleClosedChannelWake(wake: () => void): void {
19
+ // Closed-channel wakeups represent goroutine scheduling, not an immediate
20
+ // Promise continuation. Keep them on a task boundary so goroutine work queued
21
+ // around the close can observe state published before the blocked receiver
22
+ // resumes.
23
+ setTimeout(wake, 0)
24
+ }
25
+
26
+ function completeUnbufferedReceive<T>(
27
+ resolveReceive: (value: T) => void,
28
+ value: T,
29
+ ): Promise<void> {
30
+ return new Promise<void>((resolve) => {
31
+ queueMicrotask(() => {
32
+ resolveReceive(value)
33
+ queueMicrotask(resolve)
34
+ })
35
+ })
36
+ }
37
+
38
+ function completeUnbufferedReceiveWithOk<T>(
39
+ resolveReceive: (result: ChannelReceiveResult<T>) => void,
40
+ result: ChannelReceiveResult<T>,
41
+ ): Promise<void> {
42
+ return new Promise<void>((resolve) => {
43
+ queueMicrotask(() => {
44
+ resolveReceive(result)
45
+ queueMicrotask(resolve)
46
+ })
47
+ })
48
+ }
49
+
18
50
  /**
19
51
  * Represents a Go channel in TypeScript.
20
52
  * Supports asynchronous sending and receiving of values.
@@ -380,13 +412,14 @@ class BufferedChannel<T> implements Channel<T> {
380
412
  // Attempt to hand off to a waiting receiver (rendezvous)
381
413
  if (this.receivers.length > 0) {
382
414
  const receiverTask = this.receivers.shift()!
383
- queueMicrotask(() => receiverTask.resolveReceive(value))
384
- return
415
+ return completeUnbufferedReceive(receiverTask.resolveReceive, value)
385
416
  }
386
417
  if (this.receiversWithOk.length > 0) {
387
418
  const receiverTask = this.receiversWithOk.shift()!
388
- queueMicrotask(() => receiverTask.resolveReceive({ value, ok: true }))
389
- return
419
+ return completeUnbufferedReceiveWithOk(receiverTask.resolveReceive, {
420
+ value,
421
+ ok: true,
422
+ })
390
423
  }
391
424
 
392
425
  // If no waiting receivers, try to buffer if space is available
@@ -536,12 +569,15 @@ class BufferedChannel<T> implements Channel<T> {
536
569
 
537
570
  if (this.receivers.length > 0) {
538
571
  const receiverTask = this.receivers.shift()!
539
- queueMicrotask(() => receiverTask.resolveReceive(value))
572
+ await completeUnbufferedReceive(receiverTask.resolveReceive, value)
540
573
  return { value: true, ok: true, id }
541
574
  }
542
575
  if (this.receiversWithOk.length > 0) {
543
576
  const receiverTask = this.receiversWithOk.shift()!
544
- queueMicrotask(() => receiverTask.resolveReceive({ value, ok: true }))
577
+ await completeUnbufferedReceiveWithOk(receiverTask.resolveReceive, {
578
+ value,
579
+ ok: true,
580
+ })
545
581
  return { value: true, ok: true, id }
546
582
  }
547
583
 
@@ -600,7 +636,7 @@ class BufferedChannel<T> implements Channel<T> {
600
636
  const sendersToNotify = [...this.senders] // Shallow copy for iteration
601
637
  this.senders = []
602
638
  for (const senderTask of sendersToNotify) {
603
- queueMicrotask(() =>
639
+ scheduleClosedChannelWake(() =>
604
640
  senderTask.rejectSend(new Error('send on closed channel')),
605
641
  )
606
642
  }
@@ -608,13 +644,15 @@ class BufferedChannel<T> implements Channel<T> {
608
644
  const receiversToNotify = [...this.receivers]
609
645
  this.receivers = []
610
646
  for (const receiverTask of receiversToNotify) {
611
- queueMicrotask(() => receiverTask.resolveReceive(this.zeroValue))
647
+ scheduleClosedChannelWake(() =>
648
+ receiverTask.resolveReceive(this.zeroValue),
649
+ )
612
650
  }
613
651
 
614
652
  const receiversWithOkToNotify = [...this.receiversWithOk]
615
653
  this.receiversWithOk = []
616
654
  for (const receiverTask of receiversWithOkToNotify) {
617
- queueMicrotask(() =>
655
+ scheduleClosedChannelWake(() =>
618
656
  receiverTask.resolveReceive({ value: this.zeroValue, ok: false }),
619
657
  )
620
658
  }
@@ -513,6 +513,12 @@ describe('builtin runtime contract helpers', () => {
513
513
  }),
514
514
  ).toEqual({ value: null, ok: true })
515
515
 
516
+ const dogRef = interfaceValue<{ Name(): string } | null>(
517
+ { value: markAsStructValue(new TypedDog()), __isVarRef: true },
518
+ '*phase5.TypedDog',
519
+ )
520
+ expect(typeAssert<{ Name(): string }>(dogRef, dogInterface).ok).toBe(true)
521
+
516
522
  const greet = namedFunction(
517
523
  (name: string) => `hello ${name}`,
518
524
  'phase5.Greet',
@@ -570,6 +576,33 @@ describe('builtin runtime contract helpers', () => {
570
576
  expect(await chanRecvWithOk(channel)).toEqual({ value: 0, ok: false })
571
577
  })
572
578
 
579
+ it('does not resume an unbuffered sender before the waiting receiver accepts the value', async () => {
580
+ const channel = makeChannel<number>(0, 0, 'both')
581
+ let received = 0
582
+
583
+ const receiver = (async () => {
584
+ received = await channel.receive()
585
+ })()
586
+
587
+ await channel.send(7)
588
+ expect(received).toBe(7)
589
+ await receiver
590
+ })
591
+
592
+ it('resumes closed-channel receivers after queued goroutine work', async () => {
593
+ const channel = makeChannel<number>(0, 0, 'both')
594
+ const events: string[] = []
595
+
596
+ const receive = channel.receive().then(() => {
597
+ events.push('receiver')
598
+ })
599
+ channel.close()
600
+ queueMicrotask(() => events.push('queued'))
601
+
602
+ await receive
603
+ expect(events).toEqual(['queued', 'receiver'])
604
+ })
605
+
573
606
  it('cancels losing select receive cases', async () => {
574
607
  const signal = makeChannel<string>(1, '', 'both')
575
608
  const timeout = makeChannel<string>(0, '', 'both')
@@ -562,9 +562,18 @@ function matchesInterfaceType(value: any, info: TypeInfo): boolean {
562
562
  return false
563
563
  }
564
564
 
565
+ const methodTarget =
566
+ value.__isVarRef === true && 'value' in value ? value.value : value
567
+ if (
568
+ (typeof methodTarget !== 'object' && typeof methodTarget !== 'function') ||
569
+ methodTarget === null
570
+ ) {
571
+ return false
572
+ }
573
+
565
574
  // For interfaces, check if the value has all the required methods with compatible signatures
566
575
  return info.methods.every((requiredMethodSig) => {
567
- const actualMethod = (value as any)[requiredMethodSig.name]
576
+ const actualMethod = (methodTarget as any)[requiredMethodSig.name]
568
577
 
569
578
  // Method must exist and be a function
570
579
  if (typeof actualMethod !== 'function') {
@@ -587,8 +596,8 @@ function matchesInterfaceType(value: any, info: TypeInfo): boolean {
587
596
 
588
597
  // If the value has a __goTypeName property, it might be a registered type
589
598
  // with more type information available
590
- if (value.__goTypeName) {
591
- const valueTypeInfo = typeRegistry.get(value.__goTypeName)
599
+ if (methodTarget.__goTypeName) {
600
+ const valueTypeInfo = typeRegistry.get(methodTarget.__goTypeName)
592
601
  if (valueTypeInfo && isStructTypeInfo(valueTypeInfo)) {
593
602
  // Find the matching method in the value's type info
594
603
  const valueMethodSig = valueTypeInfo.methods.find(
@@ -8,6 +8,9 @@ import * as utf8 from "@goscript/unicode/utf8/index.js"
8
8
  // for linkname
9
9
  import * as _ from "@goscript/unsafe/index.js"
10
10
 
11
+ type SyncCallbackResult<T> = T | globalThis.Promise<T>
12
+ type PredicateCallback = ((r: number) => SyncCallbackResult<boolean>) | null
13
+
11
14
  // Equal reports whether a and b
12
15
  // are the same length and contain the same bytes.
13
16
  // A nil argument is equivalent to an empty slice.
@@ -90,7 +93,7 @@ export function ContainsRune(b: $.Bytes, r: number): boolean {
90
93
  }
91
94
 
92
95
  // ContainsFunc reports whether any of the UTF-8-encoded code points r within b satisfy f(r).
93
- export function ContainsFunc(b: $.Bytes, f: ((p0: number) => boolean) | null): boolean {
96
+ export function ContainsFunc(b: $.Bytes, f: PredicateCallback): boolean {
94
97
  return IndexFunc(b, f) >= 0
95
98
  }
96
99
 
@@ -794,21 +797,21 @@ export function TrimSuffix(s: $.Bytes, suffix: $.Bytes): $.Bytes {
794
797
  // IndexFunc interprets s as a sequence of UTF-8-encoded code points.
795
798
  // It returns the byte index in s of the first Unicode
796
799
  // code point satisfying f(c), or -1 if none do.
797
- export function IndexFunc(s: $.Bytes, f: ((r: number) => boolean) | null): number {
800
+ export function IndexFunc(s: $.Bytes, f: PredicateCallback): number {
798
801
  return indexFunc(s, f, true)
799
802
  }
800
803
 
801
804
  // LastIndexFunc interprets s as a sequence of UTF-8-encoded code points.
802
805
  // It returns the byte index in s of the last Unicode
803
806
  // code point satisfying f(c), or -1 if none do.
804
- export function LastIndexFunc(s: $.Bytes, f: ((r: number) => boolean) | null): number {
807
+ export function LastIndexFunc(s: $.Bytes, f: PredicateCallback): number {
805
808
  return lastIndexFunc(s, f, true)
806
809
  }
807
810
 
808
811
  // indexFunc is the same as IndexFunc except that if
809
812
  // truth==false, the sense of the predicate function is
810
813
  // inverted.
811
- export function indexFunc(s: $.Bytes, f: ((r: number) => boolean) | null, truth: boolean): number {
814
+ export function indexFunc(s: $.Bytes, f: PredicateCallback, truth: boolean): number {
812
815
  if (s === null || f === null) {
813
816
  return -1
814
817
  }
@@ -817,12 +820,12 @@ export function indexFunc(s: $.Bytes, f: ((r: number) => boolean) | null, truth:
817
820
  const [r, size] = utf8.DecodeRune($.goSlice(s, i, undefined))
818
821
  if (size <= 0) {
819
822
  // Invalid UTF-8
820
- if (f(utf8.RuneError) === truth) {
823
+ if (syncBoolean(f(utf8.RuneError)) === truth) {
821
824
  return i
822
825
  }
823
826
  i++
824
827
  } else {
825
- if (f(r) === truth) {
828
+ if (syncBoolean(f(r)) === truth) {
826
829
  return i
827
830
  }
828
831
  i += size
@@ -835,7 +838,7 @@ export function indexFunc(s: $.Bytes, f: ((r: number) => boolean) | null, truth:
835
838
  // lastIndexFunc is the same as LastIndexFunc except that if
836
839
  // truth==false, the sense of the predicate function is
837
840
  // inverted.
838
- export function lastIndexFunc(s: $.Bytes, f: ((r: number) => boolean) | null, truth: boolean): number {
841
+ export function lastIndexFunc(s: $.Bytes, f: PredicateCallback, truth: boolean): number {
839
842
  if (s === null || f === null) {
840
843
  return -1
841
844
  }
@@ -846,12 +849,12 @@ export function lastIndexFunc(s: $.Bytes, f: ((r: number) => boolean) | null, tr
846
849
  const [r, size] = utf8.DecodeRune($.goSlice(s, i, undefined))
847
850
  if (size <= 0) {
848
851
  // Invalid UTF-8
849
- if (f(utf8.RuneError) === truth) {
852
+ if (syncBoolean(f(utf8.RuneError)) === truth) {
850
853
  lastIndex = i
851
854
  }
852
855
  i++
853
856
  } else {
854
- if (f(r) === truth) {
857
+ if (syncBoolean(f(r)) === truth) {
855
858
  lastIndex = i
856
859
  }
857
860
  i += size
@@ -861,6 +864,13 @@ export function lastIndexFunc(s: $.Bytes, f: ((r: number) => boolean) | null, tr
861
864
  return lastIndex
862
865
  }
863
866
 
867
+ function syncBoolean(value: SyncCallbackResult<boolean>): boolean {
868
+ if (value instanceof Promise) {
869
+ throw new Error("bytes: asynchronous callback result is not supported")
870
+ }
871
+ return value
872
+ }
873
+
864
874
  class asciiSet {
865
875
  constructor(public _value: number[]) {}
866
876
 
@@ -1285,4 +1295,3 @@ export function CutSuffix(s: $.Bytes, suffix: $.Bytes): [$.Bytes, boolean] {
1285
1295
  }
1286
1296
  return [$.goSlice(s, undefined, $.len(s) - $.len(suffix)), true]
1287
1297
  }
1288
-
@@ -0,0 +1,17 @@
1
+ import * as $ from "@goscript/builtin/index.js"
2
+ import { IndexFunc } from "./index.js"
3
+ import { describe, expect, test } from "vitest"
4
+
5
+ describe("bytes", () => {
6
+ test("IndexFunc accepts generated async-shaped callbacks", () => {
7
+ const predicate: (r: number) => boolean | Promise<boolean> = (r) => r === 0x62
8
+
9
+ expect(IndexFunc($.stringToBytes("abc"), predicate)).toBe(1)
10
+ })
11
+
12
+ test("IndexFunc rejects actual async callback results", () => {
13
+ expect(() => IndexFunc($.stringToBytes("abc"), async (r) => r === 0x62)).toThrow(
14
+ "bytes: asynchronous callback result is not supported",
15
+ )
16
+ })
17
+ })
@@ -8,6 +8,10 @@ async function nextMicrotask(): Promise<void> {
8
8
  await new Promise<void>((resolve) => queueMicrotask(resolve))
9
9
  }
10
10
 
11
+ async function nextTask(): Promise<void> {
12
+ await new Promise<void>((resolve) => setTimeout(resolve, 0))
13
+ }
14
+
11
15
  describe('context override', () => {
12
16
  it('matches generated struct keys by Go comparable value', () => {
13
17
  class Key {
@@ -39,7 +43,7 @@ describe('context override', () => {
39
43
 
40
44
  cancel?.()
41
45
  await nextMicrotask()
42
- await nextMicrotask()
46
+ await nextTask()
43
47
 
44
48
  expect(called).toBe(true)
45
49
  expect(stop()).toBe(false)