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

Address review comments

上级 dbc57e35
...@@ -17,7 +17,7 @@ internal abstract class BaseCSharpArgument : BaseArgument ...@@ -17,7 +17,7 @@ internal abstract class BaseCSharpArgument : BaseArgument
public override CommonConversion OutConversion => new CommonConversion(exists: true, isIdentity: true, isNumeric: false, isReference: false, methodSymbol: null); public override CommonConversion OutConversion => new CommonConversion(exists: true, isIdentity: true, isNumeric: false, isReference: false, methodSymbol: null);
} }
internal sealed partial class CSharpArgument : BaseCSharpArgument internal sealed class CSharpArgument : BaseCSharpArgument
{ {
public CSharpArgument(ArgumentKind argumentKind, IParameterSymbol parameter, IOperation value, SemanticModel semanticModel, SyntaxNode syntax, ITypeSymbol type, Optional<object> constantValue, bool isImplicit) : public CSharpArgument(ArgumentKind argumentKind, IParameterSymbol parameter, IOperation value, SemanticModel semanticModel, SyntaxNode syntax, ITypeSymbol type, Optional<object> constantValue, bool isImplicit) :
base(argumentKind, parameter, semanticModel, syntax, type, constantValue, isImplicit) base(argumentKind, parameter, semanticModel, syntax, type, constantValue, isImplicit)
...@@ -28,7 +28,7 @@ internal sealed partial class CSharpArgument : BaseCSharpArgument ...@@ -28,7 +28,7 @@ internal sealed partial class CSharpArgument : BaseCSharpArgument
protected override IOperation ValueImpl { get; } protected override IOperation ValueImpl { get; }
} }
internal sealed partial class LazyCSharpArgument : BaseCSharpArgument internal sealed class LazyCSharpArgument : BaseCSharpArgument
{ {
private readonly Lazy<IOperation> _lazyValue; private readonly Lazy<IOperation> _lazyValue;
......
...@@ -2224,7 +2224,7 @@ struct G<T> ...@@ -2224,7 +2224,7 @@ struct G<T>
[CompilerTrait(CompilerFeature.IOperation)] [CompilerTrait(CompilerFeature.IOperation)]
[Fact] [Fact]
public void GettingInOutConverionFromCSharpArgumentShouldThrowException() public void GettingInOutConversionFromCSharpArgumentShouldThrowException()
{ {
string source = @" string source = @"
class P class P
...@@ -2245,6 +2245,7 @@ static void M2(int x) ...@@ -2245,6 +2245,7 @@ static void M2(int x)
var invocation = (IInvocationExpression)operation; var invocation = (IInvocationExpression)operation;
var argument = invocation.ArgumentsInEvaluationOrder[0]; var argument = invocation.ArgumentsInEvaluationOrder[0];
// We are calling VB extension methods on IArgument in C# code, therefore exception is expteced here.
Assert.Throws<ArgumentException>(() => argument.GetInConversion()); Assert.Throws<ArgumentException>(() => argument.GetInConversion());
Assert.Throws<ArgumentException>(() => argument.GetOutConversion()); Assert.Throws<ArgumentException>(() => argument.GetOutConversion());
} }
......
...@@ -861,12 +861,7 @@ Public MustInherit Class BasicTestBaseBase ...@@ -861,12 +861,7 @@ Public MustInherit Class BasicTestBaseBase
Dim semanticModel = compilation.GetSemanticModel(node.SyntaxTree) Dim semanticModel = compilation.GetSemanticModel(node.SyntaxTree)
Dim operation = semanticModel.GetOperationInternal(node) Dim operation = semanticModel.GetOperationInternal(node)
If operation IsNot Nothing Then Return (operation, node)
Return (operation, node)
Else
Return (Nothing, Nothing)
End If
End Function End Function
#End Region #End Region
......
...@@ -105,47 +105,37 @@ Namespace Microsoft.CodeAnalysis.Semantics ...@@ -105,47 +105,37 @@ Namespace Microsoft.CodeAnalysis.Semantics
isImplicit:=isImplicit) isImplicit:=isImplicit)
Case Else Case Else
Dim lastParameterIndex = parameters.Length - 1 Dim lastParameterIndex = parameters.Length - 1
Dim kind As ArgumentKind
Dim parameter As ParameterSymbol
If index = lastParameterIndex AndAlso ParameterIsParamArray(parameters(lastParameterIndex)) Then If index = lastParameterIndex AndAlso ParameterIsParamArray(parameters(lastParameterIndex)) Then
' TODO: figure out if this is true: ' TODO: figure out if this is true:
' a compiler generated argument for a ParamArray parameter is created iff ' a compiler generated argument for a ParamArray parameter is created iff
' a list of arguments (including 0 argument) is provided for ParamArray parameter in source ' a list of arguments (including 0 argument) is provided for ParamArray parameter in source
' https://github.com/dotnet/roslyn/issues/18550 ' https://github.com/dotnet/roslyn/issues/18550
Dim kind = If(argument.WasCompilerGenerated AndAlso argument.Kind = BoundKind.ArrayCreation, ArgumentKind.ParamArray, ArgumentKind.Explicit) kind = If(argument.WasCompilerGenerated AndAlso argument.Kind = BoundKind.ArrayCreation, ArgumentKind.ParamArray, ArgumentKind.Explicit)
Dim parameter = parameters(lastParameterIndex) parameter = parameters(lastParameterIndex)
Dim value = Create(argument)
Return New VisualBasicArgument(
kind,
parameter,
value,
inConversion:=New Conversion(Conversions.Identity),
outConversion:=New Conversion(Conversions.Identity),
semanticModel:=_semanticModel,
syntax:=value.Syntax,
type:=Nothing,
constantValue:=Nothing,
isImplicit:=isImplicit)
Else Else
' TODO: figure our if this is true: ' TODO: figure our if this is true:
' a compiler generated argument for an Optional parameter is created iff ' a compiler generated argument for an Optional parameter is created iff
' the argument is omitted from the source ' the argument is omitted from the source
' https://github.com/dotnet/roslyn/issues/18550 ' https://github.com/dotnet/roslyn/issues/18550
Dim kind = If(argument.WasCompilerGenerated, ArgumentKind.DefaultValue, ArgumentKind.Explicit) kind = If(argument.WasCompilerGenerated, ArgumentKind.DefaultValue, ArgumentKind.Explicit)
Dim parameter = parameters(index) parameter = parameters(index)
Dim value = Create(argument)
Return New VisualBasicArgument(
kind,
parameter,
value,
inConversion:=New Conversion(Conversions.Identity),
outConversion:=New Conversion(Conversions.Identity),
semanticModel:=_semanticModel,
syntax:=value.Syntax,
type:=Nothing,
constantValue:=Nothing,
isImplicit:=isImplicit)
End If End If
Dim value = Create(argument)
Return New VisualBasicArgument(
kind,
parameter,
Create(argument),
inConversion:=New Conversion(Conversions.Identity),
outConversion:=New Conversion(Conversions.Identity),
semanticModel:=_semanticModel,
syntax:=value.Syntax,
type:=Nothing,
constantValue:=Nothing,
isImplicit:=isImplicit)
End Select End Select
End Function End Function
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册