提交 1119e6fe 编写于 作者: P Petr Houska

Refactor IsInHeader helpers.

上级 996cc3aa
......@@ -1783,24 +1783,19 @@ public bool IsInPropertyDeclarationHeader(SyntaxNode node)
{
return false;
}
var start = GetStartOfNodeExcludingAttributes(propertyDeclaration);
var end = propertyDeclaration.Identifier.FullSpan.End;
return node.Span.Start >= start && node.Span.End <= end;
return IsInHeader(node, propertyDeclaration, propertyDeclaration.Identifier);
}
public bool IsInParameterHeader(SyntaxNode node)
{
var propertyDeclaration = node.GetAncestorOrThis<ParameterSyntax>();
if (propertyDeclaration == null)
var parameter = node.GetAncestorOrThis<ParameterSyntax>();
if (parameter == null)
{
return false;
}
var start = GetStartOfNodeExcludingAttributes(propertyDeclaration);
var end = propertyDeclaration.Identifier.FullSpan.End;
return node.Span.Start >= start && node.Span.End <= end;
return IsInHeader(node, parameter, parameter.Identifier);
}
public bool IsBetweenTypeMembers(SourceText sourceText, SyntaxNode root, int position)
......
......@@ -488,6 +488,22 @@ public bool SpansPreprocessorDirective(IEnumerable<SyntaxToken> tokens)
private bool SpansPreprocessorDirective(SyntaxTriviaList list)
=> list.Any(t => IsPreprocessorDirective(t));
public bool IsInHeader(SyntaxNode node, SyntaxNode ownerOfHeader, SyntaxToken lastTokenOfHeader)
{
var start = GetStartOfNodeExcludingAttributes(ownerOfHeader);
var end = lastTokenOfHeader.FullSpan.End;
return node.Span.Start >= start && node.Span.End <= end;
}
public bool IsInHeader(SyntaxNode node, SyntaxNode ownerOfHeader, SyntaxNode lastNodeOfHeader)
{
var start = GetStartOfNodeExcludingAttributes(ownerOfHeader);
var end = lastNodeOfHeader.FullSpan.End;
return node.Span.Start >= start && node.Span.End <= end;
}
protected int GetStartOfNodeExcludingAttributes(SyntaxNode node)
{
var attributeLists = GetAttributeLists(node);
......
......@@ -1760,9 +1760,11 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
Return False
End If
Dim start = GetStartOfNodeExcludingAttributes(propertyDeclaration)
Dim [end] = If(propertyDeclaration.AsClause?.FullSpan.[End], propertyDeclaration.Identifier.FullSpan.End)
Return node.Span.Start >= start AndAlso node.Span.[End] <= [end]
If propertyDeclaration.AsClause Is Nothing Then
Return IsInHeader(node, propertyDeclaration, propertyDeclaration.AsClause)
End If
Return IsInHeader(node, propertyDeclaration, propertyDeclaration.Identifier)
End Function
Public Function IsInParameterHeader(node As SyntaxNode) As Boolean Implements ISyntaxFactsService.IsInParameterHeader
......@@ -1772,9 +1774,11 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
Return False
End If
Dim start = GetStartOfNodeExcludingAttributes(parameter)
Dim [end] = If(parameter.AsClause?.FullSpan.[End], parameter.Identifier.FullSpan.End)
Return node.Span.Start >= start AndAlso node.Span.[End] <= [end]
If parameter.AsClause Is Nothing Then
Return IsInHeader(node, parameter, parameter.AsClause)
End If
Return IsInHeader(node, parameter, parameter.Identifier)
End Function
Public Function IsBetweenTypeMembers(sourceText As SourceText, root As SyntaxNode, position As Integer) As Boolean Implements ISyntaxFactsService.IsBetweenTypeMembers
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册