Skip to content

Commit caa5ced

Browse files
committed
test: sync generated fixtures for go1.25.3
1 parent 1d82a7c commit caa5ced

6 files changed

Lines changed: 53 additions & 57 deletions

File tree

tests/deps/encoding/json/decode.gs.ts

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1680,14 +1680,14 @@ export function indirect(v: reflect.Value, decodingNull: boolean): [Unmarshaler,
16801680
}
16811681
if (v.Type()!.NumMethod() > 0 && v.CanInterface()) {
16821682
{
1683-
let [u, ok] = $.typeAssertTuple<Unmarshaler>(v.Interface(), "encoding/json.Unmarshaler")
1683+
let { value: u, ok: ok } = $.typeAssert<Unmarshaler>(v.Interface(), 'encoding/json.Unmarshaler')
16841684
if (ok) {
16851685
return [u, null, $.markAsStructValue(new reflect.Value({}))]
16861686
}
16871687
}
16881688
if (!decodingNull) {
16891689
{
1690-
let [u, ok] = $.typeAssertTuple<encoding.TextUnmarshaler>(v.Interface(), "encoding.TextUnmarshaler")
1690+
let { value: u, ok: ok } = $.typeAssert<null | encoding.TextUnmarshaler>(v.Interface(), 'encoding.TextUnmarshaler')
16911691
if (ok) {
16921692
return [null, u, $.markAsStructValue(new reflect.Value({}))]
16931693
}
@@ -1751,6 +1751,15 @@ export function unquote(s: $.Bytes): [string, boolean] {
17511751
}
17521752
}
17531753

1754+
// unquoteBytes should be an internal detail,
1755+
// but widely used packages access it using linkname.
1756+
// Notable members of the hall of shame include:
1757+
// - github.com/bytedance/sonic
1758+
//
1759+
// Do not remove or change the type signature.
1760+
// See go.dev/issue/67401.
1761+
//
1762+
//go:linkname unquoteBytes
17541763
export function unquoteBytes(s: $.Bytes): [$.Bytes, boolean] {
17551764
let t: $.Bytes = new Uint8Array(0)
17561765
let ok: boolean = false
@@ -1769,6 +1778,10 @@ export function unquoteBytes(s: $.Bytes): [$.Bytes, boolean] {
17691778
if (c == 92 || c == 34 || c < 32) {
17701779
break
17711780
}
1781+
if (c < utf8.RuneSelf) {
1782+
r++
1783+
continue
1784+
}
17721785
let [rr, size] = utf8.DecodeRune($.goSlice(s, r, undefined))
17731786
if (rr == utf8.RuneError && size == 1) {
17741787
break

tests/deps/encoding/json/encode.gs.ts

Lines changed: 29 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -415,10 +415,6 @@ export class encodeState {
415415
return this.Buffer.Next(n)
416416
}
417417

418-
public Peek(n: number): [$.Bytes, $.GoError] {
419-
return this.Buffer.Peek(n)
420-
}
421-
422418
public Read(p: $.Bytes): [number, $.GoError] {
423419
return this.Buffer.Read(p)
424420
}
@@ -1613,7 +1609,7 @@ export function marshalerEncoder(e: encodeState | null, v: reflect.Value, opts:
16131609
e!.WriteString("null")
16141610
return
16151611
}
1616-
let [m, ok] = $.typeAssertTuple<Marshaler>(v.Interface(), "encoding/json.Marshaler")
1612+
let { value: m, ok: ok } = $.typeAssert<Marshaler>(v.Interface(), 'encoding/json.Marshaler')
16171613
if (!ok) {
16181614
e!.WriteString("null")
16191615
return
@@ -1636,7 +1632,7 @@ export function addrMarshalerEncoder(e: encodeState | null, v: reflect.Value, op
16361632
e!.WriteString("null")
16371633
return
16381634
}
1639-
let [m, ] = $.typeAssertTuple<Marshaler>(va.Interface(), "encoding/json.Marshaler")
1635+
let m = $.mustTypeAssert<Marshaler>(va.Interface(), 'encoding/json.Marshaler')
16401636
let [b, err] = m!.MarshalJSON()
16411637
if (err == null) {
16421638
e!.Grow($.len(b))
@@ -1654,7 +1650,7 @@ export function textMarshalerEncoder(e: encodeState | null, v: reflect.Value, op
16541650
e!.WriteString("null")
16551651
return
16561652
}
1657-
let [m, ok] = $.typeAssertTuple<encoding.TextMarshaler>(v.Interface(), "encoding.TextMarshaler")
1653+
let { value: m, ok: ok } = $.typeAssert<null | encoding.TextMarshaler>(v.Interface(), 'encoding.TextMarshaler')
16581654
if (!ok) {
16591655
e!.WriteString("null")
16601656
return
@@ -1672,7 +1668,7 @@ export function addrTextMarshalerEncoder(e: encodeState | null, v: reflect.Value
16721668
e!.WriteString("null")
16731669
return
16741670
}
1675-
let [m, ] = $.typeAssertTuple<encoding.TextMarshaler>(va.Interface(), "encoding.TextMarshaler")
1671+
let m = $.mustTypeAssert<null | encoding.TextMarshaler>(va.Interface(), 'encoding.TextMarshaler')
16761672
let [b, err] = m!.MarshalText()
16771673
if (err != null) {
16781674
e!.error(new MarshalerError({Err: err, Type: v.Type(), sourceFunc: "MarshalText"}))
@@ -1739,6 +1735,17 @@ export function stringEncoder(e: encodeState | null, v: reflect.Value, opts: enc
17391735
}
17401736
}
17411737

1738+
// isValidNumber reports whether s is a valid JSON number literal.
1739+
//
1740+
// isValidNumber should be an internal detail,
1741+
// but widely used packages access it using linkname.
1742+
// Notable members of the hall of shame include:
1743+
// - github.com/bytedance/sonic
1744+
//
1745+
// Do not remove or change the type signature.
1746+
// See go.dev/issue/67401.
1747+
//
1748+
//go:linkname isValidNumber
17421749
export function isValidNumber(s: string): boolean {
17431750
// This function implements the JSON numbers grammar.
17441751
// See https://tools.ietf.org/html/rfc7159#section-6
@@ -1937,7 +1944,7 @@ export function resolveKeyName(k: reflect.Value): [string, $.GoError] {
19371944
return [k.String(), null]
19381945
}
19391946
{
1940-
let [tm, ok] = $.typeAssertTuple<encoding.TextMarshaler>(k.Interface(), "encoding.TextMarshaler")
1947+
let { value: tm, ok: ok } = $.typeAssert<null | encoding.TextMarshaler>(k.Interface(), 'encoding.TextMarshaler')
19411948
if (ok) {
19421949
if (k.Kind() == reflect.Ptr && k.IsNil()) {
19431950
return ["", null]
@@ -2079,6 +2086,19 @@ export function appendString<Bytes extends $.Bytes | string>(dst: $.Bytes, src:
20792086
return dst
20802087
}
20812088

2089+
// typeFields returns a list of fields that JSON should recognize for the given type.
2090+
// The algorithm is breadth-first search over the set of structs to include - the top struct
2091+
// and then any reachable anonymous structs.
2092+
//
2093+
// typeFields should be an internal detail,
2094+
// but widely used packages access it using linkname.
2095+
// Notable members of the hall of shame include:
2096+
// - github.com/bytedance/sonic
2097+
//
2098+
// Do not remove or change the type signature.
2099+
// See go.dev/issue/67401.
2100+
//
2101+
//go:linkname typeFields
20822102
export async function typeFields(t: null | reflect.Type): Promise<structFields> {
20832103
// Anonymous fields to explore at the current level and the next.
20842104
let current = $.arrayToSlice<field>([])

tests/deps/go/scanner/scanner.gs.ts

Lines changed: 6 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@ import * as bytes from "@goscript/bytes/index.js"
44

55
import * as fmt from "@goscript/fmt/index.js"
66

7-
import * as scannerhooks from "@goscript/go/internal/scannerhooks/index.js"
8-
97
import * as token from "@goscript/go/token/index.js"
108

119
import * as filepath from "@goscript/path/filepath/index.js"
@@ -123,14 +121,6 @@ export class Scanner {
123121
this._fields.nlPos.value = value
124122
}
125123

126-
// end position; defined only for STRING tokens
127-
public get stringEnd(): token.Pos {
128-
return this._fields.stringEnd.value
129-
}
130-
public set stringEnd(value: token.Pos) {
131-
this._fields.stringEnd.value = value
132-
}
133-
134124
// public state - ok to modify
135125
// number of errors encountered
136126
public get ErrorCount(): number {
@@ -152,11 +142,10 @@ export class Scanner {
152142
lineOffset: $.VarRef<number>;
153143
insertSemi: $.VarRef<boolean>;
154144
nlPos: $.VarRef<token.Pos>;
155-
stringEnd: $.VarRef<token.Pos>;
156145
ErrorCount: $.VarRef<number>;
157146
}
158147

159-
constructor(init?: Partial<{ErrorCount?: number, ch?: number, dir?: string, err?: ErrorHandler | null, file?: token.File | null, insertSemi?: boolean, lineOffset?: number, mode?: Mode, nlPos?: token.Pos, offset?: number, rdOffset?: number, src?: $.Bytes, stringEnd?: token.Pos}>) {
148+
constructor(init?: Partial<{ErrorCount?: number, ch?: number, dir?: string, err?: ErrorHandler | null, file?: token.File | null, insertSemi?: boolean, lineOffset?: number, mode?: Mode, nlPos?: token.Pos, offset?: number, rdOffset?: number, src?: $.Bytes}>) {
160149
this._fields = {
161150
file: $.varRef(init?.file ?? null),
162151
dir: $.varRef(init?.dir ?? ""),
@@ -169,7 +158,6 @@ export class Scanner {
169158
lineOffset: $.varRef(init?.lineOffset ?? 0),
170159
insertSemi: $.varRef(init?.insertSemi ?? false),
171160
nlPos: $.varRef(init?.nlPos ?? 0 as token.Pos),
172-
stringEnd: $.varRef(init?.stringEnd ?? 0 as token.Pos),
173161
ErrorCount: $.varRef(init?.ErrorCount ?? 0)
174162
}
175163
}
@@ -188,7 +176,6 @@ export class Scanner {
188176
lineOffset: $.varRef(this._fields.lineOffset.value),
189177
insertSemi: $.varRef(this._fields.insertSemi.value),
190178
nlPos: $.varRef(this._fields.nlPos.value),
191-
stringEnd: $.varRef(this._fields.stringEnd.value),
192179
ErrorCount: $.varRef(this._fields.ErrorCount.value)
193180
}
194181
return cloned
@@ -758,7 +745,7 @@ export class Scanner {
758745
return $.bytesToString($.goSlice(s.src, offs, s.offset))
759746
}
760747

761-
public async scanRawString(): Promise<[string, number]> {
748+
public async scanRawString(): Promise<string> {
762749
const s = this
763750
let offs = s.offset - 1
764751
let hasCR = false
@@ -777,11 +764,10 @@ export class Scanner {
777764
}
778765
}
779766
let lit = $.goSlice(s.src, offs, s.offset)
780-
let rawLen = $.len(lit)
781767
if (hasCR) {
782768
lit = stripCR(lit, false)
783769
}
784-
return [$.bytesToString(lit), rawLen]
770+
return $.bytesToString(lit)
785771
}
786772

787773
public async skipWhitespace(): Promise<void> {
@@ -922,7 +908,6 @@ export class Scanner {
922908
insertSemi = true
923909
tok = token.STRING
924910
lit = await s.scanString()
925-
s.stringEnd = pos + ($.len(lit) as token.Pos)
926911
break
927912
}
928913
case 39: {
@@ -934,9 +919,7 @@ export class Scanner {
934919
case 96: {
935920
insertSemi = true
936921
tok = token.STRING
937-
let rawLen: number = 0
938-
;[lit, rawLen] = await s.scanRawString()
939-
s.stringEnd = pos + (rawLen as token.Pos)
922+
lit = await s.scanRawString()
940923
break
941924
}
942925
case 58: {
@@ -1112,21 +1095,14 @@ export class Scanner {
11121095
static __typeInfo = $.registerStructType(
11131096
'go/scanner.Scanner',
11141097
new Scanner(),
1115-
[{ name: "next", args: [], returns: [] }, { name: "peek", args: [], returns: [{ type: { kind: $.TypeKind.Basic, name: "byte" } }] }, { name: "Init", args: [{ name: "file", type: { kind: $.TypeKind.Pointer, elemType: "go/token.File" } }, { name: "src", type: { kind: $.TypeKind.Slice, elemType: { kind: $.TypeKind.Basic, name: "byte" } } }, { name: "err", type: "go/scanner.ErrorHandler" }, { name: "mode", type: "go/scanner.Mode" }], returns: [] }, { name: "error", args: [{ name: "offs", type: { kind: $.TypeKind.Basic, name: "int" } }, { name: "msg", type: { kind: $.TypeKind.Basic, name: "string" } }], returns: [] }, { name: "errorf", args: [{ name: "offs", type: { kind: $.TypeKind.Basic, name: "int" } }, { name: "format", type: { kind: $.TypeKind.Basic, name: "string" } }, { name: "args", type: { kind: $.TypeKind.Slice, elemType: { kind: $.TypeKind.Interface, methods: [] } } }], returns: [] }, { name: "scanComment", args: [], returns: [{ type: { kind: $.TypeKind.Basic, name: "string" } }, { type: { kind: $.TypeKind.Basic, name: "int" } }] }, { name: "updateLineInfo", args: [{ name: "next", type: { kind: $.TypeKind.Basic, name: "int" } }, { name: "offs", type: { kind: $.TypeKind.Basic, name: "int" } }, { name: "text", type: { kind: $.TypeKind.Slice, elemType: { kind: $.TypeKind.Basic, name: "byte" } } }], returns: [] }, { name: "scanIdentifier", args: [], returns: [{ type: { kind: $.TypeKind.Basic, name: "string" } }] }, { name: "digits", args: [{ name: "base", type: { kind: $.TypeKind.Basic, name: "int" } }, { name: "invalid", type: { kind: $.TypeKind.Pointer, elemType: { kind: $.TypeKind.Basic, name: "int" } } }], returns: [{ type: { kind: $.TypeKind.Basic, name: "int" } }] }, { name: "scanNumber", args: [], returns: [{ type: "go/token.Token" }, { type: { kind: $.TypeKind.Basic, name: "string" } }] }, { name: "scanEscape", args: [{ name: "quote", type: { kind: $.TypeKind.Basic, name: "rune" } }], returns: [{ type: { kind: $.TypeKind.Basic, name: "bool" } }] }, { name: "scanRune", args: [], returns: [{ type: { kind: $.TypeKind.Basic, name: "string" } }] }, { name: "scanString", args: [], returns: [{ type: { kind: $.TypeKind.Basic, name: "string" } }] }, { name: "scanRawString", args: [], returns: [{ type: { kind: $.TypeKind.Basic, name: "string" } }, { type: { kind: $.TypeKind.Basic, name: "int" } }] }, { name: "skipWhitespace", args: [], returns: [] }, { name: "switch2", args: [{ name: "tok0", type: "go/token.Token" }, { name: "tok1", type: "go/token.Token" }], returns: [{ type: "go/token.Token" }] }, { name: "switch3", args: [{ name: "tok0", type: "go/token.Token" }, { name: "tok1", type: "go/token.Token" }, { name: "ch2", type: { kind: $.TypeKind.Basic, name: "rune" } }, { name: "tok2", type: "go/token.Token" }], returns: [{ type: "go/token.Token" }] }, { name: "switch4", args: [{ name: "tok0", type: "go/token.Token" }, { name: "tok1", type: "go/token.Token" }, { name: "ch2", type: { kind: $.TypeKind.Basic, name: "rune" } }, { name: "tok2", type: "go/token.Token" }, { name: "tok3", type: "go/token.Token" }], returns: [{ type: "go/token.Token" }] }, { name: "Scan", args: [], returns: [{ type: "go/token.Pos" }, { type: "go/token.Token" }, { type: { kind: $.TypeKind.Basic, name: "string" } }] }],
1098+
[{ name: "next", args: [], returns: [] }, { name: "peek", args: [], returns: [{ type: { kind: $.TypeKind.Basic, name: "byte" } }] }, { name: "Init", args: [{ name: "file", type: { kind: $.TypeKind.Pointer, elemType: "go/token.File" } }, { name: "src", type: { kind: $.TypeKind.Slice, elemType: { kind: $.TypeKind.Basic, name: "byte" } } }, { name: "err", type: "go/scanner.ErrorHandler" }, { name: "mode", type: "go/scanner.Mode" }], returns: [] }, { name: "error", args: [{ name: "offs", type: { kind: $.TypeKind.Basic, name: "int" } }, { name: "msg", type: { kind: $.TypeKind.Basic, name: "string" } }], returns: [] }, { name: "errorf", args: [{ name: "offs", type: { kind: $.TypeKind.Basic, name: "int" } }, { name: "format", type: { kind: $.TypeKind.Basic, name: "string" } }, { name: "args", type: { kind: $.TypeKind.Slice, elemType: { kind: $.TypeKind.Interface, methods: [] } } }], returns: [] }, { name: "scanComment", args: [], returns: [{ type: { kind: $.TypeKind.Basic, name: "string" } }, { type: { kind: $.TypeKind.Basic, name: "int" } }] }, { name: "updateLineInfo", args: [{ name: "next", type: { kind: $.TypeKind.Basic, name: "int" } }, { name: "offs", type: { kind: $.TypeKind.Basic, name: "int" } }, { name: "text", type: { kind: $.TypeKind.Slice, elemType: { kind: $.TypeKind.Basic, name: "byte" } } }], returns: [] }, { name: "scanIdentifier", args: [], returns: [{ type: { kind: $.TypeKind.Basic, name: "string" } }] }, { name: "digits", args: [{ name: "base", type: { kind: $.TypeKind.Basic, name: "int" } }, { name: "invalid", type: { kind: $.TypeKind.Pointer, elemType: { kind: $.TypeKind.Basic, name: "int" } } }], returns: [{ type: { kind: $.TypeKind.Basic, name: "int" } }] }, { name: "scanNumber", args: [], returns: [{ type: "go/token.Token" }, { type: { kind: $.TypeKind.Basic, name: "string" } }] }, { name: "scanEscape", args: [{ name: "quote", type: { kind: $.TypeKind.Basic, name: "rune" } }], returns: [{ type: { kind: $.TypeKind.Basic, name: "bool" } }] }, { name: "scanRune", args: [], returns: [{ type: { kind: $.TypeKind.Basic, name: "string" } }] }, { name: "scanString", args: [], returns: [{ type: { kind: $.TypeKind.Basic, name: "string" } }] }, { name: "scanRawString", args: [], returns: [{ type: { kind: $.TypeKind.Basic, name: "string" } }] }, { name: "skipWhitespace", args: [], returns: [] }, { name: "switch2", args: [{ name: "tok0", type: "go/token.Token" }, { name: "tok1", type: "go/token.Token" }], returns: [{ type: "go/token.Token" }] }, { name: "switch3", args: [{ name: "tok0", type: "go/token.Token" }, { name: "tok1", type: "go/token.Token" }, { name: "ch2", type: { kind: $.TypeKind.Basic, name: "rune" } }, { name: "tok2", type: "go/token.Token" }], returns: [{ type: "go/token.Token" }] }, { name: "switch4", args: [{ name: "tok0", type: "go/token.Token" }, { name: "tok1", type: "go/token.Token" }, { name: "ch2", type: { kind: $.TypeKind.Basic, name: "rune" } }, { name: "tok2", type: "go/token.Token" }, { name: "tok3", type: "go/token.Token" }], returns: [{ type: "go/token.Token" }] }, { name: "Scan", args: [], returns: [{ type: "go/token.Pos" }, { type: "go/token.Token" }, { type: { kind: $.TypeKind.Basic, name: "string" } }] }],
11161099
Scanner,
1117-
{"file": { kind: $.TypeKind.Pointer, elemType: "go/token.File" }, "dir": { kind: $.TypeKind.Basic, name: "string" }, "src": { kind: $.TypeKind.Slice, elemType: { kind: $.TypeKind.Basic, name: "byte" } }, "err": "go/scanner.ErrorHandler", "mode": "go/scanner.Mode", "ch": { kind: $.TypeKind.Basic, name: "rune" }, "offset": { kind: $.TypeKind.Basic, name: "int" }, "rdOffset": { kind: $.TypeKind.Basic, name: "int" }, "lineOffset": { kind: $.TypeKind.Basic, name: "int" }, "insertSemi": { kind: $.TypeKind.Basic, name: "bool" }, "nlPos": "go/token.Pos", "stringEnd": "go/token.Pos", "ErrorCount": { kind: $.TypeKind.Basic, name: "int" }}
1100+
{"file": { kind: $.TypeKind.Pointer, elemType: "go/token.File" }, "dir": { kind: $.TypeKind.Basic, name: "string" }, "src": { kind: $.TypeKind.Slice, elemType: { kind: $.TypeKind.Basic, name: "byte" } }, "err": "go/scanner.ErrorHandler", "mode": "go/scanner.Mode", "ch": { kind: $.TypeKind.Basic, name: "rune" }, "offset": { kind: $.TypeKind.Basic, name: "int" }, "rdOffset": { kind: $.TypeKind.Basic, name: "int" }, "lineOffset": { kind: $.TypeKind.Basic, name: "int" }, "insertSemi": { kind: $.TypeKind.Basic, name: "bool" }, "nlPos": "go/token.Pos", "ErrorCount": { kind: $.TypeKind.Basic, name: "int" }}
11181101
);
11191102
}
11201103

11211104
export let prefix: $.Bytes = $.stringToBytes("line ")
11221105

1123-
// Provide go/parser with backdoor access to the StringEnd information.
1124-
export function init(): void {
1125-
scannerhooks.StringEnd = (scanner: null | any): token.Pos => {
1126-
return $.mustTypeAssert<Scanner | null>(scanner, {kind: $.TypeKind.Pointer, elemType: 'go/scanner.Scanner'})!.stringEnd
1127-
}
1128-
}
1129-
11301106
export function trailingDigits(text: $.Bytes): [number, number, boolean] {
11311107
let i = bytes.LastIndexByte(text, 58) // look from right (Windows filenames may contain ':')
11321108

0 commit comments

Comments
 (0)