diff options
author | Araq <rumpf_a@web.de> | 2013-05-19 17:06:11 +0200 |
---|---|---|
committer | Araq <rumpf_a@web.de> | 2013-05-19 17:06:11 +0200 |
commit | 7b36d3d6ff390cc512be06a2c065108fc059eb6f (patch) | |
tree | 07d576c8ab88f9cc6070b2be8781f40711ba50b5 /compiler | |
parent | 8ae49eddc8521714926352c66deda2b5c0ac1637 (diff) | |
download | Nim-7b36d3d6ff390cc512be06a2c065108fc059eb6f.tar.gz |
made some tests green
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/semexprs.nim | 3 | ||||
-rw-r--r-- | compiler/semstmts.nim | 3 | ||||
-rw-r--r-- | compiler/semtypes.nim | 2 |
3 files changed, 5 insertions, 3 deletions
diff --git a/compiler/semexprs.nim b/compiler/semexprs.nim index ed8ebfbb9..2ffb9cd3a 100644 --- a/compiler/semexprs.nim +++ b/compiler/semexprs.nim @@ -40,7 +40,8 @@ proc semExprWithType(c: PContext, n: PNode, flags: TExprFlags = {}): PNode = # do not produce another redundant error message: #raiseRecoverableError("") result = errorNode(c, n) - if isEmptyType(result.typ): + if result.typ == nil: + # we cannot check for 'void' in macros ... LocalError(n.info, errExprXHasNoType, renderTree(result, {renderNoComments})) result.typ = errorType(c) diff --git a/compiler/semstmts.nim b/compiler/semstmts.nim index 4e19fdde7..f8ad1ff9e 100644 --- a/compiler/semstmts.nim +++ b/compiler/semstmts.nim @@ -89,7 +89,8 @@ proc semDestructorCheck(c: PContext, n: PNode, flags: TExprFlags) {.inline.} = if instantiateDestructor(c, n.typ): LocalError(n.info, errGenerated, "usage of a type with a destructor in a non destructible context") - if efDetermineType notin flags and n.typ.kind == tyTypeDesc: + if efDetermineType notin flags and n.typ.kind == tyTypeDesc and + c.p.owner.kind notin {skTemplate, skMacro}: localError(n.info, errGenerated, "value expected, but got a type") proc newDeref(n: PNode): PNode {.inline.} = diff --git a/compiler/semtypes.nim b/compiler/semtypes.nim index cb46dad76..13cf44426 100644 --- a/compiler/semtypes.nim +++ b/compiler/semtypes.nim @@ -792,7 +792,7 @@ proc semGeneric(c: PContext, n: PNode, s: PSym, prev: PType): PType = result = instGenericContainer(c, n, result) proc semTypeExpr(c: PContext, n: PNode): PType = - var n = semExprWithType(c, n) + var n = semExprWithType(c, n, {efDetermineType}) if n.kind == nkSym and n.sym.kind == skType: result = n.sym.typ else: |