diff --git a/src/VisualStudio/CSharp/Impl/CodeModel/CSharpCodeModelService.cs b/src/VisualStudio/CSharp/Impl/CodeModel/CSharpCodeModelService.cs index 7497cfce96d190cfe94a5986fa50d5b366658c18..3996d8d8481fa9856c3f19fa317d15cc7d8a78c2 100644 --- a/src/VisualStudio/CSharp/Impl/CodeModel/CSharpCodeModelService.cs +++ b/src/VisualStudio/CSharp/Impl/CodeModel/CSharpCodeModelService.cs @@ -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(); diff --git a/src/VisualStudio/CSharp/Test/CodeModel/FileCodeFunctionTests.cs b/src/VisualStudio/CSharp/Test/CodeModel/FileCodeFunctionTests.cs index 5fcb2b11baed5349580ed7dafe889cc860556a06..fd4ac72b2edf1ea5509a0b65997a3bfd787f6398 100644 --- a/src/VisualStudio/CSharp/Test/CodeModel/FileCodeFunctionTests.cs +++ b/src/VisualStudio/CSharp/Test/CodeModel/FileCodeFunctionTests.cs @@ -573,7 +573,7 @@ public void ConversionOperator() { CodeClass classObject = (CodeClass)GetCodeElement("Ref"); var element = classObject.Members.Item(1); - Assert.Equal("operator implicit Ref", element.Name); + Assert.Equal("implicit operator Ref", element.Name); } } } diff --git a/src/VisualStudio/Core/Test/CodeModel/CSharp/CodeFunctionTests.vb b/src/VisualStudio/Core/Test/CodeModel/CSharp/CodeFunctionTests.vb index ae47c509c600bf1f7dc3fccd8d9189586785306b..73252d31f1a1c44249bff52b9b5cd67c1167b949 100644 --- a/src/VisualStudio/Core/Test/CodeModel/CSharp/CodeFunctionTests.vb +++ b/src/VisualStudio/Core/Test/CodeModel/CSharp/CodeFunctionTests.vb @@ -423,6 +423,75 @@ public class C1 : I1 TestFullName(code, "C1.I1.f1") End Sub + + + Public Sub FullName_ImplicitOperator() + Dim 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); + } +} + + + TestFullName(code, "ComplexType.implicit operator ComplexType") + End Sub + + + + Public Sub FullName_ExplicitOperator() + Dim 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); + } +} + + + TestFullName(code, "ComplexType.explicit operator ComplexType") + End Sub + + + + Public Sub FullName_OperatorOverload() + Dim 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); + } +} + + + TestFullName(code, "ComplexType.operator +") + End Sub + #End Region #Region "FunctionKind tests" @@ -623,6 +692,75 @@ class C TestName(code, "~C") End Sub + + + Public Sub Name_ImplicitOperator() + Dim 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); + } +} + + + TestName(code, "implicit operator ComplexType") + End Sub + + + + Public Sub Name_ExplicitOperator() + Dim 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); + } +} + + + TestName(code, "explicit operator ComplexType") + End Sub + + + + Public Sub Name_OperatorOverload() + Dim 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); + } +} + + + TestName(code, "operator +") + End Sub + #End Region #Region "OverrideKind tests" diff --git a/src/VisualStudio/Core/Test/CodeModel/CSharp/FileCodeModelTests.vb b/src/VisualStudio/Core/Test/CodeModel/CSharp/FileCodeModelTests.vb index 19eadfc5d66f49e3682916d6a568bf5d87bf45a3..007a53c75ea117a11831d82daf97351c03406995 100644 --- a/src/VisualStudio/Core/Test/CodeModel/CSharp/FileCodeModelTests.vb +++ b/src/VisualStudio/Core/Test/CodeModel/CSharp/FileCodeModelTests.vb @@ -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