зеркало из https://github.com/github/codeql.git
C#: Add body of partial methods
This commit is contained in:
Родитель
e80cc63219
Коммит
def1d888c6
|
@ -80,7 +80,7 @@ namespace Semmle.Extraction.CSharp.Entities
|
|||
else
|
||||
Expression.Create(Context, expr, this, 0);
|
||||
|
||||
Context.NumberOfLines(trapFile, symbol, this);
|
||||
Context.NumberOfLines(trapFile, BodyDeclaringSymbol, this);
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -126,7 +126,7 @@ namespace Semmle.Extraction.CSharp.Entities
|
|||
{
|
||||
trapFile.Write('<');
|
||||
// Encode the nullability of the type arguments in the label.
|
||||
// Type arguments with different nullability can result in
|
||||
// Type arguments with different nullability can result in
|
||||
// a constructed method with different nullability of its parameters and return type,
|
||||
// so we need to create a distinct database entity for it.
|
||||
trapFile.BuildList(",", m.symbol.GetAnnotatedTypeArguments(), (ta, tb0) => { AddSignatureTypeToId(m.Context, tb0, m.symbol, ta.Symbol); trapFile.Write((int)ta.Nullability); });
|
||||
|
|
|
@ -13,6 +13,8 @@ namespace Semmle.Extraction.CSharp.Entities
|
|||
|
||||
public override string Name => symbol.GetName();
|
||||
|
||||
protected override IMethodSymbol BodyDeclaringSymbol => symbol.PartialImplementationPart ?? symbol;
|
||||
|
||||
public IMethodSymbol SourceDeclaration
|
||||
{
|
||||
get
|
||||
|
|
|
@ -95,14 +95,15 @@ namespace Semmle.Extraction.CSharp.Entities
|
|||
Context.BindComments(this, FullLocation);
|
||||
}
|
||||
|
||||
protected virtual T BodyDeclaringSymbol => symbol;
|
||||
|
||||
public BlockSyntax Block
|
||||
{
|
||||
get
|
||||
{
|
||||
return symbol.
|
||||
return BodyDeclaringSymbol.
|
||||
DeclaringSyntaxReferences.
|
||||
Select(r => r.GetSyntax()).
|
||||
SelectMany(n => n.ChildNodes()).
|
||||
SelectMany(r => r.GetSyntax().ChildNodes()).
|
||||
OfType<BlockSyntax>().
|
||||
FirstOrDefault();
|
||||
}
|
||||
|
@ -112,7 +113,7 @@ namespace Semmle.Extraction.CSharp.Entities
|
|||
{
|
||||
get
|
||||
{
|
||||
return symbol.
|
||||
return BodyDeclaringSymbol.
|
||||
DeclaringSyntaxReferences.
|
||||
SelectMany(r => r.GetSyntax().ChildNodes()).
|
||||
OfType<ArrowExpressionClauseSyntax>().
|
||||
|
|
Загрузка…
Ссылка в новой задаче