diff --git a/src/Libraries/NRefactory/ICSharpCode.NRefactory.Tests/CSharp/Parser/TypeSystemConvertVisitorTests.cs b/src/Libraries/NRefactory/ICSharpCode.NRefactory.Tests/CSharp/Parser/TypeSystemConvertVisitorTests.cs index 0f173aafe8..bc2e4427d0 100644 --- a/src/Libraries/NRefactory/ICSharpCode.NRefactory.Tests/CSharp/Parser/TypeSystemConvertVisitorTests.cs +++ b/src/Libraries/NRefactory/ICSharpCode.NRefactory.Tests/CSharp/Parser/TypeSystemConvertVisitorTests.cs @@ -125,6 +125,18 @@ namespace ICSharpCode.NRefactory.CSharp.Parser Assert.AreEqual(1, typeDef.Parts.Count); var part = typeDef.Parts.Single(); Assert.IsTrue(part.IsPartial); + Assert.IsTrue(typeDef.IsPartial); + } + + [Test] + public void PartialClassWithTwoPartsWithoutPartialModifier() + { + var syntaxTree = SyntaxTree.Parse("class Test {} class Test {}"); + syntaxTree.FileName = "a.cs"; + var content = CreateContent(syntaxTree.ToTypeSystem()); + var typeDef = content.CreateCompilation().MainAssembly.GetTypeDefinition("", "Test"); + Assert.AreEqual(2, typeDef.Parts.Count); + Assert.IsTrue(typeDef.IsPartial); } } diff --git a/src/Libraries/NRefactory/ICSharpCode.NRefactory/TypeSystem/ITypeDefinition.cs b/src/Libraries/NRefactory/ICSharpCode.NRefactory/TypeSystem/ITypeDefinition.cs index 586f63647a..406d6493d7 100644 --- a/src/Libraries/NRefactory/ICSharpCode.NRefactory/TypeSystem/ITypeDefinition.cs +++ b/src/Libraries/NRefactory/ICSharpCode.NRefactory/TypeSystem/ITypeDefinition.cs @@ -142,6 +142,11 @@ namespace ICSharpCode.NRefactory.TypeSystem /// This property is used to speed up the search for extension methods. bool HasExtensionMethods { get; } + /// + /// Gets whether this type definition is made up of one or more partial classes. + /// + bool IsPartial { get; } + /// /// Determines how this type is implementing the specified interface member. /// diff --git a/src/Libraries/NRefactory/ICSharpCode.NRefactory/TypeSystem/Implementation/DefaultResolvedTypeDefinition.cs b/src/Libraries/NRefactory/ICSharpCode.NRefactory/TypeSystem/Implementation/DefaultResolvedTypeDefinition.cs index ef874d754d..0be487e420 100644 --- a/src/Libraries/NRefactory/ICSharpCode.NRefactory/TypeSystem/Implementation/DefaultResolvedTypeDefinition.cs +++ b/src/Libraries/NRefactory/ICSharpCode.NRefactory/TypeSystem/Implementation/DefaultResolvedTypeDefinition.cs @@ -477,6 +477,10 @@ namespace ICSharpCode.NRefactory.TypeSystem.Implementation return Methods.Any(m => m.IsExtensionMethod); } + public bool IsPartial { + get { return parts.Length > 1 || parts[0].IsPartial; } + } + public bool? IsReferenceType { get { switch (this.Kind) {