Browse Source

Show 'static' class modifier in tool tips.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/3.0@4030 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 16 years ago
parent
commit
8a73db8530
  1. 10
      src/Main/Base/Test/ReflectionLayerTests.cs
  2. 5
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/CSharp/CSharpAmbience.cs
  3. 3
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/CecilReader.cs
  4. 4
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/NRefactoryResolver/NRefactoryASTConvertVisitor.cs
  5. 2
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ReflectionLayer/DomPersistence.cs
  6. 3
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ReflectionLayer/ReflectionClass.cs
  7. 14
      src/Main/ICSharpCode.SharpDevelop.Dom/Tests/ICSharpCode.SharpDevelop.Dom.Tests/NRefactoryAstConverterTests.cs

10
src/Main/Base/Test/ReflectionLayerTests.cs

@ -165,6 +165,16 @@ namespace ICSharpCode.SharpDevelop.Tests @@ -165,6 +165,16 @@ namespace ICSharpCode.SharpDevelop.Tests
GetMethod(c, "ConvertAll").DocumentationTag);
}
[Test]
public void StaticModifierTest()
{
IClass c = pc.GetClass("System.Environment", 0);
Assert.IsNotNull(c, "System.Environment not found");
Assert.IsTrue(c.IsAbstract, "class should be abstract");
Assert.IsTrue(c.IsSealed, "class should be sealed");
Assert.IsTrue(c.IsStatic, "class should be static");
}
[Test]
public void InnerClassReferenceTest()
{

5
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/CSharp/CSharpAmbience.cs

@ -70,7 +70,6 @@ namespace ICSharpCode.SharpDevelop.Dom.CSharp @@ -70,7 +70,6 @@ namespace ICSharpCode.SharpDevelop.Dom.CSharp
return ret;
}
public override string Convert(IClass c)
{
CheckThread();
@ -84,7 +83,9 @@ namespace ICSharpCode.SharpDevelop.Dom.CSharp @@ -84,7 +83,9 @@ namespace ICSharpCode.SharpDevelop.Dom.CSharp
}
if (ShowModifiers) {
if (c.IsSealed) {
if (c.IsStatic) {
builder.Append("static ");
} else if (c.IsSealed) {
switch (c.ClassType) {
case ClassType.Delegate:
case ClassType.Struct:

3
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/CecilReader.cs

@ -222,6 +222,9 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -222,6 +222,9 @@ namespace ICSharpCode.SharpDevelop.Dom
if (td.IsAbstract) {
modifiers |= ModifierEnum.Abstract;
}
if (td.IsSealed && td.IsAbstract) {
modifiers |= ModifierEnum.Static;
}
if ((td.Attributes & TypeAttributes.VisibilityMask) == TypeAttributes.NestedPublic) {
modifiers |= ModifierEnum.Public;

4
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/NRefactoryResolver/NRefactoryASTConvertVisitor.cs

@ -368,6 +368,10 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -368,6 +368,10 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
DomRegion bodyRegion = GetRegion(typeDeclaration.BodyStartLocation, typeDeclaration.EndLocation);
DefaultClass c = new DefaultClass(cu, TranslateClassType(typeDeclaration.Type), ConvertTypeModifier(typeDeclaration.Modifier), region, GetCurrentClass());
if (c.IsStatic) {
// static classes are also abstract and sealed at the same time
c.Modifiers |= ModifierEnum.Abstract | ModifierEnum.Sealed;
}
c.BodyRegion = bodyRegion;
ConvertAttributes(typeDeclaration, c);
c.Documentation = GetDocumentation(region.BeginLine, typeDeclaration.Attributes);

2
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ReflectionLayer/DomPersistence.cs

@ -20,7 +20,7 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -20,7 +20,7 @@ namespace ICSharpCode.SharpDevelop.Dom
{
public const long FileMagic = 0x11635233ED2F428C;
public const long IndexFileMagic = 0x11635233ED2F427D;
public const short FileVersion = 20;
public const short FileVersion = 21;
ProjectContentRegistry registry;
string cacheDirectory;

3
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ReflectionLayer/ReflectionClass.cs

@ -187,6 +187,9 @@ namespace ICSharpCode.SharpDevelop.Dom.ReflectionLayer @@ -187,6 +187,9 @@ namespace ICSharpCode.SharpDevelop.Dom.ReflectionLayer
if (type.IsAbstract) {
modifiers |= ModifierEnum.Abstract;
}
if (type.IsSealed && type.IsAbstract) {
modifiers |= ModifierEnum.Static;
}
if (type.IsNestedPrivate ) { // I assume that private is used most and public last (at least should be)
modifiers |= ModifierEnum.Private;

14
src/Main/ICSharpCode.SharpDevelop.Dom/Tests/ICSharpCode.SharpDevelop.Dom.Tests/NRefactoryAstConverterTests.cs

@ -151,5 +151,19 @@ class X { @@ -151,5 +151,19 @@ class X {
Assert.AreEqual("IComparable", crt.Name);
Assert.AreSame(a, crt.TypeArguments[0].CastToGenericReturnType().TypeParameter);
}
[Test]
public void StaticClassTest()
{
ICompilationUnit cu = Parse(@"
using System;
static class X {}
");
IClass c = cu.Classes[0];
Assert.IsTrue(c.IsAbstract, "class should be abstract");
Assert.IsTrue(c.IsSealed, "class should be sealed");
Assert.IsTrue(c.IsStatic, "class should be static");
}
}
}

Loading…
Cancel
Save