This commit is contained in:
Zahary Karadjov
2018-05-26 20:46:22 +03:00
parent 09283bb939
commit 1c478db375
4 changed files with 34 additions and 8 deletions

View File

@@ -69,22 +69,22 @@ proc debug*(n: PNode) {.deprecated.}
template mdbg*: bool {.dirty.} =
when compiles(c.module):
c.module.fileIdx.int32 == gProjectMainIdx
c.module.fileIdx.int32 == c.config.projectMainIdx
elif compiles(c.c.module):
c.c.module.fileIdx.int32 == gProjectMainIdx
c.c.module.fileIdx.int32 == c.c.config.projectMainIdx
elif compiles(m.c.module):
m.c.module.fileIdx.int32 == gProjectMainIdx
m.c.module.fileIdx.int32 == m.c.config.projectMainIdx
elif compiles(cl.c.module):
cl.c.module.fileIdx.int32 == gProjectMainIdx
cl.c.module.fileIdx.int32 == cl.c.config.projectMainIdx
elif compiles(p):
when compiles(p.lex):
p.lex.fileIdx.int32 == gProjectMainIdx
p.lex.fileIdx.int32 == p.lex.config.projectMainIdx
else:
p.module.module.fileIdx.int32 == gProjectMainIdx
p.module.module.fileIdx.int32 == p.config.projectMainIdx
elif compiles(m.module.fileIdx):
m.module.fileIdx.int32 == gProjectMainIdx
m.module.fileIdx.int32 == m.config.projectMainIdx
elif compiles(L.fileIdx):
L.fileIdx.int32 == gProjectMainIdx
L.fileIdx.int32 == L.config.projectMainIdx
else:
error()

View File

@@ -38,6 +38,7 @@ proc changeType(c: PContext; n: PNode, newType: PType, check: bool)
proc semLambda(c: PContext, n: PNode, flags: TExprFlags): PNode
proc semTypeNode(c: PContext, n: PNode, prev: PType): PType
proc semStmt(c: PContext, n: PNode): PNode
proc semOpAux(c: PContext, n: PNode)
proc semParamList(c: PContext, n, genericParams: PNode, s: PSym)
proc addParams(c: PContext, n: PNode, kind: TSymKind)
proc maybeAddResult(c: PContext, s: PSym, n: PNode)

View File

@@ -254,6 +254,7 @@ proc resolveOverloads(c: PContext, n, orig: PNode,
var f = n.sons[0]
if f.kind == nkBracketExpr:
# fill in the bindings:
semOpAux(c, f)
initialBinding = f
f = f.sons[0]
else:

View File

@@ -11,3 +11,27 @@ template someTemplate[T](): tuple[id: int32, obj: T] =
let ret = someTemplate[SomeObj]()
# https://github.com/nim-lang/Nim/issues/7829
proc inner*[T](): int =
discard
template outer*[A](): untyped =
inner[A]()
template outer*[B](x: int): untyped =
inner[B]()
var i1 = outer[int]()
var i2 = outer[int](i1)
# https://github.com/nim-lang/Nim/issues/7883
template t1[T: int|int64](s: string): T =
var t: T
t
template t1[T: int|int64](x: int, s: string): T =
var t: T
t
var i3: int = t1[int]("xx")