summary refs log tree commit diff stats
path: root/compiler
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2013-05-19 17:06:11 +0200
committerAraq <rumpf_a@web.de>2013-05-19 17:06:11 +0200
commit7b36d3d6ff390cc512be06a2c065108fc059eb6f (patch)
tree07d576c8ab88f9cc6070b2be8781f40711ba50b5 /compiler
parent8ae49eddc8521714926352c66deda2b5c0ac1637 (diff)
downloadNim-7b36d3d6ff390cc512be06a2c065108fc059eb6f.tar.gz
made some tests green
Diffstat (limited to 'compiler')
-rw-r--r--compiler/semexprs.nim3
-rw-r--r--compiler/semstmts.nim3
-rw-r--r--compiler/semtypes.nim2
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: