diff --git a/src/classes/Array.pir b/src/classes/Array.pir index f6240b1..da59fab 100644 --- a/src/classes/Array.pir +++ b/src/classes/Array.pir @@ -1206,6 +1206,22 @@ Operator form for either repetition (when argument is an Integer), or as a short diff_done: .return (array) .end + +.sub 'infix:<<' :multi('CardinalArray',_) + .param pmc this + .param pmc that + this.'push'(that) + .return (this) +.end + +.sub 'infix:<<' :multi(_,_) + .param pmc this + .param pmc that + $P0 = new 'CardinalArray' + $P0.'push'(this) + $P0.'push'(that) + .return ($P0) +.end =item C diff --git a/t/array/mathop.t b/t/array/mathop.t index 1d56657..be48244 100644 --- a/t/array/mathop.t +++ b/t/array/mathop.t @@ -1,6 +1,6 @@ require 'Test' include Test -plan 13 +plan 14 a = [ 1, 2 ] b = [ 3, 4] @@ -40,3 +40,6 @@ a = [1,3,5,7,8] b = [1,5,8,9] c = a & b is c, [1,5,8], "Array & (union)" + +a = [1,2] << "a" << 3 << [4,5] +is a, [1,2,"a",3,[4,5]], "Array <<"