Param name and type combos now work in type sig. sugar.

This commit is contained in:
Dominik Picheta
2014-04-20 22:08:03 +01:00
parent 57cc8237f7
commit dad99376a5
2 changed files with 13 additions and 6 deletions

View File

@@ -26,8 +26,15 @@ proc createProcType(p, b: PNimrodNode): PNimrodNode {.compileTime.} =
for i in 0 .. <p.len:
let ident = p[i]
var identDefs = newNimNode(nnkIdentDefs)
identDefs.add newIdentNode("i" & $i)
identDefs.add(ident)
case ident.kind
of nnkExprColonExpr:
identDefs.add ident[0]
identDefs.add ident[1]
of nnkIdent:
identDefs.add newIdentNode("i" & $i)
identDefs.add(ident)
else:
error("Incorrect type list in proc type declaration.")
identDefs.add newEmptyNode()
formalParams.add identDefs
of nnkIdent:

View File

@@ -5,6 +5,7 @@ discard """
3
3
noReturn
6
'''
"""
@@ -36,8 +37,7 @@ echo doWithOneAndTwo((x, y) => x + y)
noReturn(() -> void => echo("noReturn"))
when false:
proc pass2(f: (int, int) -> int): (int) -> int =
(x: int) -> int => f(2, x)
proc pass2(f: (int, int) -> int): (int) -> int =
(x: int) -> int => f(2, x)
#echo pass2((x, y) => x + y)
echo pass2((x, y) => x + y)(4)