Skip to content

Commit 032007a

Browse files
committed
Go: introduce defaultTypeValue to translate type to the default value of type
It will be used in KST to check that we return default values when error is expected
1 parent 396d769 commit 032007a

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

shared/src/main/scala/io/kaitai/struct/languages/GoCompiler.scala

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -485,12 +485,7 @@ class GoCompiler(typeProvider: ClassTypeProvider, config: RuntimeConfig)
485485
override def instanceHeader(className: List[String], instName: InstanceIdentifier, dataType: DataType, isNullable: Boolean): Unit = {
486486
out.puts(s"func (this *${types2class(className)}) ${publicMemberName(instName)}() (v ${kaitaiType2NativeType(dataType)}, err error) {")
487487
out.inc
488-
translator.returnRes = Some(dataType match {
489-
case _: NumericType => "0"
490-
case _: BooleanType => "false"
491-
case _: StrType => "\"\""
492-
case _ => "nil"
493-
})
488+
translator.returnRes = Some(defaultTypeValue(dataType))
494489
}
495490

496491
override def instanceCalculate(instName: Identifier, dataType: DataType, value: Ast.expr): Unit = {
@@ -692,6 +687,13 @@ object GoCompiler extends LanguageCompilerStatic
692687
def enumToStr(typeName: List[String], enumName: String): String =
693688
types2class(typeName) + "__" + type2class(enumName)
694689

690+
def defaultTypeValue(dataType: DataType): String = dataType match {
691+
case _: NumericType => "0"
692+
case _: BooleanType => "false"
693+
case _: StrType => "\"\""
694+
case _ => "nil"
695+
}
696+
695697
override def kstreamName: String = "kaitai.Stream"
696698
override def kstructName: String = "kaitai.Struct"
697699
override def ksErrorName(err: KSError): String = err match {

0 commit comments

Comments
 (0)