Skip to content

Commit 6ec22f2

Browse files
Specify type for improved stack traces
1 parent ec1e21f commit 6ec22f2

2 files changed

Lines changed: 17 additions & 20 deletions

File tree

CodeConverter/CSharp/QueryConverter.cs

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -171,8 +171,8 @@ private async Task<CSharpSyntaxNode> ConvertQueryWithContinuationsAsync(Queue<(S
171171
SyntaxFactory.IdentifierName(reusableCsFromId);
172172
selectOrGroup = SyntaxFactory.GroupClause(identifierNameSyntax, await GetGroupExpressionAsync(gcs));
173173
} else {
174-
var item = (CSSyntax.IdentifierNameSyntax) await gcs.Items.Single().Expression.AcceptAsync(_triviaConvertingVisitor);
175-
var keyExpression = (CSSyntax.ExpressionSyntax) await gcs.Keys.Single().Expression.AcceptAsync(_triviaConvertingVisitor);
174+
var item = await gcs.Items.Single().Expression.AcceptAsync<CSSyntax.IdentifierNameSyntax>(_triviaConvertingVisitor);
175+
var keyExpression = await gcs.Keys.Single().Expression.AcceptAsync<CSSyntax.ExpressionSyntax>(_triviaConvertingVisitor);
176176
selectOrGroup = SyntaxFactory.GroupClause(item, keyExpression);
177177
}
178178
queryContinuation = nestedClause != null ? CreateGroupByContinuation(gcs, continuationClauses, nestedClause) : null;
@@ -201,11 +201,11 @@ private CSSyntax.QueryContinuationSyntax CreateGroupByContinuation(VBSyntax.Grou
201201
case VBSyntax.DistinctClauseSyntax _:
202202
return Enumerable.Empty<CSSyntax.ExpressionSyntax>();
203203
case VBSyntax.PartitionClauseSyntax pcs:
204-
return new[] {(CSSyntax.ExpressionSyntax) await pcs.Count.AcceptAsync(_triviaConvertingVisitor)};
204+
return new[] {await pcs.Count.AcceptAsync<CSSyntax.ExpressionSyntax>(_triviaConvertingVisitor)};
205205
case VBSyntax.PartitionWhileClauseSyntax pwcs: {
206206
var lambdaParam = SyntaxFactory.Parameter(reusableCsFromId);
207-
var lambdaBody = (CSSyntax.ExpressionSyntax) await pwcs.Condition.AcceptAsync(_triviaConvertingVisitor);
208-
return new[] {(CSSyntax.ExpressionSyntax) SyntaxFactory.SimpleLambdaExpression(lambdaParam, lambdaBody)};
207+
var lambdaBody = await pwcs.Condition.AcceptAsync<CSSyntax.ExpressionSyntax>(_triviaConvertingVisitor);
208+
return new CSSyntax.ExpressionSyntax[] {SyntaxFactory.SimpleLambdaExpression(lambdaParam, lambdaBody)};
209209
}
210210
default:
211211
throw new ArgumentOutOfRangeException(nameof(linqQuery), linqQuery.Kind(), null);
@@ -242,7 +242,7 @@ private static bool RequiredContinuation(VBSyntax.QueryClauseSyntax queryClauseS
242242
private async Task<CSSyntax.FromClauseSyntax> ConvertFromClauseSyntaxAsync(VBSyntax.FromClauseSyntax vbFromClause)
243243
{
244244
var collectionRangeVariableSyntax = vbFromClause.Variables.Single();
245-
var expression = (CSSyntax.ExpressionSyntax)await collectionRangeVariableSyntax.Expression.AcceptAsync(_triviaConvertingVisitor);
245+
var expression = await collectionRangeVariableSyntax.Expression.AcceptAsync<CSSyntax.ExpressionSyntax>(_triviaConvertingVisitor);
246246
var parentOperation = _semanticModel.GetOperation(collectionRangeVariableSyntax.Expression)?.Parent;
247247
if (parentOperation != null && parentOperation.IsImplicit && parentOperation is IInvocationOperation io &&
248248
io.TargetMethod.MethodKind == MethodKind.ReducedExtension && io.TargetMethod.Name == nameof(Enumerable.AsEnumerable)) {
@@ -259,15 +259,15 @@ private static bool RequiredContinuation(VBSyntax.QueryClauseSyntax queryClauseS
259259
var collectionRangeVariableSyntax = vbAggClause.Variables.Single();
260260
var fromClauseSyntax = SyntaxFactory.FromClause(
261261
CommonConversions.ConvertIdentifier(collectionRangeVariableSyntax.Identifier.Identifier),
262-
(CSSyntax.ExpressionSyntax) await collectionRangeVariableSyntax.Expression.AcceptAsync(_triviaConvertingVisitor));
262+
await collectionRangeVariableSyntax.Expression.AcceptAsync<CSSyntax.ExpressionSyntax>(_triviaConvertingVisitor));
263263
return fromClauseSyntax;
264264
}
265265

266266
private async Task<CSSyntax.SelectClauseSyntax> ConvertSelectClauseSyntaxAsync(VBSyntax.SelectClauseSyntax vbSelectClause)
267267
{
268268
var selectedVariables = await vbSelectClause.Variables.SelectAsync(async v => {
269-
var nameEquals = (CSSyntax.NameEqualsSyntax) await v.NameEquals.AcceptAsync(_triviaConvertingVisitor);
270-
var expression = (CSSyntax.ExpressionSyntax) await v.Expression.AcceptAsync(_triviaConvertingVisitor);
269+
var nameEquals = await v.NameEquals.AcceptAsync<CSSyntax.NameEqualsSyntax>(_triviaConvertingVisitor);
270+
var expression = await v.Expression.AcceptAsync<CSSyntax.ExpressionSyntax>(_triviaConvertingVisitor);
271271
return SyntaxFactory.AnonymousObjectMemberDeclarator(nameEquals, expression);
272272
});
273273

@@ -302,7 +302,7 @@ private static CSSyntax.SelectClauseSyntax CreateDefaultSelectClause(SyntaxToken
302302

303303
private async Task<CSSyntax.ExpressionSyntax> GetGroupExpressionAsync(VBSyntax.GroupByClauseSyntax gs)
304304
{
305-
var groupExpressions = (await gs.Keys.SelectAsync(async k => (vb: k.Expression, cs: (CSSyntax.ExpressionSyntax)await k.Expression.AcceptAsync(_triviaConvertingVisitor)))).ToList();
305+
var groupExpressions = (await gs.Keys.SelectAsync(async k => (vb: k.Expression, cs: await k.Expression.AcceptAsync<CSSyntax.ExpressionSyntax>(_triviaConvertingVisitor)))).ToList();
306306
return (groupExpressions.Count == 1) ? groupExpressions.Single().cs : CreateAnonymousType(groupExpressions);
307307
}
308308

@@ -334,13 +334,14 @@ private IEnumerable<string> GetGroupKeyIdentifiers(VBSyntax.GroupByClauseSyntax
334334

335335
private async Task<CSSyntax.QueryClauseSyntax> ConvertWhereClauseAsync(VBSyntax.WhereClauseSyntax ws)
336336
{
337-
return SyntaxFactory.WhereClause((CSSyntax.ExpressionSyntax) await ws.Condition.AcceptAsync(_triviaConvertingVisitor));
337+
return SyntaxFactory.WhereClause(await ws.Condition.AcceptAsync<CSSyntax.ExpressionSyntax>(_triviaConvertingVisitor));
338338
}
339339

340340
private async Task<CSSyntax.QueryClauseSyntax> ConvertLetClauseAsync(VBSyntax.LetClauseSyntax ls)
341341
{
342342
var singleVariable = ls.Variables.Single();
343-
return SyntaxFactory.LetClause(CommonConversions.ConvertIdentifier(singleVariable.NameEquals.Identifier.Identifier), await singleVariable.Expression.AcceptAsync<CSSyntax.ExpressionSyntax>(_triviaConvertingVisitor));
343+
var identifier = CommonConversions.ConvertIdentifier(singleVariable.NameEquals.Identifier.Identifier);
344+
return SyntaxFactory.LetClause(identifier, await singleVariable.Expression.AcceptAsync<CSSyntax.ExpressionSyntax>(_triviaConvertingVisitor));
344345
}
345346

346347
private async Task<CSSyntax.QueryClauseSyntax> ConvertOrderByClauseAsync(VBSyntax.OrderByClauseSyntax os)

CodeConverter/CSharp/SyntaxNodeVisitorExtensions.cs

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,20 +8,16 @@ namespace ICSharpCode.CodeConverter.CSharp
88
[System.Diagnostics.DebuggerStepThrough]
99
internal static class SyntaxNodeVisitorExtensions
1010
{
11-
public static Task<CSharpSyntaxNode> AcceptAsync(this SyntaxNode node, CommentConvertingVisitorWrapper visitorWrapper, SourceTriviaMapKind sourceTriviaMap = SourceTriviaMapKind.All)
12-
{
13-
return AcceptAsync<CSharpSyntaxNode>(node, visitorWrapper, sourceTriviaMap);
14-
}
11+
public static Task<CSharpSyntaxNode> AcceptAsync(this SyntaxNode node, CommentConvertingVisitorWrapper visitorWrapper, SourceTriviaMapKind sourceTriviaMap = SourceTriviaMapKind.All) =>
12+
AcceptAsync<CSharpSyntaxNode>(node, visitorWrapper, sourceTriviaMap);
1513

1614
public static async Task<TOut> AcceptAsync<TOut>(this SyntaxNode node, CommentConvertingVisitorWrapper visitorWrapper, SourceTriviaMapKind sourceTriviaMap = SourceTriviaMapKind.All) where TOut : CSharpSyntaxNode
1715
{
1816
if (node == null) return null;
1917
return await visitorWrapper.AcceptAsync<TOut>(node, sourceTriviaMap);
2018
}
2119

22-
public static async Task<SeparatedSyntaxList<TOut>> AcceptSeparatedListAsync<TIn, TOut>(this SeparatedSyntaxList<TIn> nodes, CommentConvertingVisitorWrapper visitorWrapper, SourceTriviaMapKind sourceTriviaMap = SourceTriviaMapKind.All) where TIn: VisualBasicSyntaxNode where TOut : CSharpSyntaxNode
23-
{
24-
return await visitorWrapper.AcceptAsync<TIn, TOut>(nodes, sourceTriviaMap);
25-
}
20+
public static async Task<SeparatedSyntaxList<TOut>> AcceptSeparatedListAsync<TIn, TOut>(this SeparatedSyntaxList<TIn> nodes, CommentConvertingVisitorWrapper visitorWrapper, SourceTriviaMapKind sourceTriviaMap = SourceTriviaMapKind.All) where TIn : VisualBasicSyntaxNode where TOut : CSharpSyntaxNode =>
21+
await visitorWrapper.AcceptAsync<TIn, TOut>(nodes, sourceTriviaMap);
2622
}
2723
}

0 commit comments

Comments
 (0)