@@ -4,8 +4,8 @@ import _root_.io.kaitai.struct.datatype.{DataType, EndOfStreamError, KSError}
4
4
import _root_ .io .kaitai .struct .exprlang .Ast
5
5
import _root_ .io .kaitai .struct .languages .GoCompiler
6
6
import _root_ .io .kaitai .struct .testtranslator .{Main , TestAssert , TestEquals , TestSpec }
7
- import _root_ .io .kaitai .struct .translators .GoTranslator
8
- import _root_ .io .kaitai .struct .{ClassTypeProvider , RuntimeConfig , StringLanguageOutputWriter , Utils }
7
+ import _root_ .io .kaitai .struct .translators .{ GoTranslator , TypeProvider }
8
+ import _root_ .io .kaitai .struct .{ClassTypeProvider , ImportList , RuntimeConfig , StringLanguageOutputWriter , Utils }
9
9
10
10
class GoSG (spec : TestSpec , provider : ClassTypeProvider ) extends BaseGenerator (spec) {
11
11
/**
@@ -14,15 +14,32 @@ class GoSG(spec: TestSpec, provider: ClassTypeProvider) extends BaseGenerator(sp
14
14
*/
15
15
class GoOutputWriter (indentStr : String ) extends StringLanguageOutputWriter (indentStr) {
16
16
override def puts (s : String ): Unit = {
17
- val mangled = s.replace(REPLACER , " r." ).replaceAll(" return err$" , " t.Fatal(err)" )
18
- super .puts(mangled)
17
+ super .puts(s.replace(REPLACER , " r." ))
18
+ }
19
+ }
20
+
21
+ /**
22
+ * Special wrapper around translator that catches all attempts to write error
23
+ * check and turns it into assertion.
24
+ */
25
+ class GoTestTranslator (
26
+ out : StringLanguageOutputWriter ,
27
+ provider : TypeProvider ,
28
+ importList : ImportList ,
29
+ ) extends GoTranslator (out, provider, importList) {
30
+ override def outAddErrCheck (): Unit = {
31
+ out.puts(" if err != nil {" )
32
+ out.inc
33
+ out.puts(" t.Fatal(err)" )
34
+ out.dec
35
+ out.puts(" }" )
19
36
}
20
37
}
21
38
22
39
override val out = new GoOutputWriter (indentStr)
23
40
val compiler = new GoCompiler (provider, RuntimeConfig ())
24
41
val className = GoCompiler .types2class(List (spec.id))
25
- val translator = new GoTranslator (out, provider, importList)
42
+ val translator = new GoTestTranslator (out, provider, importList)
26
43
27
44
override def fileName (name : String ): String = s " ${name}_test.go "
28
45
0 commit comments