提交 b3530c2e 编写于 作者: G Gen Lu

Make InConversion and OutConversion optional

上级 85ec5300
......@@ -12,9 +12,9 @@ internal abstract class BaseCSharpArgument : BaseArgument, IArgument
{
}
public override CommonConversion InConversion => default(CommonConversion);
public override Optional<CommonConversion> InConversion => default;
public override CommonConversion OutConversion => default(CommonConversion);
public override Optional<CommonConversion> OutConversion => default;
}
internal sealed partial class CSharpArgument : BaseCSharpArgument
......
......@@ -206,8 +206,8 @@ internal abstract partial class BaseArgument : Operation, IArgument
/// </summary>
public IParameterSymbol Parameter { get; }
protected abstract IOperation ValueImpl { get; }
public abstract CommonConversion InConversion { get; }
public abstract CommonConversion OutConversion { get; }
public abstract Optional<CommonConversion> InConversion { get; }
public abstract Optional<CommonConversion> OutConversion { get; }
public override IEnumerable<IOperation> Children
{
get
......
......@@ -26,11 +26,11 @@ public interface IArgument : IOperation
/// <summary>
/// Conversion applied to the argument value passing it into the target method. Applicable only to VB Reference arguments.
/// </summary>
CommonConversion InConversion { get; }
Optional<CommonConversion> InConversion { get; }
/// <summary>
/// Conversion applied to the argument value after the invocation. Applicable only to VB Reference arguments.
/// </summary>
CommonConversion OutConversion { get; }
Optional<CommonConversion> OutConversion { get; }
}
}
......@@ -345,8 +345,8 @@ Microsoft.CodeAnalysis.Semantics.IAnonymousObjectCreationExpression
Microsoft.CodeAnalysis.Semantics.IAnonymousObjectCreationExpression.Initializers.get -> System.Collections.Immutable.ImmutableArray<Microsoft.CodeAnalysis.IOperation>
Microsoft.CodeAnalysis.Semantics.IArgument
Microsoft.CodeAnalysis.Semantics.IArgument.ArgumentKind.get -> Microsoft.CodeAnalysis.Semantics.ArgumentKind
Microsoft.CodeAnalysis.Semantics.IArgument.InConversion.get -> Microsoft.CodeAnalysis.Semantics.CommonConversion
Microsoft.CodeAnalysis.Semantics.IArgument.OutConversion.get -> Microsoft.CodeAnalysis.Semantics.CommonConversion
Microsoft.CodeAnalysis.Semantics.IArgument.InConversion.get -> Microsoft.CodeAnalysis.Optional<Microsoft.CodeAnalysis.Semantics.CommonConversion>
Microsoft.CodeAnalysis.Semantics.IArgument.OutConversion.get -> Microsoft.CodeAnalysis.Optional<Microsoft.CodeAnalysis.Semantics.CommonConversion>
Microsoft.CodeAnalysis.Semantics.IArgument.Parameter.get -> Microsoft.CodeAnalysis.IParameterSymbol
Microsoft.CodeAnalysis.Semantics.IArgument.Value.get -> Microsoft.CodeAnalysis.IOperation
Microsoft.CodeAnalysis.Semantics.IArrayCreationExpression
......
......@@ -17,15 +17,15 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
Friend ReadOnly Property OutConversionInternal As Conversion
Public Overrides ReadOnly Property InConversion As CommonConversion
Public Overrides ReadOnly Property InConversion As [Optional](Of CommonConversion)
Get
Return InConversionInternal.ToCommonConversion()
Return If(InConversionInternal = Nothing, New [Optional](Of CommonConversion)(), InConversionInternal.ToCommonConversion())
End Get
End Property
Public Overrides ReadOnly Property OutConversion As CommonConversion
Public Overrides ReadOnly Property OutConversion As [Optional](Of CommonConversion)
Get
Return OutConversionInternal.ToCommonConversion()
Return If(OutConversionInternal = Nothing, New [Optional](Of CommonConversion)(), OutConversionInternal.ToCommonConversion())
End Get
End Property
End Class
......
......@@ -623,15 +623,21 @@ public override void VisitArgument(IArgument operation)
LogString(")");
LogCommonPropertiesAndNewLine(operation);
Indent();
LogConversion(operation.InConversion, "InConversion");
Unindent();
LogNewLine();
if (operation.InConversion.HasValue)
{
Indent();
LogConversion(operation.InConversion.Value, "InConversion");
Unindent();
LogNewLine();
}
Indent();
LogConversion(operation.OutConversion, "OutConversion");
Unindent();
LogNewLine();
if (operation.OutConversion.HasValue)
{
Indent();
LogConversion(operation.OutConversion.Value, "OutConversion");
Unindent();
LogNewLine();
}
Visit(operation.Value);
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册