summary refs log tree commit diff stats
path: root/compiler
diff options
context:
space:
mode:
authorZahary Karadjov <zahary@gmail.com>2013-12-30 00:03:57 +0200
committerZahary Karadjov <zahary@gmail.com>2013-12-30 00:03:57 +0200
commitfa3bb8d66bfa18c3a497db2945df43703d809adc (patch)
tree40a5b2e3cc93362ea22654e47a52833b24691ebd /compiler
parent723efe7cfb6cb6ea4147cb5ba407ad3f39ac9032 (diff)
downloadNim-fa3bb8d66bfa18c3a497db2945df43703d809adc.tar.gz
restore return type inference
Diffstat (limited to 'compiler')
-rw-r--r--compiler/ast.nim3
-rw-r--r--compiler/semexprs.nim2
2 files changed, 4 insertions, 1 deletions
diff --git a/compiler/ast.nim b/compiler/ast.nim
index 6f30522a2..22b17f673 100644
--- a/compiler/ast.nim
+++ b/compiler/ast.nim
@@ -905,6 +905,9 @@ template `{}=`*(n: PNode, i: int, s: PNode): stmt =
 var emptyNode* = newNode(nkEmpty)
 # There is a single empty node that is shared! Do not overwrite it!
 
+proc isMetaType*(t: PType): bool =
+  return t.kind in tyMetaTypes or tfHasMeta in t.flags
+
 proc linkTo*(t: PType, s: PSym): PType {.discardable.} =
   t.sym = s
   s.typ = t
diff --git a/compiler/semexprs.nim b/compiler/semexprs.nim
index 4e53a5389..14f611c5c 100644
--- a/compiler/semexprs.nim
+++ b/compiler/semexprs.nim
@@ -1164,7 +1164,7 @@ proc semAsgn(c: PContext, n: PNode): PNode =
         if lhsIsResult: {efAllowDestructor} else: {})
     if lhsIsResult:
       n.typ = enforceVoidContext
-      if lhs.sym.typ.kind == tyGenericParam:
+      if lhs.sym.typ.isMetaType:
         if cmpTypes(c, lhs.typ, rhs.typ) == isGeneric:
           internalAssert c.p.resultSym != nil
           lhs.typ = rhs.typ