Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -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) => { };
}
}
Original file line number Diff line number Diff line change
@@ -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 |
Expand All @@ -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 |
Original file line number Diff line number Diff line change
@@ -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, _, _) }
Expand Down
Loading