Browse Source

Use a property to return the list of annotations.

This makes debugging annotations easier, as properties can be evaluated in the debugger.
pull/100/head
Daniel Grunwald 15 years ago
parent
commit
80fa674de6
  1. 56
      NRefactory/ICSharpCode.NRefactory/CSharp/Ast/AstNode.cs

56
NRefactory/ICSharpCode.NRefactory/CSharp/Ast/AstNode.cs

@ -537,49 +537,23 @@ namespace ICSharpCode.NRefactory.CSharp
return null; return null;
} }
public IEnumerable<T> Annotations<T>() where T: class /// <summary>
{ /// Gets all annotations stored on this AstNode.
object annotations = this.annotations; /// </summary>
AnnotationList list = annotations as AnnotationList; public IEnumerable<object> Annotations {
if (list != null) { get {
List<T> result = new List<T>(); object annotations = this.annotations;
lock (list) { AnnotationList list = annotations as AnnotationList;
foreach (object obj in list) { if (list != null) {
T t = obj as T; lock (list) {
if (t != null) return list.ToArray();
result.Add(t);
}
}
return result;
} else {
T t = annotations as T;
if (t != null)
return new T[] { t };
else
return Enumerable.Empty<T>();
}
}
public IEnumerable<object> Annotations(Type type)
{
if (type == null)
throw new ArgumentNullException("type");
object annotations = this.annotations;
AnnotationList list = annotations as AnnotationList;
if (list != null) {
List<object> result = new List<object>();
lock (list) {
foreach (object obj in list) {
if (type.IsInstanceOfType(obj))
result.Add(obj);
} }
} else {
if (annotations != null)
return new object[] { annotations };
else
return Enumerable.Empty<object>();
} }
return result;
} else {
if (type.IsInstanceOfType(annotations))
return new object[] { annotations };
else
return Enumerable.Empty<object>();
} }
} }
#endregion #endregion

Loading…
Cancel
Save