mirror of
https://github.com/github/codeql.git
synced 2026-02-23 10:23:41 +01:00
Simplify representation of calls that use scope resolution operator.
Now, `Foo::bar` is a call where the receiver expr is `Foo`.
This commit is contained in:
@@ -9,10 +9,6 @@ module Call {
|
||||
|
||||
abstract string getMethodName();
|
||||
|
||||
abstract Expr getMethodNameScopeExpr();
|
||||
|
||||
abstract predicate methodNameHasGlobalScope();
|
||||
|
||||
abstract Expr getArgument(int n);
|
||||
|
||||
abstract Block getBlock();
|
||||
@@ -29,10 +25,6 @@ module Call {
|
||||
|
||||
final override string getMethodName() { result = generated.getValue() }
|
||||
|
||||
final override Expr getMethodNameScopeExpr() { none() }
|
||||
|
||||
final override predicate methodNameHasGlobalScope() { none() }
|
||||
|
||||
final override Expr getArgument(int n) { none() }
|
||||
|
||||
final override Block getBlock() { none() }
|
||||
@@ -48,14 +40,10 @@ module Call {
|
||||
not access(identifier, _)
|
||||
}
|
||||
|
||||
final override Expr getReceiver() { none() }
|
||||
final override Expr getReceiver() { result = generated.getScope() }
|
||||
|
||||
final override string getMethodName() { result = identifier.getValue() }
|
||||
|
||||
final override Expr getMethodNameScopeExpr() { result = generated.getScope() }
|
||||
|
||||
final override predicate methodNameHasGlobalScope() { not exists(generated.getScope()) }
|
||||
|
||||
final override Expr getArgument(int n) { none() }
|
||||
|
||||
final override Block getBlock() { none() }
|
||||
@@ -64,7 +52,11 @@ module Call {
|
||||
private class RegularCallRange extends Call::Range, @call {
|
||||
final override Generated::Call generated;
|
||||
|
||||
final override Expr getReceiver() { result = generated.getReceiver() }
|
||||
final override Expr getReceiver() {
|
||||
if exists(generated.getReceiver())
|
||||
then result = generated.getReceiver()
|
||||
else result = generated.getMethod().(Generated::ScopeResolution).getScope()
|
||||
}
|
||||
|
||||
final override string getMethodName() {
|
||||
result = generated.getMethod().(Generated::Token).getValue() or
|
||||
@@ -72,17 +64,6 @@ module Call {
|
||||
generated.getMethod().(Generated::ScopeResolution).getName().(Generated::Token).getValue()
|
||||
}
|
||||
|
||||
final override Expr getMethodNameScopeExpr() {
|
||||
result = generated.getMethod().(Generated::ScopeResolution).getScope()
|
||||
}
|
||||
|
||||
final override predicate methodNameHasGlobalScope() {
|
||||
exists(Generated::ScopeResolution sr |
|
||||
sr = generated.getMethod() and
|
||||
not exists(sr.getScope())
|
||||
)
|
||||
}
|
||||
|
||||
final override Expr getArgument(int n) { result = generated.getArguments().getChild(n) }
|
||||
|
||||
final override Block getBlock() { result = generated.getBlock() }
|
||||
@@ -97,10 +78,6 @@ module YieldCall {
|
||||
|
||||
final override string getMethodName() { result = "yield" }
|
||||
|
||||
final override Expr getMethodNameScopeExpr() { none() }
|
||||
|
||||
final override predicate methodNameHasGlobalScope() { none() }
|
||||
|
||||
final override Expr getArgument(int n) { result = generated.getChild().getChild(n) }
|
||||
|
||||
final override Block getBlock() { none() }
|
||||
@@ -121,10 +98,6 @@ module SuperCall {
|
||||
|
||||
final override string getMethodName() { result = generated.getValue() }
|
||||
|
||||
final override Expr getMethodNameScopeExpr() { none() }
|
||||
|
||||
final override predicate methodNameHasGlobalScope() { none() }
|
||||
|
||||
final override Expr getArgument(int n) { none() }
|
||||
|
||||
final override Block getBlock() { none() }
|
||||
@@ -141,10 +114,6 @@ module SuperCall {
|
||||
result = generated.getMethod().(Generated::Super).getValue()
|
||||
}
|
||||
|
||||
final override Expr getMethodNameScopeExpr() { none() }
|
||||
|
||||
final override predicate methodNameHasGlobalScope() { none() }
|
||||
|
||||
final override Expr getArgument(int n) { result = generated.getArguments().getChild(n) }
|
||||
|
||||
final override Block getBlock() { result = generated.getBlock() }
|
||||
|
||||
Reference in New Issue
Block a user