summary refs log tree commit diff stats
path: root/compiler/parser.nim
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2013-12-05 00:03:27 +0100
committerAraq <rumpf_a@web.de>2013-12-05 00:03:27 +0100
commit5eba93d584d5446256d05f0eef111ace5e12bac3 (patch)
tree7b638031f3e77c16ca0c27b9c83630d78846f19e /compiler/parser.nim
parent9035d15ed22de1f80486d94ec63e720a4d04cbc0 (diff)
parent2264875237cb72cf0288f2bd3d4a930c2a1acc50 (diff)
downloadNim-5eba93d584d5446256d05f0eef111ace5e12bac3.tar.gz
Merge branch 'master' into vm2
Conflicts:
	compiler/sem.nim
Diffstat (limited to 'compiler/parser.nim')
-rw-r--r--compiler/parser.nim15
1 files changed, 14 insertions, 1 deletions
diff --git a/compiler/parser.nim b/compiler/parser.nim
index e8439466a..fd51b04ec 100644
--- a/compiler/parser.nim
+++ b/compiler/parser.nim
@@ -1624,10 +1624,23 @@ proc parseObject(p: var TParser): PNode =
     return
   addSon(result, parseObjectPart(p))
 
+proc parseTypeClassParam(p: var TParser): PNode =
+  if p.tok.tokType == tkVar:
+    getTok(p)
+    result = newNode(nkVarTy)
+    result.addSon(p.parseSymbol)
+  else:
+    result = p.parseSymbol
+
 proc parseTypeClass(p: var TParser): PNode =
   result = newNodeP(nkTypeClassTy, p)
   getTok(p)
-  addSon(result, p.parseSymbol)
+  var args = newNode(nkArgList)
+  addSon(result, args)
+  addSon(args, p.parseTypeClassParam)
+  while p.tok.TokType == tkComma:
+    getTok(p)
+    addSon(args, p.parseTypeClassParam)
   if p.tok.tokType == tkCurlyDotLe and p.validInd:
     addSon(result, parsePragma(p))
   else: