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
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: for i in 0 .. <p.len:
let ident = p[i] let ident = p[i]
var identDefs = newNimNode(nnkIdentDefs) var identDefs = newNimNode(nnkIdentDefs)
identDefs.add newIdentNode("i" & $i) case ident.kind
identDefs.add(ident) 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() identDefs.add newEmptyNode()
formalParams.add identDefs formalParams.add identDefs
of nnkIdent: of nnkIdent:

View file

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