From ddffd7b78d81f1b47b5829eb9ff0aa1887cc3b17 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Fri, 10 Feb 2023 21:35:06 -0700 Subject: Use go:linkname instead of the awful internal/jsontest package --- compat/json/compat_test.go | 17 ++++++++++++++--- encode_string.go | 14 -------------- internal/jsontest/jsontest.go | 14 -------------- 3 files changed, 14 insertions(+), 31 deletions(-) delete mode 100644 internal/jsontest/jsontest.go diff --git a/compat/json/compat_test.go b/compat/json/compat_test.go index 9e4e1cf..07c75bc 100644 --- a/compat/json/compat_test.go +++ b/compat/json/compat_test.go @@ -8,11 +8,12 @@ import ( "bytes" "encoding/json" "io" + _ "unsafe" "git.lukeshu.com/go/lowmemjson" + "git.lukeshu.com/go/lowmemjson/internal/fastio" "git.lukeshu.com/go/lowmemjson/internal/jsonparse" "git.lukeshu.com/go/lowmemjson/internal/jsonstruct" - "git.lukeshu.com/go/lowmemjson/internal/jsontest" ) var ( @@ -57,12 +58,22 @@ type encodeState struct { bytes.Buffer } +//go:linkname encodeStringFromString git.lukeshu.com/go/lowmemjson.encodeStringFromString +func encodeStringFromString(w fastio.AllWriter, escaper lowmemjson.BackslashEscaper, str string) error + +//go:linkname encodeStringFromBytes git.lukeshu.com/go/lowmemjson.encodeStringFromBytes +func encodeStringFromBytes(w fastio.AllWriter, escaper lowmemjson.BackslashEscaper, str []byte) error + func (es *encodeState) string(str string, _ bool) { - jsontest.EncodeStringFromString(&es.Buffer, str) + if err := encodeStringFromString(&es.Buffer, nil, str); err != nil { + panic(err) + } } func (es *encodeState) stringBytes(str []byte, _ bool) { - jsontest.EncodeStringFromBytes(&es.Buffer, str) + if err := encodeStringFromBytes(&es.Buffer, nil, str); err != nil { + panic(err) + } } type ( diff --git a/encode_string.go b/encode_string.go index a5d6633..328b07a 100644 --- a/encode_string.go +++ b/encode_string.go @@ -10,7 +10,6 @@ import ( "git.lukeshu.com/go/lowmemjson/internal/fastio" "git.lukeshu.com/go/lowmemjson/internal/jsonparse" - "git.lukeshu.com/go/lowmemjson/internal/jsontest" ) func writeStringUnicodeEscape(w io.Writer, c rune) (int, error) { @@ -116,16 +115,3 @@ func encodeStringFromBytes(w fastio.AllWriter, escaper BackslashEscaper, str []b } return nil } - -func init() { - jsontest.EncodeStringFromString = func(w io.Writer, s string) { - if err := encodeStringFromString(fastio.NewAllWriter(w), nil, s); err != nil { - panic(err) - } - } - jsontest.EncodeStringFromBytes = func(w io.Writer, s []byte) { - if err := encodeStringFromBytes(fastio.NewAllWriter(w), nil, s); err != nil { - panic(err) - } - } -} diff --git a/internal/jsontest/jsontest.go b/internal/jsontest/jsontest.go deleted file mode 100644 index fbc775d..0000000 --- a/internal/jsontest/jsontest.go +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright (C) 2022-2023 Luke Shumaker -// -// SPDX-License-Identifier: GPL-2.0-or-later - -package jsontest - -import ( - "io" -) - -var ( - EncodeStringFromBytes func(io.Writer, []byte) - EncodeStringFromString func(io.Writer, string) -) -- cgit v1.2.3-2-g168b