Skip to content

Commit ee01ddf

Browse files
committed
Action & Func factory methods - annotations
1 parent 550421c commit ee01ddf

File tree

4 files changed

+252
-108
lines changed

4 files changed

+252
-108
lines changed

Main/src/Expressions/Expr.generated.cs

Lines changed: 112 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -23,36 +23,52 @@ public static class Expr
2323
/// <summary>Helper for type inference from the lambda expression.</summary>
2424
/// <param name="actionExpression">The lambda expression.</param>
2525
/// <returns>The lambda expression passed.</returns>
26-
[Pure]
27-
public static Expression<Action> Action(Expression<Action> actionExpression) =>
28-
actionExpression;
26+
[Pure, NotNull]
27+
public static Expression<Action> Action(
28+
[NotNull] Expression<Action> actionExpression)
29+
{
30+
Code.NotNull(actionExpression, nameof(actionExpression));
31+
return actionExpression;
32+
}
2933

3034
/// <summary>Helper for type inference from the lambda expression.</summary>
3135
/// <typeparam name="T1">The type of argument #1.</typeparam>
3236
/// <param name="actionExpression">The lambda expression.</param>
3337
/// <returns>The lambda expression passed.</returns>
34-
[Pure]
35-
public static Expression<Action<T1>> Action<T1>(Expression<Action<T1>> actionExpression) =>
36-
actionExpression;
38+
[Pure, NotNull]
39+
public static Expression<Action<T1>> Action<T1>(
40+
[NotNull] Expression<Action<T1>> actionExpression)
41+
{
42+
Code.NotNull(actionExpression, nameof(actionExpression));
43+
return actionExpression;
44+
}
3745

3846
/// <summary>Helper for type inference from the lambda expression.</summary>
3947
/// <typeparam name="T1">The type of argument #1.</typeparam>
4048
/// <typeparam name="T2">The type of argument #2.</typeparam>
4149
/// <param name="actionExpression">The lambda expression.</param>
4250
/// <returns>The lambda expression passed.</returns>
43-
[Pure]
44-
public static Expression<Action<T1, T2>> Action<T1, T2>(Expression<Action<T1, T2>> actionExpression) =>
45-
actionExpression;
51+
[Pure, NotNull]
52+
public static Expression<Action<T1, T2>> Action<T1, T2>(
53+
[NotNull] Expression<Action<T1, T2>> actionExpression)
54+
{
55+
Code.NotNull(actionExpression, nameof(actionExpression));
56+
return actionExpression;
57+
}
4658

4759
/// <summary>Helper for type inference from the lambda expression.</summary>
4860
/// <typeparam name="T1">The type of argument #1.</typeparam>
4961
/// <typeparam name="T2">The type of argument #2.</typeparam>
5062
/// <typeparam name="T3">The type of argument #3.</typeparam>
5163
/// <param name="actionExpression">The lambda expression.</param>
5264
/// <returns>The lambda expression passed.</returns>
53-
[Pure]
54-
public static Expression<Action<T1, T2, T3>> Action<T1, T2, T3>(Expression<Action<T1, T2, T3>> actionExpression) =>
55-
actionExpression;
65+
[Pure, NotNull]
66+
public static Expression<Action<T1, T2, T3>> Action<T1, T2, T3>(
67+
[NotNull] Expression<Action<T1, T2, T3>> actionExpression)
68+
{
69+
Code.NotNull(actionExpression, nameof(actionExpression));
70+
return actionExpression;
71+
}
5672

5773
/// <summary>Helper for type inference from the lambda expression.</summary>
5874
/// <typeparam name="T1">The type of argument #1.</typeparam>
@@ -61,9 +77,13 @@ public static Expression<Action<T1, T2, T3>> Action<T1, T2, T3>(Expression<Actio
6177
/// <typeparam name="T4">The type of argument #4.</typeparam>
6278
/// <param name="actionExpression">The lambda expression.</param>
6379
/// <returns>The lambda expression passed.</returns>
64-
[Pure]
65-
public static Expression<Action<T1, T2, T3, T4>> Action<T1, T2, T3, T4>(Expression<Action<T1, T2, T3, T4>> actionExpression) =>
66-
actionExpression;
80+
[Pure, NotNull]
81+
public static Expression<Action<T1, T2, T3, T4>> Action<T1, T2, T3, T4>(
82+
[NotNull] Expression<Action<T1, T2, T3, T4>> actionExpression)
83+
{
84+
Code.NotNull(actionExpression, nameof(actionExpression));
85+
return actionExpression;
86+
}
6787

6888
/// <summary>Helper for type inference from the lambda expression.</summary>
6989
/// <typeparam name="T1">The type of argument #1.</typeparam>
@@ -73,9 +93,13 @@ public static Expression<Action<T1, T2, T3, T4>> Action<T1, T2, T3, T4>(Expressi
7393
/// <typeparam name="T5">The type of argument #5.</typeparam>
7494
/// <param name="actionExpression">The lambda expression.</param>
7595
/// <returns>The lambda expression passed.</returns>
76-
[Pure]
77-
public static Expression<Action<T1, T2, T3, T4, T5>> Action<T1, T2, T3, T4, T5>(Expression<Action<T1, T2, T3, T4, T5>> actionExpression) =>
78-
actionExpression;
96+
[Pure, NotNull]
97+
public static Expression<Action<T1, T2, T3, T4, T5>> Action<T1, T2, T3, T4, T5>(
98+
[NotNull] Expression<Action<T1, T2, T3, T4, T5>> actionExpression)
99+
{
100+
Code.NotNull(actionExpression, nameof(actionExpression));
101+
return actionExpression;
102+
}
79103

80104
/// <summary>Helper for type inference from the lambda expression.</summary>
81105
/// <typeparam name="T1">The type of argument #1.</typeparam>
@@ -86,9 +110,13 @@ public static Expression<Action<T1, T2, T3, T4, T5>> Action<T1, T2, T3, T4, T5>(
86110
/// <typeparam name="T6">The type of argument #6.</typeparam>
87111
/// <param name="actionExpression">The lambda expression.</param>
88112
/// <returns>The lambda expression passed.</returns>
89-
[Pure]
90-
public static Expression<Action<T1, T2, T3, T4, T5, T6>> Action<T1, T2, T3, T4, T5, T6>(Expression<Action<T1, T2, T3, T4, T5, T6>> actionExpression) =>
91-
actionExpression;
113+
[Pure, NotNull]
114+
public static Expression<Action<T1, T2, T3, T4, T5, T6>> Action<T1, T2, T3, T4, T5, T6>(
115+
[NotNull] Expression<Action<T1, T2, T3, T4, T5, T6>> actionExpression)
116+
{
117+
Code.NotNull(actionExpression, nameof(actionExpression));
118+
return actionExpression;
119+
}
92120

93121
/// <summary>Helper for type inference from the lambda expression.</summary>
94122
/// <typeparam name="T1">The type of argument #1.</typeparam>
@@ -100,38 +128,54 @@ public static Expression<Action<T1, T2, T3, T4, T5, T6>> Action<T1, T2, T3, T4,
100128
/// <typeparam name="T7">The type of argument #7.</typeparam>
101129
/// <param name="actionExpression">The lambda expression.</param>
102130
/// <returns>The lambda expression passed.</returns>
103-
[Pure]
104-
public static Expression<Action<T1, T2, T3, T4, T5, T6, T7>> Action<T1, T2, T3, T4, T5, T6, T7>(Expression<Action<T1, T2, T3, T4, T5, T6, T7>> actionExpression) =>
105-
actionExpression;
131+
[Pure, NotNull]
132+
public static Expression<Action<T1, T2, T3, T4, T5, T6, T7>> Action<T1, T2, T3, T4, T5, T6, T7>(
133+
[NotNull] Expression<Action<T1, T2, T3, T4, T5, T6, T7>> actionExpression)
134+
{
135+
Code.NotNull(actionExpression, nameof(actionExpression));
136+
return actionExpression;
137+
}
106138
#endregion
107139

108140
#region Func<...>
109141
/// <summary>Helper for type inference from the lambda expression.</summary>
110142
/// <typeparam name="TResult">The result type.</typeparam>
111143
/// <param name="funcExpression">The lambda expression.</param>
112144
/// <returns>The lambda expression passed.</returns>
113-
[Pure]
114-
public static Expression<Func<TResult>> Func<TResult>(Expression<Func<TResult>> funcExpression) =>
115-
funcExpression;
145+
[Pure, NotNull]
146+
public static Expression<Func<TResult>> Func<TResult>(
147+
[NotNull] Expression<Func<TResult>> funcExpression)
148+
{
149+
Code.NotNull(funcExpression, nameof(funcExpression));
150+
return funcExpression;
151+
}
116152

117153
/// <summary>Helper for type inference from the lambda expression.</summary>
118154
/// <typeparam name="T1">The type of argument #1.</typeparam>
119155
/// <typeparam name="TResult">The result type.</typeparam>
120156
/// <param name="funcExpression">The lambda expression.</param>
121157
/// <returns>The lambda expression passed.</returns>
122-
[Pure]
123-
public static Expression<Func<T1, TResult>> Func<T1, TResult>(Expression<Func<T1, TResult>> funcExpression) =>
124-
funcExpression;
158+
[Pure, NotNull]
159+
public static Expression<Func<T1, TResult>> Func<T1, TResult>(
160+
[NotNull] Expression<Func<T1, TResult>> funcExpression)
161+
{
162+
Code.NotNull(funcExpression, nameof(funcExpression));
163+
return funcExpression;
164+
}
125165

126166
/// <summary>Helper for type inference from the lambda expression.</summary>
127167
/// <typeparam name="T1">The type of argument #1.</typeparam>
128168
/// <typeparam name="T2">The type of argument #2.</typeparam>
129169
/// <typeparam name="TResult">The result type.</typeparam>
130170
/// <param name="funcExpression">The lambda expression.</param>
131171
/// <returns>The lambda expression passed.</returns>
132-
[Pure]
133-
public static Expression<Func<T1, T2, TResult>> Func<T1, T2, TResult>(Expression<Func<T1, T2, TResult>> funcExpression) =>
134-
funcExpression;
172+
[Pure, NotNull]
173+
public static Expression<Func<T1, T2, TResult>> Func<T1, T2, TResult>(
174+
[NotNull] Expression<Func<T1, T2, TResult>> funcExpression)
175+
{
176+
Code.NotNull(funcExpression, nameof(funcExpression));
177+
return funcExpression;
178+
}
135179

136180
/// <summary>Helper for type inference from the lambda expression.</summary>
137181
/// <typeparam name="T1">The type of argument #1.</typeparam>
@@ -140,9 +184,13 @@ public static Expression<Func<T1, T2, TResult>> Func<T1, T2, TResult>(Expression
140184
/// <typeparam name="TResult">The result type.</typeparam>
141185
/// <param name="funcExpression">The lambda expression.</param>
142186
/// <returns>The lambda expression passed.</returns>
143-
[Pure]
144-
public static Expression<Func<T1, T2, T3, TResult>> Func<T1, T2, T3, TResult>(Expression<Func<T1, T2, T3, TResult>> funcExpression) =>
145-
funcExpression;
187+
[Pure, NotNull]
188+
public static Expression<Func<T1, T2, T3, TResult>> Func<T1, T2, T3, TResult>(
189+
[NotNull] Expression<Func<T1, T2, T3, TResult>> funcExpression)
190+
{
191+
Code.NotNull(funcExpression, nameof(funcExpression));
192+
return funcExpression;
193+
}
146194

147195
/// <summary>Helper for type inference from the lambda expression.</summary>
148196
/// <typeparam name="T1">The type of argument #1.</typeparam>
@@ -152,9 +200,13 @@ public static Expression<Func<T1, T2, T3, TResult>> Func<T1, T2, T3, TResult>(Ex
152200
/// <typeparam name="TResult">The result type.</typeparam>
153201
/// <param name="funcExpression">The lambda expression.</param>
154202
/// <returns>The lambda expression passed.</returns>
155-
[Pure]
156-
public static Expression<Func<T1, T2, T3, T4, TResult>> Func<T1, T2, T3, T4, TResult>(Expression<Func<T1, T2, T3, T4, TResult>> funcExpression) =>
157-
funcExpression;
203+
[Pure, NotNull]
204+
public static Expression<Func<T1, T2, T3, T4, TResult>> Func<T1, T2, T3, T4, TResult>(
205+
[NotNull] Expression<Func<T1, T2, T3, T4, TResult>> funcExpression)
206+
{
207+
Code.NotNull(funcExpression, nameof(funcExpression));
208+
return funcExpression;
209+
}
158210

159211
/// <summary>Helper for type inference from the lambda expression.</summary>
160212
/// <typeparam name="T1">The type of argument #1.</typeparam>
@@ -165,9 +217,13 @@ public static Expression<Func<T1, T2, T3, T4, TResult>> Func<T1, T2, T3, T4, TRe
165217
/// <typeparam name="TResult">The result type.</typeparam>
166218
/// <param name="funcExpression">The lambda expression.</param>
167219
/// <returns>The lambda expression passed.</returns>
168-
[Pure]
169-
public static Expression<Func<T1, T2, T3, T4, T5, TResult>> Func<T1, T2, T3, T4, T5, TResult>(Expression<Func<T1, T2, T3, T4, T5, TResult>> funcExpression) =>
170-
funcExpression;
220+
[Pure, NotNull]
221+
public static Expression<Func<T1, T2, T3, T4, T5, TResult>> Func<T1, T2, T3, T4, T5, TResult>(
222+
[NotNull] Expression<Func<T1, T2, T3, T4, T5, TResult>> funcExpression)
223+
{
224+
Code.NotNull(funcExpression, nameof(funcExpression));
225+
return funcExpression;
226+
}
171227

172228
/// <summary>Helper for type inference from the lambda expression.</summary>
173229
/// <typeparam name="T1">The type of argument #1.</typeparam>
@@ -179,9 +235,13 @@ public static Expression<Func<T1, T2, T3, T4, T5, TResult>> Func<T1, T2, T3, T4,
179235
/// <typeparam name="TResult">The result type.</typeparam>
180236
/// <param name="funcExpression">The lambda expression.</param>
181237
/// <returns>The lambda expression passed.</returns>
182-
[Pure]
183-
public static Expression<Func<T1, T2, T3, T4, T5, T6, TResult>> Func<T1, T2, T3, T4, T5, T6, TResult>(Expression<Func<T1, T2, T3, T4, T5, T6, TResult>> funcExpression) =>
184-
funcExpression;
238+
[Pure, NotNull]
239+
public static Expression<Func<T1, T2, T3, T4, T5, T6, TResult>> Func<T1, T2, T3, T4, T5, T6, TResult>(
240+
[NotNull] Expression<Func<T1, T2, T3, T4, T5, T6, TResult>> funcExpression)
241+
{
242+
Code.NotNull(funcExpression, nameof(funcExpression));
243+
return funcExpression;
244+
}
185245

186246
/// <summary>Helper for type inference from the lambda expression.</summary>
187247
/// <typeparam name="T1">The type of argument #1.</typeparam>
@@ -194,9 +254,13 @@ public static Expression<Func<T1, T2, T3, T4, T5, T6, TResult>> Func<T1, T2, T3,
194254
/// <typeparam name="TResult">The result type.</typeparam>
195255
/// <param name="funcExpression">The lambda expression.</param>
196256
/// <returns>The lambda expression passed.</returns>
197-
[Pure]
198-
public static Expression<Func<T1, T2, T3, T4, T5, T6, T7, TResult>> Func<T1, T2, T3, T4, T5, T6, T7, TResult>(Expression<Func<T1, T2, T3, T4, T5, T6, T7, TResult>> funcExpression) =>
199-
funcExpression;
257+
[Pure, NotNull]
258+
public static Expression<Func<T1, T2, T3, T4, T5, T6, T7, TResult>> Func<T1, T2, T3, T4, T5, T6, T7, TResult>(
259+
[NotNull] Expression<Func<T1, T2, T3, T4, T5, T6, T7, TResult>> funcExpression)
260+
{
261+
Code.NotNull(funcExpression, nameof(funcExpression));
262+
return funcExpression;
263+
}
200264
#endregion
201265
}
202266
}

Main/src/Expressions/Expr.tt

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,13 @@ namespace CodeJam.Expressions
4646
<#+ }#>
4747
/// <param name="actionExpression">The lambda expression.</param>
4848
/// <returns>The lambda expression passed.</returns>
49-
[Pure]
50-
public static Expression<Action<#=typeList#>> Action<#=typeList#>(Expression<Action<#=typeList#>> actionExpression) =>
51-
actionExpression;
49+
[Pure, NotNull]
50+
public static Expression<Action<#=typeList#>> Action<#=typeList#>(
51+
[NotNull] Expression<Action<#=typeList#>> actionExpression)
52+
{
53+
Code.NotNull(actionExpression, nameof(actionExpression));
54+
return actionExpression;
55+
}
5256
<#+
5357
}
5458

@@ -64,9 +68,13 @@ namespace CodeJam.Expressions
6468
/// <typeparam name="TResult">The result type.</typeparam>
6569
/// <param name="funcExpression">The lambda expression.</param>
6670
/// <returns>The lambda expression passed.</returns>
67-
[Pure]
68-
public static Expression<Func<#=typeList#>> Func<#=typeList#>(Expression<Func<#=typeList#>> funcExpression) =>
69-
funcExpression;
71+
[Pure, NotNull]
72+
public static Expression<Func<#=typeList#>> Func<#=typeList#>(
73+
[NotNull] Expression<Func<#=typeList#>> funcExpression)
74+
{
75+
Code.NotNull(funcExpression, nameof(funcExpression));
76+
return funcExpression;
77+
}
7078
<#+
7179
}
7280
#>

0 commit comments

Comments
 (0)