Skip to content

Commit 12795d9

Browse files
Add dummy expression to attach errors to
1 parent 04a04d8 commit 12795d9

1 file changed

Lines changed: 9 additions & 8 deletions

File tree

CodeConverter/CSharp/CommentConvertingVisitorWrapper.cs

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,17 @@ internal class CommentConvertingVisitorWrapper
1818
{
1919
private readonly VBasic.VisualBasicSyntaxVisitor<Task<CS.CSharpSyntaxNode>> _wrappedVisitor;
2020
private readonly SyntaxTree _syntaxTree;
21+
private static readonly CSSyntax.StatementSyntax _dummyStatement = CS.SyntaxFactory.EmptyStatement();
22+
private static readonly CSSyntax.LiteralExpressionSyntax _dummyLiteral = ValidSyntaxFactory.DefaultExpression;
2123

2224
public CommentConvertingVisitorWrapper(VisualBasicSyntaxVisitor<Task<CSharpSyntaxNode>> wrappedVisitor, SyntaxTree syntaxTree)
2325
{
2426
_wrappedVisitor = wrappedVisitor;
2527
_syntaxTree = syntaxTree;
2628
}
2729

28-
public async Task<T> AcceptAsync<T>(SyntaxNode vbNode, SourceTriviaMapKind sourceTriviaMap) where T : CS.CSharpSyntaxNode
29-
{
30-
return await ConvertHandledAsync<T>(vbNode, sourceTriviaMap);
31-
}
30+
public async Task<T> AcceptAsync<T>(VisualBasicSyntaxNode vbNode, SourceTriviaMapKind sourceTriviaMap) where T : CS.CSharpSyntaxNode =>
31+
await ConvertHandledAsync<T>(vbNode, sourceTriviaMap);
3232

3333
public async Task<SeparatedSyntaxList<TOut>> AcceptAsync<TIn, TOut>(SeparatedSyntaxList<TIn> vbNodes, SourceTriviaMapKind sourceTriviaMap) where TIn : VBasic.VisualBasicSyntaxNode where TOut : CS.CSharpSyntaxNode
3434
{
@@ -41,7 +41,7 @@ public async Task<SeparatedSyntaxList<TOut>> AcceptAsync<TIn, TOut>(SeparatedSyn
4141
return CS.SyntaxFactory.SeparatedList(convertedNodes, convertedSeparators);
4242
}
4343

44-
private async Task<T> ConvertHandledAsync<T>(SyntaxNode vbNode, SourceTriviaMapKind sourceTriviaMap) where T : CS.CSharpSyntaxNode
44+
private async Task<T> ConvertHandledAsync<T>(VisualBasicSyntaxNode vbNode, SourceTriviaMapKind sourceTriviaMap) where T : CS.CSharpSyntaxNode
4545
{
4646
try {
4747
var converted = (T)await _wrappedVisitor.Visit(vbNode);
@@ -50,9 +50,10 @@ private async Task<T> ConvertHandledAsync<T>(SyntaxNode vbNode, SourceTriviaMapK
5050
: sourceTriviaMap == SourceTriviaMapKind.SubNodesOnly
5151
? converted
5252
: WithSourceMapping(vbNode, converted);
53-
} catch (Exception e) when (typeof(T).IsAssignableFrom(typeof(CSSyntax.EmptyStatementSyntax))) {
54-
var dummyStatement = (T)(object)CS.SyntaxFactory.EmptyStatement();
55-
return dummyStatement.WithCsTrailingErrorComment((VBasic.VisualBasicSyntaxNode)vbNode, e);
53+
} catch (Exception e) when (_dummyStatement is T dummy) {
54+
return dummy.WithCsTrailingErrorComment(vbNode, e);
55+
} catch (Exception e) when (_dummyLiteral is T dummy) {
56+
return dummy.WithCsTrailingErrorComment(vbNode, e);
5657
} catch (Exception e) when (!(e is ExceptionWithNodeInformation)) {
5758
throw e.WithNodeInformation(vbNode);
5859
}

0 commit comments

Comments
 (0)