From 85fdbf6b66e19c57d263790318dbe23c655039fa Mon Sep 17 00:00:00 2001 From: Matt Ward Date: Sun, 16 Oct 2011 18:39:59 +0100 Subject: [PATCH] Fix ArgumentNullException when accessing DefaultClass.AllMembers before members initialized. --- .../Src/Implementations/DefaultClass.cs | 8 ++--- .../DefaultClassTests.cs | 33 +++++++++++++++++++ .../ICSharpCode.SharpDevelop.Dom.Tests.csproj | 1 + 3 files changed, 38 insertions(+), 4 deletions(-) create mode 100644 src/Main/ICSharpCode.SharpDevelop.Dom/Tests/ICSharpCode.SharpDevelop.Dom.Tests/DefaultClassTests.cs diff --git a/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Implementations/DefaultClass.cs b/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Implementations/DefaultClass.cs index 1025dca132..1fa912d4e7 100644 --- a/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Implementations/DefaultClass.cs +++ b/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Implementations/DefaultClass.cs @@ -646,10 +646,10 @@ namespace ICSharpCode.SharpDevelop.Dom public IEnumerable AllMembers { get { - IEnumerable p = properties; - return p.Concat(methods) - .Concat(fields) - .Concat(events); + IEnumerable p = Properties; + return p.Concat(Methods) + .Concat(Fields) + .Concat(Events); } } diff --git a/src/Main/ICSharpCode.SharpDevelop.Dom/Tests/ICSharpCode.SharpDevelop.Dom.Tests/DefaultClassTests.cs b/src/Main/ICSharpCode.SharpDevelop.Dom/Tests/ICSharpCode.SharpDevelop.Dom.Tests/DefaultClassTests.cs new file mode 100644 index 0000000000..09fc4ae81a --- /dev/null +++ b/src/Main/ICSharpCode.SharpDevelop.Dom/Tests/ICSharpCode.SharpDevelop.Dom.Tests/DefaultClassTests.cs @@ -0,0 +1,33 @@ +// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt) +// This code is distributed under the GNU LGPL (for details please see \doc\license.txt) + +using System; +using System.Linq; +using NUnit.Framework; + +namespace ICSharpCode.SharpDevelop.Dom.Tests +{ + [TestFixture] + public class DefaultClassTests + { + DefaultClass defaultClass; + DefaultCompilationUnit compilationUnit; + DefaultProjectContent projectContent; + + void CreateDefaultClass(string fullyQualifiedName) + { + projectContent = new DefaultProjectContent(); + compilationUnit = new DefaultCompilationUnit(projectContent); + defaultClass = new DefaultClass(compilationUnit, fullyQualifiedName); + } + + [Test] + public void AllMembers_PropertiesFieldsMethodsEventsAreAllNull_ReturnsNoItemsWithoutThrowingNullException() + { + CreateDefaultClass("TestClass"); + int count = defaultClass.AllMembers.Count(); + + Assert.AreEqual(0, count); + } + } +} diff --git a/src/Main/ICSharpCode.SharpDevelop.Dom/Tests/ICSharpCode.SharpDevelop.Dom.Tests/ICSharpCode.SharpDevelop.Dom.Tests.csproj b/src/Main/ICSharpCode.SharpDevelop.Dom/Tests/ICSharpCode.SharpDevelop.Dom.Tests/ICSharpCode.SharpDevelop.Dom.Tests.csproj index ae4d307071..ecc7e1fb0c 100644 --- a/src/Main/ICSharpCode.SharpDevelop.Dom/Tests/ICSharpCode.SharpDevelop.Dom.Tests/ICSharpCode.SharpDevelop.Dom.Tests.csproj +++ b/src/Main/ICSharpCode.SharpDevelop.Dom/Tests/ICSharpCode.SharpDevelop.Dom.Tests/ICSharpCode.SharpDevelop.Dom.Tests.csproj @@ -51,6 +51,7 @@ +