This commit is contained in:
Araq
2014-03-05 08:30:05 +01:00
parent 94e444c90f
commit 4f946cb44e
3 changed files with 18 additions and 2 deletions

View File

@@ -1320,7 +1320,7 @@ proc semStmtList(c: PContext, n: PNode, flags: TExprFlags): PNode =
if n.sons[i].typ == enforceVoidContext or usesResult(n.sons[i]):
voidContext = true
n.typ = enforceVoidContext
if i == last and efWantValue in flags:
if i == last and (length == 1 or efWantValue in flags):
n.typ = n.sons[i].typ
if not isEmptyType(n.typ): n.kind = nkStmtListExpr
elif i != last or voidContext or c.inTypeClass > 0:

View File

@@ -11,3 +11,19 @@ proc q[T](x, y: T): T {.discardable.} =
p(8, 2)
q[float](0.8, 0.2)
# bug #942
template maybeMod(x: Tinteger, module:Natural):expr =
if module > 0: x mod module
else: x
proc foo(b: int):int =
var x = 1
result = x.maybeMod(b) # Works fine
proc bar(b: int):int =
result = 1
result = result.maybeMod(b) # Error: value returned by statement has to be discarded
echo foo(0)
echo bar(0)

View File

@@ -1,6 +1,6 @@
discard """
line: 10
errormsg: "value returned by statement has to be discarded"
errormsg: "value of type 'string' has to be discarded"
"""
# bug #578