Skip to content

Commit

Permalink
Construct: implemented default for switching types
Browse files Browse the repository at this point in the history
  • Loading branch information
GreyCat committed Mar 28, 2018
1 parent d800654 commit dcf2fd2
Showing 1 changed file with 11 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -193,10 +193,17 @@ class ConstructClassCompiler(classSpecs: ClassSpecs, topClass: ClassSpec) extend
}

def attrSwitchType(st: SwitchType): String = {
s"Switch(${translator.translate(st.on)}, {" +
st.cases.map { case (caseExpr, caseType) =>
s"${translator.translate(caseExpr)}: ${typeToStr(caseType)}, "
}.mkString + "})"
val cases = st.cases.filter { case (caseExpr, _) =>
caseExpr != SwitchType.ELSE_CONST
}.map { case (caseExpr, caseType) =>
s"${translator.translate(caseExpr)}: ${typeToStr(caseType)}, "
}

val defaultSuffix = st.cases.get(SwitchType.ELSE_CONST).map((t) =>
s", default=${typeToStr(t)}"
).getOrElse("")

s"Switch(${translator.translate(st.on)}, {${cases.mkString}}$defaultSuffix)"
}

def signToStr(signed: Boolean) = if (signed) "s" else "u"
Expand Down

0 comments on commit dcf2fd2

Please sign in to comment.