fixes #4227
This commit is contained in:
parent
6ff66bfd51
commit
6d76df8454
5 changed files with 32 additions and 7 deletions
24
tests/trmacros/tstatic_t_bug.nim
Normal file
24
tests/trmacros/tstatic_t_bug.nim
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
discard """
|
||||
output: "optimized"
|
||||
"""
|
||||
# bug #4227
|
||||
type Vector64[N: static[int]] = array[N, int]
|
||||
|
||||
proc `*`*[N: static[int]](a: Vector64[N]; b: float64): Vector64[N] =
|
||||
result = a
|
||||
|
||||
proc `+=`*[N: static[int]](a: var Vector64[N]; b: Vector64[N]) =
|
||||
echo "regular"
|
||||
|
||||
proc linearCombinationMut[N: static[int]](a: float64, v: var Vector64[N], w: Vector64[N]) {. inline .} =
|
||||
echo "optimized"
|
||||
|
||||
template rewriteLinearCombinationMut*{v += `*`(w, a)}(a: float64, v: var Vector64, w: Vector64): auto =
|
||||
linearCombinationMut(a, v, w)
|
||||
|
||||
proc main() =
|
||||
const scaleVal = 9.0
|
||||
var a, b: Vector64[7]
|
||||
a += b * scaleval
|
||||
|
||||
main()
|
||||
Loading…
Add table
Add a link
Reference in a new issue