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
70
70
import semmle.code.powershell.StringConstantExpression
71
71
import semmle.code.powershell.MemberExpr
72
72
import semmle.code.powershell.InvokeMemberExpression
73
+ import semmle.code.powershell.Call
73
74
import semmle.code.powershell.SubExpression
75
+ import semmle.code.powershell.ErrorExpr
74
76
import semmle.code.powershell.ConvertExpr
75
77
import semmle.code.powershell.IndexExpr
76
78
import 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 {
15
15
16
16
CmdElement getElement ( int i ) { command_command_element ( this , i , result ) }
17
17
18
+ Expr getCommand ( ) { result = this .getElement ( 0 ) }
19
+
18
20
StringConstExpr getCmdName ( ) { result = this .getElement ( 0 ) }
19
21
20
22
Expr getArgument ( int i ) {
@@ -43,7 +45,7 @@ class Cmd extends @command, CmdBase {
43
45
44
46
/**
45
47
* An argument to a command.
46
- *
48
+ *
47
49
* The argument may be named or positional.
48
50
*/
49
51
class 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