mirror of
https://github.com/nim-lang/Nim.git
synced 2026-06-06 11:54:11 +00:00
@@ -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()
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user