Browse Source

Added IsSpecialized to IMember & IsParameterized to IType to make it

easier to handle such cases without asking for the type of the
objects.
pull/32/merge
Mike Krüger 13 years ago
parent
commit
984d2ca267
  1. 6
      ICSharpCode.NRefactory/TypeSystem/IMember.cs
  2. 5
      ICSharpCode.NRefactory/TypeSystem/IType.cs
  3. 4
      ICSharpCode.NRefactory/TypeSystem/Implementation/AbstractResolvedMember.cs
  4. 4
      ICSharpCode.NRefactory/TypeSystem/Implementation/AbstractResolvedTypeParameter.cs
  5. 8
      ICSharpCode.NRefactory/TypeSystem/Implementation/AbstractType.cs
  6. 6
      ICSharpCode.NRefactory/TypeSystem/Implementation/DefaultResolvedTypeDefinition.cs
  7. 6
      ICSharpCode.NRefactory/TypeSystem/Implementation/SpecializedMember.cs
  8. 6
      ICSharpCode.NRefactory/TypeSystem/ParameterizedType.cs

6
ICSharpCode.NRefactory/TypeSystem/IMember.cs

@ -179,5 +179,11 @@ namespace ICSharpCode.NRefactory.TypeSystem
get; get;
} }
/// <summary>
/// If true a type substitution on this member has been performed.
/// </summary>
bool IsSpecialized {
get;
}
} }
} }

5
ICSharpCode.NRefactory/TypeSystem/IType.cs

@ -96,6 +96,11 @@ namespace ICSharpCode.NRefactory.TypeSystem
/// </summary> /// </summary>
IList<IType> TypeArguments { get; } IList<IType> TypeArguments { get; }
/// <summary>
/// If true the type represents an instance of a generic type.
/// </summary>
bool IsParameterized { get; }
/// <summary> /// <summary>
/// Calls ITypeVisitor.Visit for this type. /// Calls ITypeVisitor.Visit for this type.
/// </summary> /// </summary>

4
ICSharpCode.NRefactory/TypeSystem/Implementation/AbstractResolvedMember.cs

@ -122,6 +122,10 @@ namespace ICSharpCode.NRefactory.TypeSystem.Implementation
get { return TypeParameterSubstitution.Identity; } get { return TypeParameterSubstitution.Identity; }
} }
public bool IsSpecialized {
get { return false; }
}
public virtual IMemberReference ToMemberReference() public virtual IMemberReference ToMemberReference()
{ {
var declTypeRef = this.DeclaringType.ToTypeReference(); var declTypeRef = this.DeclaringType.ToTypeReference();

4
ICSharpCode.NRefactory/TypeSystem/Implementation/AbstractResolvedTypeParameter.cs

@ -207,6 +207,10 @@ namespace ICSharpCode.NRefactory.TypeSystem.Implementation
get { return 0; } get { return 0; }
} }
bool IType.IsParameterized {
get { return false; }
}
readonly static IList<ITypeParameter> emptyTypeParameters = new ITypeParameter[0]; readonly static IList<ITypeParameter> emptyTypeParameters = new ITypeParameter[0];
IList<ITypeParameter> IType.TypeParameters { IList<ITypeParameter> IType.TypeParameters {
get { return emptyTypeParameters; } get { return emptyTypeParameters; }

8
ICSharpCode.NRefactory/TypeSystem/Implementation/AbstractType.cs

@ -65,14 +65,18 @@ namespace ICSharpCode.NRefactory.TypeSystem.Implementation
} }
readonly static IList<IType> emptyTypeArguments = new IType[0]; readonly static IList<IType> emptyTypeArguments = new IType[0];
IList<IType> IType.TypeArguments { public virtual IList<IType> TypeArguments {
get { return emptyTypeArguments; } get { return emptyTypeArguments; }
} }
public virtual IType DeclaringType { public virtual IType DeclaringType {
get { return null; } get { return null; }
} }
public virtual bool IsParameterized {
get { return false; }
}
public virtual ITypeDefinition GetDefinition() public virtual ITypeDefinition GetDefinition()
{ {
return null; return null;

6
ICSharpCode.NRefactory/TypeSystem/Implementation/DefaultResolvedTypeDefinition.cs

@ -494,10 +494,14 @@ namespace ICSharpCode.NRefactory.TypeSystem.Implementation
} }
readonly static IList<IType> emptyTypeArguments = new IType[0]; readonly static IList<IType> emptyTypeArguments = new IType[0];
IList<IType> IType.TypeArguments { public IList<IType> TypeArguments {
get { return emptyTypeArguments; } get { return emptyTypeArguments; }
} }
public bool IsParameterized {
get { return false; }
}
#region DirectBaseTypes #region DirectBaseTypes
IList<IType> directBaseTypes; IList<IType> directBaseTypes;

6
ICSharpCode.NRefactory/TypeSystem/Implementation/SpecializedMember.cs

@ -301,7 +301,11 @@ namespace ICSharpCode.NRefactory.TypeSystem.Implementation
public IAssembly ParentAssembly { public IAssembly ParentAssembly {
get { return baseMember.ParentAssembly; } get { return baseMember.ParentAssembly; }
} }
public bool IsSpecialized {
get { return true; }
}
public override bool Equals(object obj) public override bool Equals(object obj)
{ {
SpecializedMember other = obj as SpecializedMember; SpecializedMember other = obj as SpecializedMember;

6
ICSharpCode.NRefactory/TypeSystem/ParameterizedType.cs

@ -147,6 +147,12 @@ namespace ICSharpCode.NRefactory.TypeSystem
} }
} }
public bool IsParameterized {
get {
return true;
}
}
/// <summary> /// <summary>
/// Same as 'parameterizedType.TypeArguments[index]', but is a bit more efficient (doesn't require the read-only wrapper). /// Same as 'parameterizedType.TypeArguments[index]', but is a bit more efficient (doesn't require the read-only wrapper).
/// </summary> /// </summary>

Loading…
Cancel
Save