Skip to content

Commit 125d435

Browse files
committed
C#: Address review comments
1 parent 4f8a103 commit 125d435

File tree

5 files changed

+26
-11
lines changed

5 files changed

+26
-11
lines changed

csharp/extractor/Semmle.Extraction.CSharp/Entities/PreprocessorDirectives/ElifDirective.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ public override void WriteId(EscapingTextWriter trapFile)
2222
trapFile.WriteSubId(Context.CreateLocation(ReportingLocation));
2323
trapFile.Write(Symbol.IsActive);
2424
trapFile.Write(',');
25+
trapFile.Write(Symbol.BranchTaken);
26+
trapFile.Write(',');
2527
trapFile.Write(Symbol.ConditionValue);
2628
trapFile.Write(";trivia");
2729
}

csharp/extractor/Semmle.Extraction.CSharp/Entities/PreprocessorDirectives/ElseDirective.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,15 @@ private ElseDirective(Context cx, ElseDirectiveTriviaSyntax trivia, IfDirective
1515
this.index = index;
1616
}
1717

18+
public override void WriteId(EscapingTextWriter trapFile)
19+
{
20+
trapFile.WriteSubId(Context.CreateLocation(ReportingLocation));
21+
trapFile.Write(Symbol.IsActive);
22+
trapFile.Write(',');
23+
trapFile.Write(Symbol.BranchTaken);
24+
trapFile.Write(";trivia");
25+
}
26+
1827
protected override void PopulatePreprocessor(TextWriter trapFile)
1928
{
2029
trapFile.directive_elses(this, Symbol.BranchTaken, start, index);

csharp/extractor/Semmle.Extraction.CSharp/Entities/PreprocessorDirectives/IfDirective.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ public override void WriteId(EscapingTextWriter trapFile)
1717
trapFile.WriteSubId(Context.CreateLocation(ReportingLocation));
1818
trapFile.Write(Symbol.IsActive);
1919
trapFile.Write(',');
20+
trapFile.Write(Symbol.BranchTaken);
21+
trapFile.Write(',');
2022
trapFile.Write(Symbol.ConditionValue);
2123
trapFile.Write(";trivia");
2224
}

csharp/extractor/Semmle.Extraction.CSharp/Extractor/Analyser.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -214,9 +214,9 @@ private void DoExtractTree(SyntaxTree tree)
214214
var csNode = (CSharpSyntaxNode)root;
215215
var directiveVisitor = new DirectiveVisitor(cx);
216216
csNode.Accept(directiveVisitor);
217-
foreach (var condition in directiveVisitor.ActiveConditions)
217+
foreach (var branch in directiveVisitor.BranchesTaken)
218218
{
219-
cx.TrapStackSuffix.Add(condition);
219+
cx.TrapStackSuffix.Add(branch);
220220
}
221221
csNode.Accept(new CompilationUnitVisitor(cx));
222222
cx.PopulateAll();

csharp/extractor/Semmle.Extraction.CSharp/Populators/DirectiveVisitor.cs

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,13 @@ namespace Semmle.Extraction.CSharp.Populators
99
internal class DirectiveVisitor : CSharpSyntaxWalker
1010
{
1111
private readonly Context cx;
12-
private readonly List<IEntity> activeConditions = new();
12+
private readonly List<IEntity> branchesTaken = new();
1313

1414
/// <summary>
15-
/// Gets a list of `#if` and `#elif` entities that are active, and where
16-
/// the condition is `true`.
15+
/// Gets a list of `#if`, `#elif`, and `#else` entities where the branch
16+
/// is taken.
1717
/// </summary>
18-
public IEnumerable<IEntity> ActiveConditions => activeConditions;
18+
public IEnumerable<IEntity> BranchesTaken => branchesTaken;
1919

2020
public DirectiveVisitor(Context cx) : base(SyntaxWalkerDepth.StructuredTrivia)
2121
{
@@ -101,8 +101,8 @@ public override void VisitIfDirectiveTrivia(IfDirectiveTriviaSyntax node)
101101
{
102102
var ifStart = Entities.IfDirective.Create(cx, node);
103103
ifStarts.Push(new IfDirectiveStackElement(ifStart));
104-
if (node.IsActive && node.ConditionValue)
105-
activeConditions.Add(ifStart);
104+
if (node.BranchTaken)
105+
branchesTaken.Add(ifStart);
106106
}
107107

108108
public override void VisitEndIfDirectiveTrivia(EndIfDirectiveTriviaSyntax node)
@@ -129,8 +129,8 @@ public override void VisitElifDirectiveTrivia(ElifDirectiveTriviaSyntax node)
129129

130130
var start = ifStarts.Peek();
131131
var elIf = Entities.ElifDirective.Create(cx, node, start.Entity, start.SiblingCount++);
132-
if (node.IsActive && node.ConditionValue)
133-
activeConditions.Add(elIf);
132+
if (node.BranchTaken)
133+
branchesTaken.Add(elIf);
134134
}
135135

136136
public override void VisitElseDirectiveTrivia(ElseDirectiveTriviaSyntax node)
@@ -143,7 +143,9 @@ public override void VisitElseDirectiveTrivia(ElseDirectiveTriviaSyntax node)
143143
}
144144

145145
var start = ifStarts.Peek();
146-
Entities.ElseDirective.Create(cx, node, start.Entity, start.SiblingCount++);
146+
var @else = Entities.ElseDirective.Create(cx, node, start.Entity, start.SiblingCount++);
147+
if (node.BranchTaken)
148+
branchesTaken.Add(@else);
147149
}
148150
}
149151
}

0 commit comments

Comments
 (0)