diff --git a/src/Compilers/CSharp/Portable/Operations/CSharpArgument.cs b/src/Compilers/CSharp/Portable/Operations/CSharpArgument.cs index 1e19af53ad5a2fc85fa36a92b85395514b624db9..f43c009c20cba31b2fa1220dc7900e087b9d1a01 100644 --- a/src/Compilers/CSharp/Portable/Operations/CSharpArgument.cs +++ b/src/Compilers/CSharp/Portable/Operations/CSharpArgument.cs @@ -5,7 +5,7 @@ namespace Microsoft.CodeAnalysis.CSharp { - internal abstract class BaseCSharpArgument : BaseArgument, IArgument + internal abstract class BaseCSharpArgument : BaseArgument { public BaseCSharpArgument(ArgumentKind argumentKind, IParameterSymbol parameter, SemanticModel semanticModel, SyntaxNode syntax, ITypeSymbol type, Optional constantValue) : base(argumentKind, parameter, semanticModel, syntax, type, constantValue) diff --git a/src/Compilers/VisualBasic/Portable/Operations/VisualBasicArgument.vb b/src/Compilers/VisualBasic/Portable/Operations/VisualBasicArgument.vb index fb31421a047e36d7733cc5e116f76c39719c761b..d5c7f44e470f73e4308bcc437384b2672e613bcf 100644 --- a/src/Compilers/VisualBasic/Portable/Operations/VisualBasicArgument.vb +++ b/src/Compilers/VisualBasic/Portable/Operations/VisualBasicArgument.vb @@ -19,13 +19,13 @@ Namespace Microsoft.CodeAnalysis.VisualBasic Public Overrides ReadOnly Property InConversion As [Optional](Of CommonConversion) Get - Return If(InConversionInternal = Nothing, New [Optional](Of CommonConversion)(), InConversionInternal.ToCommonConversion()) + Return If(InConversionInternal.Exists, InConversionInternal.ToCommonConversion(), New [Optional](Of CommonConversion)()) End Get End Property Public Overrides ReadOnly Property OutConversion As [Optional](Of CommonConversion) Get - Return If(OutConversionInternal = Nothing, New [Optional](Of CommonConversion)(), OutConversionInternal.ToCommonConversion()) + Return If(OutConversionInternal.Exists, OutConversionInternal.ToCommonConversion(), New [Optional](Of CommonConversion)()) End Get End Property End Class diff --git a/src/Compilers/VisualBasic/Portable/Operations/VisualBasicOperationFactory_Methods.vb b/src/Compilers/VisualBasic/Portable/Operations/VisualBasicOperationFactory_Methods.vb index 56fa96257b3c5707a27cf3ee8e5c5406cbe62fba..ed265e0987469b5fca51a0d5106f1c2109db836f 100644 --- a/src/Compilers/VisualBasic/Portable/Operations/VisualBasicOperationFactory_Methods.vb +++ b/src/Compilers/VisualBasic/Portable/Operations/VisualBasicOperationFactory_Methods.vb @@ -74,11 +74,12 @@ Namespace Microsoft.CodeAnalysis.Semantics Private Function CreateConversion(expression As BoundExpression) As Conversion If expression.Kind = BoundKind.Conversion Then Dim conversion = DirectCast(expression, BoundConversion) + Dim conversionKind = conversion.ConversionKind Dim method As MethodSymbol = Nothing - If conversion.Operand.Kind = BoundKind.UserDefinedConversion Then + If conversionKind.HasFlag(VisualBasic.ConversionKind.UserDefined) AndAlso conversion.Operand.Kind = BoundKind.UserDefinedConversion Then method = DirectCast(conversion.Operand, BoundUserDefinedConversion).Call.Method End If - Return New Conversion(KeyValuePair.Create(conversion.ConversionKind, method)) + Return New Conversion(KeyValuePair.Create(conversionKind, method)) End If Return New Conversion(Nothing) 'NoConversion End Function diff --git a/src/Compilers/VisualBasic/Portable/VisualBasicExtensions.vb b/src/Compilers/VisualBasic/Portable/VisualBasicExtensions.vb index 7ae6d57899e47840db71b13e58ff6efc1ea938a9..52ad8536c7af517977e656cc102efa0ba4b0c244 100644 --- a/src/Compilers/VisualBasic/Portable/VisualBasicExtensions.vb +++ b/src/Compilers/VisualBasic/Portable/VisualBasicExtensions.vb @@ -1384,7 +1384,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic ''' ''' The argument to get original info from. ''' The underlying of the InConversion. - ''' If the was not created from Visual Basic code. + ''' If the was not created from Visual Basic code. Public Function GetInConversion(argument As IArgument) As Conversion Dim basicArgument = TryCast(argument, BaseVisualBasicArgument) @@ -1402,7 +1402,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic ''' ''' The argument to get original info from. ''' The underlying of the OutConversion. - ''' If the was not created from Visual Basic code. + ''' If the was not created from Visual Basic code. Public Function GetOutConversion(argument As IArgument) As Conversion Dim basicArgument = TryCast(argument, BaseVisualBasicArgument) diff --git a/src/Compilers/VisualBasic/Test/Semantic/IOperation/IOperationTests_IArgument.vb b/src/Compilers/VisualBasic/Test/Semantic/IOperation/IOperationTests_IArgument.vb index 975411e8c5ce8ec3296534762f63bbe167312766..fb8f08a6c28f8c4c3074a0accdbf9e1775558c37 100644 --- a/src/Compilers/VisualBasic/Test/Semantic/IOperation/IOperationTests_IArgument.vb +++ b/src/Compilers/VisualBasic/Test/Semantic/IOperation/IOperationTests_IArgument.vb @@ -758,8 +758,6 @@ BC30272: 'y' is not a parameter of 'Public Sub M2(x As Integer)'. VerifyOperationTreeAndDiagnosticsForTest(Of InvocationExpressionSyntax)(source, expectedOperationTree, expectedDiagnostics) End Sub - - Public Sub InOutConversion()