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 isMainModule: 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()