@@ -51,7 +51,17 @@ class NimTranslator(provider: TypeProvider, importList: ImportList) extends Base
51
51
override def arraySubscript (container : expr, idx : expr): String =
52
52
s " ${translate(container, METHOD_PRECEDENCE )}[ ${translate(idx)}] "
53
53
54
- override def strConcat (left : expr, right : expr, extPrec : Int ) = " ($" + s " ${translate(left, METHOD_PRECEDENCE )} & " + " $" + s " ${translate(right, METHOD_PRECEDENCE )}) "
54
+ override def strConcat (left : expr, right : expr, extPrec : Int ): String = {
55
+ val thisPrec = OPERATOR_PRECEDENCE (Ast .operator.Add )
56
+ // $ is a special method which converts everything to a string, so use METHOD_PRECEDENCE
57
+ val leftStr = " $" + translate(left, METHOD_PRECEDENCE )
58
+ val rightStr = " $" + translate(right, METHOD_PRECEDENCE )
59
+ if (thisPrec <= extPrec) {
60
+ s " ( $leftStr & $rightStr) "
61
+ } else {
62
+ s " $leftStr & $rightStr"
63
+ }
64
+ }
55
65
56
66
// Members declared in io.kaitai.struct.translators.CommonMethods
57
67
@@ -86,7 +96,7 @@ class NimTranslator(provider: TypeProvider, importList: ImportList) extends Base
86
96
importList.add(" sequtils" )
87
97
s " ${translate(value, METHOD_PRECEDENCE )}.mapIt(it. ${ksToNim(at.elType)}) "
88
98
}
89
- case _ => s " ( ${ksToNim(typeName)}( ${translate(value)}) )"
99
+ case _ => s " ${ksToNim(typeName)}( ${translate(value)}) "
90
100
}
91
101
override def doIntLiteral (n : BigInt ): String = {
92
102
if (n <= - 2147483649L ) { // -9223372036854775808..-2147483649
0 commit comments