discard """ output: '''[0.0, 0.0, 0.0] [0.0, 0.0, 0.0, 0.0] 5050 123''' """ template mathPerComponent(op: untyped): untyped = proc op*[N,T](v,u: array[N,T]): array[N,T] {.inline.} = for i in 0 ..< len(result): result[i] = `*`(v[i], u[i]) mathPerComponent(`***`) # bug #5285 when true: if true: var v1: array[3, float64] var v2: array[3, float64] echo repr(v1 *** v2) proc foo(): void = var v1: array[4, float64] var v2: array[4, float64] echo repr(v1 *** v2) foo() # bug #5383 import sequtils proc zipWithIndex[A](ts: seq[A]): seq[(int, A)] = toSeq(pairs(ts)) proc main = discard zipWithIndex(@["foo", "bar"]) discard zipWithIndex(@[1, 2]) discard zipWithIndex(@[true, false]) main() # bug #5405 proc main2() = let s = toSeq(1..100).foldL(a + b) echo s main2() # bug #5467 import macros converter int2string(x: int): string = $x template wrap(body: typed): untyped = body macro makeProc(): typed = # Make a template tree result = quote do: proc someProc* = wrap do: let x = 123 # Implicit conversion here let s: string = x echo s makeProc() someProc() # bug #12193 import macros, strutils macro gen(T: typedesc): untyped = let typeSym = getTypeImpl(T)[1] let param = genSym(nskParam, "s") let value = nnkBracketExpr.newTree(param, newIntLitNode(0)) result = newProc( name = ident"pack", params = [typeSym, newIdentDefs(param, nnkBracketExpr.newTree(ident"seq", ident"string"))], body = newStmtList(newCall(typeSym, newCall(bindSym"parseInt", value))), procType = nnkTemplateDef) echo repr result gen(int) let i = pack(@["2"])