From 372f8645a975c3ee264928caee181e8e161dea86 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Fri, 4 Jun 2021 09:51:46 +0200 Subject: [PATCH] Add (hash)splat AST tests --- ql/test/library-tests/ast/Ast.expected | 280 ++++++++-------- ql/test/library-tests/ast/AstDesugar.expected | 172 +++++----- .../ast/operations/assignment.expected | 134 ++++---- .../ast/operations/binary.expected | 178 +++++----- .../ast/operations/operation.expected | 304 +++++++++--------- .../ast/operations/operations.rb | 1 + 6 files changed, 544 insertions(+), 525 deletions(-) diff --git a/ql/test/library-tests/ast/Ast.expected b/ql/test/library-tests/ast/Ast.expected index 1a75fcf8694..0177a776d3f 100644 --- a/ql/test/library-tests/ast/Ast.expected +++ b/ql/test/library-tests/ast/Ast.expected @@ -1617,141 +1617,159 @@ operations/operations.rb: # 27| getAnOperand/getOperand: [LocalVariableAccess] x # 28| getStmt: [DefinedExpr] defined? ... # 28| getAnOperand/getOperand: [LocalVariableAccess] foo -# 31| getStmt: [AddExpr] ... + ... -# 31| getAnOperand/getLeftOperand: [LocalVariableAccess] w -# 31| getAnOperand/getRightOperand: [IntegerLiteral] 234 -# 32| getStmt: [SubExpr] ... - ... -# 32| getAnOperand/getLeftOperand: [LocalVariableAccess] x -# 32| getAnOperand/getRightOperand: [IntegerLiteral] 17 -# 33| getStmt: [MulExpr] ... * ... -# 33| getAnOperand/getLeftOperand: [LocalVariableAccess] y -# 33| getAnOperand/getRightOperand: [IntegerLiteral] 10 -# 34| getStmt: [DivExpr] ... / ... -# 34| getAnOperand/getLeftOperand: [LocalVariableAccess] z -# 34| getAnOperand/getRightOperand: [IntegerLiteral] 2 -# 35| getStmt: [ModuloExpr] ... % ... -# 35| getAnOperand/getLeftOperand: [LocalVariableAccess] num +# 29| getStmt: [Method] foo +# 29| getStmt: [ReturnStmt] return +# 29| getValue: [ArgumentList] ..., ... +# 29| getElement: [IntegerLiteral] 1 +# 29| getElement: [SplatArgument] *... +# 29| getValue: [ArrayLiteral] [...] +# 29| getElement: [IntegerLiteral] 2 +# 29| getElement: [Pair] Pair +# 29| getKey: [SymbolLiteral] :a +# 29| getValue: [IntegerLiteral] 3 +# 29| getElement: [HashSplatArgument] **... +# 29| getValue: [HashLiteral] {...} +# 29| getElement: [Pair] Pair +# 29| getKey: [SymbolLiteral] :b +# 29| getValue: [IntegerLiteral] 4 +# 29| getElement: [Pair] Pair +# 29| getKey: [SymbolLiteral] :c +# 29| getValue: [IntegerLiteral] 5 +# 32| getStmt: [AddExpr] ... + ... +# 32| getAnOperand/getLeftOperand: [LocalVariableAccess] w +# 32| getAnOperand/getRightOperand: [IntegerLiteral] 234 +# 33| getStmt: [SubExpr] ... - ... +# 33| getAnOperand/getLeftOperand: [LocalVariableAccess] x +# 33| getAnOperand/getRightOperand: [IntegerLiteral] 17 +# 34| getStmt: [MulExpr] ... * ... +# 34| getAnOperand/getLeftOperand: [LocalVariableAccess] y +# 34| getAnOperand/getRightOperand: [IntegerLiteral] 10 +# 35| getStmt: [DivExpr] ... / ... +# 35| getAnOperand/getLeftOperand: [LocalVariableAccess] z # 35| getAnOperand/getRightOperand: [IntegerLiteral] 2 -# 36| getStmt: [ExponentExpr] ... ** ... -# 36| getAnOperand/getLeftOperand: [LocalVariableAccess] base -# 36| getAnOperand/getRightOperand: [LocalVariableAccess] power -# 39| getStmt: [LogicalAndExpr] ... && ... -# 39| getAnOperand/getLeftOperand: [LocalVariableAccess] foo -# 39| getAnOperand/getRightOperand: [LocalVariableAccess] bar -# 40| getStmt: [LogicalAndExpr] ... and ... -# 40| getAnOperand/getLeftOperand: [LocalVariableAccess] baz -# 40| getAnOperand/getRightOperand: [LocalVariableAccess] qux -# 41| getStmt: [LogicalOrExpr] ... or ... -# 41| getAnOperand/getLeftOperand: [LocalVariableAccess] a -# 41| getAnOperand/getRightOperand: [LocalVariableAccess] b -# 42| getStmt: [LogicalOrExpr] ... || ... -# 42| getAnOperand/getLeftOperand: [LocalVariableAccess] x -# 42| getAnOperand/getRightOperand: [LocalVariableAccess] y -# 45| getStmt: [LShiftExpr] ... << ... -# 45| getAnOperand/getLeftOperand: [LocalVariableAccess] x -# 45| getAnOperand/getRightOperand: [IntegerLiteral] 3 -# 46| getStmt: [RShiftExpr] ... >> ... -# 46| getAnOperand/getLeftOperand: [LocalVariableAccess] y -# 46| getAnOperand/getRightOperand: [IntegerLiteral] 16 -# 47| getStmt: [BitwiseAndExpr] ... & ... -# 47| getAnOperand/getLeftOperand: [LocalVariableAccess] foo -# 47| getAnOperand/getRightOperand: [IntegerLiteral] 0xff -# 48| getStmt: [BitwiseOrExpr] ... | ... -# 48| getAnOperand/getLeftOperand: [LocalVariableAccess] bar -# 48| getAnOperand/getRightOperand: [IntegerLiteral] 0x02 -# 49| getStmt: [BitwiseXorExpr] ... ^ ... -# 49| getAnOperand/getLeftOperand: [LocalVariableAccess] baz -# 49| getAnOperand/getRightOperand: [LocalVariableAccess] qux -# 52| getStmt: [EqExpr] ... == ... -# 52| getAnOperand/getLeftOperand: [LocalVariableAccess] x -# 52| getAnOperand/getRightOperand: [LocalVariableAccess] y -# 53| getStmt: [NEExpr] ... != ... -# 53| getAnOperand/getLeftOperand: [LocalVariableAccess] a -# 53| getAnOperand/getRightOperand: [IntegerLiteral] 123 -# 54| getStmt: [CaseEqExpr] ... === ... -# 54| getAnOperand/getLeftOperand: [LocalVariableAccess] m -# 54| getAnOperand/getRightOperand: [LocalVariableAccess] n -# 57| getStmt: [GTExpr] ... > ... -# 57| getAnOperand/getGreaterOperand/getLeftOperand: [LocalVariableAccess] x -# 57| getAnOperand/getLesserOperand/getRightOperand: [IntegerLiteral] 0 -# 58| getStmt: [GEExpr] ... >= ... -# 58| getAnOperand/getGreaterOperand/getLeftOperand: [LocalVariableAccess] y -# 58| getAnOperand/getLesserOperand/getRightOperand: [IntegerLiteral] 100 -# 59| getStmt: [LTExpr] ... < ... -# 59| getAnOperand/getLeftOperand/getLesserOperand: [LocalVariableAccess] a -# 59| getAnOperand/getGreaterOperand/getRightOperand: [LocalVariableAccess] b -# 60| getStmt: [LEExpr] ... <= ... -# 60| getAnOperand/getLeftOperand/getLesserOperand: [IntegerLiteral] 7 -# 60| getAnOperand/getGreaterOperand/getRightOperand: [LocalVariableAccess] foo -# 63| getStmt: [SpaceshipExpr] ... <=> ... -# 63| getAnOperand/getLeftOperand: [LocalVariableAccess] a -# 63| getAnOperand/getRightOperand: [LocalVariableAccess] b -# 64| getStmt: [RegexMatchExpr] ... =~ ... -# 64| getAnOperand/getLeftOperand: [LocalVariableAccess] name -# 64| getAnOperand/getRightOperand: [RegexLiteral] /foo.*/ -# 64| getComponent: [StringTextComponent] foo.* -# 65| getStmt: [NoRegexMatchExpr] ... !~ ... -# 65| getAnOperand/getLeftOperand: [LocalVariableAccess] handle -# 65| getAnOperand/getRightOperand: [RegexLiteral] /.*bar/ -# 65| getComponent: [StringTextComponent] .*bar -# 68| getStmt: [AssignAddExpr] ... += ... -# 68| getAnOperand/getLeftOperand: [LocalVariableAccess] x -# 68| getAnOperand/getRightOperand: [IntegerLiteral] 128 -# 69| getStmt: [AssignSubExpr] ... -= ... -# 69| getAnOperand/getLeftOperand: [LocalVariableAccess] y -# 69| getAnOperand/getRightOperand: [IntegerLiteral] 32 -# 70| getStmt: [AssignMulExpr] ... *= ... -# 70| getAnOperand/getLeftOperand: [LocalVariableAccess] a -# 70| getAnOperand/getRightOperand: [IntegerLiteral] 12 -# 71| getStmt: [AssignDivExpr] ... /= ... -# 71| getAnOperand/getLeftOperand: [LocalVariableAccess] b -# 71| getAnOperand/getRightOperand: [IntegerLiteral] 4 -# 72| getStmt: [AssignModuloExpr] ... %= ... -# 72| getAnOperand/getLeftOperand: [LocalVariableAccess] z -# 72| getAnOperand/getRightOperand: [IntegerLiteral] 2 -# 73| getStmt: [AssignExponentExpr] ... **= ... -# 73| getAnOperand/getLeftOperand: [LocalVariableAccess] foo -# 73| getAnOperand/getRightOperand: [LocalVariableAccess] bar -# 76| getStmt: [AssignLogicalAndExpr] ... &&= ... -# 76| getAnOperand/getLeftOperand: [LocalVariableAccess] x -# 76| getAnOperand/getRightOperand: [LocalVariableAccess] y -# 77| getStmt: [AssignLogicalOrExpr] ... ||= ... -# 77| getAnOperand/getLeftOperand: [LocalVariableAccess] a -# 77| getAnOperand/getRightOperand: [LocalVariableAccess] b -# 80| getStmt: [AssignLShiftExpr] ... <<= ... -# 80| getAnOperand/getLeftOperand: [LocalVariableAccess] x -# 80| getAnOperand/getRightOperand: [IntegerLiteral] 2 -# 81| getStmt: [AssignRShiftExpr] ... >>= ... -# 81| getAnOperand/getLeftOperand: [LocalVariableAccess] y -# 81| getAnOperand/getRightOperand: [IntegerLiteral] 3 -# 82| getStmt: [AssignBitwiseAndExpr] ... &= ... -# 82| getAnOperand/getLeftOperand: [LocalVariableAccess] foo -# 82| getAnOperand/getRightOperand: [LocalVariableAccess] mask -# 83| getStmt: [AssignBitwiseOrExpr] ... |= ... -# 83| getAnOperand/getLeftOperand: [LocalVariableAccess] bar -# 83| getAnOperand/getRightOperand: [IntegerLiteral] 0x01 -# 84| getStmt: [AssignBitwiseXorExpr] ... ^= ... -# 84| getAnOperand/getLeftOperand: [LocalVariableAccess] baz -# 84| getAnOperand/getRightOperand: [LocalVariableAccess] qux -# 86| getStmt: [ClassDeclaration] X -# 87| getStmt: [AssignExpr] ... = ... -# 87| getAnOperand/getLeftOperand: [InstanceVariableAccess] @x -# 87| getAnOperand/getRightOperand: [IntegerLiteral] 1 -# 88| getStmt: [AssignAddExpr] ... += ... +# 36| getStmt: [ModuloExpr] ... % ... +# 36| getAnOperand/getLeftOperand: [LocalVariableAccess] num +# 36| getAnOperand/getRightOperand: [IntegerLiteral] 2 +# 37| getStmt: [ExponentExpr] ... ** ... +# 37| getAnOperand/getLeftOperand: [LocalVariableAccess] base +# 37| getAnOperand/getRightOperand: [LocalVariableAccess] power +# 40| getStmt: [LogicalAndExpr] ... && ... +# 40| getAnOperand/getLeftOperand: [LocalVariableAccess] foo +# 40| getAnOperand/getRightOperand: [LocalVariableAccess] bar +# 41| getStmt: [LogicalAndExpr] ... and ... +# 41| getAnOperand/getLeftOperand: [LocalVariableAccess] baz +# 41| getAnOperand/getRightOperand: [LocalVariableAccess] qux +# 42| getStmt: [LogicalOrExpr] ... or ... +# 42| getAnOperand/getLeftOperand: [LocalVariableAccess] a +# 42| getAnOperand/getRightOperand: [LocalVariableAccess] b +# 43| getStmt: [LogicalOrExpr] ... || ... +# 43| getAnOperand/getLeftOperand: [LocalVariableAccess] x +# 43| getAnOperand/getRightOperand: [LocalVariableAccess] y +# 46| getStmt: [LShiftExpr] ... << ... +# 46| getAnOperand/getLeftOperand: [LocalVariableAccess] x +# 46| getAnOperand/getRightOperand: [IntegerLiteral] 3 +# 47| getStmt: [RShiftExpr] ... >> ... +# 47| getAnOperand/getLeftOperand: [LocalVariableAccess] y +# 47| getAnOperand/getRightOperand: [IntegerLiteral] 16 +# 48| getStmt: [BitwiseAndExpr] ... & ... +# 48| getAnOperand/getLeftOperand: [LocalVariableAccess] foo +# 48| getAnOperand/getRightOperand: [IntegerLiteral] 0xff +# 49| getStmt: [BitwiseOrExpr] ... | ... +# 49| getAnOperand/getLeftOperand: [LocalVariableAccess] bar +# 49| getAnOperand/getRightOperand: [IntegerLiteral] 0x02 +# 50| getStmt: [BitwiseXorExpr] ... ^ ... +# 50| getAnOperand/getLeftOperand: [LocalVariableAccess] baz +# 50| getAnOperand/getRightOperand: [LocalVariableAccess] qux +# 53| getStmt: [EqExpr] ... == ... +# 53| getAnOperand/getLeftOperand: [LocalVariableAccess] x +# 53| getAnOperand/getRightOperand: [LocalVariableAccess] y +# 54| getStmt: [NEExpr] ... != ... +# 54| getAnOperand/getLeftOperand: [LocalVariableAccess] a +# 54| getAnOperand/getRightOperand: [IntegerLiteral] 123 +# 55| getStmt: [CaseEqExpr] ... === ... +# 55| getAnOperand/getLeftOperand: [LocalVariableAccess] m +# 55| getAnOperand/getRightOperand: [LocalVariableAccess] n +# 58| getStmt: [GTExpr] ... > ... +# 58| getAnOperand/getGreaterOperand/getLeftOperand: [LocalVariableAccess] x +# 58| getAnOperand/getLesserOperand/getRightOperand: [IntegerLiteral] 0 +# 59| getStmt: [GEExpr] ... >= ... +# 59| getAnOperand/getGreaterOperand/getLeftOperand: [LocalVariableAccess] y +# 59| getAnOperand/getLesserOperand/getRightOperand: [IntegerLiteral] 100 +# 60| getStmt: [LTExpr] ... < ... +# 60| getAnOperand/getLeftOperand/getLesserOperand: [LocalVariableAccess] a +# 60| getAnOperand/getGreaterOperand/getRightOperand: [LocalVariableAccess] b +# 61| getStmt: [LEExpr] ... <= ... +# 61| getAnOperand/getLeftOperand/getLesserOperand: [IntegerLiteral] 7 +# 61| getAnOperand/getGreaterOperand/getRightOperand: [LocalVariableAccess] foo +# 64| getStmt: [SpaceshipExpr] ... <=> ... +# 64| getAnOperand/getLeftOperand: [LocalVariableAccess] a +# 64| getAnOperand/getRightOperand: [LocalVariableAccess] b +# 65| getStmt: [RegexMatchExpr] ... =~ ... +# 65| getAnOperand/getLeftOperand: [LocalVariableAccess] name +# 65| getAnOperand/getRightOperand: [RegexLiteral] /foo.*/ +# 65| getComponent: [StringTextComponent] foo.* +# 66| getStmt: [NoRegexMatchExpr] ... !~ ... +# 66| getAnOperand/getLeftOperand: [LocalVariableAccess] handle +# 66| getAnOperand/getRightOperand: [RegexLiteral] /.*bar/ +# 66| getComponent: [StringTextComponent] .*bar +# 69| getStmt: [AssignAddExpr] ... += ... +# 69| getAnOperand/getLeftOperand: [LocalVariableAccess] x +# 69| getAnOperand/getRightOperand: [IntegerLiteral] 128 +# 70| getStmt: [AssignSubExpr] ... -= ... +# 70| getAnOperand/getLeftOperand: [LocalVariableAccess] y +# 70| getAnOperand/getRightOperand: [IntegerLiteral] 32 +# 71| getStmt: [AssignMulExpr] ... *= ... +# 71| getAnOperand/getLeftOperand: [LocalVariableAccess] a +# 71| getAnOperand/getRightOperand: [IntegerLiteral] 12 +# 72| getStmt: [AssignDivExpr] ... /= ... +# 72| getAnOperand/getLeftOperand: [LocalVariableAccess] b +# 72| getAnOperand/getRightOperand: [IntegerLiteral] 4 +# 73| getStmt: [AssignModuloExpr] ... %= ... +# 73| getAnOperand/getLeftOperand: [LocalVariableAccess] z +# 73| getAnOperand/getRightOperand: [IntegerLiteral] 2 +# 74| getStmt: [AssignExponentExpr] ... **= ... +# 74| getAnOperand/getLeftOperand: [LocalVariableAccess] foo +# 74| getAnOperand/getRightOperand: [LocalVariableAccess] bar +# 77| getStmt: [AssignLogicalAndExpr] ... &&= ... +# 77| getAnOperand/getLeftOperand: [LocalVariableAccess] x +# 77| getAnOperand/getRightOperand: [LocalVariableAccess] y +# 78| getStmt: [AssignLogicalOrExpr] ... ||= ... +# 78| getAnOperand/getLeftOperand: [LocalVariableAccess] a +# 78| getAnOperand/getRightOperand: [LocalVariableAccess] b +# 81| getStmt: [AssignLShiftExpr] ... <<= ... +# 81| getAnOperand/getLeftOperand: [LocalVariableAccess] x +# 81| getAnOperand/getRightOperand: [IntegerLiteral] 2 +# 82| getStmt: [AssignRShiftExpr] ... >>= ... +# 82| getAnOperand/getLeftOperand: [LocalVariableAccess] y +# 82| getAnOperand/getRightOperand: [IntegerLiteral] 3 +# 83| getStmt: [AssignBitwiseAndExpr] ... &= ... +# 83| getAnOperand/getLeftOperand: [LocalVariableAccess] foo +# 83| getAnOperand/getRightOperand: [LocalVariableAccess] mask +# 84| getStmt: [AssignBitwiseOrExpr] ... |= ... +# 84| getAnOperand/getLeftOperand: [LocalVariableAccess] bar +# 84| getAnOperand/getRightOperand: [IntegerLiteral] 0x01 +# 85| getStmt: [AssignBitwiseXorExpr] ... ^= ... +# 85| getAnOperand/getLeftOperand: [LocalVariableAccess] baz +# 85| getAnOperand/getRightOperand: [LocalVariableAccess] qux +# 87| getStmt: [ClassDeclaration] X +# 88| getStmt: [AssignExpr] ... = ... # 88| getAnOperand/getLeftOperand: [InstanceVariableAccess] @x -# 88| getAnOperand/getRightOperand: [IntegerLiteral] 2 -# 90| getStmt: [AssignExpr] ... = ... -# 90| getAnOperand/getLeftOperand: [ClassVariableAccess] @@y -# 90| getAnOperand/getRightOperand: [IntegerLiteral] 3 -# 91| getStmt: [AssignDivExpr] ... /= ... +# 88| getAnOperand/getRightOperand: [IntegerLiteral] 1 +# 89| getStmt: [AssignAddExpr] ... += ... +# 89| getAnOperand/getLeftOperand: [InstanceVariableAccess] @x +# 89| getAnOperand/getRightOperand: [IntegerLiteral] 2 +# 91| getStmt: [AssignExpr] ... = ... # 91| getAnOperand/getLeftOperand: [ClassVariableAccess] @@y -# 91| getAnOperand/getRightOperand: [IntegerLiteral] 4 -# 94| getStmt: [AssignExpr] ... = ... -# 94| getAnOperand/getLeftOperand: [GlobalVariableAccess] $global_var -# 94| getAnOperand/getRightOperand: [IntegerLiteral] 5 -# 95| getStmt: [AssignMulExpr] ... *= ... +# 91| getAnOperand/getRightOperand: [IntegerLiteral] 3 +# 92| getStmt: [AssignDivExpr] ... /= ... +# 92| getAnOperand/getLeftOperand: [ClassVariableAccess] @@y +# 92| getAnOperand/getRightOperand: [IntegerLiteral] 4 +# 95| getStmt: [AssignExpr] ... = ... # 95| getAnOperand/getLeftOperand: [GlobalVariableAccess] $global_var -# 95| getAnOperand/getRightOperand: [IntegerLiteral] 6 +# 95| getAnOperand/getRightOperand: [IntegerLiteral] 5 +# 96| getStmt: [AssignMulExpr] ... *= ... +# 96| getAnOperand/getLeftOperand: [GlobalVariableAccess] $global_var +# 96| getAnOperand/getRightOperand: [IntegerLiteral] 6 params/params.rb: # 1| [Toplevel] params.rb # 4| getStmt: [Method] identifier_method_params diff --git a/ql/test/library-tests/ast/AstDesugar.expected b/ql/test/library-tests/ast/AstDesugar.expected index c7602b6aa0c..1e4f13ced59 100644 --- a/ql/test/library-tests/ast/AstDesugar.expected +++ b/ql/test/library-tests/ast/AstDesugar.expected @@ -209,99 +209,99 @@ control/loops.rb: # 63| getAnOperand/getLeftOperand: [LocalVariableAccess] x # 63| getAnOperand/getRightOperand: [IntegerLiteral] 1 operations/operations.rb: -# 68| [AssignAddExpr] ... += ... -# 68| getDesugared: [AssignExpr] ... = ... -# 68| getAnOperand/getLeftOperand: [LocalVariableAccess] x -# 68| getAnOperand/getRightOperand: [AddExpr] ... + ... -# 68| getAnOperand/getLeftOperand: [LocalVariableAccess] x -# 68| getAnOperand/getRightOperand: [IntegerLiteral] 128 -# 69| [AssignSubExpr] ... -= ... +# 69| [AssignAddExpr] ... += ... # 69| getDesugared: [AssignExpr] ... = ... -# 69| getAnOperand/getLeftOperand: [LocalVariableAccess] y -# 69| getAnOperand/getRightOperand: [SubExpr] ... - ... -# 69| getAnOperand/getLeftOperand: [LocalVariableAccess] y -# 69| getAnOperand/getRightOperand: [IntegerLiteral] 32 -# 70| [AssignMulExpr] ... *= ... +# 69| getAnOperand/getLeftOperand: [LocalVariableAccess] x +# 69| getAnOperand/getRightOperand: [AddExpr] ... + ... +# 69| getAnOperand/getLeftOperand: [LocalVariableAccess] x +# 69| getAnOperand/getRightOperand: [IntegerLiteral] 128 +# 70| [AssignSubExpr] ... -= ... # 70| getDesugared: [AssignExpr] ... = ... -# 70| getAnOperand/getLeftOperand: [LocalVariableAccess] a -# 70| getAnOperand/getRightOperand: [MulExpr] ... * ... -# 70| getAnOperand/getLeftOperand: [LocalVariableAccess] a -# 70| getAnOperand/getRightOperand: [IntegerLiteral] 12 -# 71| [AssignDivExpr] ... /= ... +# 70| getAnOperand/getLeftOperand: [LocalVariableAccess] y +# 70| getAnOperand/getRightOperand: [SubExpr] ... - ... +# 70| getAnOperand/getLeftOperand: [LocalVariableAccess] y +# 70| getAnOperand/getRightOperand: [IntegerLiteral] 32 +# 71| [AssignMulExpr] ... *= ... # 71| getDesugared: [AssignExpr] ... = ... -# 71| getAnOperand/getLeftOperand: [LocalVariableAccess] b -# 71| getAnOperand/getRightOperand: [DivExpr] ... / ... -# 71| getAnOperand/getLeftOperand: [LocalVariableAccess] b -# 71| getAnOperand/getRightOperand: [IntegerLiteral] 4 -# 72| [AssignModuloExpr] ... %= ... +# 71| getAnOperand/getLeftOperand: [LocalVariableAccess] a +# 71| getAnOperand/getRightOperand: [MulExpr] ... * ... +# 71| getAnOperand/getLeftOperand: [LocalVariableAccess] a +# 71| getAnOperand/getRightOperand: [IntegerLiteral] 12 +# 72| [AssignDivExpr] ... /= ... # 72| getDesugared: [AssignExpr] ... = ... -# 72| getAnOperand/getLeftOperand: [LocalVariableAccess] z -# 72| getAnOperand/getRightOperand: [ModuloExpr] ... % ... -# 72| getAnOperand/getLeftOperand: [LocalVariableAccess] z -# 72| getAnOperand/getRightOperand: [IntegerLiteral] 2 -# 73| [AssignExponentExpr] ... **= ... +# 72| getAnOperand/getLeftOperand: [LocalVariableAccess] b +# 72| getAnOperand/getRightOperand: [DivExpr] ... / ... +# 72| getAnOperand/getLeftOperand: [LocalVariableAccess] b +# 72| getAnOperand/getRightOperand: [IntegerLiteral] 4 +# 73| [AssignModuloExpr] ... %= ... # 73| getDesugared: [AssignExpr] ... = ... -# 73| getAnOperand/getLeftOperand: [LocalVariableAccess] foo -# 73| getAnOperand/getRightOperand: [ExponentExpr] ... ** ... -# 73| getAnOperand/getLeftOperand: [LocalVariableAccess] foo -# 73| getAnOperand/getRightOperand: [LocalVariableAccess] bar -# 76| [AssignLogicalAndExpr] ... &&= ... -# 76| getDesugared: [AssignExpr] ... = ... -# 76| getAnOperand/getLeftOperand: [LocalVariableAccess] x -# 76| getAnOperand/getRightOperand: [LogicalAndExpr] ... && ... -# 76| getAnOperand/getLeftOperand: [LocalVariableAccess] x -# 76| getAnOperand/getRightOperand: [LocalVariableAccess] y -# 77| [AssignLogicalOrExpr] ... ||= ... +# 73| getAnOperand/getLeftOperand: [LocalVariableAccess] z +# 73| getAnOperand/getRightOperand: [ModuloExpr] ... % ... +# 73| getAnOperand/getLeftOperand: [LocalVariableAccess] z +# 73| getAnOperand/getRightOperand: [IntegerLiteral] 2 +# 74| [AssignExponentExpr] ... **= ... +# 74| getDesugared: [AssignExpr] ... = ... +# 74| getAnOperand/getLeftOperand: [LocalVariableAccess] foo +# 74| getAnOperand/getRightOperand: [ExponentExpr] ... ** ... +# 74| getAnOperand/getLeftOperand: [LocalVariableAccess] foo +# 74| getAnOperand/getRightOperand: [LocalVariableAccess] bar +# 77| [AssignLogicalAndExpr] ... &&= ... # 77| getDesugared: [AssignExpr] ... = ... -# 77| getAnOperand/getLeftOperand: [LocalVariableAccess] a -# 77| getAnOperand/getRightOperand: [LogicalOrExpr] ... || ... -# 77| getAnOperand/getLeftOperand: [LocalVariableAccess] a -# 77| getAnOperand/getRightOperand: [LocalVariableAccess] b -# 80| [AssignLShiftExpr] ... <<= ... -# 80| getDesugared: [AssignExpr] ... = ... -# 80| getAnOperand/getLeftOperand: [LocalVariableAccess] x -# 80| getAnOperand/getRightOperand: [LShiftExpr] ... << ... -# 80| getAnOperand/getLeftOperand: [LocalVariableAccess] x -# 80| getAnOperand/getRightOperand: [IntegerLiteral] 2 -# 81| [AssignRShiftExpr] ... >>= ... +# 77| getAnOperand/getLeftOperand: [LocalVariableAccess] x +# 77| getAnOperand/getRightOperand: [LogicalAndExpr] ... && ... +# 77| getAnOperand/getLeftOperand: [LocalVariableAccess] x +# 77| getAnOperand/getRightOperand: [LocalVariableAccess] y +# 78| [AssignLogicalOrExpr] ... ||= ... +# 78| getDesugared: [AssignExpr] ... = ... +# 78| getAnOperand/getLeftOperand: [LocalVariableAccess] a +# 78| getAnOperand/getRightOperand: [LogicalOrExpr] ... || ... +# 78| getAnOperand/getLeftOperand: [LocalVariableAccess] a +# 78| getAnOperand/getRightOperand: [LocalVariableAccess] b +# 81| [AssignLShiftExpr] ... <<= ... # 81| getDesugared: [AssignExpr] ... = ... -# 81| getAnOperand/getLeftOperand: [LocalVariableAccess] y -# 81| getAnOperand/getRightOperand: [RShiftExpr] ... >> ... -# 81| getAnOperand/getLeftOperand: [LocalVariableAccess] y -# 81| getAnOperand/getRightOperand: [IntegerLiteral] 3 -# 82| [AssignBitwiseAndExpr] ... &= ... +# 81| getAnOperand/getLeftOperand: [LocalVariableAccess] x +# 81| getAnOperand/getRightOperand: [LShiftExpr] ... << ... +# 81| getAnOperand/getLeftOperand: [LocalVariableAccess] x +# 81| getAnOperand/getRightOperand: [IntegerLiteral] 2 +# 82| [AssignRShiftExpr] ... >>= ... # 82| getDesugared: [AssignExpr] ... = ... -# 82| getAnOperand/getLeftOperand: [LocalVariableAccess] foo -# 82| getAnOperand/getRightOperand: [BitwiseAndExpr] ... & ... -# 82| getAnOperand/getLeftOperand: [LocalVariableAccess] foo -# 82| getAnOperand/getRightOperand: [LocalVariableAccess] mask -# 83| [AssignBitwiseOrExpr] ... |= ... +# 82| getAnOperand/getLeftOperand: [LocalVariableAccess] y +# 82| getAnOperand/getRightOperand: [RShiftExpr] ... >> ... +# 82| getAnOperand/getLeftOperand: [LocalVariableAccess] y +# 82| getAnOperand/getRightOperand: [IntegerLiteral] 3 +# 83| [AssignBitwiseAndExpr] ... &= ... # 83| getDesugared: [AssignExpr] ... = ... -# 83| getAnOperand/getLeftOperand: [LocalVariableAccess] bar -# 83| getAnOperand/getRightOperand: [BitwiseOrExpr] ... | ... -# 83| getAnOperand/getLeftOperand: [LocalVariableAccess] bar -# 83| getAnOperand/getRightOperand: [IntegerLiteral] 0x01 -# 84| [AssignBitwiseXorExpr] ... ^= ... +# 83| getAnOperand/getLeftOperand: [LocalVariableAccess] foo +# 83| getAnOperand/getRightOperand: [BitwiseAndExpr] ... & ... +# 83| getAnOperand/getLeftOperand: [LocalVariableAccess] foo +# 83| getAnOperand/getRightOperand: [LocalVariableAccess] mask +# 84| [AssignBitwiseOrExpr] ... |= ... # 84| getDesugared: [AssignExpr] ... = ... -# 84| getAnOperand/getLeftOperand: [LocalVariableAccess] baz -# 84| getAnOperand/getRightOperand: [BitwiseXorExpr] ... ^ ... -# 84| getAnOperand/getLeftOperand: [LocalVariableAccess] baz -# 84| getAnOperand/getRightOperand: [LocalVariableAccess] qux -# 88| [AssignAddExpr] ... += ... -# 88| getDesugared: [AssignExpr] ... = ... -# 88| getAnOperand/getLeftOperand: [InstanceVariableAccess] @x -# 88| getAnOperand/getRightOperand: [AddExpr] ... + ... -# 88| getAnOperand/getLeftOperand: [InstanceVariableAccess] @x -# 88| getAnOperand/getRightOperand: [IntegerLiteral] 2 -# 91| [AssignDivExpr] ... /= ... -# 91| getDesugared: [AssignExpr] ... = ... -# 91| getAnOperand/getLeftOperand: [ClassVariableAccess] @@y -# 91| getAnOperand/getRightOperand: [DivExpr] ... / ... -# 91| getAnOperand/getLeftOperand: [ClassVariableAccess] @@y -# 91| getAnOperand/getRightOperand: [IntegerLiteral] 4 -# 95| [AssignMulExpr] ... *= ... -# 95| getDesugared: [AssignExpr] ... = ... -# 95| getAnOperand/getLeftOperand: [GlobalVariableAccess] $global_var -# 95| getAnOperand/getRightOperand: [MulExpr] ... * ... -# 95| getAnOperand/getLeftOperand: [GlobalVariableAccess] $global_var -# 95| getAnOperand/getRightOperand: [IntegerLiteral] 6 +# 84| getAnOperand/getLeftOperand: [LocalVariableAccess] bar +# 84| getAnOperand/getRightOperand: [BitwiseOrExpr] ... | ... +# 84| getAnOperand/getLeftOperand: [LocalVariableAccess] bar +# 84| getAnOperand/getRightOperand: [IntegerLiteral] 0x01 +# 85| [AssignBitwiseXorExpr] ... ^= ... +# 85| getDesugared: [AssignExpr] ... = ... +# 85| getAnOperand/getLeftOperand: [LocalVariableAccess] baz +# 85| getAnOperand/getRightOperand: [BitwiseXorExpr] ... ^ ... +# 85| getAnOperand/getLeftOperand: [LocalVariableAccess] baz +# 85| getAnOperand/getRightOperand: [LocalVariableAccess] qux +# 89| [AssignAddExpr] ... += ... +# 89| getDesugared: [AssignExpr] ... = ... +# 89| getAnOperand/getLeftOperand: [InstanceVariableAccess] @x +# 89| getAnOperand/getRightOperand: [AddExpr] ... + ... +# 89| getAnOperand/getLeftOperand: [InstanceVariableAccess] @x +# 89| getAnOperand/getRightOperand: [IntegerLiteral] 2 +# 92| [AssignDivExpr] ... /= ... +# 92| getDesugared: [AssignExpr] ... = ... +# 92| getAnOperand/getLeftOperand: [ClassVariableAccess] @@y +# 92| getAnOperand/getRightOperand: [DivExpr] ... / ... +# 92| getAnOperand/getLeftOperand: [ClassVariableAccess] @@y +# 92| getAnOperand/getRightOperand: [IntegerLiteral] 4 +# 96| [AssignMulExpr] ... *= ... +# 96| getDesugared: [AssignExpr] ... = ... +# 96| getAnOperand/getLeftOperand: [GlobalVariableAccess] $global_var +# 96| getAnOperand/getRightOperand: [MulExpr] ... * ... +# 96| getAnOperand/getLeftOperand: [GlobalVariableAccess] $global_var +# 96| getAnOperand/getRightOperand: [IntegerLiteral] 6 diff --git a/ql/test/library-tests/ast/operations/assignment.expected b/ql/test/library-tests/ast/operations/assignment.expected index 4110fdf52c1..7a536f183f7 100644 --- a/ql/test/library-tests/ast/operations/assignment.expected +++ b/ql/test/library-tests/ast/operations/assignment.expected @@ -17,74 +17,74 @@ assignments | operations.rb:18:1:18:5 | ... = ... | = | operations.rb:18:1:18:1 | x | operations.rb:18:5:18:5 | 0 | AssignExpr | | operations.rb:19:1:19:5 | ... = ... | = | operations.rb:19:1:19:1 | y | operations.rb:19:5:19:5 | 0 | AssignExpr | | operations.rb:20:1:20:5 | ... = ... | = | operations.rb:20:1:20:1 | z | operations.rb:20:5:20:5 | 0 | AssignExpr | -| operations.rb:68:1:68:8 | ... += ... | += | operations.rb:68:1:68:1 | x | operations.rb:68:6:68:8 | 128 | AssignAddExpr | -| operations.rb:68:1:68:8 | ... = ... | = | operations.rb:68:1:68:1 | x | operations.rb:68:3:68:4 | ... + ... | AssignExpr | -| operations.rb:69:1:69:7 | ... -= ... | -= | operations.rb:69:1:69:1 | y | operations.rb:69:6:69:7 | 32 | AssignSubExpr | -| operations.rb:69:1:69:7 | ... = ... | = | operations.rb:69:1:69:1 | y | operations.rb:69:3:69:4 | ... - ... | AssignExpr | -| operations.rb:70:1:70:7 | ... *= ... | *= | operations.rb:70:1:70:1 | a | operations.rb:70:6:70:7 | 12 | AssignMulExpr | -| operations.rb:70:1:70:7 | ... = ... | = | operations.rb:70:1:70:1 | a | operations.rb:70:3:70:4 | ... * ... | AssignExpr | -| operations.rb:71:1:71:6 | ... /= ... | /= | operations.rb:71:1:71:1 | b | operations.rb:71:6:71:6 | 4 | AssignDivExpr | -| operations.rb:71:1:71:6 | ... = ... | = | operations.rb:71:1:71:1 | b | operations.rb:71:3:71:4 | ... / ... | AssignExpr | -| operations.rb:72:1:72:6 | ... %= ... | %= | operations.rb:72:1:72:1 | z | operations.rb:72:6:72:6 | 2 | AssignModuloExpr | -| operations.rb:72:1:72:6 | ... = ... | = | operations.rb:72:1:72:1 | z | operations.rb:72:3:72:4 | ... % ... | AssignExpr | -| operations.rb:73:1:73:11 | ... **= ... | **= | operations.rb:73:1:73:3 | foo | operations.rb:73:9:73:11 | bar | AssignExponentExpr | -| operations.rb:73:1:73:11 | ... = ... | = | operations.rb:73:1:73:3 | foo | operations.rb:73:5:73:7 | ... ** ... | AssignExpr | -| operations.rb:76:2:76:8 | ... &&= ... | &&= | operations.rb:76:2:76:2 | x | operations.rb:76:8:76:8 | y | AssignLogicalAndExpr | -| operations.rb:76:2:76:8 | ... = ... | = | operations.rb:76:2:76:2 | x | operations.rb:76:4:76:6 | ... && ... | AssignExpr | -| operations.rb:77:2:77:8 | ... = ... | = | operations.rb:77:2:77:2 | a | operations.rb:77:4:77:6 | ... \|\| ... | AssignExpr | -| operations.rb:77:2:77:8 | ... \|\|= ... | \|\|= | operations.rb:77:2:77:2 | a | operations.rb:77:8:77:8 | b | AssignLogicalOrExpr | -| operations.rb:80:2:80:8 | ... <<= ... | <<= | operations.rb:80:2:80:2 | x | operations.rb:80:8:80:8 | 2 | AssignLShiftExpr | -| operations.rb:80:2:80:8 | ... = ... | = | operations.rb:80:2:80:2 | x | operations.rb:80:4:80:6 | ... << ... | AssignExpr | -| operations.rb:81:2:81:8 | ... = ... | = | operations.rb:81:2:81:2 | y | operations.rb:81:4:81:6 | ... >> ... | AssignExpr | -| operations.rb:81:2:81:8 | ... >>= ... | >>= | operations.rb:81:2:81:2 | y | operations.rb:81:8:81:8 | 3 | AssignRShiftExpr | -| operations.rb:82:2:82:12 | ... &= ... | &= | operations.rb:82:2:82:4 | foo | operations.rb:82:9:82:12 | mask | AssignBitwiseAndExpr | -| operations.rb:82:2:82:12 | ... = ... | = | operations.rb:82:2:82:4 | foo | operations.rb:82:6:82:7 | ... & ... | AssignExpr | -| operations.rb:83:2:83:12 | ... = ... | = | operations.rb:83:2:83:4 | bar | operations.rb:83:6:83:7 | ... \| ... | AssignExpr | -| operations.rb:83:2:83:12 | ... \|= ... | \|= | operations.rb:83:2:83:4 | bar | operations.rb:83:9:83:12 | 0x01 | AssignBitwiseOrExpr | -| operations.rb:84:2:84:11 | ... = ... | = | operations.rb:84:2:84:4 | baz | operations.rb:84:6:84:7 | ... ^ ... | AssignExpr | -| operations.rb:84:2:84:11 | ... ^= ... | ^= | operations.rb:84:2:84:4 | baz | operations.rb:84:9:84:11 | qux | AssignBitwiseXorExpr | -| operations.rb:87:3:87:8 | ... = ... | = | operations.rb:87:3:87:4 | @x | operations.rb:87:8:87:8 | 1 | AssignExpr | -| operations.rb:88:3:88:9 | ... += ... | += | operations.rb:88:3:88:4 | @x | operations.rb:88:9:88:9 | 2 | AssignAddExpr | -| operations.rb:88:3:88:9 | ... = ... | = | operations.rb:88:3:88:4 | @x | operations.rb:88:6:88:7 | ... + ... | AssignExpr | -| operations.rb:90:3:90:9 | ... = ... | = | operations.rb:90:3:90:5 | @@y | operations.rb:90:9:90:9 | 3 | AssignExpr | -| operations.rb:91:3:91:10 | ... /= ... | /= | operations.rb:91:3:91:5 | @@y | operations.rb:91:10:91:10 | 4 | AssignDivExpr | -| operations.rb:91:3:91:10 | ... = ... | = | operations.rb:91:3:91:5 | @@y | operations.rb:91:7:91:8 | ... / ... | AssignExpr | -| operations.rb:94:1:94:15 | ... = ... | = | operations.rb:94:1:94:11 | $global_var | operations.rb:94:15:94:15 | 5 | AssignExpr | -| operations.rb:95:1:95:16 | ... *= ... | *= | operations.rb:95:1:95:11 | $global_var | operations.rb:95:16:95:16 | 6 | AssignMulExpr | -| operations.rb:95:1:95:16 | ... = ... | = | operations.rb:95:1:95:11 | $global_var | operations.rb:95:13:95:14 | ... * ... | AssignExpr | +| operations.rb:69:1:69:8 | ... += ... | += | operations.rb:69:1:69:1 | x | operations.rb:69:6:69:8 | 128 | AssignAddExpr | +| operations.rb:69:1:69:8 | ... = ... | = | operations.rb:69:1:69:1 | x | operations.rb:69:3:69:4 | ... + ... | AssignExpr | +| operations.rb:70:1:70:7 | ... -= ... | -= | operations.rb:70:1:70:1 | y | operations.rb:70:6:70:7 | 32 | AssignSubExpr | +| operations.rb:70:1:70:7 | ... = ... | = | operations.rb:70:1:70:1 | y | operations.rb:70:3:70:4 | ... - ... | AssignExpr | +| operations.rb:71:1:71:7 | ... *= ... | *= | operations.rb:71:1:71:1 | a | operations.rb:71:6:71:7 | 12 | AssignMulExpr | +| operations.rb:71:1:71:7 | ... = ... | = | operations.rb:71:1:71:1 | a | operations.rb:71:3:71:4 | ... * ... | AssignExpr | +| operations.rb:72:1:72:6 | ... /= ... | /= | operations.rb:72:1:72:1 | b | operations.rb:72:6:72:6 | 4 | AssignDivExpr | +| operations.rb:72:1:72:6 | ... = ... | = | operations.rb:72:1:72:1 | b | operations.rb:72:3:72:4 | ... / ... | AssignExpr | +| operations.rb:73:1:73:6 | ... %= ... | %= | operations.rb:73:1:73:1 | z | operations.rb:73:6:73:6 | 2 | AssignModuloExpr | +| operations.rb:73:1:73:6 | ... = ... | = | operations.rb:73:1:73:1 | z | operations.rb:73:3:73:4 | ... % ... | AssignExpr | +| operations.rb:74:1:74:11 | ... **= ... | **= | operations.rb:74:1:74:3 | foo | operations.rb:74:9:74:11 | bar | AssignExponentExpr | +| operations.rb:74:1:74:11 | ... = ... | = | operations.rb:74:1:74:3 | foo | operations.rb:74:5:74:7 | ... ** ... | AssignExpr | +| operations.rb:77:2:77:8 | ... &&= ... | &&= | operations.rb:77:2:77:2 | x | operations.rb:77:8:77:8 | y | AssignLogicalAndExpr | +| operations.rb:77:2:77:8 | ... = ... | = | operations.rb:77:2:77:2 | x | operations.rb:77:4:77:6 | ... && ... | AssignExpr | +| operations.rb:78:2:78:8 | ... = ... | = | operations.rb:78:2:78:2 | a | operations.rb:78:4:78:6 | ... \|\| ... | AssignExpr | +| operations.rb:78:2:78:8 | ... \|\|= ... | \|\|= | operations.rb:78:2:78:2 | a | operations.rb:78:8:78:8 | b | AssignLogicalOrExpr | +| operations.rb:81:2:81:8 | ... <<= ... | <<= | operations.rb:81:2:81:2 | x | operations.rb:81:8:81:8 | 2 | AssignLShiftExpr | +| operations.rb:81:2:81:8 | ... = ... | = | operations.rb:81:2:81:2 | x | operations.rb:81:4:81:6 | ... << ... | AssignExpr | +| operations.rb:82:2:82:8 | ... = ... | = | operations.rb:82:2:82:2 | y | operations.rb:82:4:82:6 | ... >> ... | AssignExpr | +| operations.rb:82:2:82:8 | ... >>= ... | >>= | operations.rb:82:2:82:2 | y | operations.rb:82:8:82:8 | 3 | AssignRShiftExpr | +| operations.rb:83:2:83:12 | ... &= ... | &= | operations.rb:83:2:83:4 | foo | operations.rb:83:9:83:12 | mask | AssignBitwiseAndExpr | +| operations.rb:83:2:83:12 | ... = ... | = | operations.rb:83:2:83:4 | foo | operations.rb:83:6:83:7 | ... & ... | AssignExpr | +| operations.rb:84:2:84:12 | ... = ... | = | operations.rb:84:2:84:4 | bar | operations.rb:84:6:84:7 | ... \| ... | AssignExpr | +| operations.rb:84:2:84:12 | ... \|= ... | \|= | operations.rb:84:2:84:4 | bar | operations.rb:84:9:84:12 | 0x01 | AssignBitwiseOrExpr | +| operations.rb:85:2:85:11 | ... = ... | = | operations.rb:85:2:85:4 | baz | operations.rb:85:6:85:7 | ... ^ ... | AssignExpr | +| operations.rb:85:2:85:11 | ... ^= ... | ^= | operations.rb:85:2:85:4 | baz | operations.rb:85:9:85:11 | qux | AssignBitwiseXorExpr | +| operations.rb:88:3:88:8 | ... = ... | = | operations.rb:88:3:88:4 | @x | operations.rb:88:8:88:8 | 1 | AssignExpr | +| operations.rb:89:3:89:9 | ... += ... | += | operations.rb:89:3:89:4 | @x | operations.rb:89:9:89:9 | 2 | AssignAddExpr | +| operations.rb:89:3:89:9 | ... = ... | = | operations.rb:89:3:89:4 | @x | operations.rb:89:6:89:7 | ... + ... | AssignExpr | +| operations.rb:91:3:91:9 | ... = ... | = | operations.rb:91:3:91:5 | @@y | operations.rb:91:9:91:9 | 3 | AssignExpr | +| operations.rb:92:3:92:10 | ... /= ... | /= | operations.rb:92:3:92:5 | @@y | operations.rb:92:10:92:10 | 4 | AssignDivExpr | +| operations.rb:92:3:92:10 | ... = ... | = | operations.rb:92:3:92:5 | @@y | operations.rb:92:7:92:8 | ... / ... | AssignExpr | +| operations.rb:95:1:95:15 | ... = ... | = | operations.rb:95:1:95:11 | $global_var | operations.rb:95:15:95:15 | 5 | AssignExpr | +| operations.rb:96:1:96:16 | ... *= ... | *= | operations.rb:96:1:96:11 | $global_var | operations.rb:96:16:96:16 | 6 | AssignMulExpr | +| operations.rb:96:1:96:16 | ... = ... | = | operations.rb:96:1:96:11 | $global_var | operations.rb:96:13:96:14 | ... * ... | AssignExpr | assignOperations -| operations.rb:68:1:68:8 | ... += ... | += | operations.rb:68:1:68:1 | x | operations.rb:68:6:68:8 | 128 | AssignAddExpr | -| operations.rb:69:1:69:7 | ... -= ... | -= | operations.rb:69:1:69:1 | y | operations.rb:69:6:69:7 | 32 | AssignSubExpr | -| operations.rb:70:1:70:7 | ... *= ... | *= | operations.rb:70:1:70:1 | a | operations.rb:70:6:70:7 | 12 | AssignMulExpr | -| operations.rb:71:1:71:6 | ... /= ... | /= | operations.rb:71:1:71:1 | b | operations.rb:71:6:71:6 | 4 | AssignDivExpr | -| operations.rb:72:1:72:6 | ... %= ... | %= | operations.rb:72:1:72:1 | z | operations.rb:72:6:72:6 | 2 | AssignModuloExpr | -| operations.rb:73:1:73:11 | ... **= ... | **= | operations.rb:73:1:73:3 | foo | operations.rb:73:9:73:11 | bar | AssignExponentExpr | -| operations.rb:76:2:76:8 | ... &&= ... | &&= | operations.rb:76:2:76:2 | x | operations.rb:76:8:76:8 | y | AssignLogicalAndExpr | -| operations.rb:77:2:77:8 | ... \|\|= ... | \|\|= | operations.rb:77:2:77:2 | a | operations.rb:77:8:77:8 | b | AssignLogicalOrExpr | -| operations.rb:80:2:80:8 | ... <<= ... | <<= | operations.rb:80:2:80:2 | x | operations.rb:80:8:80:8 | 2 | AssignLShiftExpr | -| operations.rb:81:2:81:8 | ... >>= ... | >>= | operations.rb:81:2:81:2 | y | operations.rb:81:8:81:8 | 3 | AssignRShiftExpr | -| operations.rb:82:2:82:12 | ... &= ... | &= | operations.rb:82:2:82:4 | foo | operations.rb:82:9:82:12 | mask | AssignBitwiseAndExpr | -| operations.rb:83:2:83:12 | ... \|= ... | \|= | operations.rb:83:2:83:4 | bar | operations.rb:83:9:83:12 | 0x01 | AssignBitwiseOrExpr | -| operations.rb:84:2:84:11 | ... ^= ... | ^= | operations.rb:84:2:84:4 | baz | operations.rb:84:9:84:11 | qux | AssignBitwiseXorExpr | -| operations.rb:88:3:88:9 | ... += ... | += | operations.rb:88:3:88:4 | @x | operations.rb:88:9:88:9 | 2 | AssignAddExpr | -| operations.rb:91:3:91:10 | ... /= ... | /= | operations.rb:91:3:91:5 | @@y | operations.rb:91:10:91:10 | 4 | AssignDivExpr | -| operations.rb:95:1:95:16 | ... *= ... | *= | operations.rb:95:1:95:11 | $global_var | operations.rb:95:16:95:16 | 6 | AssignMulExpr | +| operations.rb:69:1:69:8 | ... += ... | += | operations.rb:69:1:69:1 | x | operations.rb:69:6:69:8 | 128 | AssignAddExpr | +| operations.rb:70:1:70:7 | ... -= ... | -= | operations.rb:70:1:70:1 | y | operations.rb:70:6:70:7 | 32 | AssignSubExpr | +| operations.rb:71:1:71:7 | ... *= ... | *= | operations.rb:71:1:71:1 | a | operations.rb:71:6:71:7 | 12 | AssignMulExpr | +| operations.rb:72:1:72:6 | ... /= ... | /= | operations.rb:72:1:72:1 | b | operations.rb:72:6:72:6 | 4 | AssignDivExpr | +| operations.rb:73:1:73:6 | ... %= ... | %= | operations.rb:73:1:73:1 | z | operations.rb:73:6:73:6 | 2 | AssignModuloExpr | +| operations.rb:74:1:74:11 | ... **= ... | **= | operations.rb:74:1:74:3 | foo | operations.rb:74:9:74:11 | bar | AssignExponentExpr | +| operations.rb:77:2:77:8 | ... &&= ... | &&= | operations.rb:77:2:77:2 | x | operations.rb:77:8:77:8 | y | AssignLogicalAndExpr | +| operations.rb:78:2:78:8 | ... \|\|= ... | \|\|= | operations.rb:78:2:78:2 | a | operations.rb:78:8:78:8 | b | AssignLogicalOrExpr | +| operations.rb:81:2:81:8 | ... <<= ... | <<= | operations.rb:81:2:81:2 | x | operations.rb:81:8:81:8 | 2 | AssignLShiftExpr | +| operations.rb:82:2:82:8 | ... >>= ... | >>= | operations.rb:82:2:82:2 | y | operations.rb:82:8:82:8 | 3 | AssignRShiftExpr | +| operations.rb:83:2:83:12 | ... &= ... | &= | operations.rb:83:2:83:4 | foo | operations.rb:83:9:83:12 | mask | AssignBitwiseAndExpr | +| operations.rb:84:2:84:12 | ... \|= ... | \|= | operations.rb:84:2:84:4 | bar | operations.rb:84:9:84:12 | 0x01 | AssignBitwiseOrExpr | +| operations.rb:85:2:85:11 | ... ^= ... | ^= | operations.rb:85:2:85:4 | baz | operations.rb:85:9:85:11 | qux | AssignBitwiseXorExpr | +| operations.rb:89:3:89:9 | ... += ... | += | operations.rb:89:3:89:4 | @x | operations.rb:89:9:89:9 | 2 | AssignAddExpr | +| operations.rb:92:3:92:10 | ... /= ... | /= | operations.rb:92:3:92:5 | @@y | operations.rb:92:10:92:10 | 4 | AssignDivExpr | +| operations.rb:96:1:96:16 | ... *= ... | *= | operations.rb:96:1:96:11 | $global_var | operations.rb:96:16:96:16 | 6 | AssignMulExpr | assignArithmeticOperations -| operations.rb:68:1:68:8 | ... += ... | += | operations.rb:68:1:68:1 | x | operations.rb:68:6:68:8 | 128 | AssignAddExpr | -| operations.rb:69:1:69:7 | ... -= ... | -= | operations.rb:69:1:69:1 | y | operations.rb:69:6:69:7 | 32 | AssignSubExpr | -| operations.rb:70:1:70:7 | ... *= ... | *= | operations.rb:70:1:70:1 | a | operations.rb:70:6:70:7 | 12 | AssignMulExpr | -| operations.rb:71:1:71:6 | ... /= ... | /= | operations.rb:71:1:71:1 | b | operations.rb:71:6:71:6 | 4 | AssignDivExpr | -| operations.rb:72:1:72:6 | ... %= ... | %= | operations.rb:72:1:72:1 | z | operations.rb:72:6:72:6 | 2 | AssignModuloExpr | -| operations.rb:73:1:73:11 | ... **= ... | **= | operations.rb:73:1:73:3 | foo | operations.rb:73:9:73:11 | bar | AssignExponentExpr | -| operations.rb:88:3:88:9 | ... += ... | += | operations.rb:88:3:88:4 | @x | operations.rb:88:9:88:9 | 2 | AssignAddExpr | -| operations.rb:91:3:91:10 | ... /= ... | /= | operations.rb:91:3:91:5 | @@y | operations.rb:91:10:91:10 | 4 | AssignDivExpr | -| operations.rb:95:1:95:16 | ... *= ... | *= | operations.rb:95:1:95:11 | $global_var | operations.rb:95:16:95:16 | 6 | AssignMulExpr | +| operations.rb:69:1:69:8 | ... += ... | += | operations.rb:69:1:69:1 | x | operations.rb:69:6:69:8 | 128 | AssignAddExpr | +| operations.rb:70:1:70:7 | ... -= ... | -= | operations.rb:70:1:70:1 | y | operations.rb:70:6:70:7 | 32 | AssignSubExpr | +| operations.rb:71:1:71:7 | ... *= ... | *= | operations.rb:71:1:71:1 | a | operations.rb:71:6:71:7 | 12 | AssignMulExpr | +| operations.rb:72:1:72:6 | ... /= ... | /= | operations.rb:72:1:72:1 | b | operations.rb:72:6:72:6 | 4 | AssignDivExpr | +| operations.rb:73:1:73:6 | ... %= ... | %= | operations.rb:73:1:73:1 | z | operations.rb:73:6:73:6 | 2 | AssignModuloExpr | +| operations.rb:74:1:74:11 | ... **= ... | **= | operations.rb:74:1:74:3 | foo | operations.rb:74:9:74:11 | bar | AssignExponentExpr | +| operations.rb:89:3:89:9 | ... += ... | += | operations.rb:89:3:89:4 | @x | operations.rb:89:9:89:9 | 2 | AssignAddExpr | +| operations.rb:92:3:92:10 | ... /= ... | /= | operations.rb:92:3:92:5 | @@y | operations.rb:92:10:92:10 | 4 | AssignDivExpr | +| operations.rb:96:1:96:16 | ... *= ... | *= | operations.rb:96:1:96:11 | $global_var | operations.rb:96:16:96:16 | 6 | AssignMulExpr | assignLogicalOperations -| operations.rb:76:2:76:8 | ... &&= ... | &&= | operations.rb:76:2:76:2 | x | operations.rb:76:8:76:8 | y | AssignLogicalAndExpr | -| operations.rb:77:2:77:8 | ... \|\|= ... | \|\|= | operations.rb:77:2:77:2 | a | operations.rb:77:8:77:8 | b | AssignLogicalOrExpr | +| operations.rb:77:2:77:8 | ... &&= ... | &&= | operations.rb:77:2:77:2 | x | operations.rb:77:8:77:8 | y | AssignLogicalAndExpr | +| operations.rb:78:2:78:8 | ... \|\|= ... | \|\|= | operations.rb:78:2:78:2 | a | operations.rb:78:8:78:8 | b | AssignLogicalOrExpr | assignBitwiseOperations -| operations.rb:80:2:80:8 | ... <<= ... | <<= | operations.rb:80:2:80:2 | x | operations.rb:80:8:80:8 | 2 | AssignLShiftExpr | -| operations.rb:81:2:81:8 | ... >>= ... | >>= | operations.rb:81:2:81:2 | y | operations.rb:81:8:81:8 | 3 | AssignRShiftExpr | -| operations.rb:82:2:82:12 | ... &= ... | &= | operations.rb:82:2:82:4 | foo | operations.rb:82:9:82:12 | mask | AssignBitwiseAndExpr | -| operations.rb:83:2:83:12 | ... \|= ... | \|= | operations.rb:83:2:83:4 | bar | operations.rb:83:9:83:12 | 0x01 | AssignBitwiseOrExpr | -| operations.rb:84:2:84:11 | ... ^= ... | ^= | operations.rb:84:2:84:4 | baz | operations.rb:84:9:84:11 | qux | AssignBitwiseXorExpr | +| operations.rb:81:2:81:8 | ... <<= ... | <<= | operations.rb:81:2:81:2 | x | operations.rb:81:8:81:8 | 2 | AssignLShiftExpr | +| operations.rb:82:2:82:8 | ... >>= ... | >>= | operations.rb:82:2:82:2 | y | operations.rb:82:8:82:8 | 3 | AssignRShiftExpr | +| operations.rb:83:2:83:12 | ... &= ... | &= | operations.rb:83:2:83:4 | foo | operations.rb:83:9:83:12 | mask | AssignBitwiseAndExpr | +| operations.rb:84:2:84:12 | ... \|= ... | \|= | operations.rb:84:2:84:4 | bar | operations.rb:84:9:84:12 | 0x01 | AssignBitwiseOrExpr | +| operations.rb:85:2:85:11 | ... ^= ... | ^= | operations.rb:85:2:85:4 | baz | operations.rb:85:9:85:11 | qux | AssignBitwiseXorExpr | diff --git a/ql/test/library-tests/ast/operations/binary.expected b/ql/test/library-tests/ast/operations/binary.expected index d6916aad7c1..6d024dafe17 100644 --- a/ql/test/library-tests/ast/operations/binary.expected +++ b/ql/test/library-tests/ast/operations/binary.expected @@ -1,99 +1,99 @@ binaryOperations -| operations.rb:31:1:31:7 | ... + ... | + | operations.rb:31:1:31:1 | w | operations.rb:31:5:31:7 | 234 | AddExpr | -| operations.rb:32:1:32:6 | ... - ... | - | operations.rb:32:1:32:1 | x | operations.rb:32:5:32:6 | 17 | SubExpr | -| operations.rb:33:1:33:6 | ... * ... | * | operations.rb:33:1:33:1 | y | operations.rb:33:5:33:6 | 10 | MulExpr | -| operations.rb:34:1:34:5 | ... / ... | / | operations.rb:34:1:34:1 | z | operations.rb:34:5:34:5 | 2 | DivExpr | -| operations.rb:35:1:35:7 | ... % ... | % | operations.rb:35:1:35:3 | num | operations.rb:35:7:35:7 | 2 | ModuloExpr | -| operations.rb:36:1:36:13 | ... ** ... | ** | operations.rb:36:1:36:4 | base | operations.rb:36:9:36:13 | power | ExponentExpr | -| operations.rb:39:1:39:10 | ... && ... | && | operations.rb:39:1:39:3 | foo | operations.rb:39:8:39:10 | bar | LogicalAndExpr | -| operations.rb:40:1:40:11 | ... and ... | and | operations.rb:40:1:40:3 | baz | operations.rb:40:9:40:11 | qux | LogicalAndExpr | -| operations.rb:41:1:41:6 | ... or ... | or | operations.rb:41:1:41:1 | a | operations.rb:41:6:41:6 | b | LogicalOrExpr | -| operations.rb:42:1:42:6 | ... \|\| ... | \|\| | operations.rb:42:1:42:1 | x | operations.rb:42:6:42:6 | y | LogicalOrExpr | -| operations.rb:45:1:45:6 | ... << ... | << | operations.rb:45:1:45:1 | x | operations.rb:45:6:45:6 | 3 | LShiftExpr | -| operations.rb:46:1:46:7 | ... >> ... | >> | operations.rb:46:1:46:1 | y | operations.rb:46:6:46:7 | 16 | RShiftExpr | -| operations.rb:47:1:47:10 | ... & ... | & | operations.rb:47:1:47:3 | foo | operations.rb:47:7:47:10 | 0xff | BitwiseAndExpr | -| operations.rb:48:1:48:10 | ... \| ... | \| | operations.rb:48:1:48:3 | bar | operations.rb:48:7:48:10 | 0x02 | BitwiseOrExpr | -| operations.rb:49:1:49:9 | ... ^ ... | ^ | operations.rb:49:1:49:3 | baz | operations.rb:49:7:49:9 | qux | BitwiseXorExpr | -| operations.rb:52:1:52:6 | ... == ... | == | operations.rb:52:1:52:1 | x | operations.rb:52:6:52:6 | y | EqExpr | -| operations.rb:53:1:53:8 | ... != ... | != | operations.rb:53:1:53:1 | a | operations.rb:53:6:53:8 | 123 | NEExpr | -| operations.rb:54:1:54:7 | ... === ... | === | operations.rb:54:1:54:1 | m | operations.rb:54:7:54:7 | n | CaseEqExpr | -| operations.rb:57:1:57:5 | ... > ... | > | operations.rb:57:1:57:1 | x | operations.rb:57:5:57:5 | 0 | GTExpr | -| operations.rb:58:1:58:8 | ... >= ... | >= | operations.rb:58:1:58:1 | y | operations.rb:58:6:58:8 | 100 | GEExpr | -| operations.rb:59:1:59:5 | ... < ... | < | operations.rb:59:1:59:1 | a | operations.rb:59:5:59:5 | b | LTExpr | -| operations.rb:60:1:60:8 | ... <= ... | <= | operations.rb:60:1:60:1 | 7 | operations.rb:60:6:60:8 | foo | LEExpr | -| operations.rb:63:1:63:7 | ... <=> ... | <=> | operations.rb:63:1:63:1 | a | operations.rb:63:7:63:7 | b | SpaceshipExpr | -| operations.rb:64:1:64:15 | ... =~ ... | =~ | operations.rb:64:1:64:4 | name | operations.rb:64:9:64:15 | /foo.*/ | RegexMatchExpr | -| operations.rb:65:1:65:17 | ... !~ ... | !~ | operations.rb:65:1:65:6 | handle | operations.rb:65:11:65:17 | /.*bar/ | NoRegexMatchExpr | -| operations.rb:68:3:68:4 | ... + ... | + | operations.rb:68:1:68:1 | x | operations.rb:68:6:68:8 | 128 | AddExpr | -| operations.rb:69:3:69:4 | ... - ... | - | operations.rb:69:1:69:1 | y | operations.rb:69:6:69:7 | 32 | SubExpr | -| operations.rb:70:3:70:4 | ... * ... | * | operations.rb:70:1:70:1 | a | operations.rb:70:6:70:7 | 12 | MulExpr | -| operations.rb:71:3:71:4 | ... / ... | / | operations.rb:71:1:71:1 | b | operations.rb:71:6:71:6 | 4 | DivExpr | -| operations.rb:72:3:72:4 | ... % ... | % | operations.rb:72:1:72:1 | z | operations.rb:72:6:72:6 | 2 | ModuloExpr | -| operations.rb:73:5:73:7 | ... ** ... | ** | operations.rb:73:1:73:3 | foo | operations.rb:73:9:73:11 | bar | ExponentExpr | -| operations.rb:76:4:76:6 | ... && ... | && | operations.rb:76:2:76:2 | x | operations.rb:76:8:76:8 | y | LogicalAndExpr | -| operations.rb:77:4:77:6 | ... \|\| ... | \|\| | operations.rb:77:2:77:2 | a | operations.rb:77:8:77:8 | b | LogicalOrExpr | -| operations.rb:80:4:80:6 | ... << ... | << | operations.rb:80:2:80:2 | x | operations.rb:80:8:80:8 | 2 | LShiftExpr | -| operations.rb:81:4:81:6 | ... >> ... | >> | operations.rb:81:2:81:2 | y | operations.rb:81:8:81:8 | 3 | RShiftExpr | -| operations.rb:82:6:82:7 | ... & ... | & | operations.rb:82:2:82:4 | foo | operations.rb:82:9:82:12 | mask | BitwiseAndExpr | -| operations.rb:83:6:83:7 | ... \| ... | \| | operations.rb:83:2:83:4 | bar | operations.rb:83:9:83:12 | 0x01 | BitwiseOrExpr | -| operations.rb:84:6:84:7 | ... ^ ... | ^ | operations.rb:84:2:84:4 | baz | operations.rb:84:9:84:11 | qux | BitwiseXorExpr | -| operations.rb:88:6:88:7 | ... + ... | + | operations.rb:88:3:88:4 | @x | operations.rb:88:9:88:9 | 2 | AddExpr | -| operations.rb:91:7:91:8 | ... / ... | / | operations.rb:91:3:91:5 | @@y | operations.rb:91:10:91:10 | 4 | DivExpr | -| operations.rb:95:13:95:14 | ... * ... | * | operations.rb:95:1:95:11 | $global_var | operations.rb:95:16:95:16 | 6 | MulExpr | +| operations.rb:32:1:32:7 | ... + ... | + | operations.rb:32:1:32:1 | w | operations.rb:32:5:32:7 | 234 | AddExpr | +| operations.rb:33:1:33:6 | ... - ... | - | operations.rb:33:1:33:1 | x | operations.rb:33:5:33:6 | 17 | SubExpr | +| operations.rb:34:1:34:6 | ... * ... | * | operations.rb:34:1:34:1 | y | operations.rb:34:5:34:6 | 10 | MulExpr | +| operations.rb:35:1:35:5 | ... / ... | / | operations.rb:35:1:35:1 | z | operations.rb:35:5:35:5 | 2 | DivExpr | +| operations.rb:36:1:36:7 | ... % ... | % | operations.rb:36:1:36:3 | num | operations.rb:36:7:36:7 | 2 | ModuloExpr | +| operations.rb:37:1:37:13 | ... ** ... | ** | operations.rb:37:1:37:4 | base | operations.rb:37:9:37:13 | power | ExponentExpr | +| operations.rb:40:1:40:10 | ... && ... | && | operations.rb:40:1:40:3 | foo | operations.rb:40:8:40:10 | bar | LogicalAndExpr | +| operations.rb:41:1:41:11 | ... and ... | and | operations.rb:41:1:41:3 | baz | operations.rb:41:9:41:11 | qux | LogicalAndExpr | +| operations.rb:42:1:42:6 | ... or ... | or | operations.rb:42:1:42:1 | a | operations.rb:42:6:42:6 | b | LogicalOrExpr | +| operations.rb:43:1:43:6 | ... \|\| ... | \|\| | operations.rb:43:1:43:1 | x | operations.rb:43:6:43:6 | y | LogicalOrExpr | +| operations.rb:46:1:46:6 | ... << ... | << | operations.rb:46:1:46:1 | x | operations.rb:46:6:46:6 | 3 | LShiftExpr | +| operations.rb:47:1:47:7 | ... >> ... | >> | operations.rb:47:1:47:1 | y | operations.rb:47:6:47:7 | 16 | RShiftExpr | +| operations.rb:48:1:48:10 | ... & ... | & | operations.rb:48:1:48:3 | foo | operations.rb:48:7:48:10 | 0xff | BitwiseAndExpr | +| operations.rb:49:1:49:10 | ... \| ... | \| | operations.rb:49:1:49:3 | bar | operations.rb:49:7:49:10 | 0x02 | BitwiseOrExpr | +| operations.rb:50:1:50:9 | ... ^ ... | ^ | operations.rb:50:1:50:3 | baz | operations.rb:50:7:50:9 | qux | BitwiseXorExpr | +| operations.rb:53:1:53:6 | ... == ... | == | operations.rb:53:1:53:1 | x | operations.rb:53:6:53:6 | y | EqExpr | +| operations.rb:54:1:54:8 | ... != ... | != | operations.rb:54:1:54:1 | a | operations.rb:54:6:54:8 | 123 | NEExpr | +| operations.rb:55:1:55:7 | ... === ... | === | operations.rb:55:1:55:1 | m | operations.rb:55:7:55:7 | n | CaseEqExpr | +| operations.rb:58:1:58:5 | ... > ... | > | operations.rb:58:1:58:1 | x | operations.rb:58:5:58:5 | 0 | GTExpr | +| operations.rb:59:1:59:8 | ... >= ... | >= | operations.rb:59:1:59:1 | y | operations.rb:59:6:59:8 | 100 | GEExpr | +| operations.rb:60:1:60:5 | ... < ... | < | operations.rb:60:1:60:1 | a | operations.rb:60:5:60:5 | b | LTExpr | +| operations.rb:61:1:61:8 | ... <= ... | <= | operations.rb:61:1:61:1 | 7 | operations.rb:61:6:61:8 | foo | LEExpr | +| operations.rb:64:1:64:7 | ... <=> ... | <=> | operations.rb:64:1:64:1 | a | operations.rb:64:7:64:7 | b | SpaceshipExpr | +| operations.rb:65:1:65:15 | ... =~ ... | =~ | operations.rb:65:1:65:4 | name | operations.rb:65:9:65:15 | /foo.*/ | RegexMatchExpr | +| operations.rb:66:1:66:17 | ... !~ ... | !~ | operations.rb:66:1:66:6 | handle | operations.rb:66:11:66:17 | /.*bar/ | NoRegexMatchExpr | +| operations.rb:69:3:69:4 | ... + ... | + | operations.rb:69:1:69:1 | x | operations.rb:69:6:69:8 | 128 | AddExpr | +| operations.rb:70:3:70:4 | ... - ... | - | operations.rb:70:1:70:1 | y | operations.rb:70:6:70:7 | 32 | SubExpr | +| operations.rb:71:3:71:4 | ... * ... | * | operations.rb:71:1:71:1 | a | operations.rb:71:6:71:7 | 12 | MulExpr | +| operations.rb:72:3:72:4 | ... / ... | / | operations.rb:72:1:72:1 | b | operations.rb:72:6:72:6 | 4 | DivExpr | +| operations.rb:73:3:73:4 | ... % ... | % | operations.rb:73:1:73:1 | z | operations.rb:73:6:73:6 | 2 | ModuloExpr | +| operations.rb:74:5:74:7 | ... ** ... | ** | operations.rb:74:1:74:3 | foo | operations.rb:74:9:74:11 | bar | ExponentExpr | +| operations.rb:77:4:77:6 | ... && ... | && | operations.rb:77:2:77:2 | x | operations.rb:77:8:77:8 | y | LogicalAndExpr | +| operations.rb:78:4:78:6 | ... \|\| ... | \|\| | operations.rb:78:2:78:2 | a | operations.rb:78:8:78:8 | b | LogicalOrExpr | +| operations.rb:81:4:81:6 | ... << ... | << | operations.rb:81:2:81:2 | x | operations.rb:81:8:81:8 | 2 | LShiftExpr | +| operations.rb:82:4:82:6 | ... >> ... | >> | operations.rb:82:2:82:2 | y | operations.rb:82:8:82:8 | 3 | RShiftExpr | +| operations.rb:83:6:83:7 | ... & ... | & | operations.rb:83:2:83:4 | foo | operations.rb:83:9:83:12 | mask | BitwiseAndExpr | +| operations.rb:84:6:84:7 | ... \| ... | \| | operations.rb:84:2:84:4 | bar | operations.rb:84:9:84:12 | 0x01 | BitwiseOrExpr | +| operations.rb:85:6:85:7 | ... ^ ... | ^ | operations.rb:85:2:85:4 | baz | operations.rb:85:9:85:11 | qux | BitwiseXorExpr | +| operations.rb:89:6:89:7 | ... + ... | + | operations.rb:89:3:89:4 | @x | operations.rb:89:9:89:9 | 2 | AddExpr | +| operations.rb:92:7:92:8 | ... / ... | / | operations.rb:92:3:92:5 | @@y | operations.rb:92:10:92:10 | 4 | DivExpr | +| operations.rb:96:13:96:14 | ... * ... | * | operations.rb:96:1:96:11 | $global_var | operations.rb:96:16:96:16 | 6 | MulExpr | binaryArithmeticOperations -| operations.rb:31:1:31:7 | ... + ... | + | operations.rb:31:1:31:1 | w | operations.rb:31:5:31:7 | 234 | AddExpr | -| operations.rb:32:1:32:6 | ... - ... | - | operations.rb:32:1:32:1 | x | operations.rb:32:5:32:6 | 17 | SubExpr | -| operations.rb:33:1:33:6 | ... * ... | * | operations.rb:33:1:33:1 | y | operations.rb:33:5:33:6 | 10 | MulExpr | -| operations.rb:34:1:34:5 | ... / ... | / | operations.rb:34:1:34:1 | z | operations.rb:34:5:34:5 | 2 | DivExpr | -| operations.rb:35:1:35:7 | ... % ... | % | operations.rb:35:1:35:3 | num | operations.rb:35:7:35:7 | 2 | ModuloExpr | -| operations.rb:36:1:36:13 | ... ** ... | ** | operations.rb:36:1:36:4 | base | operations.rb:36:9:36:13 | power | ExponentExpr | -| operations.rb:68:3:68:4 | ... + ... | + | operations.rb:68:1:68:1 | x | operations.rb:68:6:68:8 | 128 | AddExpr | -| operations.rb:69:3:69:4 | ... - ... | - | operations.rb:69:1:69:1 | y | operations.rb:69:6:69:7 | 32 | SubExpr | -| operations.rb:70:3:70:4 | ... * ... | * | operations.rb:70:1:70:1 | a | operations.rb:70:6:70:7 | 12 | MulExpr | -| operations.rb:71:3:71:4 | ... / ... | / | operations.rb:71:1:71:1 | b | operations.rb:71:6:71:6 | 4 | DivExpr | -| operations.rb:72:3:72:4 | ... % ... | % | operations.rb:72:1:72:1 | z | operations.rb:72:6:72:6 | 2 | ModuloExpr | -| operations.rb:73:5:73:7 | ... ** ... | ** | operations.rb:73:1:73:3 | foo | operations.rb:73:9:73:11 | bar | ExponentExpr | -| operations.rb:88:6:88:7 | ... + ... | + | operations.rb:88:3:88:4 | @x | operations.rb:88:9:88:9 | 2 | AddExpr | -| operations.rb:91:7:91:8 | ... / ... | / | operations.rb:91:3:91:5 | @@y | operations.rb:91:10:91:10 | 4 | DivExpr | -| operations.rb:95:13:95:14 | ... * ... | * | operations.rb:95:1:95:11 | $global_var | operations.rb:95:16:95:16 | 6 | MulExpr | +| operations.rb:32:1:32:7 | ... + ... | + | operations.rb:32:1:32:1 | w | operations.rb:32:5:32:7 | 234 | AddExpr | +| operations.rb:33:1:33:6 | ... - ... | - | operations.rb:33:1:33:1 | x | operations.rb:33:5:33:6 | 17 | SubExpr | +| operations.rb:34:1:34:6 | ... * ... | * | operations.rb:34:1:34:1 | y | operations.rb:34:5:34:6 | 10 | MulExpr | +| operations.rb:35:1:35:5 | ... / ... | / | operations.rb:35:1:35:1 | z | operations.rb:35:5:35:5 | 2 | DivExpr | +| operations.rb:36:1:36:7 | ... % ... | % | operations.rb:36:1:36:3 | num | operations.rb:36:7:36:7 | 2 | ModuloExpr | +| operations.rb:37:1:37:13 | ... ** ... | ** | operations.rb:37:1:37:4 | base | operations.rb:37:9:37:13 | power | ExponentExpr | +| operations.rb:69:3:69:4 | ... + ... | + | operations.rb:69:1:69:1 | x | operations.rb:69:6:69:8 | 128 | AddExpr | +| operations.rb:70:3:70:4 | ... - ... | - | operations.rb:70:1:70:1 | y | operations.rb:70:6:70:7 | 32 | SubExpr | +| operations.rb:71:3:71:4 | ... * ... | * | operations.rb:71:1:71:1 | a | operations.rb:71:6:71:7 | 12 | MulExpr | +| operations.rb:72:3:72:4 | ... / ... | / | operations.rb:72:1:72:1 | b | operations.rb:72:6:72:6 | 4 | DivExpr | +| operations.rb:73:3:73:4 | ... % ... | % | operations.rb:73:1:73:1 | z | operations.rb:73:6:73:6 | 2 | ModuloExpr | +| operations.rb:74:5:74:7 | ... ** ... | ** | operations.rb:74:1:74:3 | foo | operations.rb:74:9:74:11 | bar | ExponentExpr | +| operations.rb:89:6:89:7 | ... + ... | + | operations.rb:89:3:89:4 | @x | operations.rb:89:9:89:9 | 2 | AddExpr | +| operations.rb:92:7:92:8 | ... / ... | / | operations.rb:92:3:92:5 | @@y | operations.rb:92:10:92:10 | 4 | DivExpr | +| operations.rb:96:13:96:14 | ... * ... | * | operations.rb:96:1:96:11 | $global_var | operations.rb:96:16:96:16 | 6 | MulExpr | binaryLogicalOperations -| operations.rb:39:1:39:10 | ... && ... | && | operations.rb:39:1:39:3 | foo | operations.rb:39:8:39:10 | bar | LogicalAndExpr | -| operations.rb:40:1:40:11 | ... and ... | and | operations.rb:40:1:40:3 | baz | operations.rb:40:9:40:11 | qux | LogicalAndExpr | -| operations.rb:41:1:41:6 | ... or ... | or | operations.rb:41:1:41:1 | a | operations.rb:41:6:41:6 | b | LogicalOrExpr | -| operations.rb:42:1:42:6 | ... \|\| ... | \|\| | operations.rb:42:1:42:1 | x | operations.rb:42:6:42:6 | y | LogicalOrExpr | -| operations.rb:76:4:76:6 | ... && ... | && | operations.rb:76:2:76:2 | x | operations.rb:76:8:76:8 | y | LogicalAndExpr | -| operations.rb:77:4:77:6 | ... \|\| ... | \|\| | operations.rb:77:2:77:2 | a | operations.rb:77:8:77:8 | b | LogicalOrExpr | +| operations.rb:40:1:40:10 | ... && ... | && | operations.rb:40:1:40:3 | foo | operations.rb:40:8:40:10 | bar | LogicalAndExpr | +| operations.rb:41:1:41:11 | ... and ... | and | operations.rb:41:1:41:3 | baz | operations.rb:41:9:41:11 | qux | LogicalAndExpr | +| operations.rb:42:1:42:6 | ... or ... | or | operations.rb:42:1:42:1 | a | operations.rb:42:6:42:6 | b | LogicalOrExpr | +| operations.rb:43:1:43:6 | ... \|\| ... | \|\| | operations.rb:43:1:43:1 | x | operations.rb:43:6:43:6 | y | LogicalOrExpr | +| operations.rb:77:4:77:6 | ... && ... | && | operations.rb:77:2:77:2 | x | operations.rb:77:8:77:8 | y | LogicalAndExpr | +| operations.rb:78:4:78:6 | ... \|\| ... | \|\| | operations.rb:78:2:78:2 | a | operations.rb:78:8:78:8 | b | LogicalOrExpr | binaryBitwiseOperations -| operations.rb:45:1:45:6 | ... << ... | << | operations.rb:45:1:45:1 | x | operations.rb:45:6:45:6 | 3 | LShiftExpr | -| operations.rb:46:1:46:7 | ... >> ... | >> | operations.rb:46:1:46:1 | y | operations.rb:46:6:46:7 | 16 | RShiftExpr | -| operations.rb:47:1:47:10 | ... & ... | & | operations.rb:47:1:47:3 | foo | operations.rb:47:7:47:10 | 0xff | BitwiseAndExpr | -| operations.rb:48:1:48:10 | ... \| ... | \| | operations.rb:48:1:48:3 | bar | operations.rb:48:7:48:10 | 0x02 | BitwiseOrExpr | -| operations.rb:49:1:49:9 | ... ^ ... | ^ | operations.rb:49:1:49:3 | baz | operations.rb:49:7:49:9 | qux | BitwiseXorExpr | -| operations.rb:80:4:80:6 | ... << ... | << | operations.rb:80:2:80:2 | x | operations.rb:80:8:80:8 | 2 | LShiftExpr | -| operations.rb:81:4:81:6 | ... >> ... | >> | operations.rb:81:2:81:2 | y | operations.rb:81:8:81:8 | 3 | RShiftExpr | -| operations.rb:82:6:82:7 | ... & ... | & | operations.rb:82:2:82:4 | foo | operations.rb:82:9:82:12 | mask | BitwiseAndExpr | -| operations.rb:83:6:83:7 | ... \| ... | \| | operations.rb:83:2:83:4 | bar | operations.rb:83:9:83:12 | 0x01 | BitwiseOrExpr | -| operations.rb:84:6:84:7 | ... ^ ... | ^ | operations.rb:84:2:84:4 | baz | operations.rb:84:9:84:11 | qux | BitwiseXorExpr | +| operations.rb:46:1:46:6 | ... << ... | << | operations.rb:46:1:46:1 | x | operations.rb:46:6:46:6 | 3 | LShiftExpr | +| operations.rb:47:1:47:7 | ... >> ... | >> | operations.rb:47:1:47:1 | y | operations.rb:47:6:47:7 | 16 | RShiftExpr | +| operations.rb:48:1:48:10 | ... & ... | & | operations.rb:48:1:48:3 | foo | operations.rb:48:7:48:10 | 0xff | BitwiseAndExpr | +| operations.rb:49:1:49:10 | ... \| ... | \| | operations.rb:49:1:49:3 | bar | operations.rb:49:7:49:10 | 0x02 | BitwiseOrExpr | +| operations.rb:50:1:50:9 | ... ^ ... | ^ | operations.rb:50:1:50:3 | baz | operations.rb:50:7:50:9 | qux | BitwiseXorExpr | +| operations.rb:81:4:81:6 | ... << ... | << | operations.rb:81:2:81:2 | x | operations.rb:81:8:81:8 | 2 | LShiftExpr | +| operations.rb:82:4:82:6 | ... >> ... | >> | operations.rb:82:2:82:2 | y | operations.rb:82:8:82:8 | 3 | RShiftExpr | +| operations.rb:83:6:83:7 | ... & ... | & | operations.rb:83:2:83:4 | foo | operations.rb:83:9:83:12 | mask | BitwiseAndExpr | +| operations.rb:84:6:84:7 | ... \| ... | \| | operations.rb:84:2:84:4 | bar | operations.rb:84:9:84:12 | 0x01 | BitwiseOrExpr | +| operations.rb:85:6:85:7 | ... ^ ... | ^ | operations.rb:85:2:85:4 | baz | operations.rb:85:9:85:11 | qux | BitwiseXorExpr | comparisonOperations -| operations.rb:52:1:52:6 | ... == ... | == | operations.rb:52:1:52:1 | x | operations.rb:52:6:52:6 | y | EqExpr | -| operations.rb:53:1:53:8 | ... != ... | != | operations.rb:53:1:53:1 | a | operations.rb:53:6:53:8 | 123 | NEExpr | -| operations.rb:54:1:54:7 | ... === ... | === | operations.rb:54:1:54:1 | m | operations.rb:54:7:54:7 | n | CaseEqExpr | -| operations.rb:57:1:57:5 | ... > ... | > | operations.rb:57:1:57:1 | x | operations.rb:57:5:57:5 | 0 | GTExpr | -| operations.rb:58:1:58:8 | ... >= ... | >= | operations.rb:58:1:58:1 | y | operations.rb:58:6:58:8 | 100 | GEExpr | -| operations.rb:59:1:59:5 | ... < ... | < | operations.rb:59:1:59:1 | a | operations.rb:59:5:59:5 | b | LTExpr | -| operations.rb:60:1:60:8 | ... <= ... | <= | operations.rb:60:1:60:1 | 7 | operations.rb:60:6:60:8 | foo | LEExpr | +| operations.rb:53:1:53:6 | ... == ... | == | operations.rb:53:1:53:1 | x | operations.rb:53:6:53:6 | y | EqExpr | +| operations.rb:54:1:54:8 | ... != ... | != | operations.rb:54:1:54:1 | a | operations.rb:54:6:54:8 | 123 | NEExpr | +| operations.rb:55:1:55:7 | ... === ... | === | operations.rb:55:1:55:1 | m | operations.rb:55:7:55:7 | n | CaseEqExpr | +| operations.rb:58:1:58:5 | ... > ... | > | operations.rb:58:1:58:1 | x | operations.rb:58:5:58:5 | 0 | GTExpr | +| operations.rb:59:1:59:8 | ... >= ... | >= | operations.rb:59:1:59:1 | y | operations.rb:59:6:59:8 | 100 | GEExpr | +| operations.rb:60:1:60:5 | ... < ... | < | operations.rb:60:1:60:1 | a | operations.rb:60:5:60:5 | b | LTExpr | +| operations.rb:61:1:61:8 | ... <= ... | <= | operations.rb:61:1:61:1 | 7 | operations.rb:61:6:61:8 | foo | LEExpr | equalityOperations -| operations.rb:52:1:52:6 | ... == ... | == | operations.rb:52:1:52:1 | x | operations.rb:52:6:52:6 | y | EqExpr | -| operations.rb:53:1:53:8 | ... != ... | != | operations.rb:53:1:53:1 | a | operations.rb:53:6:53:8 | 123 | NEExpr | -| operations.rb:54:1:54:7 | ... === ... | === | operations.rb:54:1:54:1 | m | operations.rb:54:7:54:7 | n | CaseEqExpr | +| operations.rb:53:1:53:6 | ... == ... | == | operations.rb:53:1:53:1 | x | operations.rb:53:6:53:6 | y | EqExpr | +| operations.rb:54:1:54:8 | ... != ... | != | operations.rb:54:1:54:1 | a | operations.rb:54:6:54:8 | 123 | NEExpr | +| operations.rb:55:1:55:7 | ... === ... | === | operations.rb:55:1:55:1 | m | operations.rb:55:7:55:7 | n | CaseEqExpr | relationalOperations -| operations.rb:57:1:57:5 | ... > ... | > | operations.rb:57:5:57:5 | 0 | operations.rb:57:1:57:1 | x | GTExpr | -| operations.rb:58:1:58:8 | ... >= ... | >= | operations.rb:58:6:58:8 | 100 | operations.rb:58:1:58:1 | y | GEExpr | -| operations.rb:59:1:59:5 | ... < ... | < | operations.rb:59:1:59:1 | a | operations.rb:59:5:59:5 | b | LTExpr | -| operations.rb:60:1:60:8 | ... <= ... | <= | operations.rb:60:1:60:1 | 7 | operations.rb:60:6:60:8 | foo | LEExpr | +| operations.rb:58:1:58:5 | ... > ... | > | operations.rb:58:5:58:5 | 0 | operations.rb:58:1:58:1 | x | GTExpr | +| operations.rb:59:1:59:8 | ... >= ... | >= | operations.rb:59:6:59:8 | 100 | operations.rb:59:1:59:1 | y | GEExpr | +| operations.rb:60:1:60:5 | ... < ... | < | operations.rb:60:1:60:1 | a | operations.rb:60:5:60:5 | b | LTExpr | +| operations.rb:61:1:61:8 | ... <= ... | <= | operations.rb:61:1:61:1 | 7 | operations.rb:61:6:61:8 | foo | LEExpr | spaceshipExprs -| operations.rb:63:1:63:7 | ... <=> ... | <=> | operations.rb:63:1:63:1 | a | operations.rb:63:7:63:7 | b | SpaceshipExpr | +| operations.rb:64:1:64:7 | ... <=> ... | <=> | operations.rb:64:1:64:1 | a | operations.rb:64:7:64:7 | b | SpaceshipExpr | regexMatchExprs -| operations.rb:64:1:64:15 | ... =~ ... | =~ | operations.rb:64:1:64:4 | name | operations.rb:64:9:64:15 | /foo.*/ | RegexMatchExpr | +| operations.rb:65:1:65:15 | ... =~ ... | =~ | operations.rb:65:1:65:4 | name | operations.rb:65:9:65:15 | /foo.*/ | RegexMatchExpr | noRegexMatchExprs -| operations.rb:65:1:65:17 | ... !~ ... | !~ | operations.rb:65:1:65:6 | handle | operations.rb:65:11:65:17 | /.*bar/ | NoRegexMatchExpr | +| operations.rb:66:1:66:17 | ... !~ ... | !~ | operations.rb:66:1:66:6 | handle | operations.rb:66:11:66:17 | /.*bar/ | NoRegexMatchExpr | diff --git a/ql/test/library-tests/ast/operations/operation.expected b/ql/test/library-tests/ast/operations/operation.expected index b3adabbeee4..ea004eb4d50 100644 --- a/ql/test/library-tests/ast/operations/operation.expected +++ b/ql/test/library-tests/ast/operations/operation.expected @@ -40,155 +40,155 @@ | operations.rb:26:1:26:2 | - ... | - | operations.rb:26:2:26:2 | 7 | UnaryMinusExpr | | operations.rb:27:1:27:2 | ~ ... | ~ | operations.rb:27:2:27:2 | x | ComplementExpr | | operations.rb:28:1:28:12 | defined? ... | defined? | operations.rb:28:10:28:12 | foo | DefinedExpr | -| operations.rb:31:1:31:7 | ... + ... | + | operations.rb:31:1:31:1 | w | AddExpr | -| operations.rb:31:1:31:7 | ... + ... | + | operations.rb:31:5:31:7 | 234 | AddExpr | -| operations.rb:32:1:32:6 | ... - ... | - | operations.rb:32:1:32:1 | x | SubExpr | -| operations.rb:32:1:32:6 | ... - ... | - | operations.rb:32:5:32:6 | 17 | SubExpr | -| operations.rb:33:1:33:6 | ... * ... | * | operations.rb:33:1:33:1 | y | MulExpr | -| operations.rb:33:1:33:6 | ... * ... | * | operations.rb:33:5:33:6 | 10 | MulExpr | -| operations.rb:34:1:34:5 | ... / ... | / | operations.rb:34:1:34:1 | z | DivExpr | -| operations.rb:34:1:34:5 | ... / ... | / | operations.rb:34:5:34:5 | 2 | DivExpr | -| operations.rb:35:1:35:7 | ... % ... | % | operations.rb:35:1:35:3 | num | ModuloExpr | -| operations.rb:35:1:35:7 | ... % ... | % | operations.rb:35:7:35:7 | 2 | ModuloExpr | -| operations.rb:36:1:36:13 | ... ** ... | ** | operations.rb:36:1:36:4 | base | ExponentExpr | -| operations.rb:36:1:36:13 | ... ** ... | ** | operations.rb:36:9:36:13 | power | ExponentExpr | -| operations.rb:39:1:39:10 | ... && ... | && | operations.rb:39:1:39:3 | foo | LogicalAndExpr | -| operations.rb:39:1:39:10 | ... && ... | && | operations.rb:39:8:39:10 | bar | LogicalAndExpr | -| operations.rb:40:1:40:11 | ... and ... | and | operations.rb:40:1:40:3 | baz | LogicalAndExpr | -| operations.rb:40:1:40:11 | ... and ... | and | operations.rb:40:9:40:11 | qux | LogicalAndExpr | -| operations.rb:41:1:41:6 | ... or ... | or | operations.rb:41:1:41:1 | a | LogicalOrExpr | -| operations.rb:41:1:41:6 | ... or ... | or | operations.rb:41:6:41:6 | b | LogicalOrExpr | -| operations.rb:42:1:42:6 | ... \|\| ... | \|\| | operations.rb:42:1:42:1 | x | LogicalOrExpr | -| operations.rb:42:1:42:6 | ... \|\| ... | \|\| | operations.rb:42:6:42:6 | y | LogicalOrExpr | -| operations.rb:45:1:45:6 | ... << ... | << | operations.rb:45:1:45:1 | x | LShiftExpr | -| operations.rb:45:1:45:6 | ... << ... | << | operations.rb:45:6:45:6 | 3 | LShiftExpr | -| operations.rb:46:1:46:7 | ... >> ... | >> | operations.rb:46:1:46:1 | y | RShiftExpr | -| operations.rb:46:1:46:7 | ... >> ... | >> | operations.rb:46:6:46:7 | 16 | RShiftExpr | -| operations.rb:47:1:47:10 | ... & ... | & | operations.rb:47:1:47:3 | foo | BitwiseAndExpr | -| operations.rb:47:1:47:10 | ... & ... | & | operations.rb:47:7:47:10 | 0xff | BitwiseAndExpr | -| operations.rb:48:1:48:10 | ... \| ... | \| | operations.rb:48:1:48:3 | bar | BitwiseOrExpr | -| operations.rb:48:1:48:10 | ... \| ... | \| | operations.rb:48:7:48:10 | 0x02 | BitwiseOrExpr | -| operations.rb:49:1:49:9 | ... ^ ... | ^ | operations.rb:49:1:49:3 | baz | BitwiseXorExpr | -| operations.rb:49:1:49:9 | ... ^ ... | ^ | operations.rb:49:7:49:9 | qux | BitwiseXorExpr | -| operations.rb:52:1:52:6 | ... == ... | == | operations.rb:52:1:52:1 | x | EqExpr | -| operations.rb:52:1:52:6 | ... == ... | == | operations.rb:52:6:52:6 | y | EqExpr | -| operations.rb:53:1:53:8 | ... != ... | != | operations.rb:53:1:53:1 | a | NEExpr | -| operations.rb:53:1:53:8 | ... != ... | != | operations.rb:53:6:53:8 | 123 | NEExpr | -| operations.rb:54:1:54:7 | ... === ... | === | operations.rb:54:1:54:1 | m | CaseEqExpr | -| operations.rb:54:1:54:7 | ... === ... | === | operations.rb:54:7:54:7 | n | CaseEqExpr | -| operations.rb:57:1:57:5 | ... > ... | > | operations.rb:57:1:57:1 | x | GTExpr | -| operations.rb:57:1:57:5 | ... > ... | > | operations.rb:57:5:57:5 | 0 | GTExpr | -| operations.rb:58:1:58:8 | ... >= ... | >= | operations.rb:58:1:58:1 | y | GEExpr | -| operations.rb:58:1:58:8 | ... >= ... | >= | operations.rb:58:6:58:8 | 100 | GEExpr | -| operations.rb:59:1:59:5 | ... < ... | < | operations.rb:59:1:59:1 | a | LTExpr | -| operations.rb:59:1:59:5 | ... < ... | < | operations.rb:59:5:59:5 | b | LTExpr | -| operations.rb:60:1:60:8 | ... <= ... | <= | operations.rb:60:1:60:1 | 7 | LEExpr | -| operations.rb:60:1:60:8 | ... <= ... | <= | operations.rb:60:6:60:8 | foo | LEExpr | -| operations.rb:63:1:63:7 | ... <=> ... | <=> | operations.rb:63:1:63:1 | a | SpaceshipExpr | -| operations.rb:63:1:63:7 | ... <=> ... | <=> | operations.rb:63:7:63:7 | b | SpaceshipExpr | -| operations.rb:64:1:64:15 | ... =~ ... | =~ | operations.rb:64:1:64:4 | name | RegexMatchExpr | -| operations.rb:64:1:64:15 | ... =~ ... | =~ | operations.rb:64:9:64:15 | /foo.*/ | RegexMatchExpr | -| operations.rb:65:1:65:17 | ... !~ ... | !~ | operations.rb:65:1:65:6 | handle | NoRegexMatchExpr | -| operations.rb:65:1:65:17 | ... !~ ... | !~ | operations.rb:65:11:65:17 | /.*bar/ | NoRegexMatchExpr | -| operations.rb:68:1:68:8 | ... += ... | += | operations.rb:68:1:68:1 | x | AssignAddExpr | -| operations.rb:68:1:68:8 | ... += ... | += | operations.rb:68:6:68:8 | 128 | AssignAddExpr | -| operations.rb:68:1:68:8 | ... = ... | = | operations.rb:68:1:68:1 | x | AssignExpr | -| operations.rb:68:1:68:8 | ... = ... | = | operations.rb:68:3:68:4 | ... + ... | AssignExpr | -| operations.rb:68:3:68:4 | ... + ... | + | operations.rb:68:1:68:1 | x | AddExpr | -| operations.rb:68:3:68:4 | ... + ... | + | operations.rb:68:6:68:8 | 128 | AddExpr | -| operations.rb:69:1:69:7 | ... -= ... | -= | operations.rb:69:1:69:1 | y | AssignSubExpr | -| operations.rb:69:1:69:7 | ... -= ... | -= | operations.rb:69:6:69:7 | 32 | AssignSubExpr | -| operations.rb:69:1:69:7 | ... = ... | = | operations.rb:69:1:69:1 | y | AssignExpr | -| operations.rb:69:1:69:7 | ... = ... | = | operations.rb:69:3:69:4 | ... - ... | AssignExpr | -| operations.rb:69:3:69:4 | ... - ... | - | operations.rb:69:1:69:1 | y | SubExpr | -| operations.rb:69:3:69:4 | ... - ... | - | operations.rb:69:6:69:7 | 32 | SubExpr | -| operations.rb:70:1:70:7 | ... *= ... | *= | operations.rb:70:1:70:1 | a | AssignMulExpr | -| operations.rb:70:1:70:7 | ... *= ... | *= | operations.rb:70:6:70:7 | 12 | AssignMulExpr | -| operations.rb:70:1:70:7 | ... = ... | = | operations.rb:70:1:70:1 | a | AssignExpr | -| operations.rb:70:1:70:7 | ... = ... | = | operations.rb:70:3:70:4 | ... * ... | AssignExpr | -| operations.rb:70:3:70:4 | ... * ... | * | operations.rb:70:1:70:1 | a | MulExpr | -| operations.rb:70:3:70:4 | ... * ... | * | operations.rb:70:6:70:7 | 12 | MulExpr | -| operations.rb:71:1:71:6 | ... /= ... | /= | operations.rb:71:1:71:1 | b | AssignDivExpr | -| operations.rb:71:1:71:6 | ... /= ... | /= | operations.rb:71:6:71:6 | 4 | AssignDivExpr | -| operations.rb:71:1:71:6 | ... = ... | = | operations.rb:71:1:71:1 | b | AssignExpr | -| operations.rb:71:1:71:6 | ... = ... | = | operations.rb:71:3:71:4 | ... / ... | AssignExpr | -| operations.rb:71:3:71:4 | ... / ... | / | operations.rb:71:1:71:1 | b | DivExpr | -| operations.rb:71:3:71:4 | ... / ... | / | operations.rb:71:6:71:6 | 4 | DivExpr | -| operations.rb:72:1:72:6 | ... %= ... | %= | operations.rb:72:1:72:1 | z | AssignModuloExpr | -| operations.rb:72:1:72:6 | ... %= ... | %= | operations.rb:72:6:72:6 | 2 | AssignModuloExpr | -| operations.rb:72:1:72:6 | ... = ... | = | operations.rb:72:1:72:1 | z | AssignExpr | -| operations.rb:72:1:72:6 | ... = ... | = | operations.rb:72:3:72:4 | ... % ... | AssignExpr | -| operations.rb:72:3:72:4 | ... % ... | % | operations.rb:72:1:72:1 | z | ModuloExpr | -| operations.rb:72:3:72:4 | ... % ... | % | operations.rb:72:6:72:6 | 2 | ModuloExpr | -| operations.rb:73:1:73:11 | ... **= ... | **= | operations.rb:73:1:73:3 | foo | AssignExponentExpr | -| operations.rb:73:1:73:11 | ... **= ... | **= | operations.rb:73:9:73:11 | bar | AssignExponentExpr | -| operations.rb:73:1:73:11 | ... = ... | = | operations.rb:73:1:73:3 | foo | AssignExpr | -| operations.rb:73:1:73:11 | ... = ... | = | operations.rb:73:5:73:7 | ... ** ... | AssignExpr | -| operations.rb:73:5:73:7 | ... ** ... | ** | operations.rb:73:1:73:3 | foo | ExponentExpr | -| operations.rb:73:5:73:7 | ... ** ... | ** | operations.rb:73:9:73:11 | bar | ExponentExpr | -| operations.rb:76:2:76:8 | ... &&= ... | &&= | operations.rb:76:2:76:2 | x | AssignLogicalAndExpr | -| operations.rb:76:2:76:8 | ... &&= ... | &&= | operations.rb:76:8:76:8 | y | AssignLogicalAndExpr | -| operations.rb:76:2:76:8 | ... = ... | = | operations.rb:76:2:76:2 | x | AssignExpr | -| operations.rb:76:2:76:8 | ... = ... | = | operations.rb:76:4:76:6 | ... && ... | AssignExpr | -| operations.rb:76:4:76:6 | ... && ... | && | operations.rb:76:2:76:2 | x | LogicalAndExpr | -| operations.rb:76:4:76:6 | ... && ... | && | operations.rb:76:8:76:8 | y | LogicalAndExpr | -| operations.rb:77:2:77:8 | ... = ... | = | operations.rb:77:2:77:2 | a | AssignExpr | -| operations.rb:77:2:77:8 | ... = ... | = | operations.rb:77:4:77:6 | ... \|\| ... | AssignExpr | -| operations.rb:77:2:77:8 | ... \|\|= ... | \|\|= | operations.rb:77:2:77:2 | a | AssignLogicalOrExpr | -| operations.rb:77:2:77:8 | ... \|\|= ... | \|\|= | operations.rb:77:8:77:8 | b | AssignLogicalOrExpr | -| operations.rb:77:4:77:6 | ... \|\| ... | \|\| | operations.rb:77:2:77:2 | a | LogicalOrExpr | -| operations.rb:77:4:77:6 | ... \|\| ... | \|\| | operations.rb:77:8:77:8 | b | LogicalOrExpr | -| operations.rb:80:2:80:8 | ... <<= ... | <<= | operations.rb:80:2:80:2 | x | AssignLShiftExpr | -| operations.rb:80:2:80:8 | ... <<= ... | <<= | operations.rb:80:8:80:8 | 2 | AssignLShiftExpr | -| operations.rb:80:2:80:8 | ... = ... | = | operations.rb:80:2:80:2 | x | AssignExpr | -| operations.rb:80:2:80:8 | ... = ... | = | operations.rb:80:4:80:6 | ... << ... | AssignExpr | -| operations.rb:80:4:80:6 | ... << ... | << | operations.rb:80:2:80:2 | x | LShiftExpr | -| operations.rb:80:4:80:6 | ... << ... | << | operations.rb:80:8:80:8 | 2 | LShiftExpr | -| operations.rb:81:2:81:8 | ... = ... | = | operations.rb:81:2:81:2 | y | AssignExpr | -| operations.rb:81:2:81:8 | ... = ... | = | operations.rb:81:4:81:6 | ... >> ... | AssignExpr | -| operations.rb:81:2:81:8 | ... >>= ... | >>= | operations.rb:81:2:81:2 | y | AssignRShiftExpr | -| operations.rb:81:2:81:8 | ... >>= ... | >>= | operations.rb:81:8:81:8 | 3 | AssignRShiftExpr | -| operations.rb:81:4:81:6 | ... >> ... | >> | operations.rb:81:2:81:2 | y | RShiftExpr | -| operations.rb:81:4:81:6 | ... >> ... | >> | operations.rb:81:8:81:8 | 3 | RShiftExpr | -| operations.rb:82:2:82:12 | ... &= ... | &= | operations.rb:82:2:82:4 | foo | AssignBitwiseAndExpr | -| operations.rb:82:2:82:12 | ... &= ... | &= | operations.rb:82:9:82:12 | mask | AssignBitwiseAndExpr | -| operations.rb:82:2:82:12 | ... = ... | = | operations.rb:82:2:82:4 | foo | AssignExpr | -| operations.rb:82:2:82:12 | ... = ... | = | operations.rb:82:6:82:7 | ... & ... | AssignExpr | -| operations.rb:82:6:82:7 | ... & ... | & | operations.rb:82:2:82:4 | foo | BitwiseAndExpr | -| operations.rb:82:6:82:7 | ... & ... | & | operations.rb:82:9:82:12 | mask | BitwiseAndExpr | -| operations.rb:83:2:83:12 | ... = ... | = | operations.rb:83:2:83:4 | bar | AssignExpr | -| operations.rb:83:2:83:12 | ... = ... | = | operations.rb:83:6:83:7 | ... \| ... | AssignExpr | -| operations.rb:83:2:83:12 | ... \|= ... | \|= | operations.rb:83:2:83:4 | bar | AssignBitwiseOrExpr | -| operations.rb:83:2:83:12 | ... \|= ... | \|= | operations.rb:83:9:83:12 | 0x01 | AssignBitwiseOrExpr | -| operations.rb:83:6:83:7 | ... \| ... | \| | operations.rb:83:2:83:4 | bar | BitwiseOrExpr | -| operations.rb:83:6:83:7 | ... \| ... | \| | operations.rb:83:9:83:12 | 0x01 | BitwiseOrExpr | -| operations.rb:84:2:84:11 | ... = ... | = | operations.rb:84:2:84:4 | baz | AssignExpr | -| operations.rb:84:2:84:11 | ... = ... | = | operations.rb:84:6:84:7 | ... ^ ... | AssignExpr | -| operations.rb:84:2:84:11 | ... ^= ... | ^= | operations.rb:84:2:84:4 | baz | AssignBitwiseXorExpr | -| operations.rb:84:2:84:11 | ... ^= ... | ^= | operations.rb:84:9:84:11 | qux | AssignBitwiseXorExpr | -| operations.rb:84:6:84:7 | ... ^ ... | ^ | operations.rb:84:2:84:4 | baz | BitwiseXorExpr | -| operations.rb:84:6:84:7 | ... ^ ... | ^ | operations.rb:84:9:84:11 | qux | BitwiseXorExpr | -| operations.rb:87:3:87:8 | ... = ... | = | operations.rb:87:3:87:4 | @x | AssignExpr | -| operations.rb:87:3:87:8 | ... = ... | = | operations.rb:87:8:87:8 | 1 | AssignExpr | -| operations.rb:88:3:88:9 | ... += ... | += | operations.rb:88:3:88:4 | @x | AssignAddExpr | -| operations.rb:88:3:88:9 | ... += ... | += | operations.rb:88:9:88:9 | 2 | AssignAddExpr | -| operations.rb:88:3:88:9 | ... = ... | = | operations.rb:88:3:88:4 | @x | AssignExpr | -| operations.rb:88:3:88:9 | ... = ... | = | operations.rb:88:6:88:7 | ... + ... | AssignExpr | -| operations.rb:88:6:88:7 | ... + ... | + | operations.rb:88:3:88:4 | @x | AddExpr | -| operations.rb:88:6:88:7 | ... + ... | + | operations.rb:88:9:88:9 | 2 | AddExpr | -| operations.rb:90:3:90:9 | ... = ... | = | operations.rb:90:3:90:5 | @@y | AssignExpr | -| operations.rb:90:3:90:9 | ... = ... | = | operations.rb:90:9:90:9 | 3 | AssignExpr | -| operations.rb:91:3:91:10 | ... /= ... | /= | operations.rb:91:3:91:5 | @@y | AssignDivExpr | -| operations.rb:91:3:91:10 | ... /= ... | /= | operations.rb:91:10:91:10 | 4 | AssignDivExpr | -| operations.rb:91:3:91:10 | ... = ... | = | operations.rb:91:3:91:5 | @@y | AssignExpr | -| operations.rb:91:3:91:10 | ... = ... | = | operations.rb:91:7:91:8 | ... / ... | AssignExpr | -| operations.rb:91:7:91:8 | ... / ... | / | operations.rb:91:3:91:5 | @@y | DivExpr | -| operations.rb:91:7:91:8 | ... / ... | / | operations.rb:91:10:91:10 | 4 | DivExpr | -| operations.rb:94:1:94:15 | ... = ... | = | operations.rb:94:1:94:11 | $global_var | AssignExpr | -| operations.rb:94:1:94:15 | ... = ... | = | operations.rb:94:15:94:15 | 5 | AssignExpr | -| operations.rb:95:1:95:16 | ... *= ... | *= | operations.rb:95:1:95:11 | $global_var | AssignMulExpr | -| operations.rb:95:1:95:16 | ... *= ... | *= | operations.rb:95:16:95:16 | 6 | AssignMulExpr | -| operations.rb:95:1:95:16 | ... = ... | = | operations.rb:95:1:95:11 | $global_var | AssignExpr | -| operations.rb:95:1:95:16 | ... = ... | = | operations.rb:95:13:95:14 | ... * ... | AssignExpr | -| operations.rb:95:13:95:14 | ... * ... | * | operations.rb:95:1:95:11 | $global_var | MulExpr | -| operations.rb:95:13:95:14 | ... * ... | * | operations.rb:95:16:95:16 | 6 | MulExpr | +| operations.rb:32:1:32:7 | ... + ... | + | operations.rb:32:1:32:1 | w | AddExpr | +| operations.rb:32:1:32:7 | ... + ... | + | operations.rb:32:5:32:7 | 234 | AddExpr | +| operations.rb:33:1:33:6 | ... - ... | - | operations.rb:33:1:33:1 | x | SubExpr | +| operations.rb:33:1:33:6 | ... - ... | - | operations.rb:33:5:33:6 | 17 | SubExpr | +| operations.rb:34:1:34:6 | ... * ... | * | operations.rb:34:1:34:1 | y | MulExpr | +| operations.rb:34:1:34:6 | ... * ... | * | operations.rb:34:5:34:6 | 10 | MulExpr | +| operations.rb:35:1:35:5 | ... / ... | / | operations.rb:35:1:35:1 | z | DivExpr | +| operations.rb:35:1:35:5 | ... / ... | / | operations.rb:35:5:35:5 | 2 | DivExpr | +| operations.rb:36:1:36:7 | ... % ... | % | operations.rb:36:1:36:3 | num | ModuloExpr | +| operations.rb:36:1:36:7 | ... % ... | % | operations.rb:36:7:36:7 | 2 | ModuloExpr | +| operations.rb:37:1:37:13 | ... ** ... | ** | operations.rb:37:1:37:4 | base | ExponentExpr | +| operations.rb:37:1:37:13 | ... ** ... | ** | operations.rb:37:9:37:13 | power | ExponentExpr | +| operations.rb:40:1:40:10 | ... && ... | && | operations.rb:40:1:40:3 | foo | LogicalAndExpr | +| operations.rb:40:1:40:10 | ... && ... | && | operations.rb:40:8:40:10 | bar | LogicalAndExpr | +| operations.rb:41:1:41:11 | ... and ... | and | operations.rb:41:1:41:3 | baz | LogicalAndExpr | +| operations.rb:41:1:41:11 | ... and ... | and | operations.rb:41:9:41:11 | qux | LogicalAndExpr | +| operations.rb:42:1:42:6 | ... or ... | or | operations.rb:42:1:42:1 | a | LogicalOrExpr | +| operations.rb:42:1:42:6 | ... or ... | or | operations.rb:42:6:42:6 | b | LogicalOrExpr | +| operations.rb:43:1:43:6 | ... \|\| ... | \|\| | operations.rb:43:1:43:1 | x | LogicalOrExpr | +| operations.rb:43:1:43:6 | ... \|\| ... | \|\| | operations.rb:43:6:43:6 | y | LogicalOrExpr | +| operations.rb:46:1:46:6 | ... << ... | << | operations.rb:46:1:46:1 | x | LShiftExpr | +| operations.rb:46:1:46:6 | ... << ... | << | operations.rb:46:6:46:6 | 3 | LShiftExpr | +| operations.rb:47:1:47:7 | ... >> ... | >> | operations.rb:47:1:47:1 | y | RShiftExpr | +| operations.rb:47:1:47:7 | ... >> ... | >> | operations.rb:47:6:47:7 | 16 | RShiftExpr | +| operations.rb:48:1:48:10 | ... & ... | & | operations.rb:48:1:48:3 | foo | BitwiseAndExpr | +| operations.rb:48:1:48:10 | ... & ... | & | operations.rb:48:7:48:10 | 0xff | BitwiseAndExpr | +| operations.rb:49:1:49:10 | ... \| ... | \| | operations.rb:49:1:49:3 | bar | BitwiseOrExpr | +| operations.rb:49:1:49:10 | ... \| ... | \| | operations.rb:49:7:49:10 | 0x02 | BitwiseOrExpr | +| operations.rb:50:1:50:9 | ... ^ ... | ^ | operations.rb:50:1:50:3 | baz | BitwiseXorExpr | +| operations.rb:50:1:50:9 | ... ^ ... | ^ | operations.rb:50:7:50:9 | qux | BitwiseXorExpr | +| operations.rb:53:1:53:6 | ... == ... | == | operations.rb:53:1:53:1 | x | EqExpr | +| operations.rb:53:1:53:6 | ... == ... | == | operations.rb:53:6:53:6 | y | EqExpr | +| operations.rb:54:1:54:8 | ... != ... | != | operations.rb:54:1:54:1 | a | NEExpr | +| operations.rb:54:1:54:8 | ... != ... | != | operations.rb:54:6:54:8 | 123 | NEExpr | +| operations.rb:55:1:55:7 | ... === ... | === | operations.rb:55:1:55:1 | m | CaseEqExpr | +| operations.rb:55:1:55:7 | ... === ... | === | operations.rb:55:7:55:7 | n | CaseEqExpr | +| operations.rb:58:1:58:5 | ... > ... | > | operations.rb:58:1:58:1 | x | GTExpr | +| operations.rb:58:1:58:5 | ... > ... | > | operations.rb:58:5:58:5 | 0 | GTExpr | +| operations.rb:59:1:59:8 | ... >= ... | >= | operations.rb:59:1:59:1 | y | GEExpr | +| operations.rb:59:1:59:8 | ... >= ... | >= | operations.rb:59:6:59:8 | 100 | GEExpr | +| operations.rb:60:1:60:5 | ... < ... | < | operations.rb:60:1:60:1 | a | LTExpr | +| operations.rb:60:1:60:5 | ... < ... | < | operations.rb:60:5:60:5 | b | LTExpr | +| operations.rb:61:1:61:8 | ... <= ... | <= | operations.rb:61:1:61:1 | 7 | LEExpr | +| operations.rb:61:1:61:8 | ... <= ... | <= | operations.rb:61:6:61:8 | foo | LEExpr | +| operations.rb:64:1:64:7 | ... <=> ... | <=> | operations.rb:64:1:64:1 | a | SpaceshipExpr | +| operations.rb:64:1:64:7 | ... <=> ... | <=> | operations.rb:64:7:64:7 | b | SpaceshipExpr | +| operations.rb:65:1:65:15 | ... =~ ... | =~ | operations.rb:65:1:65:4 | name | RegexMatchExpr | +| operations.rb:65:1:65:15 | ... =~ ... | =~ | operations.rb:65:9:65:15 | /foo.*/ | RegexMatchExpr | +| operations.rb:66:1:66:17 | ... !~ ... | !~ | operations.rb:66:1:66:6 | handle | NoRegexMatchExpr | +| operations.rb:66:1:66:17 | ... !~ ... | !~ | operations.rb:66:11:66:17 | /.*bar/ | NoRegexMatchExpr | +| operations.rb:69:1:69:8 | ... += ... | += | operations.rb:69:1:69:1 | x | AssignAddExpr | +| operations.rb:69:1:69:8 | ... += ... | += | operations.rb:69:6:69:8 | 128 | AssignAddExpr | +| operations.rb:69:1:69:8 | ... = ... | = | operations.rb:69:1:69:1 | x | AssignExpr | +| operations.rb:69:1:69:8 | ... = ... | = | operations.rb:69:3:69:4 | ... + ... | AssignExpr | +| operations.rb:69:3:69:4 | ... + ... | + | operations.rb:69:1:69:1 | x | AddExpr | +| operations.rb:69:3:69:4 | ... + ... | + | operations.rb:69:6:69:8 | 128 | AddExpr | +| operations.rb:70:1:70:7 | ... -= ... | -= | operations.rb:70:1:70:1 | y | AssignSubExpr | +| operations.rb:70:1:70:7 | ... -= ... | -= | operations.rb:70:6:70:7 | 32 | AssignSubExpr | +| operations.rb:70:1:70:7 | ... = ... | = | operations.rb:70:1:70:1 | y | AssignExpr | +| operations.rb:70:1:70:7 | ... = ... | = | operations.rb:70:3:70:4 | ... - ... | AssignExpr | +| operations.rb:70:3:70:4 | ... - ... | - | operations.rb:70:1:70:1 | y | SubExpr | +| operations.rb:70:3:70:4 | ... - ... | - | operations.rb:70:6:70:7 | 32 | SubExpr | +| operations.rb:71:1:71:7 | ... *= ... | *= | operations.rb:71:1:71:1 | a | AssignMulExpr | +| operations.rb:71:1:71:7 | ... *= ... | *= | operations.rb:71:6:71:7 | 12 | AssignMulExpr | +| operations.rb:71:1:71:7 | ... = ... | = | operations.rb:71:1:71:1 | a | AssignExpr | +| operations.rb:71:1:71:7 | ... = ... | = | operations.rb:71:3:71:4 | ... * ... | AssignExpr | +| operations.rb:71:3:71:4 | ... * ... | * | operations.rb:71:1:71:1 | a | MulExpr | +| operations.rb:71:3:71:4 | ... * ... | * | operations.rb:71:6:71:7 | 12 | MulExpr | +| operations.rb:72:1:72:6 | ... /= ... | /= | operations.rb:72:1:72:1 | b | AssignDivExpr | +| operations.rb:72:1:72:6 | ... /= ... | /= | operations.rb:72:6:72:6 | 4 | AssignDivExpr | +| operations.rb:72:1:72:6 | ... = ... | = | operations.rb:72:1:72:1 | b | AssignExpr | +| operations.rb:72:1:72:6 | ... = ... | = | operations.rb:72:3:72:4 | ... / ... | AssignExpr | +| operations.rb:72:3:72:4 | ... / ... | / | operations.rb:72:1:72:1 | b | DivExpr | +| operations.rb:72:3:72:4 | ... / ... | / | operations.rb:72:6:72:6 | 4 | DivExpr | +| operations.rb:73:1:73:6 | ... %= ... | %= | operations.rb:73:1:73:1 | z | AssignModuloExpr | +| operations.rb:73:1:73:6 | ... %= ... | %= | operations.rb:73:6:73:6 | 2 | AssignModuloExpr | +| operations.rb:73:1:73:6 | ... = ... | = | operations.rb:73:1:73:1 | z | AssignExpr | +| operations.rb:73:1:73:6 | ... = ... | = | operations.rb:73:3:73:4 | ... % ... | AssignExpr | +| operations.rb:73:3:73:4 | ... % ... | % | operations.rb:73:1:73:1 | z | ModuloExpr | +| operations.rb:73:3:73:4 | ... % ... | % | operations.rb:73:6:73:6 | 2 | ModuloExpr | +| operations.rb:74:1:74:11 | ... **= ... | **= | operations.rb:74:1:74:3 | foo | AssignExponentExpr | +| operations.rb:74:1:74:11 | ... **= ... | **= | operations.rb:74:9:74:11 | bar | AssignExponentExpr | +| operations.rb:74:1:74:11 | ... = ... | = | operations.rb:74:1:74:3 | foo | AssignExpr | +| operations.rb:74:1:74:11 | ... = ... | = | operations.rb:74:5:74:7 | ... ** ... | AssignExpr | +| operations.rb:74:5:74:7 | ... ** ... | ** | operations.rb:74:1:74:3 | foo | ExponentExpr | +| operations.rb:74:5:74:7 | ... ** ... | ** | operations.rb:74:9:74:11 | bar | ExponentExpr | +| operations.rb:77:2:77:8 | ... &&= ... | &&= | operations.rb:77:2:77:2 | x | AssignLogicalAndExpr | +| operations.rb:77:2:77:8 | ... &&= ... | &&= | operations.rb:77:8:77:8 | y | AssignLogicalAndExpr | +| operations.rb:77:2:77:8 | ... = ... | = | operations.rb:77:2:77:2 | x | AssignExpr | +| operations.rb:77:2:77:8 | ... = ... | = | operations.rb:77:4:77:6 | ... && ... | AssignExpr | +| operations.rb:77:4:77:6 | ... && ... | && | operations.rb:77:2:77:2 | x | LogicalAndExpr | +| operations.rb:77:4:77:6 | ... && ... | && | operations.rb:77:8:77:8 | y | LogicalAndExpr | +| operations.rb:78:2:78:8 | ... = ... | = | operations.rb:78:2:78:2 | a | AssignExpr | +| operations.rb:78:2:78:8 | ... = ... | = | operations.rb:78:4:78:6 | ... \|\| ... | AssignExpr | +| operations.rb:78:2:78:8 | ... \|\|= ... | \|\|= | operations.rb:78:2:78:2 | a | AssignLogicalOrExpr | +| operations.rb:78:2:78:8 | ... \|\|= ... | \|\|= | operations.rb:78:8:78:8 | b | AssignLogicalOrExpr | +| operations.rb:78:4:78:6 | ... \|\| ... | \|\| | operations.rb:78:2:78:2 | a | LogicalOrExpr | +| operations.rb:78:4:78:6 | ... \|\| ... | \|\| | operations.rb:78:8:78:8 | b | LogicalOrExpr | +| operations.rb:81:2:81:8 | ... <<= ... | <<= | operations.rb:81:2:81:2 | x | AssignLShiftExpr | +| operations.rb:81:2:81:8 | ... <<= ... | <<= | operations.rb:81:8:81:8 | 2 | AssignLShiftExpr | +| operations.rb:81:2:81:8 | ... = ... | = | operations.rb:81:2:81:2 | x | AssignExpr | +| operations.rb:81:2:81:8 | ... = ... | = | operations.rb:81:4:81:6 | ... << ... | AssignExpr | +| operations.rb:81:4:81:6 | ... << ... | << | operations.rb:81:2:81:2 | x | LShiftExpr | +| operations.rb:81:4:81:6 | ... << ... | << | operations.rb:81:8:81:8 | 2 | LShiftExpr | +| operations.rb:82:2:82:8 | ... = ... | = | operations.rb:82:2:82:2 | y | AssignExpr | +| operations.rb:82:2:82:8 | ... = ... | = | operations.rb:82:4:82:6 | ... >> ... | AssignExpr | +| operations.rb:82:2:82:8 | ... >>= ... | >>= | operations.rb:82:2:82:2 | y | AssignRShiftExpr | +| operations.rb:82:2:82:8 | ... >>= ... | >>= | operations.rb:82:8:82:8 | 3 | AssignRShiftExpr | +| operations.rb:82:4:82:6 | ... >> ... | >> | operations.rb:82:2:82:2 | y | RShiftExpr | +| operations.rb:82:4:82:6 | ... >> ... | >> | operations.rb:82:8:82:8 | 3 | RShiftExpr | +| operations.rb:83:2:83:12 | ... &= ... | &= | operations.rb:83:2:83:4 | foo | AssignBitwiseAndExpr | +| operations.rb:83:2:83:12 | ... &= ... | &= | operations.rb:83:9:83:12 | mask | AssignBitwiseAndExpr | +| operations.rb:83:2:83:12 | ... = ... | = | operations.rb:83:2:83:4 | foo | AssignExpr | +| operations.rb:83:2:83:12 | ... = ... | = | operations.rb:83:6:83:7 | ... & ... | AssignExpr | +| operations.rb:83:6:83:7 | ... & ... | & | operations.rb:83:2:83:4 | foo | BitwiseAndExpr | +| operations.rb:83:6:83:7 | ... & ... | & | operations.rb:83:9:83:12 | mask | BitwiseAndExpr | +| operations.rb:84:2:84:12 | ... = ... | = | operations.rb:84:2:84:4 | bar | AssignExpr | +| operations.rb:84:2:84:12 | ... = ... | = | operations.rb:84:6:84:7 | ... \| ... | AssignExpr | +| operations.rb:84:2:84:12 | ... \|= ... | \|= | operations.rb:84:2:84:4 | bar | AssignBitwiseOrExpr | +| operations.rb:84:2:84:12 | ... \|= ... | \|= | operations.rb:84:9:84:12 | 0x01 | AssignBitwiseOrExpr | +| operations.rb:84:6:84:7 | ... \| ... | \| | operations.rb:84:2:84:4 | bar | BitwiseOrExpr | +| operations.rb:84:6:84:7 | ... \| ... | \| | operations.rb:84:9:84:12 | 0x01 | BitwiseOrExpr | +| operations.rb:85:2:85:11 | ... = ... | = | operations.rb:85:2:85:4 | baz | AssignExpr | +| operations.rb:85:2:85:11 | ... = ... | = | operations.rb:85:6:85:7 | ... ^ ... | AssignExpr | +| operations.rb:85:2:85:11 | ... ^= ... | ^= | operations.rb:85:2:85:4 | baz | AssignBitwiseXorExpr | +| operations.rb:85:2:85:11 | ... ^= ... | ^= | operations.rb:85:9:85:11 | qux | AssignBitwiseXorExpr | +| operations.rb:85:6:85:7 | ... ^ ... | ^ | operations.rb:85:2:85:4 | baz | BitwiseXorExpr | +| operations.rb:85:6:85:7 | ... ^ ... | ^ | operations.rb:85:9:85:11 | qux | BitwiseXorExpr | +| operations.rb:88:3:88:8 | ... = ... | = | operations.rb:88:3:88:4 | @x | AssignExpr | +| operations.rb:88:3:88:8 | ... = ... | = | operations.rb:88:8:88:8 | 1 | AssignExpr | +| operations.rb:89:3:89:9 | ... += ... | += | operations.rb:89:3:89:4 | @x | AssignAddExpr | +| operations.rb:89:3:89:9 | ... += ... | += | operations.rb:89:9:89:9 | 2 | AssignAddExpr | +| operations.rb:89:3:89:9 | ... = ... | = | operations.rb:89:3:89:4 | @x | AssignExpr | +| operations.rb:89:3:89:9 | ... = ... | = | operations.rb:89:6:89:7 | ... + ... | AssignExpr | +| operations.rb:89:6:89:7 | ... + ... | + | operations.rb:89:3:89:4 | @x | AddExpr | +| operations.rb:89:6:89:7 | ... + ... | + | operations.rb:89:9:89:9 | 2 | AddExpr | +| operations.rb:91:3:91:9 | ... = ... | = | operations.rb:91:3:91:5 | @@y | AssignExpr | +| operations.rb:91:3:91:9 | ... = ... | = | operations.rb:91:9:91:9 | 3 | AssignExpr | +| operations.rb:92:3:92:10 | ... /= ... | /= | operations.rb:92:3:92:5 | @@y | AssignDivExpr | +| operations.rb:92:3:92:10 | ... /= ... | /= | operations.rb:92:10:92:10 | 4 | AssignDivExpr | +| operations.rb:92:3:92:10 | ... = ... | = | operations.rb:92:3:92:5 | @@y | AssignExpr | +| operations.rb:92:3:92:10 | ... = ... | = | operations.rb:92:7:92:8 | ... / ... | AssignExpr | +| operations.rb:92:7:92:8 | ... / ... | / | operations.rb:92:3:92:5 | @@y | DivExpr | +| operations.rb:92:7:92:8 | ... / ... | / | operations.rb:92:10:92:10 | 4 | DivExpr | +| operations.rb:95:1:95:15 | ... = ... | = | operations.rb:95:1:95:11 | $global_var | AssignExpr | +| operations.rb:95:1:95:15 | ... = ... | = | operations.rb:95:15:95:15 | 5 | AssignExpr | +| operations.rb:96:1:96:16 | ... *= ... | *= | operations.rb:96:1:96:11 | $global_var | AssignMulExpr | +| operations.rb:96:1:96:16 | ... *= ... | *= | operations.rb:96:16:96:16 | 6 | AssignMulExpr | +| operations.rb:96:1:96:16 | ... = ... | = | operations.rb:96:1:96:11 | $global_var | AssignExpr | +| operations.rb:96:1:96:16 | ... = ... | = | operations.rb:96:13:96:14 | ... * ... | AssignExpr | +| operations.rb:96:13:96:14 | ... * ... | * | operations.rb:96:1:96:11 | $global_var | MulExpr | +| operations.rb:96:13:96:14 | ... * ... | * | operations.rb:96:16:96:16 | 6 | MulExpr | diff --git a/ql/test/library-tests/ast/operations/operations.rb b/ql/test/library-tests/ast/operations/operations.rb index effee5860ba..fcbc4551bde 100644 --- a/ql/test/library-tests/ast/operations/operations.rb +++ b/ql/test/library-tests/ast/operations/operations.rb @@ -26,6 +26,7 @@ not b -7 ~x defined? foo +def foo; return 1, *[2], a:3, **{b:4, c:5} end # Binary arithmetic operations w + 234