File tree Expand file tree Collapse file tree 4 files changed +41
-1
lines changed Expand file tree Collapse file tree 4 files changed +41
-1
lines changed Original file line number Diff line number Diff line change @@ -70,7 +70,9 @@ import semmle.code.powershell.Pipeline
7070import semmle.code.powershell.StringConstantExpression
7171import semmle.code.powershell.MemberExpr
7272import semmle.code.powershell.InvokeMemberExpression
73+ import semmle.code.powershell.Call
7374import semmle.code.powershell.SubExpression
75+ import semmle.code.powershell.ErrorExpr
7476import semmle.code.powershell.ConvertExpr
7577import semmle.code.powershell.IndexExpr
7678import semmle.code.powershell.HashTable
Original file line number Diff line number Diff line change 1+ import powershell
2+
3+ abstract private class AbstractCall extends Ast {
4+ abstract Expr getCommand ( ) ;
5+
6+ abstract Expr getArgument ( int i ) ;
7+
8+ Expr getNamedArgument ( string name ) { none ( ) }
9+
10+ Expr getQualifier ( ) { none ( ) }
11+ }
12+
13+ private class CmdCall extends AbstractCall instanceof Cmd {
14+ final override Expr getCommand ( ) { result = Cmd .super .getCommand ( ) }
15+
16+ final override Expr getArgument ( int i ) { result = Cmd .super .getArgument ( i ) }
17+
18+ final override Expr getNamedArgument ( string name ) { result = Cmd .super .getNamedArgument ( name ) }
19+ }
20+
21+ private class InvokeMemberCall extends AbstractCall instanceof InvokeMemberExpr {
22+ final override Expr getCommand ( ) { result = super .getMember ( ) }
23+
24+ final override Expr getArgument ( int i ) { result = InvokeMemberExpr .super .getArgument ( i ) }
25+
26+ final override Expr getQualifier ( ) { result = InvokeMemberExpr .super .getQualifier ( ) }
27+ }
28+
29+ final class Call = AbstractCall ;
Original file line number Diff line number Diff line change @@ -15,6 +15,8 @@ class Cmd extends @command, CmdBase {
1515
1616 CmdElement getElement ( int i ) { command_command_element ( this , i , result ) }
1717
18+ Expr getCommand ( ) { result = this .getElement ( 0 ) }
19+
1820 StringConstExpr getCmdName ( ) { result = this .getElement ( 0 ) }
1921
2022 Expr getArgument ( int i ) {
@@ -43,7 +45,7 @@ class Cmd extends @command, CmdBase {
4345
4446/**
4547 * An argument to a command.
46- *
48+ *
4749 * The argument may be named or positional.
4850 */
4951class Argument extends Expr {
Original file line number Diff line number Diff line change 1+ import powershell
2+
3+ class ErrorExpr extends @error_expression, Expr {
4+ final override SourceLocation getLocation ( ) { error_expression_location ( this , result ) }
5+
6+ final override string toString ( ) { result = "error" }
7+ }
You can’t perform that action at this time.
0 commit comments