groostav
06/12/2016, 7:09 AMval suggested = availableVars.map { it.canonicalName }.minBy { getLevenshteinDistance(it, desiredName) }
val footer = if(suggested != null) " (did you mean '$suggested'?)" else ""
reportSemanticError("no such $mode variable '$desiredName'$footer")
becomes
val template = ST("no such $mode variable '$desiredName'<if(suggested)> (did you mean '<suggested>')<endif>").apply{
addSymbol("suggested", availableVars.map { it.canonicalName }.minBy { getLevenshteinDistance(it, desiredName) })
}
under string template which could be something like
val suggested = availableVars.map { it.canonicalName }.minBy { getLevenshteinDistance(it, desiredName) }
reportSemanticError("no such $mode variable '$desiredName'${if(suggested != null)} (did you mean $suggested?)${endif}")
if kotlin was willing to tolerate endif
, which is anathama to many C-like languages