diff options
Diffstat (limited to 'compiler/semexprs.nim')
-rw-r--r-- | compiler/semexprs.nim | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/compiler/semexprs.nim b/compiler/semexprs.nim index 28ea50a15..a524e71da 100644 --- a/compiler/semexprs.nim +++ b/compiler/semexprs.nim @@ -751,8 +751,11 @@ proc semEcho(c: PContext, n: PNode): PNode = checkMinSonsLen(n, 1) for i in countup(1, sonsLen(n) - 1): var arg = semExprWithType(c, n.sons[i]) - n.sons[i] = semExpr(c, buildStringify(c, arg)) - + n.sons[i] = semExprWithType(c, buildStringify(c, arg)) + let t = n.sons[i].typ + if t == nil or t.skipTypes(abstractInst).kind != tyString: + LocalError(n.info, errGenerated, + "implicitly invoked '$' does not return string") let t = n.sons[0].typ if tfNoSideEffect notin t.flags: incl(c.p.owner.flags, sfSideEffect) result = n |