kaitai_struct_compiler
kaitai_struct_compiler copied to clipboard
Implement `doByteArrayNonLiteral` for Lua and C++
Fixes the test:
[info] - lua:[0 + 1, 5].as<bytes> *** FAILED ***
[info] scala.NotImplementedError: an implementation is missing
[info] at scala.Predef$.$qmark$qmark$qmark(Predef.scala:344)
[info] at io.kaitai.struct.translators.BaseTranslator.doByteArrayNonLiteral(BaseTranslator.scala:179)
[info] at io.kaitai.struct.translators.BaseTranslator.doByteArrayNonLiteral(BaseTranslator.scala:28)
[info] at io.kaitai.struct.translators.CommonArraysAndCast.doByteArray(CommonArraysAndCast.scala:85)
[info] at io.kaitai.struct.translators.CommonArraysAndCast.doCastOrArray(CommonArraysAndCast.scala:62)
[info] at io.kaitai.struct.translators.CommonArraysAndCast.doCastOrArray$(CommonArraysAndCast.scala:53)
[info] at io.kaitai.struct.translators.BaseTranslator.doCastOrArray(BaseTranslator.scala:28)
[info] at io.kaitai.struct.translators.BaseTranslator.translate(BaseTranslator.scala:147)
[info] at io.kaitai.struct.translators.AbstractTranslator.translate(AbstractTranslator.scala:25)
[info] at io.kaitai.struct.translators.AbstractTranslator.translate$(AbstractTranslator.scala:25)
[info] ...
Looking at existing implementations for other languages I suspect that the missing implementation in both cases was just an oversight when doByteArrayNonLiteral
was added.
C++ test
[info] - cpp_stl:[0 + 1, 5].as<bytes> *** FAILED ***
[info] scala.NotImplementedError: an implementation is missing
[info] at scala.Predef$.$qmark$qmark$qmark(Predef.scala:344)
[info] at io.kaitai.struct.translators.BaseTranslator.doByteArrayNonLiteral(BaseTranslator.scala:179)
[info] at io.kaitai.struct.translators.BaseTranslator.doByteArrayNonLiteral(BaseTranslator.scala:28)
[info] at io.kaitai.struct.translators.CommonArraysAndCast.doByteArray(CommonArraysAndCast.scala:85)
[info] at io.kaitai.struct.translators.CommonArraysAndCast.doCastOrArray(CommonArraysAndCast.scala:62)
[info] at io.kaitai.struct.translators.CommonArraysAndCast.doCastOrArray$(CommonArraysAndCast.scala:53)
[info] at io.kaitai.struct.translators.BaseTranslator.doCastOrArray(BaseTranslator.scala:28)
[info] at io.kaitai.struct.translators.BaseTranslator.translate(BaseTranslator.scala:147)
[info] at io.kaitai.struct.translators.AbstractTranslator.translate(AbstractTranslator.scala:25)
[info] at io.kaitai.struct.translators.AbstractTranslator.translate$(AbstractTranslator.scala:25)
[info] ...
now converted to another failure
[info] - cpp_stl:[0 + 1, 5].as<bytes> *** FAILED ***
[info] java.lang.RuntimeException: C++ literal arrays are not implemented yet
[info] at io.kaitai.struct.translators.CppTranslator.doArrayLiteral(CppTranslator.scala:114)
[info] at io.kaitai.struct.translators.CppTranslator.doByteArrayNonLiteral(CppTranslator.scala:121)
[info] at io.kaitai.struct.translators.CppTranslator.doByteArrayNonLiteral(CppTranslator.scala:15)
[info] at io.kaitai.struct.translators.CommonArraysAndCast.doByteArray(CommonArraysAndCast.scala:85)
[info] at io.kaitai.struct.translators.CommonArraysAndCast.doCastOrArray(CommonArraysAndCast.scala:62)
[info] at io.kaitai.struct.translators.CommonArraysAndCast.doCastOrArray$(CommonArraysAndCast.scala:53)
[info] at io.kaitai.struct.translators.BaseTranslator.doCastOrArray(BaseTranslator.scala:28)
[info] at io.kaitai.struct.translators.BaseTranslator.translate(BaseTranslator.scala:146)
[info] at io.kaitai.struct.translators.TranslatorSpec.$anonfun$runTest$4(TranslatorSpec.scala:789)
[info] at org.scalatest.OutcomeOf.outcomeOf(OutcomeOf.scala:85)
[info] ...
which is because of unimplemented feature (tracked in #932).
Note, that it would be worth to test targets with options, such as C++, with different set of options. Right now only default options are used.