mirror of
https://github.com/nim-lang/Nim.git
synced 2026-02-12 06:18:51 +00:00
fixes #942
This commit is contained in:
@@ -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:
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user