mirror of
https://github.com/github/codeql.git
synced 2026-02-11 20:51:06 +01:00
Merge pull request #21285 from michaelnebel/csharp14/implicittypedlambdaparametermodifiers
C# 14: [TEST ONLY] Simple lambda parameters with modifiers.
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
public class LambdaParameterModifiers
|
||||
{
|
||||
delegate void MyRef(ref int i1);
|
||||
delegate void MyOut(out int i2);
|
||||
delegate void MyIn(in int i3);
|
||||
delegate void MyRefReadonly(ref readonly int i4);
|
||||
|
||||
delegate void MyScopedRef(scoped ref int i5);
|
||||
|
||||
public void M()
|
||||
{
|
||||
// Explicitly typed lambda parameters with modifiers.
|
||||
var l1 = (ref int x1) => x1;
|
||||
var l2 = (out int x2) => x2 = 0;
|
||||
var l3 = (in int x3) => x3;
|
||||
var l4 = (ref readonly int x4) => x4;
|
||||
var l5 = (scoped ref int x5) => x5;
|
||||
var l6 = (params IEnumerable<int> x6) => x6;
|
||||
|
||||
// Implicitly typed lambda parameters with modifiers.
|
||||
MyRef l7 = (ref i1) => { };
|
||||
MyOut l8 = (out i2) => i2 = 0;
|
||||
MyIn l9 = (in i3) => { };
|
||||
MyRefReadonly l10 = (ref readonly i4) => { };
|
||||
MyScopedRef l11 = (scoped ref i5) => { };
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,15 @@
|
||||
parameterModifier
|
||||
| LambdaParameterModifiers.cs:16:27:16:28 | x1 | 1 |
|
||||
| LambdaParameterModifiers.cs:17:27:17:28 | x2 | 2 |
|
||||
| LambdaParameterModifiers.cs:18:26:18:27 | x3 | 5 |
|
||||
| LambdaParameterModifiers.cs:19:36:19:37 | x4 | 6 |
|
||||
| LambdaParameterModifiers.cs:20:34:20:35 | x5 | 1 |
|
||||
| LambdaParameterModifiers.cs:21:43:21:44 | x6 | 3 |
|
||||
| LambdaParameterModifiers.cs:24:25:24:26 | i1 | 1 |
|
||||
| LambdaParameterModifiers.cs:25:25:25:26 | i2 | 2 |
|
||||
| LambdaParameterModifiers.cs:26:23:26:24 | i3 | 5 |
|
||||
| LambdaParameterModifiers.cs:27:43:27:44 | i4 | 6 |
|
||||
| LambdaParameterModifiers.cs:28:39:28:40 | i5 | 1 |
|
||||
| ParameterModifiers.cs:6:27:6:28 | p1 | 0 |
|
||||
| ParameterModifiers.cs:7:30:7:31 | p2 | 5 |
|
||||
| ParameterModifiers.cs:9:31:9:32 | p3 | 2 |
|
||||
@@ -9,13 +20,24 @@ parameterModifier
|
||||
parameterIsValue
|
||||
| ParameterModifiers.cs:6:27:6:28 | p1 |
|
||||
parameterIsIn
|
||||
| LambdaParameterModifiers.cs:18:26:18:27 | x3 |
|
||||
| LambdaParameterModifiers.cs:26:23:26:24 | i3 |
|
||||
| ParameterModifiers.cs:7:30:7:31 | p2 |
|
||||
parameterIsOut
|
||||
| LambdaParameterModifiers.cs:17:27:17:28 | x2 |
|
||||
| LambdaParameterModifiers.cs:25:25:25:26 | i2 |
|
||||
| ParameterModifiers.cs:9:31:9:32 | p3 |
|
||||
parameterIsRef
|
||||
| LambdaParameterModifiers.cs:16:27:16:28 | x1 |
|
||||
| LambdaParameterModifiers.cs:20:34:20:35 | x5 |
|
||||
| LambdaParameterModifiers.cs:24:25:24:26 | i1 |
|
||||
| LambdaParameterModifiers.cs:28:39:28:40 | i5 |
|
||||
| ParameterModifiers.cs:14:31:14:32 | p4 |
|
||||
parameterIsParams
|
||||
| LambdaParameterModifiers.cs:21:43:21:44 | x6 |
|
||||
| ParameterModifiers.cs:16:36:16:37 | p5 |
|
||||
| ParameterModifiers.cs:20:47:20:48 | p7 |
|
||||
parameterIsReadonlyRef
|
||||
| LambdaParameterModifiers.cs:19:36:19:37 | x4 |
|
||||
| LambdaParameterModifiers.cs:27:43:27:44 | i4 |
|
||||
| ParameterModifiers.cs:18:40:18:41 | p6 |
|
||||
|
||||
@@ -1,7 +1,12 @@
|
||||
import csharp
|
||||
|
||||
class TestParameter extends Parameter {
|
||||
TestParameter() { this.getFile().getBaseName() = "ParameterModifiers.cs" }
|
||||
TestParameter() {
|
||||
this.getFile().getBaseName() = "ParameterModifiers.cs"
|
||||
or
|
||||
this.getFile().getBaseName() = "LambdaParameterModifiers.cs" and
|
||||
this.getCallable() instanceof LambdaExpr
|
||||
}
|
||||
}
|
||||
|
||||
query predicate parameterModifier(TestParameter p, int kind) { params(p, _, _, _, kind, _, _) }
|
||||
|
||||
Reference in New Issue
Block a user