status-im / nim-toml-serialization

Flexible TOML serialization [not] relying on run-time type information.
Apache License 2.0
37 stars 7 forks source link

Manually track exceptions #55

Closed planetis-m closed 1 year ago

planetis-m commented 2 years ago

Compiles with --experimental:strictEffects I think the real issue here is that exception tracking breaks for forward declared procs and needs to be manually inserted.

planetis-m commented 1 year ago

Failure with Nim v1.2 CI:

 D:\a\nim-toml-serialization\nim-toml-serialization\nim-toml-serialization\toml_serialization\lexer.nim(1785, 13) template/generic instantiation of `parseValue` from here
D:\a\nim-toml-serialization\nim-toml-serialization\nim-toml-serialization\toml_serialization\lexer.nim(1503, 65) template/generic instantiation from here
D:\a\nim-toml-serialization\nim-toml-serialization\nim-toml-serialization\toml_serialization\lexer.nim(1630, 17) Error: can raise an unlisted exception: ref IndexError

Probably because IndexError became IndexDefect and that is not tracked now.

Failure with Nim v1.6 CI:

/home/runner/work/nim-toml-serialization/nim-toml-serialization/nim-toml-serialization/tests/test_decoder.nim(64, 16) template/generic instantiation of `decode` from here
/home/runner/work/nim-toml-serialization/nim-toml-serialization/nim-toml-serialization/toml_serialization.nim(112, 15) template/generic instantiation of `readValue` from here
/home/runner/.nimble/pkgs/serialization-0.1.0/serialization.nim(29, 9) template/generic instantiation of `readValue` from here
/home/runner/work/nim-toml-serialization/nim-toml-serialization/nim-toml-serialization/toml_serialization/reader.nim(479, 8) template/generic instantiation of `decodeRecord` from here
/home/runner/work/nim-toml-serialization/nim-toml-serialization/nim-toml-serialization/toml_serialization/reader.nim(263, 27) template/generic instantiation of `arrayReadersTable` from here
/home/runner/work/nim-toml-serialization/nim-toml-serialization/nim-toml-serialization/toml_serialization/private/array_reader.nim(38, 26) template/generic instantiation of `enumAllSerializedFields` from here
/home/runner/.nimble/pkgs/serialization-0.1.0/serialization/object_serialization.nim(151, 32) template/generic instantiation of `enumAllSerializedFieldsImpl` from here
/home/runner/work/nim-toml-serialization/nim-toml-serialization/nim-toml-serialization/toml_serialization/lexer.nim(1626, 6) Warning: 'parseValue' is not GC-safe as it calls 'parseInlineTable' [GcUnsafe2]
/home/runner/work/nim-toml-serialization/nim-toml-serialization/nim-toml-serialization/tests/test_decoder.nim(62, 7) template/generic instantiation of `suite` from here
/home/runner/work/nim-toml-serialization/nim-toml-serialization/nim-toml-serialization/tests/test_decoder.nim(64, 16) template/generic instantiation of `decode` from here
/home/runner/work/nim-toml-serialization/nim-toml-serialization/nim-toml-serialization/toml_serialization.nim(112, 15) template/generic instantiation of `readValue` from here
/home/runner/.nimble/pkgs/serialization-0.1.0/serialization.nim(29, 9) template/generic instantiation of `readValue` from here
/home/runner/work/nim-toml-serialization/nim-toml-serialization/nim-toml-serialization/toml_serialization/reader.nim(479, 8) template/generic instantiation of `decodeRecord` from here
/home/runner/work/nim-toml-serialization/nim-toml-serialization/nim-toml-serialization/toml_serialization/reader.nim(263, 27) template/generic instantiation of `arrayReadersTable` from here
/home/runner/work/nim-toml-serialization/nim-toml-serialization/nim-toml-serialization/toml_serialization/private/array_reader.nim(38, 26) template/generic instantiation of `enumAllSerializedFields` from here
/home/runner/.nimble/pkgs/serialization-0.1.0/serialization/object_serialization.nim(151, 32) template/generic instantiation of `enumAllSerializedFieldsImpl` from here
/home/runner/work/nim-toml-serialization/nim-toml-serialization/nim-toml-serialization/toml_serialization/reader.nim(415, 6) Warning: 'readValue' is not GC-safe as it calls 'parseValue' [GcUnsafe2]
/home/runner/work/nim-toml-serialization/nim-toml-serialization/nim-toml-serialization/tests/test_decoder.nim(62, 7) template/generic instantiation of `suite` from here
/home/runner/work/nim-toml-serialization/nim-toml-serialization/nim-toml-serialization/tests/test_decoder.nim(64, 16) template/generic instantiation of `decode` from here
/home/runner/work/nim-toml-serialization/nim-toml-serialization/nim-toml-serialization/toml_serialization.nim(112, 15) template/generic instantiation of `readValue` from here
/home/runner/.nimble/pkgs/serialization-0.1.0/serialization.nim(29, 9) template/generic instantiation of `readValue` from here
/home/runner/work/nim-toml-serialization/nim-toml-serialization/nim-toml-serialization/toml_serialization/reader.nim(479, 8) template/generic instantiation of `decodeRecord` from here
/home/runner/work/nim-toml-serialization/nim-toml-serialization/nim-toml-serialization/toml_serialization/reader.nim(263, 27) template/generic instantiation of `arrayReadersTable` from here
/home/runner/work/nim-toml-serialization/nim-toml-serialization/nim-toml-serialization/toml_serialization/private/array_reader.nim(38, 26) template/generic instantiation of `enumAllSerializedFields` from here
/home/runner/.nimble/pkgs/serialization-0.1.0/serialization/object_serialization.nim(151, 32) template/generic instantiation of `enumAllSerializedFieldsImpl` from here
/home/runner/work/nim-toml-serialization/nim-toml-serialization/nim-toml-serialization/toml_serialization/reader.nim(239, 6) Warning: 'readValue' is not GC-safe as it calls 'readValue' [GcUnsafe2]
/home/runner/work/nim-toml-serialization/nim-toml-serialization/nim-toml-serialization/tests/test_decoder.nim(62, 7) template/generic instantiation of `suite` from here
/home/runner/work/nim-toml-serialization/nim-toml-serialization/nim-toml-serialization/tests/test_decoder.nim(64, 16) template/generic instantiation of `decode` from here
/home/runner/work/nim-toml-serialization/nim-toml-serialization/nim-toml-serialization/toml_serialization.nim(112, 15) template/generic instantiation of `readValue` from here
/home/runner/.nimble/pkgs/serialization-0.1.0/serialization.nim(29, 9) template/generic instantiation of `readValue` from here
/home/runner/work/nim-toml-serialization/nim-toml-serialization/nim-toml-serialization/toml_serialization/reader.nim(479, 8) template/generic instantiation of `decodeRecord` from here
/home/runner/work/nim-toml-serialization/nim-toml-serialization/nim-toml-serialization/toml_serialization/reader.nim(263, 27) template/generic instantiation of `arrayReadersTable` from here
/home/runner/work/nim-toml-serialization/nim-toml-serialization/nim-toml-serialization/toml_serialization/private/array_reader.nim(38, 26) template/generic instantiation of `enumAllSerializedFields` from here
/home/runner/.nimble/pkgs/serialization-0.1.0/serialization/object_serialization.nim(151, 32) template/generic instantiation of `enumAllSerializedFieldsImpl` from here
/home/runner/work/nim-toml-serialization/nim-toml-serialization/nim-toml-serialization/toml_serialization/private/array_reader.nim(40, 12) Error: 'readArray' is not GC-safe as it calls 'readValue'

Can't reproduce on devel, how's related, and how can I fix it?

jangko commented 1 year ago

It means some feature(s) in devel have not been backported to 1.6. And it's up to nim-lang dev team to decide. And because newer Nim is geared toward gc=orc/arc, usually we need to write orc compatible code to handle var param issue. And also add additional test session with orc/arc turned on.

jangko commented 1 year ago

close in favor of #70