Skip to content

Commit e9d2754

Browse files
authored
Merge pull request github#11686 from michaelnebel/csharp/refactorforeach
C#: Re-factor and use `ForEach`.
2 parents 5fba5e4 + 390b8af commit e9d2754

File tree

12 files changed

+21
-63
lines changed

12 files changed

+21
-63
lines changed

csharp/extractor/Semmle.Extraction.CSharp/Entities/CommentBlock.cs

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
using Semmle.Extraction.Entities;
21
using System.IO;
2+
using Semmle.Util;
33

44
namespace Semmle.Extraction.CSharp.Entities
55
{
@@ -11,12 +11,8 @@ private CommentBlock(Context cx, Comments.CommentBlock init)
1111
public override void Populate(TextWriter trapFile)
1212
{
1313
trapFile.commentblock(this);
14-
var child = 0;
1514
trapFile.commentblock_location(this, Context.CreateLocation(Symbol.Location));
16-
foreach (var l in Symbol.CommentLines)
17-
{
18-
trapFile.commentblock_child(this, (CommentLine)l, child++);
19-
}
15+
Symbol.CommentLines.ForEach((l, child) => trapFile.commentblock_child(this, l, child));
2016
}
2117

2218
public override bool NeedsPopulation => true;

csharp/extractor/Semmle.Extraction.CSharp/Entities/Compilations/Compilation.cs

Lines changed: 10 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -39,45 +39,29 @@ public override void Populate(TextWriter trapFile)
3939
trapFile.compilation_assembly(this, assembly);
4040

4141
// Arguments
42-
var index = 0;
43-
foreach (var arg in Compilation.Settings.Args)
44-
{
45-
trapFile.compilation_args(this, index++, arg);
46-
}
42+
Compilation.Settings.Args.ForEach((arg, index) => trapFile.compilation_args(this, index, arg));
4743

4844
// Files
49-
index = 0;
50-
foreach (var file in Context.Compilation.SyntaxTrees.Select(tree => File.Create(Context, tree.FilePath)))
51-
{
52-
trapFile.compilation_compiling_files(this, index++, file);
53-
}
45+
Context.Compilation.SyntaxTrees.Select(tree => File.Create(Context, tree.FilePath)).ForEach((file, index) => trapFile.compilation_compiling_files(this, index, file));
5446

5547
// References
56-
index = 0;
57-
foreach (var file in Context.Compilation.References
48+
Context.Compilation.References
5849
.OfType<PortableExecutableReference>()
5950
.Where(r => r.FilePath is not null)
60-
.Select(r => File.Create(Context, r.FilePath!)))
61-
{
62-
trapFile.compilation_referencing_files(this, index++, file);
63-
}
51+
.Select(r => File.Create(Context, r.FilePath!))
52+
.ForEach((file, index) => trapFile.compilation_referencing_files(this, index, file));
6453

6554
// Diagnostics
66-
index = 0;
67-
foreach (var diag in Context.Compilation.GetDiagnostics().Select(d => new Diagnostic(Context, d)))
68-
{
69-
trapFile.diagnostic_for(diag, this, 0, index++);
70-
}
55+
Context.Compilation
56+
.GetDiagnostics()
57+
.Select(d => new Diagnostic(Context, d))
58+
.ForEach((diag, index) => trapFile.diagnostic_for(diag, this, 0, index));
7159
}
7260

7361
public void PopulatePerformance(PerformanceMetrics p)
7462
{
7563
var trapFile = Context.TrapWriter.Writer;
76-
var index = 0;
77-
foreach (var metric in p.Metrics)
78-
{
79-
trapFile.compilation_time(this, -1, index++, metric);
80-
}
64+
p.Metrics.ForEach((metric, index) => trapFile.compilation_time(this, -1, index, metric));
8165
trapFile.compilation_finished(this, (float)p.Total.Cpu.TotalSeconds, (float)p.Total.Elapsed.TotalSeconds);
8266
}
8367

csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/ArrayCreation.cs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using Microsoft.CodeAnalysis.CSharp;
33
using Microsoft.CodeAnalysis.CSharp.Syntax;
44
using Semmle.Extraction.Kinds;
5+
using Semmle.Util;
56
using System.Collections.Generic;
67
using System.IO;
78
using System.Linq;
@@ -108,11 +109,7 @@ public static Expression CreateGenerated(Context cx, IExpressionParentEntity par
108109
if (length > 0)
109110
{
110111
var arrayInit = ArrayInitializer.CreateGenerated(cx, arrayCreation, InitializerIndex, location);
111-
var child = 0;
112-
foreach (var item in items)
113-
{
114-
Expression.CreateGenerated(cx, item, arrayInit, child++, location);
115-
}
112+
items.ForEach((item, child) => Expression.CreateGenerated(cx, item, arrayInit, child, location));
116113
}
117114

118115
return arrayCreation;

csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Initializer.cs

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
using Microsoft.CodeAnalysis;
22
using Microsoft.CodeAnalysis.CSharp;
33
using Microsoft.CodeAnalysis.CSharp.Syntax;
4-
using Semmle.Extraction.Entities;
54
using Semmle.Extraction.Kinds;
5+
using Semmle.Util;
66
using System.IO;
77

88
namespace Semmle.Extraction.CSharp.Entities.Expressions
@@ -146,11 +146,7 @@ protected override void PopulateExpression(TextWriter trapFile)
146146

147147
var init = (InitializerExpressionSyntax)i;
148148

149-
var addChild = 0;
150-
foreach (var arg in init.Expressions)
151-
{
152-
Create(Context, arg, invocation, addChild++);
153-
}
149+
init.Expressions.ForEach((arg, child) => Create(Context, arg, invocation, child));
154150
}
155151
else
156152
{

csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Patterns/BinaryPattern.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
using Microsoft.CodeAnalysis;
22
using Microsoft.CodeAnalysis.CSharp;
33
using Microsoft.CodeAnalysis.CSharp.Syntax;
4-
using Semmle.Extraction.Entities;
54
using Semmle.Extraction.Kinds;
65

76
namespace Semmle.Extraction.CSharp.Entities.Expressions

csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Patterns/Pattern.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
using Microsoft.CodeAnalysis;
22
using Microsoft.CodeAnalysis.CSharp.Syntax;
33
using Microsoft.CodeAnalysis.CSharp;
4-
using Semmle.Extraction.Entities;
54

65
namespace Semmle.Extraction.CSharp.Entities.Expressions
76
{
Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
using Microsoft.CodeAnalysis.CSharp.Syntax;
22
using Semmle.Extraction.Kinds;
3-
using Semmle.Extraction.Entities;
3+
using Semmle.Util;
44

55
namespace Semmle.Extraction.CSharp.Entities.Expressions
66
{
@@ -9,11 +9,7 @@ internal class PositionalPattern : Expression
99
internal PositionalPattern(Context cx, PositionalPatternClauseSyntax posPc, IExpressionParentEntity parent, int child) :
1010
base(new ExpressionInfo(cx, null, cx.CreateLocation(posPc.GetLocation()), ExprKind.POSITIONAL_PATTERN, parent, child, false, null))
1111
{
12-
child = 0;
13-
foreach (var sub in posPc.Subpatterns)
14-
{
15-
Expressions.Pattern.Create(cx, sub.Pattern, this, child++);
16-
}
12+
posPc.Subpatterns.ForEach((p, i) => Pattern.Create(cx, p.Pattern, this, i));
1713
}
1814
}
1915
}

csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Patterns/PropertyPattern.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
1-
using System;
21
using System.Collections.Generic;
32
using Microsoft.CodeAnalysis.CSharp.Syntax;
43
using Semmle.Extraction.Kinds;
5-
using Semmle.Extraction.Entities;
64

75
namespace Semmle.Extraction.CSharp.Entities.Expressions
86
{
@@ -27,7 +25,7 @@ private record AccessStep(string Identifier, Microsoft.CodeAnalysis.Location Loc
2725

2826
private class AccessStepPack
2927
{
30-
public readonly List<AccessStep> Prefix = new List<AccessStep>();
28+
public readonly List<AccessStep> Prefix = new();
3129
public AccessStep Last { get; private set; }
3230

3331
public AccessStepPack Add(string identifier, Microsoft.CodeAnalysis.Location location)

csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Patterns/RecursivePattern.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
using Microsoft.CodeAnalysis.CSharp.Syntax;
33
using Microsoft.CodeAnalysis.CSharp;
44
using Semmle.Extraction.Kinds;
5-
using Semmle.Extraction.Entities;
65

76
namespace Semmle.Extraction.CSharp.Entities.Expressions
87
{

csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Patterns/RelationalPattern.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
using Microsoft.CodeAnalysis.CSharp.Syntax;
33
using Microsoft.CodeAnalysis.CSharp;
44
using Semmle.Extraction.Kinds;
5-
using Semmle.Extraction.Entities;
65

76
namespace Semmle.Extraction.CSharp.Entities.Expressions
87
{

0 commit comments

Comments
 (0)