Skip to content

Commit ece8585

Browse files
authored
Merge pull request #21285 from michaelnebel/csharp14/implicittypedlambdaparametermodifiers
C# 14: [TEST ONLY] Simple lambda parameters with modifiers.
2 parents c15ad31 + 6c355a1 commit ece8585

File tree

3 files changed

+58
-1
lines changed

3 files changed

+58
-1
lines changed
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
using System;
2+
using System.Collections.Generic;
3+
4+
public class LambdaParameterModifiers
5+
{
6+
delegate void MyRef(ref int i1);
7+
delegate void MyOut(out int i2);
8+
delegate void MyIn(in int i3);
9+
delegate void MyRefReadonly(ref readonly int i4);
10+
11+
delegate void MyScopedRef(scoped ref int i5);
12+
13+
public void M()
14+
{
15+
// Explicitly typed lambda parameters with modifiers.
16+
var l1 = (ref int x1) => x1;
17+
var l2 = (out int x2) => x2 = 0;
18+
var l3 = (in int x3) => x3;
19+
var l4 = (ref readonly int x4) => x4;
20+
var l5 = (scoped ref int x5) => x5;
21+
var l6 = (params IEnumerable<int> x6) => x6;
22+
23+
// Implicitly typed lambda parameters with modifiers.
24+
MyRef l7 = (ref i1) => { };
25+
MyOut l8 = (out i2) => i2 = 0;
26+
MyIn l9 = (in i3) => { };
27+
MyRefReadonly l10 = (ref readonly i4) => { };
28+
MyScopedRef l11 = (scoped ref i5) => { };
29+
}
30+
}

csharp/ql/test/library-tests/parameters/ParameterModifiers.expected

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,15 @@
11
parameterModifier
2+
| LambdaParameterModifiers.cs:16:27:16:28 | x1 | 1 |
3+
| LambdaParameterModifiers.cs:17:27:17:28 | x2 | 2 |
4+
| LambdaParameterModifiers.cs:18:26:18:27 | x3 | 5 |
5+
| LambdaParameterModifiers.cs:19:36:19:37 | x4 | 6 |
6+
| LambdaParameterModifiers.cs:20:34:20:35 | x5 | 1 |
7+
| LambdaParameterModifiers.cs:21:43:21:44 | x6 | 3 |
8+
| LambdaParameterModifiers.cs:24:25:24:26 | i1 | 1 |
9+
| LambdaParameterModifiers.cs:25:25:25:26 | i2 | 2 |
10+
| LambdaParameterModifiers.cs:26:23:26:24 | i3 | 5 |
11+
| LambdaParameterModifiers.cs:27:43:27:44 | i4 | 6 |
12+
| LambdaParameterModifiers.cs:28:39:28:40 | i5 | 1 |
213
| ParameterModifiers.cs:6:27:6:28 | p1 | 0 |
314
| ParameterModifiers.cs:7:30:7:31 | p2 | 5 |
415
| ParameterModifiers.cs:9:31:9:32 | p3 | 2 |
@@ -9,13 +20,24 @@ parameterModifier
920
parameterIsValue
1021
| ParameterModifiers.cs:6:27:6:28 | p1 |
1122
parameterIsIn
23+
| LambdaParameterModifiers.cs:18:26:18:27 | x3 |
24+
| LambdaParameterModifiers.cs:26:23:26:24 | i3 |
1225
| ParameterModifiers.cs:7:30:7:31 | p2 |
1326
parameterIsOut
27+
| LambdaParameterModifiers.cs:17:27:17:28 | x2 |
28+
| LambdaParameterModifiers.cs:25:25:25:26 | i2 |
1429
| ParameterModifiers.cs:9:31:9:32 | p3 |
1530
parameterIsRef
31+
| LambdaParameterModifiers.cs:16:27:16:28 | x1 |
32+
| LambdaParameterModifiers.cs:20:34:20:35 | x5 |
33+
| LambdaParameterModifiers.cs:24:25:24:26 | i1 |
34+
| LambdaParameterModifiers.cs:28:39:28:40 | i5 |
1635
| ParameterModifiers.cs:14:31:14:32 | p4 |
1736
parameterIsParams
37+
| LambdaParameterModifiers.cs:21:43:21:44 | x6 |
1838
| ParameterModifiers.cs:16:36:16:37 | p5 |
1939
| ParameterModifiers.cs:20:47:20:48 | p7 |
2040
parameterIsReadonlyRef
41+
| LambdaParameterModifiers.cs:19:36:19:37 | x4 |
42+
| LambdaParameterModifiers.cs:27:43:27:44 | i4 |
2143
| ParameterModifiers.cs:18:40:18:41 | p6 |

csharp/ql/test/library-tests/parameters/ParameterModifiers.ql

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
11
import csharp
22

33
class TestParameter extends Parameter {
4-
TestParameter() { this.getFile().getBaseName() = "ParameterModifiers.cs" }
4+
TestParameter() {
5+
this.getFile().getBaseName() = "ParameterModifiers.cs"
6+
or
7+
this.getFile().getBaseName() = "LambdaParameterModifiers.cs" and
8+
this.getCallable() instanceof LambdaExpr
9+
}
510
}
611

712
query predicate parameterModifier(TestParameter p, int kind) { params(p, _, _, _, kind, _, _) }

0 commit comments

Comments
 (0)