This commit is contained in:
Zahary Karadjov 2014-02-20 23:33:58 +02:00
commit 1a6d05515f
2 changed files with 8 additions and 6 deletions

View file

@ -143,10 +143,11 @@ proc discardCheck(c: PContext, result: PNode) =
while n.kind in skipForDiscardable: while n.kind in skipForDiscardable:
n = n.lastSon n = n.lastSon
n.typ = nil n.typ = nil
elif c.inTypeClass > 0 and result.typ.kind == tyBool: elif c.inTypeClass > 0:
let verdict = semConstExpr(c, result) if result.typ.kind == tyBool:
if verdict.intVal == 0: let verdict = semConstExpr(c, result)
localError(result.info, "type class predicate failed") if verdict.intVal == 0:
localError(result.info, "type class predicate failed")
elif result.typ.kind != tyError and gCmd != cmdInteractive: elif result.typ.kind != tyError and gCmd != cmdInteractive:
if result.typ.kind == tyNil: if result.typ.kind == tyNil:
fixNilType(result) fixNilType(result)

View file

@ -31,7 +31,8 @@ proc intval(x: int) = discard
# check real and virtual fields # check real and virtual fields
type type
TFoo = generic T TFoo = generic T
intval T.x T.x
y(T)
intval T.y intval T.y
proc y(x: TObj): int = 10 proc y(x: TObj): int = 10