summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Shumaker <lukeshu@lukeshu.com>2023-02-10 21:35:06 -0700
committerLuke Shumaker <lukeshu@lukeshu.com>2023-02-10 21:48:22 -0700
commitddffd7b78d81f1b47b5829eb9ff0aa1887cc3b17 (patch)
tree7733466fac856d93bfb6d6100fd703830a915567
parent3516254a492758dd414b271b85a1603fd53cebad (diff)
Use go:linkname instead of the awful internal/jsontest package
-rw-r--r--compat/json/compat_test.go17
-rw-r--r--encode_string.go14
-rw-r--r--internal/jsontest/jsontest.go14
3 files changed, 14 insertions, 31 deletions
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 <lukeshu@lukeshu.com>
-//
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-package jsontest
-
-import (
- "io"
-)
-
-var (
- EncodeStringFromBytes func(io.Writer, []byte)
- EncodeStringFromString func(io.Writer, string)
-)