提交 25bedcea 编写于 作者: D Dustin Campbell

Merge pull request #5508 from DustinCampbell/issue-5505

Code Model: Fix CodeFunction.Name for C# conversion operators
......@@ -823,8 +823,8 @@ public override string GetName(SyntaxNode node)
return "operator " + ((OperatorDeclarationSyntax)node).OperatorToken.ToString();
case SyntaxKind.ConversionOperatorDeclaration:
var conversionOperator = (ConversionOperatorDeclarationSyntax)node;
return "operator "
+ (conversionOperator.ImplicitOrExplicitKeyword.Kind() == SyntaxKind.ImplicitKeyword ? "implicit " : "explicit ")
return (conversionOperator.ImplicitOrExplicitKeyword.Kind() == SyntaxKind.ImplicitKeyword ? "implicit " : "explicit ")
+ "operator "
+ conversionOperator.Type.ToString();
case SyntaxKind.EnumMemberDeclaration:
return ((EnumMemberDeclarationSyntax)node).Identifier.ToString();
......
......@@ -573,7 +573,7 @@ public void ConversionOperator()
{
CodeClass classObject = (CodeClass)GetCodeElement("Ref");
var element = classObject.Members.Item(1);
Assert.Equal("operator implicit Ref<T>", element.Name);
Assert.Equal("implicit operator Ref<T>", element.Name);
}
}
}
......@@ -423,6 +423,75 @@ public class C1 : I1
TestFullName(code, "C1.I1.f1")
End Sub
<WorkItem(2437, "https://github.com/dotnet/roslyn/issues/2437")>
<ConditionalFact(GetType(x86)), Trait(Traits.Feature, Traits.Features.CodeModel)>
Public Sub FullName_ImplicitOperator()
Dim code =
<Code>
public class ComplexType
{
public ComplexType()
{
}
public static implicit operator $$ComplexType(System.Int32 input) { return new ComplexType(); }
public static ComplexType operator +(ComplexType input0, ComplexType input1)
{
return default(ComplexType);
}
}
</Code>
TestFullName(code, "ComplexType.implicit operator ComplexType")
End Sub
<WorkItem(2437, "https://github.com/dotnet/roslyn/issues/2437")>
<ConditionalFact(GetType(x86)), Trait(Traits.Feature, Traits.Features.CodeModel)>
Public Sub FullName_ExplicitOperator()
Dim code =
<Code>
public class ComplexType
{
public ComplexType()
{
}
public static explicit operator $$ComplexType(System.Int32 input) { return new ComplexType(); }
public static ComplexType operator +(ComplexType input0, ComplexType input1)
{
return default(ComplexType);
}
}
</Code>
TestFullName(code, "ComplexType.explicit operator ComplexType")
End Sub
<WorkItem(2437, "https://github.com/dotnet/roslyn/issues/2437")>
<ConditionalFact(GetType(x86)), Trait(Traits.Feature, Traits.Features.CodeModel)>
Public Sub FullName_OperatorOverload()
Dim code =
<Code>
public class ComplexType
{
public ComplexType()
{
}
public static explicit operator ComplexType(System.Int32 input) { return new ComplexType(); }
public static ComplexType operator $$+(ComplexType input0, ComplexType input1)
{
return default(ComplexType);
}
}
</Code>
TestFullName(code, "ComplexType.operator +")
End Sub
#End Region
#Region "FunctionKind tests"
......@@ -623,6 +692,75 @@ class C
TestName(code, "~C")
End Sub
<WorkItem(2437, "https://github.com/dotnet/roslyn/issues/2437")>
<ConditionalFact(GetType(x86)), Trait(Traits.Feature, Traits.Features.CodeModel)>
Public Sub Name_ImplicitOperator()
Dim code =
<Code>
public class ComplexType
{
public ComplexType()
{
}
public static implicit operator $$ComplexType(System.Int32 input) { return new ComplexType(); }
public static ComplexType operator +(ComplexType input0, ComplexType input1)
{
return default(ComplexType);
}
}
</Code>
TestName(code, "implicit operator ComplexType")
End Sub
<WorkItem(2437, "https://github.com/dotnet/roslyn/issues/2437")>
<ConditionalFact(GetType(x86)), Trait(Traits.Feature, Traits.Features.CodeModel)>
Public Sub Name_ExplicitOperator()
Dim code =
<Code>
public class ComplexType
{
public ComplexType()
{
}
public static explicit operator $$ComplexType(System.Int32 input) { return new ComplexType(); }
public static ComplexType operator +(ComplexType input0, ComplexType input1)
{
return default(ComplexType);
}
}
</Code>
TestName(code, "explicit operator ComplexType")
End Sub
<WorkItem(2437, "https://github.com/dotnet/roslyn/issues/2437")>
<ConditionalFact(GetType(x86)), Trait(Traits.Feature, Traits.Features.CodeModel)>
Public Sub Name_OperatorOverload()
Dim code =
<Code>
public class ComplexType
{
public ComplexType()
{
}
public static implicit operator ComplexType(System.Int32 input) { return new ComplexType(); }
public static ComplexType operator $$+(ComplexType input0, ComplexType input1)
{
return default(ComplexType);
}
}
</Code>
TestName(code, "operator +")
End Sub
#End Region
#Region "OverrideKind tests"
......
......@@ -991,7 +991,7 @@ class D
Assert.NotNull(parentElement)
Dim unknownCodeFunction = TryCast(element, EnvDTE.CodeFunction)
Assert.Equal(unknownCodeFunction.Name, "operator implicit D")
Assert.Equal(unknownCodeFunction.Name, "implicit operator D")
End Using
End Using
End Sub
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册