This commit is contained in:
Araq 2017-12-27 21:26:37 +01:00
commit 0b0baece89
3 changed files with 25 additions and 2 deletions

View file

@ -780,6 +780,19 @@ proc buildEchoStmt(c: PContext, n: PNode): PNode =
proc semExprNoType(c: PContext, n: PNode): PNode =
result = semExpr(c, n, {efWantStmt})
# make an 'if' expression an 'if' statement again for backwards
# compatibility (.discardable was a bad idea!); bug #6980
var isStmt = false
if result.kind == nkIfExpr:
isStmt = true
for condActionPair in result:
let action = condActionPair.lastSon
if not implicitlyDiscardable(action) and not
endsInNoReturn(action):
isStmt = false
if isStmt:
result.kind = nkIfStmt
result.typ = nil
discardCheck(c, result)
proc isTypeExpr(n: PNode): bool =

View file

@ -141,3 +141,13 @@ echo(
quo do (a: int) -> bool:
a mod 3 != 0
)
# bug #6980
proc fooBool: bool {.discardable.} =
true
if true:
fooBool()
else:
raise newException(ValueError, "argh")