提交 cd420a0a 编写于 作者: C Cyrus Najmabadi

VB simplifications

上级 766f6489
......@@ -322,7 +322,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Extensions
End Function
<Extension()>
Public Function IsInOutContext(expression As ExpressionSyntax, semanticModel As SemanticModel, cancellationToken As CancellationToken) As Boolean
Public Function IsInOutContext(expression As ExpressionSyntax) As Boolean
' NOTE(cyrusn): VB has no concept of an out context. Even when a parameter has an
' '<Out>' attribute on it, it's still treated as ref by VB. So we always return false
' here.
......@@ -370,19 +370,19 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Extensions
End Function
<Extension()>
Public Function IsInInContext(expression As ExpressionSyntax, semanticModel As SemanticModel, cancellationToken As CancellationToken) As Boolean
Public Function IsInInContext(expression As ExpressionSyntax) As Boolean
' NOTE: VB does not support in parameters. Always return False here.
Return False
End Function
<Extension()>
Public Function IsOnlyWrittenTo(expression As ExpressionSyntax, semanticModel As SemanticModel, cancellationToken As CancellationToken) As Boolean
Public Function IsOnlyWrittenTo(expression As ExpressionSyntax) As Boolean
If expression.IsRightSideOfDot() Then
expression = TryCast(expression.Parent, ExpressionSyntax)
End If
If expression IsNot Nothing Then
If expression.IsInOutContext(semanticModel, cancellationToken) Then
If expression.IsInOutContext() Then
Return True
End If
......@@ -413,7 +413,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Extensions
<Extension()>
Public Function IsWrittenTo(expression As ExpressionSyntax, semanticModel As SemanticModel, cancellationToken As CancellationToken) As Boolean
If IsOnlyWrittenTo(expression, semanticModel, cancellationToken) Then
If IsOnlyWrittenTo(expression) Then
Return True
End If
......@@ -785,15 +785,12 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Extensions
Return semanticModel.Compilation.CreateArrayTypeSymbol(type, rank)
End Function
<Extension()>
<Extension>
Public Function TryReduceVariableDeclaratorWithoutType(
variableDeclarator As VariableDeclaratorSyntax,
semanticModel As SemanticModel,
<Out()> ByRef replacementNode As SyntaxNode,
<Out()> ByRef issueSpan As TextSpan,
optionSet As OptionSet,
cancellationToken As CancellationToken
) As Boolean
<Out> ByRef replacementNode As SyntaxNode,
<Out> ByRef issueSpan As TextSpan) As Boolean
replacementNode = Nothing
issueSpan = Nothing
......@@ -831,7 +828,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Extensions
Return False
End If
Dim initializerType As ITypeSymbol = Nothing
Dim initializerType As ITypeSymbol
If declaredSymbolType.IsArrayType() AndAlso variableDeclarator.Initializer.Value.Kind() = SyntaxKind.CollectionInitializer Then
' Get type of the array literal in context without the target type
......@@ -1255,7 +1252,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Extensions
issueSpan = name.Span
Return name.CanReplaceWithReducedNameInContext(replacementNode, semanticModel, cancellationToken)
Return name.CanReplaceWithReducedNameInContext(replacementNode)
Else
If Not name.IsRightSideOfDot() Then
......@@ -1304,8 +1301,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Extensions
End If
End If
If name.CanReplaceWithReducedNameInContext(replacementNode, semanticModel, cancellationToken) Then
If name.CanReplaceWithReducedNameInContext(replacementNode) Then
' check if the alias name ends with an Attribute suffix that can be omitted.
Dim replacementNodeWithoutAttributeSuffix As ExpressionSyntax = Nothing
Dim issueSpanWithoutAttributeSuffix As TextSpan = Nothing
......@@ -1369,7 +1365,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Extensions
replacementNode = SyntaxFactory.PredefinedType(token)
issueSpan = name.Span
Dim canReplace = name.CanReplaceWithReducedNameInContext(replacementNode, semanticModel, cancellationToken)
Dim canReplace = name.CanReplaceWithReducedNameInContext(replacementNode)
If canReplace Then
replacementNode = replacementNode.WithAdditionalAnnotations(New SyntaxAnnotation(codeStyleOptionName))
End If
......@@ -1397,7 +1393,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Extensions
issueSpan = name.Span
If name.CanReplaceWithReducedNameInContext(replacementNode, semanticModel, cancellationToken) Then
If name.CanReplaceWithReducedNameInContext(replacementNode) Then
Return True
End If
End If
......@@ -1829,11 +1825,11 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Extensions
Return False
End If
Return name.CanReplaceWithReducedNameInContext(replacementNode, semanticModel, cancellationToken)
Return name.CanReplaceWithReducedNameInContext(replacementNode)
End Function
<Extension>
Private Function CanReplaceWithReducedNameInContext(name As NameSyntax, replacementNode As ExpressionSyntax, semanticModel As SemanticModel, cancellationToken As CancellationToken) As Boolean
Private Function CanReplaceWithReducedNameInContext(name As NameSyntax, replacementNode As ExpressionSyntax) As Boolean
' Special case. if this new minimal name parses out to a predefined type, then we
' have to make sure that we're not in a using alias. That's the one place where the
......
......@@ -111,7 +111,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
Public Function IsOnlyWrittenTo(semanticModel As SemanticModel, node As SyntaxNode, cancellationToken As CancellationToken) As Boolean Implements ISemanticFactsService.IsOnlyWrittenTo
Return TryCast(node, ExpressionSyntax).IsOnlyWrittenTo(semanticModel, cancellationToken)
Return TryCast(node, ExpressionSyntax).IsOnlyWrittenTo()
End Function
Public Function IsWrittenTo(semanticModel As SemanticModel, node As SyntaxNode, cancellationToken As CancellationToken) As Boolean Implements ISemanticFactsService.IsWrittenTo
......@@ -119,7 +119,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
Public Function IsInOutContext(semanticModel As SemanticModel, node As SyntaxNode, cancellationToken As CancellationToken) As Boolean Implements ISemanticFactsService.IsInOutContext
Return TryCast(node, ExpressionSyntax).IsInOutContext(semanticModel, cancellationToken)
Return TryCast(node, ExpressionSyntax).IsInOutContext()
End Function
Public Function IsInRefContext(semanticModel As SemanticModel, node As SyntaxNode, cancellationToken As CancellationToken) As Boolean Implements ISemanticFactsService.IsInRefContext
......@@ -127,7 +127,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
Public Function IsInInContext(semanticModel As SemanticModel, node As SyntaxNode, cancellationToken As CancellationToken) As Boolean Implements ISemanticFactsService.IsInInContext
Return TryCast(node, ExpressionSyntax).IsInInContext(semanticModel, cancellationToken)
Return TryCast(node, ExpressionSyntax).IsInInContext()
End Function
Public Function CanReplaceWithRValue(semanticModel As SemanticModel, expression As SyntaxNode, cancellationToken As CancellationToken) As Boolean Implements ISemanticFactsService.CanReplaceWithRValue
......
......@@ -30,12 +30,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Simplification
Dim replacementNode As SyntaxNode = Nothing
Dim issueSpan As TextSpan
If Not node.TryReduceVariableDeclaratorWithoutType(
semanticModel,
replacementNode,
issueSpan,
optionSet,
cancellationToken) Then
If Not node.TryReduceVariableDeclaratorWithoutType(semanticModel, replacementNode, issueSpan) Then
Return node
End If
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册