diff --git a/ICSharpCode.NRefactory.CSharp/OutputVisitor/CSharpAmbience.cs b/ICSharpCode.NRefactory.CSharp/OutputVisitor/CSharpAmbience.cs index 150843c6fb..5bdcdad3ca 100644 --- a/ICSharpCode.NRefactory.CSharp/OutputVisitor/CSharpAmbience.cs +++ b/ICSharpCode.NRefactory.CSharp/OutputVisitor/CSharpAmbience.cs @@ -60,6 +60,8 @@ namespace ICSharpCode.NRefactory.CSharp writer.Write(' '); } else if (node is DelegateDeclaration) { writer.Write("delegate "); + } else if (node is EventDeclaration) { + writer.Write("event "); } } @@ -166,7 +168,7 @@ namespace ICSharpCode.NRefactory.CSharp if (typeDef.DeclaringTypeDefinition != null) { WriteTypeDeclarationName(typeDef.DeclaringTypeDefinition, writer); writer.Write('.'); - } else if ((ConversionFlags & ConversionFlags.UseFullyQualifiedMemberNames) == ConversionFlags.UseFullyQualifiedMemberNames) { + } else if ((ConversionFlags & ConversionFlags.UseFullyQualifiedTypeNames) == ConversionFlags.UseFullyQualifiedTypeNames) { writer.Write(typeDef.Namespace); writer.Write('.'); } @@ -179,7 +181,7 @@ namespace ICSharpCode.NRefactory.CSharp void WriteMemberDeclarationName(IMember member, StringWriter writer) { TypeSystemAstBuilder astBuilder = CreateAstBuilder(); - if ((ConversionFlags & ConversionFlags.UseFullyQualifiedMemberNames) == ConversionFlags.UseFullyQualifiedMemberNames) { + if ((ConversionFlags & ConversionFlags.ShowDeclaringType) == ConversionFlags.ShowDeclaringType) { writer.Write(ConvertType(member.DeclaringType)); writer.Write('.'); } diff --git a/ICSharpCode.NRefactory.Tests/CSharp/CSharpAmbienceTests.cs b/ICSharpCode.NRefactory.Tests/CSharp/CSharpAmbienceTests.cs index 5c51694970..39e5128f99 100644 --- a/ICSharpCode.NRefactory.Tests/CSharp/CSharpAmbienceTests.cs +++ b/ICSharpCode.NRefactory.Tests/CSharp/CSharpAmbienceTests.cs @@ -48,7 +48,7 @@ namespace ICSharpCode.NRefactory.CSharp public void GenericType() { var typeDef = compilation.FindType(typeof(Dictionary<,>)).GetDefinition(); - ambience.ConversionFlags = ConversionFlags.UseFullyQualifiedMemberNames | ConversionFlags.ShowTypeParameterList; + ambience.ConversionFlags = ConversionFlags.UseFullyQualifiedTypeNames | ConversionFlags.ShowTypeParameterList; string result = ambience.ConvertEntity(typeDef); Assert.AreEqual("System.Collections.Generic.Dictionary", result); @@ -68,7 +68,7 @@ namespace ICSharpCode.NRefactory.CSharp public void SimpleType() { var typeDef = compilation.FindType(typeof(Object)).GetDefinition(); - ambience.ConversionFlags = ConversionFlags.UseFullyQualifiedMemberNames | ConversionFlags.ShowTypeParameterList; + ambience.ConversionFlags = ConversionFlags.UseFullyQualifiedTypeNames | ConversionFlags.ShowTypeParameterList; string result = ambience.ConvertEntity(typeDef); Assert.AreEqual("System.Object", result); @@ -78,7 +78,7 @@ namespace ICSharpCode.NRefactory.CSharp public void SimpleTypeDefinition() { var typeDef = compilation.FindType(typeof(Object)).GetDefinition(); - ambience.ConversionFlags = ConversionFlags.All & ~(ConversionFlags.UseFullyQualifiedMemberNames); + ambience.ConversionFlags = ConversionFlags.All & ~(ConversionFlags.UseFullyQualifiedTypeNames); string result = ambience.ConvertEntity(typeDef); Assert.AreEqual("public class Object", result); @@ -88,7 +88,7 @@ namespace ICSharpCode.NRefactory.CSharp public void SimpleTypeDefinitionWithoutModifiers() { var typeDef = compilation.FindType(typeof(Object)).GetDefinition(); - ambience.ConversionFlags = ConversionFlags.All & ~(ConversionFlags.UseFullyQualifiedMemberNames | ConversionFlags.ShowModifiers | ConversionFlags.ShowAccessibility); + ambience.ConversionFlags = ConversionFlags.All & ~(ConversionFlags.UseFullyQualifiedTypeNames | ConversionFlags.ShowModifiers | ConversionFlags.ShowAccessibility); string result = ambience.ConvertEntity(typeDef); Assert.AreEqual("class Object", result); @@ -128,7 +128,7 @@ namespace ICSharpCode.NRefactory.CSharp public void GenericTypeWithNested() { var typeDef = compilation.FindType(typeof(List<>.Enumerator)).GetDefinition(); - ambience.ConversionFlags = ConversionFlags.UseFullyQualifiedMemberNames | ConversionFlags.ShowTypeParameterList; + ambience.ConversionFlags = ConversionFlags.UseFullyQualifiedTypeNames | ConversionFlags.ShowTypeParameterList; string result = ambience.ConvertEntity(typeDef); Assert.AreEqual("System.Collections.Generic.List.Enumerator", result); @@ -138,7 +138,7 @@ namespace ICSharpCode.NRefactory.CSharp public void GenericTypeWithNestedShortName() { var typeDef = compilation.FindType(typeof(List<>.Enumerator)).GetDefinition(); - ambience.ConversionFlags = ConversionFlags.ShowTypeParameterList; + ambience.ConversionFlags = ConversionFlags.ShowDeclaringType | ConversionFlags.ShowTypeParameterList; string result = ambience.ConvertEntity(typeDef); Assert.AreEqual("List.Enumerator", result); @@ -189,13 +189,57 @@ namespace ICSharpCode.NRefactory.CSharp public void SimpleFieldWithoutModifiers() { var field = compilation.FindType(typeof(CSharpAmbienceTests.Program)).GetFields(f => f.Name == "test").Single(); - ambience.ConversionFlags = ConversionFlags.All & ~(ConversionFlags.UseFullyQualifiedMemberNames | ConversionFlags.ShowModifiers | ConversionFlags.ShowAccessibility); + ambience.ConversionFlags = ConversionFlags.All & ~(ConversionFlags.ShowDeclaringType | ConversionFlags.ShowModifiers | ConversionFlags.ShowAccessibility); string result = ambience.ConvertEntity(field); Assert.AreEqual("int test;", result); } #endregion + #region IEvent tests + [Test] + public void EventWithDeclaringType() + { + var ev = compilation.FindType(typeof(CSharpAmbienceTests.Program)).GetEvents(f => f.Name == "ProgramChanged").Single(); + ambience.ConversionFlags = ConversionFlags.StandardConversionFlags | ConversionFlags.ShowDeclaringType; + string result = ambience.ConvertEntity(ev); + + Assert.AreEqual("public event EventHandler Program.ProgramChanged;", result); + } + + [Test] + public void CustomEvent() + { + var ev = compilation.FindType(typeof(CSharpAmbienceTests.Program)).GetEvents(f => f.Name == "SomeEvent").Single(); + ambience.ConversionFlags = ConversionFlags.StandardConversionFlags; + string result = ambience.ConvertEntity(ev); + + Assert.AreEqual("public event EventHandler SomeEvent;", result); + } + #endregion + + #region Property tests + [Test] + public void AutomaticProperty() + { + var prop = compilation.FindType(typeof(CSharpAmbienceTests.Program)).GetProperties(p => p.Name == "Test").Single(); + ambience.ConversionFlags = ConversionFlags.StandardConversionFlags; + string result = ambience.ConvertEntity(prop); + + Assert.AreEqual("public int Test { get; set; }", result); + } + + [Test] + public void Indexer() + { + var prop = compilation.FindType(typeof(CSharpAmbienceTests.Program)).GetProperties(p => p.IsIndexer).Single(); + ambience.ConversionFlags = ConversionFlags.StandardConversionFlags; + string result = ambience.ConvertEntity(prop); + + Assert.AreEqual("public int this[int index] { get; }", result); + } + #endregion + #region Test types #pragma warning disable 169, 67 @@ -250,8 +294,6 @@ namespace ICSharpCode.NRefactory.CSharp { Console.WriteLine("Hello World!"); - // TODO: Implement Functionality Here - Console.Write("Press any key to continue . . . "); Console.ReadKey(true); } diff --git a/ICSharpCode.NRefactory/Documentation/IdStringProvider.cs b/ICSharpCode.NRefactory/Documentation/IdStringProvider.cs index 4c4327d1de..8576e4dd2c 100644 --- a/ICSharpCode.NRefactory/Documentation/IdStringProvider.cs +++ b/ICSharpCode.NRefactory/Documentation/IdStringProvider.cs @@ -181,7 +181,7 @@ namespace ICSharpCode.NRefactory.Documentation /// /// Parse the ID string into a member reference. /// - /// The ID string representing the member (with "M:", "F:", "P:" or "E:" prefix). + /// The ID string representing the member (with "M:", "F:", "P:" or "E:" prefix). /// A member reference that represents the ID string. /// The syntax of the ID string is invalid public static IMemberReference ParseMemberIdString(string memberIdString) diff --git a/ICSharpCode.NRefactory/TypeSystem/IAmbience.cs b/ICSharpCode.NRefactory/TypeSystem/IAmbience.cs index 0d183399b7..6486289fba 100644 --- a/ICSharpCode.NRefactory/TypeSystem/IAmbience.cs +++ b/ICSharpCode.NRefactory/TypeSystem/IAmbience.cs @@ -44,9 +44,9 @@ namespace ICSharpCode.NRefactory.TypeSystem /// ShowDefinitionKeyWord = 8, /// - /// Show the fully qualified name for the member + /// Show the declaring type for the member /// - UseFullyQualifiedMemberNames = 0x10, + ShowDeclaringType = 0x10, /// /// Show modifiers (virtual, override, etc.) /// @@ -56,7 +56,7 @@ namespace ICSharpCode.NRefactory.TypeSystem /// ShowReturnType = 0x40, /// - /// Use fully qualified names for return type and parameters. + /// Use fully qualified names for types. /// UseFullyQualifiedTypeNames = 0x80, ///