diff --git a/ql/src/codeql_ruby/ast/Variable.qll b/ql/src/codeql_ruby/ast/Variable.qll index 6f283d813ed..7ba2fa64d2a 100644 --- a/ql/src/codeql_ruby/ast/Variable.qll +++ b/ql/src/codeql_ruby/ast/Variable.qll @@ -122,7 +122,7 @@ class VariableAccess extends Expr { * * both `a` and `b` are write accesses belonging to the same assignment. */ - predicate isExplicitWrite(AstNode assignment) { explicitWriteAccess(this, assignment) } + predicate isExplicitWrite(AstNode assignment) { range.isExplicitWrite(assignment) } /** * Holds if this access is a write access belonging to an implicit assignment. @@ -139,7 +139,7 @@ class VariableAccess extends Expr { * the access to `elements` in the parameter list is an implicit assignment, * as is the first access to `e`. */ - predicate isImplicitWrite() { implicitWriteAccess(this) } + predicate isImplicitWrite() { range.isImplicitWrite() } } /** An access to a variable where the value is updated. */ @@ -161,13 +161,13 @@ class VariableReadAccess extends VariableAccess { } /** An access to a local variable. */ -class LocalVariableAccess extends VariableAccess, @token_identifier { +class LocalVariableAccess extends VariableAccess, LocalVariableAccess::LocalVariableRange { final override LocalVariableAccess::Range range; final override LocalVariable getVariable() { result = range.getVariable() } final override string getAPrimaryQlClass() { - not this instanceof SimpleParameter and result = "LocalVariableAccess" + not this instanceof NamedParameter and result = "LocalVariableAccess" } /** diff --git a/ql/src/codeql_ruby/ast/internal/Parameter.qll b/ql/src/codeql_ruby/ast/internal/Parameter.qll index d73339e4da4..6595f38be33 100644 --- a/ql/src/codeql_ruby/ast/internal/Parameter.qll +++ b/ql/src/codeql_ruby/ast/internal/Parameter.qll @@ -111,6 +111,14 @@ module KeywordParameter { final override string toString() { result = this.getName() } final override string getName() { result = generated.getName().getValue() } + + final override Location getLocation() { result = generated.getName().getLocation() } + + final override predicate child(string label, AstNode::Range child) { + NamedParameter::Range.super.child(label, child) + or + label = "getDefaultValue" and child = getDefaultValue() + } } } @@ -127,6 +135,14 @@ module OptionalParameter { final override string toString() { result = this.getName() } final override string getName() { result = generated.getName().getValue() } + + final override Location getLocation() { result = generated.getName().getLocation() } + + final override predicate child(string label, AstNode::Range child) { + NamedParameter::Range.super.child(label, child) + or + label = "getDefaultValue" and child = getDefaultValue() + } } } diff --git a/ql/src/codeql_ruby/ast/internal/Variable.qll b/ql/src/codeql_ruby/ast/internal/Variable.qll index 2673dfd057a..ee2e11a7d91 100644 --- a/ql/src/codeql_ruby/ast/internal/Variable.qll +++ b/ql/src/codeql_ruby/ast/internal/Variable.qll @@ -116,6 +116,23 @@ private predicate strictlyBefore(Location one, Location two) { one.getStartLine() = two.getStartLine() and one.getStartColumn() < two.getStartColumn() } +private Generated::AstNode getNodeForIdentifier(Generated::Identifier id) { + exists(Generated::AstNode parent | parent = id.getParent() | + if + parent instanceof Generated::BlockParameter + or + parent instanceof Generated::SplatParameter + or + parent instanceof Generated::HashSplatParameter + or + parent instanceof Generated::KeywordParameter + or + parent instanceof Generated::OptionalParameter + then result = parent + else result = id + ) +} + cached private module Cached { /** Gets the enclosing scope for `node`. */ @@ -518,7 +535,7 @@ module LocalVariable { final override VariableScope getDeclaringScope() { result = scope } - final VariableAccess getDefiningAccess() { result = i } + final VariableAccess getDefiningAccess() { result = getNodeForIdentifier(i) } } } @@ -577,28 +594,46 @@ module VariableAccess { abstract class Range extends Expr::Range { abstract Variable getVariable(); - final override string toString() { result = this.getVariable().getName() } + final predicate isExplicitWrite(AstNode assignment) { + exists(Generated::Identifier i | this = getNodeForIdentifier(i) | + explicitWriteAccess(i, assignment) + ) + or + not this = getNodeForIdentifier(_) and explicitWriteAccess(this, assignment) + } - override predicate child(string label, AstNode::Range child) { none() } + final predicate isImplicitWrite() { + exists(Generated::Identifier i | this = getNodeForIdentifier(i) | implicitWriteAccess(i)) + or + not this = getNodeForIdentifier(_) and implicitWriteAccess(this) + } } } module LocalVariableAccess { - class Range extends VariableAccess::Range, @token_identifier { - override Generated::Identifier generated; + class LocalVariableRange = + @token_identifier or @splat_parameter or @keyword_parameter or @optional_parameter or + @hash_splat_parameter or @block_parameter; + + class Range extends VariableAccess::Range, LocalVariableRange { LocalVariable variable; Range() { - access(this, variable) and - ( - explicitWriteAccess(this, _) - or - implicitWriteAccess(this) - or - vcall(this) + exists(Generated::Identifier id | + this = getNodeForIdentifier(id) and + access(id, variable) and + ( + explicitWriteAccess(id, _) + or + implicitWriteAccess(id) + or + vcall(id) + ) ) } + override string toString() { result = generated.(Generated::Identifier).getValue() } + final override LocalVariable getVariable() { result = variable } } } @@ -610,6 +645,8 @@ module GlobalVariableAccess { Range() { this.(Generated::GlobalVariable).getValue() = variable.getName() } final override GlobalVariable getVariable() { result = variable } + + override string toString() { result = generated.(Generated::GlobalVariable).getValue() } } } @@ -620,6 +657,8 @@ module InstanceVariableAccess { Range() { instanceVariableAccess(this, variable) } final override InstanceVariable getVariable() { result = variable } + + override string toString() { result = generated.(Generated::InstanceVariable).getValue() } } } @@ -630,5 +669,7 @@ module ClassVariableAccess { Range() { classVariableAccess(this, variable) } final override ClassVariable getVariable() { result = variable } + + override string toString() { result = generated.(Generated::ClassVariable).getValue() } } } diff --git a/ql/src/codeql_ruby/controlflow/internal/Completion.qll b/ql/src/codeql_ruby/controlflow/internal/Completion.qll index 4da3a0c1319..c3ac8b87b67 100644 --- a/ql/src/codeql_ruby/controlflow/internal/Completion.qll +++ b/ql/src/codeql_ruby/controlflow/internal/Completion.qll @@ -218,7 +218,7 @@ private predicate inMatchingContext(AstNode n) { w.getPattern(_).getChild() = n ) or - n = any(Trees::DefaultValueParameterTree t | t.hasDefaultValue()).getIdentifier() + n = any(Trees::DefaultValueParameterTree t | t.hasDefaultValue()) } /** diff --git a/ql/src/codeql_ruby/controlflow/internal/ControlFlowGraphImpl.qll b/ql/src/codeql_ruby/controlflow/internal/ControlFlowGraphImpl.qll index e58f6fab749..85d8f692401 100644 --- a/ql/src/codeql_ruby/controlflow/internal/ControlFlowGraphImpl.qll +++ b/ql/src/codeql_ruby/controlflow/internal/ControlFlowGraphImpl.qll @@ -431,9 +431,7 @@ module Trees { } } - private class BlockParameterTree extends ComplexParameterTree, BlockParameter { - final override Identifier getIdentifier() { result = this.getName() } - } + private class BlockParameterTree extends LeafTree, BlockParameter { } private class CaseTree extends PreOrderTree, Case { final override predicate propagatesAbnormal(AstNode child) { @@ -494,47 +492,32 @@ module Trees { private class ComplexTree extends LeafTree, Complex { } - abstract private class ComplexParameterTree extends ControlFlowTree { - abstract Identifier getIdentifier(); - - final override predicate propagatesAbnormal(AstNode child) { none() } - - final override predicate first(AstNode first) { first(this.getIdentifier(), first) } - - final override predicate last(AstNode last, Completion c) { - last(this.getIdentifier(), last, c) - } - - final override predicate succ(AstNode pred, AstNode succ, Completion c) { none() } - } - private class ConstantTree extends LeafTree, Constant { } /** A parameter that may have a default value. */ - abstract class DefaultValueParameterTree extends ControlFlowTree { + abstract class DefaultValueParameterTree extends PreOrderTree { abstract AstNode getDefaultValue(); - abstract Identifier getIdentifier(); - predicate hasDefaultValue() { exists(this.getDefaultValue()) } final override predicate propagatesAbnormal(AstNode child) { child = this.getDefaultValue() } - final override predicate first(AstNode first) { first(this.getIdentifier(), first) } - final override predicate last(AstNode last, Completion c) { - last(this.getIdentifier(), last, c) and - c.(MatchingCompletion).getValue() = true - or - last(this.getDefaultValue(), last, c) - or - last(this.getIdentifier(), last, c) and - not this.hasDefaultValue() and + last(this.getDefaultValue(), last, c) and c instanceof NormalCompletion + or + last = this and + ( + not this.hasDefaultValue() and + c instanceof SimpleCompletion + or + this.hasDefaultValue() and + c.(MatchingCompletion).getValue() = true + ) } final override predicate succ(AstNode pred, AstNode succ, Completion c) { - last(this.getIdentifier(), pred, c) and + pred = this and first(this.getDefaultValue(), succ) and c.(MatchingCompletion).getValue() = false } @@ -675,9 +658,7 @@ module Trees { private class GlobalVariableTree extends LeafTree, GlobalVariable { } - private class HashSplatParameterTree extends ComplexParameterTree, HashSplatParameter { - final override Identifier getIdentifier() { result = this.getName() } - } + private class HashSplatParameterTree extends LeafTree, HashSplatParameter { } private HeredocBody heredoc(HeredocBeginning start) { exists(int i, File f | @@ -734,8 +715,6 @@ module Trees { private class KeywordParameterTree extends DefaultValueParameterTree, KeywordParameter { final override AstNode getDefaultValue() { result = this.getValue() } - - final override Identifier getIdentifier() { result = this.getName() } } class LambdaTree extends LeafTree, Lambda { @@ -834,8 +813,6 @@ module Trees { private class OptionalParameterTree extends DefaultValueParameterTree, OptionalParameter { final override AstNode getDefaultValue() { result = this.getValue() } - - final override Identifier getIdentifier() { result = this.getName() } } private class RationalTree extends LeafTree, Rational { } @@ -1196,9 +1173,7 @@ module Trees { } } - private class SplatParameterTree extends ComplexParameterTree, SplatParameter { - final override Identifier getIdentifier() { result = this.getName() } - } + private class SplatParameterTree extends LeafTree, SplatParameter { } private class SuperTree extends LeafTree, Super { } diff --git a/ql/test/library-tests/ast/params/params.expected b/ql/test/library-tests/ast/params/params.expected index b86c4482826..5ae4fc32b38 100644 --- a/ql/test/library-tests/ast/params/params.expected +++ b/ql/test/library-tests/ast/params/params.expected @@ -16,23 +16,23 @@ idParams | params.rb:38:29:38:33 | *blah | blah | | params.rb:38:36:38:43 | **wibble | wibble | | params.rb:41:32:41:32 | x | x | -| params.rb:41:35:41:38 | foo | foo | -| params.rb:41:41:41:46 | bar | bar | +| params.rb:41:35:41:37 | foo | foo | +| params.rb:41:41:41:43 | bar | bar | | params.rb:46:28:46:33 | &block | block | -| params.rb:49:28:49:30 | xx | xx | -| params.rb:49:33:49:39 | yy | yy | +| params.rb:49:28:49:29 | xx | xx | +| params.rb:49:33:49:34 | yy | yy | | params.rb:53:34:53:34 | x | x | -| params.rb:53:37:53:38 | y | y | -| params.rb:53:41:53:44 | z | z | +| params.rb:53:37:53:37 | y | y | +| params.rb:53:41:53:41 | z | z | | params.rb:58:33:58:36 | val1 | val1 | -| params.rb:58:39:58:46 | val2 | val2 | -| params.rb:58:49:58:58 | val3 | val3 | +| params.rb:58:39:58:42 | val2 | val2 | +| params.rb:58:49:58:52 | val3 | val3 | | params.rb:62:29:62:34 | &block | block | | params.rb:65:29:65:32 | name | name | -| params.rb:65:35:65:42 | age | age | +| params.rb:65:35:65:37 | age | age | | params.rb:70:35:70:35 | a | a | -| params.rb:70:38:70:45 | b | b | -| params.rb:70:48:70:53 | c | c | +| params.rb:70:38:70:38 | b | b | +| params.rb:70:48:70:48 | c | c | blockParams | params.rb:46:28:46:33 | &block | block | | params.rb:62:29:62:34 | &block | block | @@ -55,18 +55,18 @@ hashSplatParams | params.rb:34:29:34:42 | **double_splat | double_splat | | params.rb:38:36:38:43 | **wibble | wibble | keywordParams -| params.rb:41:35:41:38 | foo | foo | (none) | -| params.rb:41:41:41:46 | bar | bar | 7 | -| params.rb:49:28:49:30 | xx | xx | (none) | -| params.rb:49:33:49:39 | yy | yy | 100 | -| params.rb:53:37:53:38 | y | y | (none) | -| params.rb:53:41:53:44 | z | z | 3 | +| params.rb:41:35:41:37 | foo | foo | (none) | +| params.rb:41:41:41:43 | bar | bar | 7 | +| params.rb:49:28:49:29 | xx | xx | (none) | +| params.rb:49:33:49:34 | yy | yy | 100 | +| params.rb:53:37:53:37 | y | y | (none) | +| params.rb:53:41:53:41 | z | z | 3 | optionalParams -| params.rb:58:39:58:46 | val2 | val2 | params.rb:58:46:58:46 | 0 | -| params.rb:58:49:58:58 | val3 | val3 | params.rb:58:56:58:58 | 100 | -| params.rb:65:35:65:42 | age | age | params.rb:65:41:65:42 | 99 | -| params.rb:70:38:70:45 | b | b | params.rb:70:42:70:45 | 1000 | -| params.rb:70:48:70:53 | c | c | params.rb:70:52:70:53 | 20 | +| params.rb:58:39:58:42 | val2 | val2 | params.rb:58:46:58:46 | 0 | +| params.rb:58:49:58:52 | val3 | val3 | params.rb:58:56:58:58 | 100 | +| params.rb:65:35:65:37 | age | age | params.rb:65:41:65:42 | 99 | +| params.rb:70:38:70:38 | b | b | params.rb:70:42:70:45 | 1000 | +| params.rb:70:48:70:48 | c | c | params.rb:70:52:70:53 | 20 | paramsInMethods | params.rb:4:1:5:3 | identifier_method_params | 0 | params.rb:4:30:4:32 | foo | SimpleParameter | | params.rb:4:1:5:3 | identifier_method_params | 1 | params.rb:4:35:4:37 | bar | SimpleParameter | @@ -76,12 +76,12 @@ paramsInMethods | params.rb:30:1:31:3 | method_with_splat | 1 | params.rb:30:31:30:36 | *splat | SplatParameter | | params.rb:30:1:31:3 | method_with_splat | 2 | params.rb:30:39:30:52 | **double_splat | HashSplatParameter | | params.rb:41:1:43:3 | method_with_keyword_params | 0 | params.rb:41:32:41:32 | x | SimpleParameter | -| params.rb:41:1:43:3 | method_with_keyword_params | 1 | params.rb:41:35:41:38 | foo | KeywordParameter | -| params.rb:41:1:43:3 | method_with_keyword_params | 2 | params.rb:41:41:41:46 | bar | KeywordParameter | +| params.rb:41:1:43:3 | method_with_keyword_params | 1 | params.rb:41:35:41:37 | foo | KeywordParameter | +| params.rb:41:1:43:3 | method_with_keyword_params | 2 | params.rb:41:41:41:43 | bar | KeywordParameter | | params.rb:46:1:48:3 | use_block_with_keyword | 0 | params.rb:46:28:46:33 | &block | BlockParameter | | params.rb:58:1:59:3 | method_with_optional_params | 0 | params.rb:58:33:58:36 | val1 | SimpleParameter | -| params.rb:58:1:59:3 | method_with_optional_params | 1 | params.rb:58:39:58:46 | val2 | OptionalParameter | -| params.rb:58:1:59:3 | method_with_optional_params | 2 | params.rb:58:49:58:58 | val3 | OptionalParameter | +| params.rb:58:1:59:3 | method_with_optional_params | 1 | params.rb:58:39:58:42 | val2 | OptionalParameter | +| params.rb:58:1:59:3 | method_with_optional_params | 2 | params.rb:58:49:58:52 | val3 | OptionalParameter | | params.rb:62:1:64:3 | use_block_with_optional | 0 | params.rb:62:29:62:34 | &block | BlockParameter | paramsInBlocks | params.rb:9:11:11:3 | do ... end | 0 | params.rb:9:15:9:17 | key | SimpleParameter | @@ -90,10 +90,10 @@ paramsInBlocks | params.rb:34:12:35:3 | do ... end | 0 | params.rb:34:16:34:18 | val | SimpleParameter | | params.rb:34:12:35:3 | do ... end | 1 | params.rb:34:21:34:26 | *splat | SplatParameter | | params.rb:34:12:35:3 | do ... end | 2 | params.rb:34:29:34:42 | **double_splat | HashSplatParameter | -| params.rb:49:24:51:3 | do ... end | 0 | params.rb:49:28:49:30 | xx | KeywordParameter | -| params.rb:49:24:51:3 | do ... end | 1 | params.rb:49:33:49:39 | yy | KeywordParameter | +| params.rb:49:24:51:3 | do ... end | 0 | params.rb:49:28:49:29 | xx | KeywordParameter | +| params.rb:49:24:51:3 | do ... end | 1 | params.rb:49:33:49:34 | yy | KeywordParameter | | params.rb:65:25:67:3 | do ... end | 0 | params.rb:65:29:65:32 | name | SimpleParameter | -| params.rb:65:25:67:3 | do ... end | 1 | params.rb:65:35:65:42 | age | OptionalParameter | +| params.rb:65:25:67:3 | do ... end | 1 | params.rb:65:35:65:37 | age | OptionalParameter | paramsInLambdas | params.rb:14:7:14:33 | -> { ... } | 0 | params.rb:14:11:14:13 | foo | SimpleParameter | | params.rb:14:7:14:33 | -> { ... } | 1 | params.rb:14:16:14:18 | bar | SimpleParameter | @@ -103,11 +103,11 @@ paramsInLambdas | params.rb:38:22:38:47 | -> { ... } | 1 | params.rb:38:29:38:33 | *blah | SplatParameter | | params.rb:38:22:38:47 | -> { ... } | 2 | params.rb:38:36:38:43 | **wibble | HashSplatParameter | | params.rb:53:30:55:1 | -> { ... } | 0 | params.rb:53:34:53:34 | x | SimpleParameter | -| params.rb:53:30:55:1 | -> { ... } | 1 | params.rb:53:37:53:38 | y | KeywordParameter | -| params.rb:53:30:55:1 | -> { ... } | 2 | params.rb:53:41:53:44 | z | KeywordParameter | +| params.rb:53:30:55:1 | -> { ... } | 1 | params.rb:53:37:53:37 | y | KeywordParameter | +| params.rb:53:30:55:1 | -> { ... } | 2 | params.rb:53:41:53:41 | z | KeywordParameter | | params.rb:70:31:70:64 | -> { ... } | 0 | params.rb:70:35:70:35 | a | SimpleParameter | -| params.rb:70:31:70:64 | -> { ... } | 1 | params.rb:70:38:70:45 | b | OptionalParameter | -| params.rb:70:31:70:64 | -> { ... } | 2 | params.rb:70:48:70:53 | c | OptionalParameter | +| params.rb:70:31:70:64 | -> { ... } | 1 | params.rb:70:38:70:38 | b | OptionalParameter | +| params.rb:70:31:70:64 | -> { ... } | 2 | params.rb:70:48:70:48 | c | OptionalParameter | params | params.rb:4:30:4:32 | foo | 0 | SimpleParameter | | params.rb:4:35:4:37 | bar | 1 | SimpleParameter | @@ -130,20 +130,20 @@ params | params.rb:38:29:38:33 | *blah | 1 | SplatParameter | | params.rb:38:36:38:43 | **wibble | 2 | HashSplatParameter | | params.rb:41:32:41:32 | x | 0 | SimpleParameter | -| params.rb:41:35:41:38 | foo | 1 | KeywordParameter | -| params.rb:41:41:41:46 | bar | 2 | KeywordParameter | +| params.rb:41:35:41:37 | foo | 1 | KeywordParameter | +| params.rb:41:41:41:43 | bar | 2 | KeywordParameter | | params.rb:46:28:46:33 | &block | 0 | BlockParameter | -| params.rb:49:28:49:30 | xx | 0 | KeywordParameter | -| params.rb:49:33:49:39 | yy | 1 | KeywordParameter | +| params.rb:49:28:49:29 | xx | 0 | KeywordParameter | +| params.rb:49:33:49:34 | yy | 1 | KeywordParameter | | params.rb:53:34:53:34 | x | 0 | SimpleParameter | -| params.rb:53:37:53:38 | y | 1 | KeywordParameter | -| params.rb:53:41:53:44 | z | 2 | KeywordParameter | +| params.rb:53:37:53:37 | y | 1 | KeywordParameter | +| params.rb:53:41:53:41 | z | 2 | KeywordParameter | | params.rb:58:33:58:36 | val1 | 0 | SimpleParameter | -| params.rb:58:39:58:46 | val2 | 1 | OptionalParameter | -| params.rb:58:49:58:58 | val3 | 2 | OptionalParameter | +| params.rb:58:39:58:42 | val2 | 1 | OptionalParameter | +| params.rb:58:49:58:52 | val3 | 2 | OptionalParameter | | params.rb:62:29:62:34 | &block | 0 | BlockParameter | | params.rb:65:29:65:32 | name | 0 | SimpleParameter | -| params.rb:65:35:65:42 | age | 1 | OptionalParameter | +| params.rb:65:35:65:37 | age | 1 | OptionalParameter | | params.rb:70:35:70:35 | a | 0 | SimpleParameter | -| params.rb:70:38:70:45 | b | 1 | OptionalParameter | -| params.rb:70:48:70:53 | c | 2 | OptionalParameter | +| params.rb:70:38:70:38 | b | 1 | OptionalParameter | +| params.rb:70:48:70:48 | c | 2 | OptionalParameter | diff --git a/ql/test/library-tests/controlflow/graph/Cfg.expected b/ql/test/library-tests/controlflow/graph/Cfg.expected index a5bff7e49f4..7c43e1211e5 100644 --- a/ql/test/library-tests/controlflow/graph/Cfg.expected +++ b/ql/test/library-tests/controlflow/graph/Cfg.expected @@ -35,7 +35,7 @@ cfg.rb: #-----| -> x # 29| enter { ... } -#-----| -> x +#-----| -> &x # 63| enter pattern #-----| -> a @@ -53,7 +53,7 @@ cfg.rb: #-----| -> "singleton" # 149| enter method -#-----| -> x +#-----| -> *x # 153| enter two_parameters #-----| -> a @@ -637,7 +637,7 @@ cfg.rb: # 29| { ... } #-----| -> call to new -# 29| x +# 29| &x #-----| -> x # 29| call to call @@ -1155,9 +1155,9 @@ cfg.rb: #-----| -> key # 101| key -#-----| -> kwargs +#-----| -> **kwargs -# 101| kwargs +# 101| **kwargs #-----| -> value # 102| call to puts @@ -1513,7 +1513,7 @@ cfg.rb: # 149| silly #-----| -> method -# 149| x +# 149| *x #-----| -> x # 150| call to puts diff --git a/ql/test/library-tests/variables/parameter.expected b/ql/test/library-tests/variables/parameter.expected index 959f8cfdc14..6e21d46b212 100644 --- a/ql/test/library-tests/variables/parameter.expected +++ b/ql/test/library-tests/variables/parameter.expected @@ -12,17 +12,17 @@ parameterVariable | parameters.rb:16:16:16:18 | key | parameters.rb:16:16:16:18 | key | | parameters.rb:16:21:16:25 | value | parameters.rb:16:21:16:25 | value | | parameters.rb:21:16:21:21 | &block | parameters.rb:21:17:21:21 | block | -| parameters.rb:25:15:25:30 | name | parameters.rb:25:15:25:18 | name | -| parameters.rb:25:33:25:50 | size | parameters.rb:25:33:25:36 | size | -| parameters.rb:30:15:30:20 | first | parameters.rb:30:15:30:19 | first | -| parameters.rb:30:24:30:33 | middle | parameters.rb:30:24:30:29 | middle | -| parameters.rb:30:36:30:40 | last | parameters.rb:30:36:30:39 | last | -| parameters.rb:35:11:35:21 | a | parameters.rb:35:11:35:11 | a | -| parameters.rb:40:12:40:19 | d | parameters.rb:40:12:40:12 | d | +| parameters.rb:25:15:25:18 | name | parameters.rb:25:15:25:18 | name | +| parameters.rb:25:33:25:36 | size | parameters.rb:25:33:25:36 | size | +| parameters.rb:30:15:30:19 | first | parameters.rb:30:15:30:19 | first | +| parameters.rb:30:24:30:29 | middle | parameters.rb:30:24:30:29 | middle | +| parameters.rb:30:36:30:39 | last | parameters.rb:30:36:30:39 | last | +| parameters.rb:35:11:35:11 | a | parameters.rb:35:11:35:11 | a | +| parameters.rb:40:12:40:12 | d | parameters.rb:40:12:40:12 | d | | parameters.rb:45:20:45:20 | _ | parameters.rb:45:20:45:20 | _ | | parameters.rb:49:12:49:16 | (..., ...) | parameters.rb:49:13:49:13 | a | | parameters.rb:49:12:49:16 | (..., ...) | parameters.rb:49:15:49:15 | b | -| parameters.rb:54:14:54:24 | y | parameters.rb:54:14:54:14 | y | +| parameters.rb:54:14:54:14 | y | parameters.rb:54:14:54:14 | y | | scopes.rb:2:14:2:14 | x | scopes.rb:2:14:2:14 | x | | scopes.rb:9:14:9:14 | x | scopes.rb:9:14:9:14 | x | | ssa.rb:1:7:1:7 | b | ssa.rb:1:7:1:7 | b | @@ -30,7 +30,7 @@ parameterVariable | ssa.rb:25:8:25:15 | elements | ssa.rb:25:8:25:15 | elements | | ssa.rb:33:20:33:20 | x | ssa.rb:33:20:33:20 | x | | ssa.rb:44:8:44:8 | b | ssa.rb:44:8:44:8 | b | -| ssa.rb:49:9:49:20 | x | ssa.rb:49:9:49:9 | x | +| ssa.rb:49:9:49:9 | x | ssa.rb:49:9:49:9 | x | | ssa.rb:53:8:53:10 | foo | ssa.rb:53:8:53:10 | foo | | ssa.rb:64:8:64:8 | a | ssa.rb:64:8:64:8 | a | | ssa.rb:66:15:66:15 | a | ssa.rb:66:15:66:15 | a | @@ -41,4 +41,4 @@ parameterVariableNoAccess | nested_scopes.rb:18:26:18:26 | x | nested_scopes.rb:18:26:18:26 | x | | scopes.rb:2:14:2:14 | x | scopes.rb:2:14:2:14 | x | | scopes.rb:9:14:9:14 | x | scopes.rb:9:14:9:14 | x | -| ssa.rb:49:9:49:20 | x | ssa.rb:49:9:49:9 | x | +| ssa.rb:49:9:49:9 | x | ssa.rb:49:9:49:9 | x | diff --git a/ql/test/library-tests/variables/ssa.expected b/ql/test/library-tests/variables/ssa.expected index 513d0029e8c..a8dc90f7495 100644 --- a/ql/test/library-tests/variables/ssa.expected +++ b/ql/test/library-tests/variables/ssa.expected @@ -13,22 +13,22 @@ definition | parameters.rb:1:14:1:14 | x | parameters.rb:1:14:1:14 | x | | parameters.rb:2:4:2:8 | ... = ... | parameters.rb:1:18:1:18 | y | | parameters.rb:7:17:7:22 | client | parameters.rb:7:17:7:22 | client | -| parameters.rb:7:26:7:31 | pizzas | parameters.rb:7:26:7:31 | pizzas | -| parameters.rb:15:17:15:19 | map | parameters.rb:15:17:15:19 | map | +| parameters.rb:7:25:7:31 | *pizzas | parameters.rb:7:26:7:31 | pizzas | +| parameters.rb:15:15:15:19 | **map | parameters.rb:15:17:15:19 | map | | parameters.rb:16:16:16:18 | key | parameters.rb:16:16:16:18 | key | | parameters.rb:16:21:16:25 | value | parameters.rb:16:21:16:25 | value | -| parameters.rb:21:17:21:21 | block | parameters.rb:21:17:21:21 | block | -| parameters.rb:25:15:25:18 | name | parameters.rb:25:15:25:18 | name | -| parameters.rb:25:33:25:36 | size | parameters.rb:25:33:25:36 | size | -| parameters.rb:30:15:30:19 | first | parameters.rb:30:15:30:19 | first | -| parameters.rb:30:24:30:29 | middle | parameters.rb:30:24:30:29 | middle | -| parameters.rb:30:36:30:39 | last | parameters.rb:30:36:30:39 | last | +| parameters.rb:21:16:21:21 | &block | parameters.rb:21:17:21:21 | block | +| parameters.rb:25:15:25:30 | name | parameters.rb:25:15:25:18 | name | +| parameters.rb:25:33:25:50 | size | parameters.rb:25:33:25:36 | size | +| parameters.rb:30:15:30:20 | first | parameters.rb:30:15:30:19 | first | +| parameters.rb:30:24:30:33 | middle | parameters.rb:30:24:30:29 | middle | +| parameters.rb:30:36:30:40 | last | parameters.rb:30:36:30:39 | last | | parameters.rb:35:1:38:3 | | parameters.rb:35:16:35:16 | b | -| parameters.rb:35:11:35:11 | a | parameters.rb:35:11:35:11 | a | +| parameters.rb:35:11:35:21 | a | parameters.rb:35:11:35:11 | a | | parameters.rb:35:16:35:20 | ... = ... | parameters.rb:35:16:35:16 | b | | parameters.rb:37:11:37:11 | phi | parameters.rb:35:16:35:16 | b | | parameters.rb:40:1:43:3 | | parameters.rb:40:15:40:15 | e | -| parameters.rb:40:12:40:12 | d | parameters.rb:40:12:40:12 | d | +| parameters.rb:40:12:40:19 | d | parameters.rb:40:12:40:12 | d | | parameters.rb:40:15:40:19 | ... = ... | parameters.rb:40:15:40:15 | e | | parameters.rb:42:11:42:11 | phi | parameters.rb:40:15:40:15 | e | | parameters.rb:45:20:45:20 | _ | parameters.rb:45:20:45:20 | _ | @@ -36,7 +36,7 @@ definition | parameters.rb:49:15:49:15 | b | parameters.rb:49:15:49:15 | b | | parameters.rb:53:1:53:6 | ... = ... | parameters.rb:53:1:53:1 | x | | parameters.rb:54:9:57:3 | | parameters.rb:53:1:53:1 | x | -| parameters.rb:54:14:54:14 | y | parameters.rb:54:14:54:14 | y | +| parameters.rb:54:14:54:24 | y | parameters.rb:54:14:54:14 | y | | parameters.rb:54:19:54:23 | ... = ... | parameters.rb:53:1:53:1 | x | | parameters.rb:55:9:55:9 | phi | parameters.rb:53:1:53:1 | x | | scopes.rb:4:4:4:8 | ... = ... | scopes.rb:4:4:4:4 | a | @@ -100,26 +100,26 @@ read | parameters.rb:2:4:2:8 | ... = ... | parameters.rb:1:18:1:18 | y | parameters.rb:4:9:4:9 | y | | parameters.rb:7:17:7:22 | client | parameters.rb:7:17:7:22 | client | parameters.rb:9:25:9:30 | client | | parameters.rb:7:17:7:22 | client | parameters.rb:7:17:7:22 | client | parameters.rb:11:41:11:46 | client | -| parameters.rb:7:26:7:31 | pizzas | parameters.rb:7:26:7:31 | pizzas | parameters.rb:8:6:8:11 | pizzas | -| parameters.rb:7:26:7:31 | pizzas | parameters.rb:7:26:7:31 | pizzas | parameters.rb:11:14:11:19 | pizzas | -| parameters.rb:15:17:15:19 | map | parameters.rb:15:17:15:19 | map | parameters.rb:16:3:16:5 | map | +| parameters.rb:7:25:7:31 | *pizzas | parameters.rb:7:26:7:31 | pizzas | parameters.rb:8:6:8:11 | pizzas | +| parameters.rb:7:25:7:31 | *pizzas | parameters.rb:7:26:7:31 | pizzas | parameters.rb:11:14:11:19 | pizzas | +| parameters.rb:15:15:15:19 | **map | parameters.rb:15:17:15:19 | map | parameters.rb:16:3:16:5 | map | | parameters.rb:16:16:16:18 | key | parameters.rb:16:16:16:18 | key | parameters.rb:17:13:17:15 | key | | parameters.rb:16:21:16:25 | value | parameters.rb:16:21:16:25 | value | parameters.rb:17:22:17:26 | value | -| parameters.rb:21:17:21:21 | block | parameters.rb:21:17:21:21 | block | parameters.rb:22:3:22:7 | block | -| parameters.rb:25:15:25:18 | name | parameters.rb:25:15:25:18 | name | parameters.rb:25:40:25:43 | name | -| parameters.rb:25:15:25:18 | name | parameters.rb:25:15:25:18 | name | parameters.rb:26:8:26:11 | name | -| parameters.rb:25:33:25:36 | size | parameters.rb:25:33:25:36 | size | parameters.rb:27:8:27:11 | size | -| parameters.rb:30:15:30:19 | first | parameters.rb:30:15:30:19 | first | parameters.rb:31:11:31:15 | first | -| parameters.rb:30:24:30:29 | middle | parameters.rb:30:24:30:29 | middle | parameters.rb:31:20:31:25 | middle | -| parameters.rb:30:36:30:39 | last | parameters.rb:30:36:30:39 | last | parameters.rb:31:30:31:33 | last | -| parameters.rb:35:11:35:11 | a | parameters.rb:35:11:35:11 | a | parameters.rb:37:11:37:11 | a | +| parameters.rb:21:16:21:21 | &block | parameters.rb:21:17:21:21 | block | parameters.rb:22:3:22:7 | block | +| parameters.rb:25:15:25:30 | name | parameters.rb:25:15:25:18 | name | parameters.rb:25:40:25:43 | name | +| parameters.rb:25:15:25:30 | name | parameters.rb:25:15:25:18 | name | parameters.rb:26:8:26:11 | name | +| parameters.rb:25:33:25:50 | size | parameters.rb:25:33:25:36 | size | parameters.rb:27:8:27:11 | size | +| parameters.rb:30:15:30:20 | first | parameters.rb:30:15:30:19 | first | parameters.rb:31:11:31:15 | first | +| parameters.rb:30:24:30:33 | middle | parameters.rb:30:24:30:29 | middle | parameters.rb:31:20:31:25 | middle | +| parameters.rb:30:36:30:40 | last | parameters.rb:30:36:30:39 | last | parameters.rb:31:30:31:33 | last | +| parameters.rb:35:11:35:21 | a | parameters.rb:35:11:35:11 | a | parameters.rb:37:11:37:11 | a | | parameters.rb:37:11:37:11 | phi | parameters.rb:35:16:35:16 | b | parameters.rb:37:16:37:16 | b | -| parameters.rb:40:12:40:12 | d | parameters.rb:40:12:40:12 | d | parameters.rb:42:11:42:11 | d | +| parameters.rb:40:12:40:19 | d | parameters.rb:40:12:40:12 | d | parameters.rb:42:11:42:11 | d | | parameters.rb:42:11:42:11 | phi | parameters.rb:40:15:40:15 | e | parameters.rb:42:16:42:16 | e | | parameters.rb:45:20:45:20 | _ | parameters.rb:45:20:45:20 | _ | parameters.rb:46:8:46:8 | _ | | parameters.rb:49:13:49:13 | a | parameters.rb:49:13:49:13 | a | parameters.rb:50:11:50:11 | a | | parameters.rb:49:15:49:15 | b | parameters.rb:49:15:49:15 | b | parameters.rb:50:16:50:16 | b | -| parameters.rb:54:14:54:14 | y | parameters.rb:54:14:54:14 | y | parameters.rb:56:9:56:9 | y | +| parameters.rb:54:14:54:24 | y | parameters.rb:54:14:54:14 | y | parameters.rb:56:9:56:9 | y | | parameters.rb:55:9:55:9 | phi | parameters.rb:53:1:53:1 | x | parameters.rb:55:9:55:9 | x | | scopes.rb:4:4:4:8 | ... = ... | scopes.rb:4:4:4:4 | a | scopes.rb:5:9:5:9 | a | | scopes.rb:7:1:7:5 | ... = ... | scopes.rb:7:1:7:1 | a | scopes.rb:8:6:8:6 | a | @@ -181,25 +181,25 @@ firstRead | parameters.rb:2:4:2:8 | ... = ... | parameters.rb:1:18:1:18 | y | parameters.rb:4:9:4:9 | y | | parameters.rb:7:17:7:22 | client | parameters.rb:7:17:7:22 | client | parameters.rb:9:25:9:30 | client | | parameters.rb:7:17:7:22 | client | parameters.rb:7:17:7:22 | client | parameters.rb:11:41:11:46 | client | -| parameters.rb:7:26:7:31 | pizzas | parameters.rb:7:26:7:31 | pizzas | parameters.rb:8:6:8:11 | pizzas | -| parameters.rb:15:17:15:19 | map | parameters.rb:15:17:15:19 | map | parameters.rb:16:3:16:5 | map | +| parameters.rb:7:25:7:31 | *pizzas | parameters.rb:7:26:7:31 | pizzas | parameters.rb:8:6:8:11 | pizzas | +| parameters.rb:15:15:15:19 | **map | parameters.rb:15:17:15:19 | map | parameters.rb:16:3:16:5 | map | | parameters.rb:16:16:16:18 | key | parameters.rb:16:16:16:18 | key | parameters.rb:17:13:17:15 | key | | parameters.rb:16:21:16:25 | value | parameters.rb:16:21:16:25 | value | parameters.rb:17:22:17:26 | value | -| parameters.rb:21:17:21:21 | block | parameters.rb:21:17:21:21 | block | parameters.rb:22:3:22:7 | block | -| parameters.rb:25:15:25:18 | name | parameters.rb:25:15:25:18 | name | parameters.rb:25:40:25:43 | name | -| parameters.rb:25:15:25:18 | name | parameters.rb:25:15:25:18 | name | parameters.rb:26:8:26:11 | name | -| parameters.rb:25:33:25:36 | size | parameters.rb:25:33:25:36 | size | parameters.rb:27:8:27:11 | size | -| parameters.rb:30:15:30:19 | first | parameters.rb:30:15:30:19 | first | parameters.rb:31:11:31:15 | first | -| parameters.rb:30:24:30:29 | middle | parameters.rb:30:24:30:29 | middle | parameters.rb:31:20:31:25 | middle | -| parameters.rb:30:36:30:39 | last | parameters.rb:30:36:30:39 | last | parameters.rb:31:30:31:33 | last | -| parameters.rb:35:11:35:11 | a | parameters.rb:35:11:35:11 | a | parameters.rb:37:11:37:11 | a | +| parameters.rb:21:16:21:21 | &block | parameters.rb:21:17:21:21 | block | parameters.rb:22:3:22:7 | block | +| parameters.rb:25:15:25:30 | name | parameters.rb:25:15:25:18 | name | parameters.rb:25:40:25:43 | name | +| parameters.rb:25:15:25:30 | name | parameters.rb:25:15:25:18 | name | parameters.rb:26:8:26:11 | name | +| parameters.rb:25:33:25:50 | size | parameters.rb:25:33:25:36 | size | parameters.rb:27:8:27:11 | size | +| parameters.rb:30:15:30:20 | first | parameters.rb:30:15:30:19 | first | parameters.rb:31:11:31:15 | first | +| parameters.rb:30:24:30:33 | middle | parameters.rb:30:24:30:29 | middle | parameters.rb:31:20:31:25 | middle | +| parameters.rb:30:36:30:40 | last | parameters.rb:30:36:30:39 | last | parameters.rb:31:30:31:33 | last | +| parameters.rb:35:11:35:21 | a | parameters.rb:35:11:35:11 | a | parameters.rb:37:11:37:11 | a | | parameters.rb:37:11:37:11 | phi | parameters.rb:35:16:35:16 | b | parameters.rb:37:16:37:16 | b | -| parameters.rb:40:12:40:12 | d | parameters.rb:40:12:40:12 | d | parameters.rb:42:11:42:11 | d | +| parameters.rb:40:12:40:19 | d | parameters.rb:40:12:40:12 | d | parameters.rb:42:11:42:11 | d | | parameters.rb:42:11:42:11 | phi | parameters.rb:40:15:40:15 | e | parameters.rb:42:16:42:16 | e | | parameters.rb:45:20:45:20 | _ | parameters.rb:45:20:45:20 | _ | parameters.rb:46:8:46:8 | _ | | parameters.rb:49:13:49:13 | a | parameters.rb:49:13:49:13 | a | parameters.rb:50:11:50:11 | a | | parameters.rb:49:15:49:15 | b | parameters.rb:49:15:49:15 | b | parameters.rb:50:16:50:16 | b | -| parameters.rb:54:14:54:14 | y | parameters.rb:54:14:54:14 | y | parameters.rb:56:9:56:9 | y | +| parameters.rb:54:14:54:24 | y | parameters.rb:54:14:54:14 | y | parameters.rb:56:9:56:9 | y | | parameters.rb:55:9:55:9 | phi | parameters.rb:53:1:53:1 | x | parameters.rb:55:9:55:9 | x | | scopes.rb:4:4:4:8 | ... = ... | scopes.rb:4:4:4:4 | a | scopes.rb:5:9:5:9 | a | | scopes.rb:7:1:7:5 | ... = ... | scopes.rb:7:1:7:1 | a | scopes.rb:8:6:8:6 | a | @@ -250,25 +250,25 @@ lastRead | parameters.rb:2:4:2:8 | ... = ... | parameters.rb:1:18:1:18 | y | parameters.rb:4:9:4:9 | y | | parameters.rb:7:17:7:22 | client | parameters.rb:7:17:7:22 | client | parameters.rb:9:25:9:30 | client | | parameters.rb:7:17:7:22 | client | parameters.rb:7:17:7:22 | client | parameters.rb:11:41:11:46 | client | -| parameters.rb:7:26:7:31 | pizzas | parameters.rb:7:26:7:31 | pizzas | parameters.rb:8:6:8:11 | pizzas | -| parameters.rb:7:26:7:31 | pizzas | parameters.rb:7:26:7:31 | pizzas | parameters.rb:11:14:11:19 | pizzas | -| parameters.rb:15:17:15:19 | map | parameters.rb:15:17:15:19 | map | parameters.rb:16:3:16:5 | map | +| parameters.rb:7:25:7:31 | *pizzas | parameters.rb:7:26:7:31 | pizzas | parameters.rb:8:6:8:11 | pizzas | +| parameters.rb:7:25:7:31 | *pizzas | parameters.rb:7:26:7:31 | pizzas | parameters.rb:11:14:11:19 | pizzas | +| parameters.rb:15:15:15:19 | **map | parameters.rb:15:17:15:19 | map | parameters.rb:16:3:16:5 | map | | parameters.rb:16:16:16:18 | key | parameters.rb:16:16:16:18 | key | parameters.rb:17:13:17:15 | key | | parameters.rb:16:21:16:25 | value | parameters.rb:16:21:16:25 | value | parameters.rb:17:22:17:26 | value | -| parameters.rb:21:17:21:21 | block | parameters.rb:21:17:21:21 | block | parameters.rb:22:3:22:7 | block | -| parameters.rb:25:15:25:18 | name | parameters.rb:25:15:25:18 | name | parameters.rb:26:8:26:11 | name | -| parameters.rb:25:33:25:36 | size | parameters.rb:25:33:25:36 | size | parameters.rb:27:8:27:11 | size | -| parameters.rb:30:15:30:19 | first | parameters.rb:30:15:30:19 | first | parameters.rb:31:11:31:15 | first | -| parameters.rb:30:24:30:29 | middle | parameters.rb:30:24:30:29 | middle | parameters.rb:31:20:31:25 | middle | -| parameters.rb:30:36:30:39 | last | parameters.rb:30:36:30:39 | last | parameters.rb:31:30:31:33 | last | -| parameters.rb:35:11:35:11 | a | parameters.rb:35:11:35:11 | a | parameters.rb:37:11:37:11 | a | +| parameters.rb:21:16:21:21 | &block | parameters.rb:21:17:21:21 | block | parameters.rb:22:3:22:7 | block | +| parameters.rb:25:15:25:30 | name | parameters.rb:25:15:25:18 | name | parameters.rb:26:8:26:11 | name | +| parameters.rb:25:33:25:50 | size | parameters.rb:25:33:25:36 | size | parameters.rb:27:8:27:11 | size | +| parameters.rb:30:15:30:20 | first | parameters.rb:30:15:30:19 | first | parameters.rb:31:11:31:15 | first | +| parameters.rb:30:24:30:33 | middle | parameters.rb:30:24:30:29 | middle | parameters.rb:31:20:31:25 | middle | +| parameters.rb:30:36:30:40 | last | parameters.rb:30:36:30:39 | last | parameters.rb:31:30:31:33 | last | +| parameters.rb:35:11:35:21 | a | parameters.rb:35:11:35:11 | a | parameters.rb:37:11:37:11 | a | | parameters.rb:37:11:37:11 | phi | parameters.rb:35:16:35:16 | b | parameters.rb:37:16:37:16 | b | -| parameters.rb:40:12:40:12 | d | parameters.rb:40:12:40:12 | d | parameters.rb:42:11:42:11 | d | +| parameters.rb:40:12:40:19 | d | parameters.rb:40:12:40:12 | d | parameters.rb:42:11:42:11 | d | | parameters.rb:42:11:42:11 | phi | parameters.rb:40:15:40:15 | e | parameters.rb:42:16:42:16 | e | | parameters.rb:45:20:45:20 | _ | parameters.rb:45:20:45:20 | _ | parameters.rb:46:8:46:8 | _ | | parameters.rb:49:13:49:13 | a | parameters.rb:49:13:49:13 | a | parameters.rb:50:11:50:11 | a | | parameters.rb:49:15:49:15 | b | parameters.rb:49:15:49:15 | b | parameters.rb:50:16:50:16 | b | -| parameters.rb:54:14:54:14 | y | parameters.rb:54:14:54:14 | y | parameters.rb:56:9:56:9 | y | +| parameters.rb:54:14:54:24 | y | parameters.rb:54:14:54:14 | y | parameters.rb:56:9:56:9 | y | | parameters.rb:55:9:55:9 | phi | parameters.rb:53:1:53:1 | x | parameters.rb:55:9:55:9 | x | | scopes.rb:4:4:4:8 | ... = ... | scopes.rb:4:4:4:4 | a | scopes.rb:5:9:5:9 | a | | scopes.rb:7:1:7:5 | ... = ... | scopes.rb:7:1:7:1 | a | scopes.rb:8:6:8:6 | a | @@ -306,8 +306,8 @@ lastRead | ssa.rb:84:10:86:8 | | ssa.rb:82:3:82:10 | captured | ssa.rb:85:15:85:22 | captured | adjacentReads | nested_scopes.rb:13:11:13:15 | ... = ... | nested_scopes.rb:13:11:13:11 | a | nested_scopes.rb:14:16:14:16 | a | nested_scopes.rb:15:11:15:11 | a | -| parameters.rb:7:26:7:31 | pizzas | parameters.rb:7:26:7:31 | pizzas | parameters.rb:8:6:8:11 | pizzas | parameters.rb:11:14:11:19 | pizzas | -| parameters.rb:25:15:25:18 | name | parameters.rb:25:15:25:18 | name | parameters.rb:25:40:25:43 | name | parameters.rb:26:8:26:11 | name | +| parameters.rb:7:25:7:31 | *pizzas | parameters.rb:7:26:7:31 | pizzas | parameters.rb:8:6:8:11 | pizzas | parameters.rb:11:14:11:19 | pizzas | +| parameters.rb:25:15:25:30 | name | parameters.rb:25:15:25:18 | name | parameters.rb:25:40:25:43 | name | parameters.rb:26:8:26:11 | name | | scopes.rb:9:9:18:3 | | scopes.rb:7:1:7:1 | a | scopes.rb:10:9:10:9 | a | scopes.rb:11:4:11:4 | a | | scopes.rb:27:1:27:5 | ... = ... | scopes.rb:27:1:27:1 | x | scopes.rb:28:8:28:8 | x | scopes.rb:31:10:31:10 | x | | scopes.rb:27:1:27:5 | ... = ... | scopes.rb:27:1:27:1 | x | scopes.rb:31:10:31:10 | x | scopes.rb:34:7:34:7 | x | diff --git a/ql/test/library-tests/variables/varaccess.expected b/ql/test/library-tests/variables/varaccess.expected index 5202aa3754c..596bd750fea 100644 --- a/ql/test/library-tests/variables/varaccess.expected +++ b/ql/test/library-tests/variables/varaccess.expected @@ -51,18 +51,18 @@ variableAccess | parameters.rb:3:9:3:9 | x | parameters.rb:1:14:1:14 | x | parameters.rb:1:9:5:3 | block scope | | parameters.rb:4:9:4:9 | y | parameters.rb:1:18:1:18 | y | parameters.rb:1:9:5:3 | block scope | | parameters.rb:7:17:7:22 | client | parameters.rb:7:17:7:22 | client | parameters.rb:7:1:13:3 | method scope for order_pizza | -| parameters.rb:7:26:7:31 | pizzas | parameters.rb:7:26:7:31 | pizzas | parameters.rb:7:1:13:3 | method scope for order_pizza | +| parameters.rb:7:25:7:31 | *pizzas | parameters.rb:7:26:7:31 | pizzas | parameters.rb:7:1:13:3 | method scope for order_pizza | | parameters.rb:8:6:8:11 | pizzas | parameters.rb:7:26:7:31 | pizzas | parameters.rb:7:1:13:3 | method scope for order_pizza | | parameters.rb:9:25:9:30 | client | parameters.rb:7:17:7:22 | client | parameters.rb:7:1:13:3 | method scope for order_pizza | | parameters.rb:11:14:11:19 | pizzas | parameters.rb:7:26:7:31 | pizzas | parameters.rb:7:1:13:3 | method scope for order_pizza | | parameters.rb:11:41:11:46 | client | parameters.rb:7:17:7:22 | client | parameters.rb:7:1:13:3 | method scope for order_pizza | -| parameters.rb:15:17:15:19 | map | parameters.rb:15:17:15:19 | map | parameters.rb:15:1:19:3 | method scope for print_map | +| parameters.rb:15:15:15:19 | **map | parameters.rb:15:17:15:19 | map | parameters.rb:15:1:19:3 | method scope for print_map | | parameters.rb:16:3:16:5 | map | parameters.rb:15:17:15:19 | map | parameters.rb:15:1:19:3 | method scope for print_map | | parameters.rb:16:16:16:18 | key | parameters.rb:16:16:16:18 | key | parameters.rb:16:12:18:5 | block scope | | parameters.rb:16:21:16:25 | value | parameters.rb:16:21:16:25 | value | parameters.rb:16:12:18:5 | block scope | | parameters.rb:17:13:17:15 | key | parameters.rb:16:16:16:18 | key | parameters.rb:16:12:18:5 | block scope | | parameters.rb:17:22:17:26 | value | parameters.rb:16:21:16:25 | value | parameters.rb:16:12:18:5 | block scope | -| parameters.rb:21:17:21:21 | block | parameters.rb:21:17:21:21 | block | parameters.rb:21:1:23:3 | method scope for call_block | +| parameters.rb:21:16:21:21 | &block | parameters.rb:21:17:21:21 | block | parameters.rb:21:1:23:3 | method scope for call_block | | parameters.rb:22:3:22:7 | block | parameters.rb:21:17:21:21 | block | parameters.rb:21:1:23:3 | method scope for call_block | | parameters.rb:25:15:25:18 | name | parameters.rb:25:15:25:18 | name | parameters.rb:25:1:28:3 | method scope for opt_param | | parameters.rb:25:33:25:36 | size | parameters.rb:25:33:25:36 | size | parameters.rb:25:1:28:3 | method scope for opt_param | @@ -228,11 +228,11 @@ implicitWrite | parameters.rb:1:14:1:14 | x | | parameters.rb:1:18:1:18 | y | | parameters.rb:7:17:7:22 | client | -| parameters.rb:7:26:7:31 | pizzas | -| parameters.rb:15:17:15:19 | map | +| parameters.rb:7:25:7:31 | *pizzas | +| parameters.rb:15:15:15:19 | **map | | parameters.rb:16:16:16:18 | key | | parameters.rb:16:21:16:25 | value | -| parameters.rb:21:17:21:21 | block | +| parameters.rb:21:16:21:21 | &block | | parameters.rb:25:15:25:18 | name | | parameters.rb:25:33:25:36 | size | | parameters.rb:30:15:30:19 | first |