Browse Source

Add IsPartial property to ITypeDefinition.

pull/375/head
Matt Ward 12 years ago
parent
commit
6fa46d4f24
  1. 12
      src/Libraries/NRefactory/ICSharpCode.NRefactory.Tests/CSharp/Parser/TypeSystemConvertVisitorTests.cs
  2. 5
      src/Libraries/NRefactory/ICSharpCode.NRefactory/TypeSystem/ITypeDefinition.cs
  3. 4
      src/Libraries/NRefactory/ICSharpCode.NRefactory/TypeSystem/Implementation/DefaultResolvedTypeDefinition.cs

12
src/Libraries/NRefactory/ICSharpCode.NRefactory.Tests/CSharp/Parser/TypeSystemConvertVisitorTests.cs

@ -125,6 +125,18 @@ namespace ICSharpCode.NRefactory.CSharp.Parser @@ -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);
}
}

5
src/Libraries/NRefactory/ICSharpCode.NRefactory/TypeSystem/ITypeDefinition.cs

@ -142,6 +142,11 @@ namespace ICSharpCode.NRefactory.TypeSystem @@ -142,6 +142,11 @@ namespace ICSharpCode.NRefactory.TypeSystem
/// <remarks>This property is used to speed up the search for extension methods.</remarks>
bool HasExtensionMethods { get; }
/// <summary>
/// Gets whether this type definition is made up of one or more partial classes.
/// </summary>
bool IsPartial { get; }
/// <summary>
/// Determines how this type is implementing the specified interface member.
/// </summary>

4
src/Libraries/NRefactory/ICSharpCode.NRefactory/TypeSystem/Implementation/DefaultResolvedTypeDefinition.cs

@ -477,6 +477,10 @@ namespace ICSharpCode.NRefactory.TypeSystem.Implementation @@ -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) {

Loading…
Cancel
Save