PS: More AST cleanup.

This commit is contained in:
Mathias Vorreiter Pedersen
2024-10-02 14:45:20 +01:00
parent 655cb8ef9a
commit 9049407fb4
4 changed files with 20 additions and 4 deletions

View File

@@ -5,11 +5,15 @@ class InvokeMemberExpr extends @invoke_member_expression, MemberExprBase {
Expr getQualifier() { invoke_member_expression(this, result, _) }
string getName() { result = this.getMember().(StringConstExpr).getValue().getValue() }
CmdElement getMember() { invoke_member_expression(this, _, result) }
Expr getArgument(int i) { invoke_member_expression_argument(this, i, result) }
Expr getAnArgument() { invoke_member_expression_argument(this, _, result) }
override string toString() { result = "call to " + this.getMember() }
override string toString() { result = "call to " + this.getName() }
override predicate isStatic() { this.getQualifier() instanceof TypeNameExpr }
}

View File

@@ -12,7 +12,7 @@ class MemberExpr extends @member_expression, MemberExprBase {
predicate isNullConditional() { member_expression(this, _, _, true, _) }
predicate isStatic() { member_expression(this, _, _, _, true) }
override predicate isStatic() { member_expression(this, _, _, _, true) }
final override string toString() { result = this.getMember().toString() }
}

View File

@@ -1,3 +1,5 @@
import powershell
class MemberExprBase extends @member_expression_base, Expr { }
class MemberExprBase extends @member_expression_base, Expr {
predicate isStatic() { none() }
}

View File

@@ -128,6 +128,8 @@ abstract private class NonExprChildMapping extends ChildMapping {
abstract private class AbstractCallCfgNode extends AstCfgNode {
override string getAPrimaryQlClass() { result = "CfgCall" }
abstract string getName();
ExprCfgNode getQualifier() { none() }
abstract ExprCfgNode getArgument(int i);
@@ -137,6 +139,8 @@ abstract private class AbstractCallCfgNode extends AstCfgNode {
abstract ExprCfgNode getNamedArgument(string name);
abstract ExprCfgNode getAnArgument();
abstract ExprCfgNode getCommand();
}
final class CallCfgNode = AbstractCallCfgNode;
@@ -221,6 +225,10 @@ module ExprNodes {
final override ExprCfgNode getNamedArgument(string name) { none() }
final override ExprCfgNode getAnArgument() { e.hasCfgChild(e.getAnArgument(), this, result) }
final override string getName() { none() }
final override ExprCfgNode getCommand() { none() }
}
/** A control-flow node that wraps a qualifier expression. */
@@ -308,7 +316,9 @@ module StmtNodes {
override ExprCfgNode getAnArgument() { s.hasCfgChild(s.getAnArgument(), this, result) }
ExprCfgNode getCommand() { s.hasCfgChild(s.getCommand(), this, result) }
final override ExprCfgNode getCommand() { s.hasCfgChild(s.getCommand(), this, result) }
final override string getName() { result = s.getCmdName().getValue().getValue() }
}
private class AssignStmtChildMapping extends NonExprChildMapping, AssignStmt {