diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2025-11-17 08:25:04 +0100 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2025-11-17 08:54:02 +0000 |
| commit | 208aa6706e1115fb0a18faf0fa72474ea2587184 (patch) | |
| tree | 428712b33de87b0f6bbd648f7f02dfe29ea4aac9 /pkg/clangtool/clangtool.go | |
| parent | eefcfd016a5cb195a9a9c86722a2b15aade8b59a (diff) | |
pkg/clangtool/tooltest: add LoadOutput helper
Add LoadOutput helper to use in future commits,
and switch to osutil.ReadJSON helper.
Diffstat (limited to 'pkg/clangtool/clangtool.go')
| -rw-r--r-- | pkg/clangtool/clangtool.go | 19 |
1 files changed, 3 insertions, 16 deletions
diff --git a/pkg/clangtool/clangtool.go b/pkg/clangtool/clangtool.go index 8ebc40dc2..9b9f9387d 100644 --- a/pkg/clangtool/clangtool.go +++ b/pkg/clangtool/clangtool.go @@ -42,12 +42,9 @@ type OutputDataPtr[T any] interface { // It always caches results, and optionally reuses previously cached results. func Run[Output any, OutputPtr OutputDataPtr[Output]](cfg *Config) (OutputPtr, error) { if cfg.CacheFile != "" { - data, err := os.ReadFile(cfg.CacheFile) + out, err := osutil.ReadJSON[OutputPtr](cfg.CacheFile) if err == nil { - out, err := unmarshal[Output, OutputPtr](data) - if err == nil { - return out, nil - } + return out, nil } } @@ -111,7 +108,7 @@ func runTool[Output any, OutputPtr OutputDataPtr[Output]](cfg *Config, dbFile, f } return nil, err } - out, err := unmarshal[Output, OutputPtr](data) + out, err := osutil.ParseJSON[OutputPtr](data) if err != nil { return nil, err } @@ -127,16 +124,6 @@ func runTool[Output any, OutputPtr OutputDataPtr[Output]](cfg *Config, dbFile, f return out, nil } -func unmarshal[Output any, OutputPtr OutputDataPtr[Output]](data []byte) (OutputPtr, error) { - dec := json.NewDecoder(bytes.NewReader(data)) - dec.DisallowUnknownFields() - out := OutputPtr(new(Output)) - if err := dec.Decode(out); err != nil { - return nil, fmt.Errorf("failed to unmarshal clang tool output: %w\n%s", err, data) - } - return out, nil -} - type compileCommand struct { Command string Directory string |
