Skip to content

Commit 6a7e3bf

Browse files
committed
Address comments
1 parent 2921f72 commit 6a7e3bf

File tree

2 files changed

+22
-21
lines changed

2 files changed

+22
-21
lines changed

ql/src/codeql_ruby/ast/Variable.qll

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,6 @@ class VariableReadAccess extends VariableAccess {
163163
class LocalVariableAccess extends VariableAccess, @token_identifier {
164164
final override LocalVariableAccess::Range range;
165165

166-
/** Gets the variable this identifier refers to. */
167166
final override LocalVariable getVariable() { result = range.getVariable() }
168167

169168
final override string getAPrimaryQlClass() {
@@ -198,7 +197,6 @@ class LocalVariableReadAccess extends LocalVariableAccess, VariableReadAccess {
198197
class GlobalVariableAccess extends VariableAccess, @token_global_variable {
199198
final override GlobalVariableAccess::Range range;
200199

201-
/** Gets the variable this identifier refers to. */
202200
final override GlobalVariable getVariable() { result = range.getVariable() }
203201

204202
final override string getAPrimaryQlClass() { result = "GlobalVariableAccess" }
@@ -214,7 +212,6 @@ class GlobalVariableReadAccess extends GlobalVariableAccess, VariableReadAccess
214212
class InstanceVariableAccess extends VariableAccess, @token_instance_variable {
215213
final override InstanceVariableAccess::Range range;
216214

217-
/** Gets the variable this identifier refers to. */
218215
final override InstanceVariable getVariable() { result = range.getVariable() }
219216

220217
final override string getAPrimaryQlClass() { result = "InstanceVariableAccess" }
@@ -224,7 +221,6 @@ class InstanceVariableAccess extends VariableAccess, @token_instance_variable {
224221
class ClassVariableAccess extends VariableAccess, @token_class_variable {
225222
final override ClassVariableAccess::Range range;
226223

227-
/** Gets the variable this identifier refers to. */
228224
final override ClassVariable getVariable() { result = range.getVariable() }
229225

230226
final override string getAPrimaryQlClass() { result = "ClassVariableAccess" }

ql/src/codeql_ruby/ast/internal/Variable.qll

Lines changed: 22 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -14,36 +14,41 @@ private predicate instanceVariableAccess(
1414
) {
1515
name = var.getValue() and
1616
scope = enclosingModuleOrClass(var) and
17-
if
18-
exists(VariableScope method |
19-
method = enclosingMethod(var) and scope = enclosingScope(method.getScopeElement())
20-
)
21-
then instance = true
22-
else instance = false
17+
if exists(enclosingMethod(var)) then instance = true else instance = false
2318
}
2419

2520
private predicate classVariableAccess(Generated::ClassVariable var, string name, VariableScope scope) {
2621
name = var.getValue() and
2722
scope = enclosingModuleOrClass(var)
2823
}
2924

30-
private VariableScope enclosingMethod(Generated::AstNode node) {
31-
exists(VariableScope scope, Callable c |
32-
scope = outerScope*(enclosingScope(node)) and
33-
scope = TCallableScope(c) and
34-
(c instanceof Method or c instanceof SingletonMethod) and
35-
result = scope
25+
private Callable enclosingMethod(Generated::AstNode node) {
26+
parentCallableScope*(enclosingScope(node)) = TCallableScope(result) and
27+
(
28+
result instanceof Method or
29+
result instanceof SingletonMethod
3630
)
3731
}
3832

39-
private VariableScope enclosingModuleOrClass(Generated::AstNode node) {
40-
exists(VariableScope scope | scope = enclosingScope(node) |
41-
if scope instanceof ModuleOrClassScope
42-
then result = scope
43-
else result = enclosingModuleOrClass(scope.getScopeElement())
33+
private TCallableScope parentCallableScope(TCallableScope scope) {
34+
exists(Callable c |
35+
scope = TCallableScope(c) and
36+
not c instanceof Method and
37+
not c instanceof SingletonMethod
38+
|
39+
result = outerScope(scope)
4440
)
4541
}
4642

43+
private VariableScope parentScope(VariableScope scope) {
44+
not scope instanceof ModuleOrClassScope and
45+
result = outerScope(scope)
46+
}
47+
48+
private ModuleOrClassScope enclosingModuleOrClass(Generated::AstNode node) {
49+
result = parentScope*(enclosingScope(node))
50+
}
51+
4752
private predicate parameterAssignment(
4853
CallableScope::Range scope, string name, Generated::Identifier i
4954
) {

0 commit comments

Comments
 (0)