informalsystems / informalsystems/itf-go

Crash with non-string map keys

Open
#2 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
Go
Stars
2
Forks
1
PR merge metrics
No merged PRs in 30d

Description

I am having issues with maps where the keys are not easily converted to strings.

I have uploaded a PR with two example test cases.

TestUnmarshallRecordAsMapKey fails parsing with this error:

```
--- FAIL: TestUnmarshallRecordAsMapKey (0.00s)
panic: interface conversion: interface {} is []interface {}, not string [recovered]
panic: interface conversion: interface {} is []interface {}, not string

goroutine 21 [running]:
testing.tRunner.func1.2({0x102f9aa80, 0x140000a4ff0})
/opt/homebrew/Cellar/go/1.21.3/libexec/src/testing/testing.go:1545 +0x1c8
testing.tRunner.func1()
/opt/homebrew/Cellar/go/1.21.3/libexec/src/testing/testing.go:1548 +0x360
panic({0x102f9aa80?, 0x140000a4ff0?})
/opt/homebrew/Cellar/go/1.21.3/libexec/src/runtime/panic.go:914 +0x218
github.com/informalsystems/itf-go/itf.toString({0x102f8ac00?, 0x140000ac1e0?})
/Users/offtermatt/projects/itf-go/itf/trace.go:171 +0x118
github.com/informalsystems/itf-go/itf.mapToString[...](0x140000a4f00)
/Users/offtermatt/projects/itf-go/itf/trace.go:184 +0x1c0
github.com/informalsystems/itf-go/itf.toString({0x102f97860?, 0x140000a4f00?})
/Users/offtermatt/projects/itf-go/itf/trace.go:169 +0x8c
github.com/informalsystems/itf-go/itf.mapToString[...](0x140000a4ed0)
/Users/offtermatt/projects/itf-go/itf/trace.go:184 +0x1c0
github.com/informalsystems/itf-go/itf.toString({0x102f97860?, 0x140000a4ed0?})
/Users/offtermatt/projects/itf-go/itf/trace.go:169 +0x8c
github.com/informalsystems/itf-go/itf.toExpr({0x102f97860?, 0x140000a4ea0?})
/Users/offtermatt/projects/itf-go/itf/trace.go:101 +0x784
github.com/informalsystems/itf-go/itf.toExpr({0x102f97860?, 0x140000a4e70?})
/Users/offtermatt/projects/itf-go/itf/trace.go:147 +0x428
github.com/informalsystems/itf-go/itf.(*Expr).UnmarshalJSON(0x14000090520, {0x14000118002, 0x118, 0x118})
/Users/offtermatt/projects/itf-go/itf/trace.go:199 +0xb8
encoding/json.(*decodeState).object(0x1400011a000, {0x102f94da0?, 0x14000090520?, 0x102e7b9dc?})
/opt/homebrew/Cellar/go/1.21.3/libexec/src/encoding/json/decode.go:604 +0x5d4
encoding/json.(*decodeState).value(0x1400011a000, {0x102f94da0?, 0x14000090520?, 0x102e7afc4?})
/opt/homebrew/Cellar/go/1.21.3/libexec/src/encoding/json/decode.go:374 +0x40
encoding/json.(*decodeState).unmarshal(0x1400011a000, {0x102f94da0?, 0x14000090520?})
/opt/homebrew/Cellar/go/1.21.3/libexec/src/encoding/json/decode.go:181 +0x120
encoding/json.Unmarshal({0x14000118000, 0x11a, 0x11a}, {0x102f94da0, 0x14000090520})
/opt/homebrew/Cellar/go/1.21.3/libexec/src/encoding/json/decode.go:108 +0xf8
github.com/informalsystems/itf-go/itf.TestUnmarshallRecordAsMapKey(0x0?)
/Users/offtermatt/projects/itf-go/itf/trace_test.go:160 +0x90
testing.tRunner(0x14000083520, 0x102fcc678)
/opt/homebrew/Cellar/go/1.21.3/libexec/src/testing/testing.go:1595 +0xe8
created by testing.(*T).Run in goroutine 1
/opt/homebrew/Cellar/go/1.21.3/libexec/src/testing/testing.go:1648 +0x33c
```

TestUnmarshallRecordWithIntsAsMapKey is a test case that highlights that the map keys should not always be strings, in this case the key of the map item is the string "a#bigint1b#bigint2"

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.