summary refs log blame commit diff stats
path: root/tests/patterns/tmatrix.nim
blob: c825a7792001eb65801fe85cdd1f3843e661278a (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13
14













                                             
                    
                   
 


                                                   








                                                   
discard """
  output: "21"
"""

import macros

type
  TMat = object
    dummy: int

proc `*`(a, b: TMat): TMat = nil
proc `+`(a, b: TMat): TMat = nil
proc `-`(a, b: TMat): TMat = nil
proc `$`(a: TMat): string = result = $a.dummy
proc mat21(): TMat =
  result.dummy = 21

macro optOps{ (`+`|`-`|`*`) ** a }(a: TMat): expr =
  echo treeRepr(a)
  result = newCall(bindSym"mat21")

#macro optPlus{ `+` * a }(a: varargs[TMat]): expr =
#  result = newIntLitNode(21)

var x, y, z: TMat

echo x + y * z - x 

#echo x + y + z