(%i1) declare(v, nonscalar)$
(%i2) expr : v + matrix([1]);
(%o2) v + matrix([1])
(%i3) expr + matrix([1]);
(%o3) v + matrix([1]) + matrix([1])
The correct output for (%o3) is v + matrix([2]).
The exact same bug exists for products:
(%i4) expr : v * matrix([1]);
(%o4) v * matrix([1])
(%i5) expr * matrix([1]);
(%o5) v * matrix([1]) * matrix([1])
Diff: