Browse Source

Fixed SD2-1384: Attribute fully qualified name using wrong namespace

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/3.0@3569 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 18 years ago
parent
commit
8dd64459d5
  1. 15
      src/Main/Base/Test/NRefactoryResolverTests.cs
  2. 11
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Implementations/AttributeReturnType.cs

15
src/Main/Base/Test/NRefactoryResolverTests.cs

@ -2468,5 +2468,20 @@ End Module"; @@ -2468,5 +2468,20 @@ End Module";
result = ResolveVB<TypeResolveResult>(program, "ITest", 5, 40, ExpressionContext.Type);
Assert.AreEqual("RootNamespace.ITest", result.ResolvedClass.FullyQualifiedName);
}
[Test]
public void SD2_1384()
{
string program = @"using System;
class Flags {
[Flags]
enum Test { }
}";
TypeResolveResult result = Resolve<TypeResolveResult>(program, "Flags.Test", 3, 1, ExpressionContext.Type);
Assert.AreEqual("Flags.Test", result.ResolvedClass.FullyQualifiedName);
IReturnType rt = result.ResolvedClass.Attributes[0].AttributeType;
Assert.AreEqual("System.FlagsAttribute", rt.FullyQualifiedName);
}
}
}

11
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Implementations/AttributeReturnType.cs

@ -6,6 +6,7 @@ @@ -6,6 +6,7 @@
// </file>
using System;
using System.Linq;
namespace ICSharpCode.SharpDevelop.Dom
{
@ -32,10 +33,18 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -32,10 +33,18 @@ namespace ICSharpCode.SharpDevelop.Dom
public override IReturnType BaseType {
get {
if (scrt1.GetUnderlyingClass() != null)
IClass class1 = scrt1.GetUnderlyingClass();
IClass class2 = scrt1.GetUnderlyingClass();
if (class1 != null && class2 != null) {
if (class1.ClassInheritanceTree.Any(c => c.FullyQualifiedName == "System.Attribute"))
return scrt1;
else
return scrt2;
} else if (class2 != null) {
return scrt2;
} else {
return scrt1;
}
}
}
}

Loading…
Cancel
Save