mirror of
https://github.com/github/codeql.git
synced 2026-04-25 16:55:19 +02:00
C#: Extract stackalloc information
This commit is contained in:
@@ -372,6 +372,11 @@ class ArrayCreation extends Expr, @array_creation_expr {
|
||||
override string toString() { result = "array creation of type " + this.getType().getName() }
|
||||
}
|
||||
|
||||
/** A `stackalloc` array creation. */
|
||||
class Stackalloc extends ArrayCreation {
|
||||
Stackalloc() { stackalloc_array_creation(this) }
|
||||
}
|
||||
|
||||
/**
|
||||
* An anonymous function. Either a lambda expression (`LambdaExpr`) or an
|
||||
* anonymous method expression (`AnonymousMethodExpr`).
|
||||
|
||||
@@ -1084,6 +1084,9 @@ implicitly_typed_array_creation(
|
||||
explicitly_sized_array_creation(
|
||||
unique int id: @array_creation_expr ref);
|
||||
|
||||
stackalloc_array_creation(
|
||||
unique int id: @array_creation_expr ref);
|
||||
|
||||
mutator_invocation_mode(
|
||||
unique int id: @operator_invocation_expr ref,
|
||||
int mode: int ref /* prefix = 1, postfix = 2*/);
|
||||
|
||||
@@ -1,6 +1,20 @@
|
||||
arrayCreation
|
||||
| csharp73.cs:9:20:9:49 | array creation of type Char* | 0 | csharp73.cs:9:20:9:49 | 2 |
|
||||
| csharp73.cs:10:20:10:45 | array creation of type Char* | 0 | csharp73.cs:10:36:10:36 | 1 |
|
||||
| csharp73.cs:11:20:11:37 | array creation of type Char[] | 0 | csharp73.cs:11:20:11:37 | 1 |
|
||||
| csharp73.cs:12:20:12:38 | array creation of type Char* | 0 | csharp73.cs:12:36:12:37 | 10 |
|
||||
| csharp73.cs:13:20:13:31 | array creation of type Char[] | 0 | csharp73.cs:13:29:13:30 | 10 |
|
||||
| csharp73.cs:22:23:22:33 | array creation of type Int32[] | 0 | csharp73.cs:22:31:22:32 | 10 |
|
||||
arrayElement
|
||||
| csharp73.cs:9:20:9:49 | array creation of type Char* | 0 | csharp73.cs:9:40:9:42 | x |
|
||||
| csharp73.cs:9:20:9:49 | array creation of type Char* | 1 | csharp73.cs:9:45:9:47 | y |
|
||||
| csharp73.cs:10:20:10:45 | array creation of type Char* | 0 | csharp73.cs:10:41:10:43 | x |
|
||||
| csharp73.cs:11:20:11:37 | array creation of type Char[] | 0 | csharp73.cs:11:33:11:35 | x |
|
||||
| csharp73.cs:14:20:14:43 | array creation of type Int32* | 0 | csharp73.cs:14:35:14:35 | 1 |
|
||||
| csharp73.cs:14:20:14:43 | array creation of type Int32* | 1 | csharp73.cs:14:38:14:38 | 2 |
|
||||
| csharp73.cs:14:20:14:43 | array creation of type Int32* | 2 | csharp73.cs:14:41:14:41 | 3 |
|
||||
stackalloc
|
||||
| csharp73.cs:9:20:9:49 | array creation of type Char* |
|
||||
| csharp73.cs:10:20:10:45 | array creation of type Char* |
|
||||
| csharp73.cs:12:20:12:38 | array creation of type Char* |
|
||||
| csharp73.cs:14:20:14:43 | array creation of type Int32* |
|
||||
|
||||
@@ -1,4 +1,11 @@
|
||||
import csharp
|
||||
|
||||
from ArrayCreation creation, int i
|
||||
select creation, i, creation.getLengthArgument(i)
|
||||
query predicate arrayCreation(ArrayCreation creation, int i, Expr length) {
|
||||
length = creation.getLengthArgument(i)
|
||||
}
|
||||
|
||||
query predicate arrayElement(ArrayCreation array, int i, Expr element) {
|
||||
element = array.getInitializer().getElement(i)
|
||||
}
|
||||
|
||||
query predicate stackalloc(Stackalloc a) { any() }
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
| csharp73.cs:9:20:9:49 | array creation of type Char* | 0 | csharp73.cs:9:40:9:42 | x |
|
||||
| csharp73.cs:9:20:9:49 | array creation of type Char* | 1 | csharp73.cs:9:45:9:47 | y |
|
||||
| csharp73.cs:10:20:10:45 | array creation of type Char* | 0 | csharp73.cs:10:41:10:43 | x |
|
||||
| csharp73.cs:11:20:11:37 | array creation of type Char[] | 0 | csharp73.cs:11:33:11:35 | x |
|
||||
| csharp73.cs:14:20:14:43 | array creation of type Int32* | 0 | csharp73.cs:14:35:14:35 | 1 |
|
||||
| csharp73.cs:14:20:14:43 | array creation of type Int32* | 1 | csharp73.cs:14:38:14:38 | 2 |
|
||||
| csharp73.cs:14:20:14:43 | array creation of type Int32* | 2 | csharp73.cs:14:41:14:41 | 3 |
|
||||
@@ -1,4 +0,0 @@
|
||||
import csharp
|
||||
|
||||
from ArrayCreation array, int i
|
||||
select array, i, array.getInitializer().getElement(i)
|
||||
Reference in New Issue
Block a user