Merge pull request #7469 from hvitved/csharp/promote-adhoc-consistency-checks

C#: Promote existing ad-hoc consistency checks to consistency queries
This commit is contained in:
Tom Hvitved
2022-01-10 11:10:25 +01:00
committed by GitHub
24 changed files with 156 additions and 157 deletions

View File

@@ -113,11 +113,7 @@ namespace Semmle.Extraction.CSharp.Entities
trapFile.expr_call(init, target);
var child = 0;
foreach (var arg in initializer.ArgumentList.Arguments)
{
Expression.Create(Context, arg.Expression, init, child++);
}
init.PopulateArguments(trapFile, initializer.ArgumentList, 0);
}
private ConstructorDeclarationSyntax? Syntax

View File

@@ -4,6 +4,7 @@ using Microsoft.CodeAnalysis.CSharp.Syntax;
using Semmle.Extraction.CSharp.Entities.Expressions;
using Semmle.Extraction.Kinds;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
@@ -324,7 +325,12 @@ namespace Semmle.Extraction.CSharp.Entities
public void PopulateArguments(TextWriter trapFile, BaseArgumentListSyntax args, int child)
{
foreach (var arg in args.Arguments)
PopulateArguments(trapFile, args.Arguments, child);
}
public void PopulateArguments(TextWriter trapFile, IEnumerable<ArgumentSyntax> args, int child)
{
foreach (var arg in args)
PopulateArgument(trapFile, arg, child++);
}

View File

@@ -105,12 +105,7 @@ namespace Semmle.Extraction.CSharp.Entities.Expressions
if (assignment.Left is ImplicitElementAccessSyntax iea)
{
// An array/indexer initializer of the form `[...] = ...`
var indexChild = 0;
foreach (var arg in iea.ArgumentList.Arguments)
{
Expression.Create(Context, arg.Expression, access, indexChild++);
}
access.PopulateArguments(trapFile, iea.ArgumentList.Arguments, 0);
}
}
else

View File

@@ -15,11 +15,7 @@ namespace Semmle.Extraction.CSharp.Entities.Expressions
protected override void PopulateExpression(TextWriter trapFile)
{
var child = 0;
foreach (var argument in Syntax.Arguments.Select(a => a.Expression))
{
Expression.Create(Context, argument, this, child++);
}
PopulateArguments(trapFile, Syntax.Arguments, 0);
}
}
}