Browse Source

Use resolved TS in member filter predicates.

This was the last place where the public API of the resolved TS was referencing the unresolved TS.
We could now implement the resolved TS directly using SRM, and remove the whole unresolved TS layer.
pull/1198/head
Daniel Grunwald 7 years ago
parent
commit
0be9e84f1b
  1. 2
      ICSharpCode.Decompiler/CSharp/Resolver/CSharpConversions.cs
  2. 4
      ICSharpCode.Decompiler/CSharp/Resolver/MemberLookup.cs
  3. 6
      ICSharpCode.Decompiler/CSharp/Resolver/ReducedExtensionMethod.cs
  4. 2
      ICSharpCode.Decompiler/Documentation/IdStringMemberReference.cs
  5. 14
      ICSharpCode.Decompiler/TypeSystem/AnonymousType.cs
  6. 8
      ICSharpCode.Decompiler/TypeSystem/ArrayType.cs
  7. 7
      ICSharpCode.Decompiler/TypeSystem/IMethod.cs
  8. 18
      ICSharpCode.Decompiler/TypeSystem/IType.cs
  9. 23
      ICSharpCode.Decompiler/TypeSystem/Implementation/AbstractResolvedTypeParameter.cs
  10. 16
      ICSharpCode.Decompiler/TypeSystem/Implementation/AbstractType.cs
  11. 91
      ICSharpCode.Decompiler/TypeSystem/Implementation/DefaultResolvedTypeDefinition.cs
  12. 2
      ICSharpCode.Decompiler/TypeSystem/Implementation/FakeMember.cs
  13. 38
      ICSharpCode.Decompiler/TypeSystem/Implementation/GetMembersHelper.cs
  14. 4
      ICSharpCode.Decompiler/TypeSystem/Implementation/SpecializedMethod.cs
  15. 14
      ICSharpCode.Decompiler/TypeSystem/Implementation/VoidTypeDefinition.cs
  16. 16
      ICSharpCode.Decompiler/TypeSystem/IntersectionType.cs
  17. 16
      ICSharpCode.Decompiler/TypeSystem/ParameterizedType.cs
  18. 14
      ICSharpCode.Decompiler/TypeSystem/TupleType.cs
  19. 4
      ICSharpCode.Decompiler/TypeSystem/VarArgInstanceMethod.cs

2
ICSharpCode.Decompiler/CSharp/Resolver/CSharpConversions.cs

@ -927,7 +927,7 @@ namespace ICSharpCode.Decompiler.CSharp.Resolver @@ -927,7 +927,7 @@ namespace ICSharpCode.Decompiler.CSharp.Resolver
List<OperatorInfo> GetApplicableConversionOperators(ResolveResult fromResult, IType fromType, IType toType, bool isExplicit)
{
// Find the candidate operators:
Predicate<IUnresolvedMethod> opFilter;
Predicate<IMethod> opFilter;
if (isExplicit)
opFilter = m => m.IsStatic && m.IsOperator && (m.Name == "op_Explicit" || m.Name == "op_Implicit") && m.Parameters.Count == 1;
else

4
ICSharpCode.Decompiler/CSharp/Resolver/MemberLookup.cs

@ -347,7 +347,7 @@ namespace ICSharpCode.Decompiler.CSharp.Resolver @@ -347,7 +347,7 @@ namespace ICSharpCode.Decompiler.CSharp.Resolver
Predicate<ITypeDefinition> nestedTypeFilter = delegate(ITypeDefinition entity) {
return entity.Name == name && IsAccessible(entity, allowProtectedAccess);
};
Predicate<IUnresolvedMember> memberFilter = delegate(IUnresolvedMember entity) {
Predicate<IMember> memberFilter = delegate(IMember entity) {
// NOTE: Atm destructors can be looked up with 'Finalize'
return entity.SymbolKind != SymbolKind.Indexer &&
entity.SymbolKind != SymbolKind.Operator &&
@ -417,7 +417,7 @@ namespace ICSharpCode.Decompiler.CSharp.Resolver @@ -417,7 +417,7 @@ namespace ICSharpCode.Decompiler.CSharp.Resolver
IType targetType = targetResolveResult.Type;
bool allowProtectedAccess = IsProtectedAccessAllowed(targetResolveResult);
Predicate<IUnresolvedProperty> filter = p => p.IsIndexer;
Predicate<IProperty> filter = p => p.IsIndexer;
List<LookupGroup> lookupGroups = new List<LookupGroup>();
foreach (IType type in targetType.GetNonInterfaceBaseTypes()) {

6
ICSharpCode.Decompiler/CSharp/Resolver/ReducedExtensionMethod.cs

@ -136,12 +136,6 @@ namespace ICSharpCode.Decompiler.CSharp.Resolver @@ -136,12 +136,6 @@ namespace ICSharpCode.Decompiler.CSharp.Resolver
#region IMethod implementation
public IReadOnlyList<IUnresolvedMethod> Parts {
get {
return baseMethod.Parts;
}
}
public IReadOnlyList<IAttribute> ReturnTypeAttributes {
get {
return baseMethod.ReturnTypeAttributes;

2
ICSharpCode.Decompiler/Documentation/IdStringMemberReference.cs

@ -35,7 +35,7 @@ namespace ICSharpCode.Decompiler.Documentation @@ -35,7 +35,7 @@ namespace ICSharpCode.Decompiler.Documentation
this.memberIdString = memberIdString;
}
bool CanMatch(IUnresolvedMember member)
bool CanMatch(IMember member)
{
switch (member.SymbolKind) {
case SymbolKind.Field:

14
ICSharpCode.Decompiler/TypeSystem/AnonymousType.cs

@ -128,7 +128,7 @@ namespace ICSharpCode.Decompiler.TypeSystem @@ -128,7 +128,7 @@ namespace ICSharpCode.Decompiler.TypeSystem
get { return resolvedProperties; }
}
public override IEnumerable<IMethod> GetMethods(Predicate<IUnresolvedMethod> filter = null, GetMemberOptions options = GetMemberOptions.None)
public override IEnumerable<IMethod> GetMethods(Predicate<IMethod> filter = null, GetMemberOptions options = GetMemberOptions.None)
{
if ((options & GetMemberOptions.IgnoreInheritedMembers) == GetMemberOptions.IgnoreInheritedMembers)
return EmptyList<IMethod>.Instance;
@ -136,7 +136,7 @@ namespace ICSharpCode.Decompiler.TypeSystem @@ -136,7 +136,7 @@ namespace ICSharpCode.Decompiler.TypeSystem
return compilation.FindType(KnownTypeCode.Object).GetMethods(filter, options);
}
public override IEnumerable<IMethod> GetMethods(IReadOnlyList<IType> typeArguments, Predicate<IUnresolvedMethod> filter = null, GetMemberOptions options = GetMemberOptions.None)
public override IEnumerable<IMethod> GetMethods(IReadOnlyList<IType> typeArguments, Predicate<IMethod> filter = null, GetMemberOptions options = GetMemberOptions.None)
{
if ((options & GetMemberOptions.IgnoreInheritedMembers) == GetMemberOptions.IgnoreInheritedMembers)
return EmptyList<IMethod>.Instance;
@ -144,23 +144,23 @@ namespace ICSharpCode.Decompiler.TypeSystem @@ -144,23 +144,23 @@ namespace ICSharpCode.Decompiler.TypeSystem
return compilation.FindType(KnownTypeCode.Object).GetMethods(typeArguments, filter, options);
}
public override IEnumerable<IProperty> GetProperties(Predicate<IUnresolvedProperty> filter = null, GetMemberOptions options = GetMemberOptions.None)
public override IEnumerable<IProperty> GetProperties(Predicate<IProperty> filter = null, GetMemberOptions options = GetMemberOptions.None)
{
for (int i = 0; i < unresolvedProperties.Length; i++) {
if (filter == null || filter(unresolvedProperties[i]))
if (filter == null || filter(resolvedProperties[i]))
yield return resolvedProperties[i];
}
}
public override IEnumerable<IMethod> GetAccessors(Predicate<IUnresolvedMethod> filter, GetMemberOptions options)
public override IEnumerable<IMethod> GetAccessors(Predicate<IMethod> filter, GetMemberOptions options)
{
for (int i = 0; i < unresolvedProperties.Length; i++) {
if (unresolvedProperties[i].CanGet) {
if (filter == null || filter(unresolvedProperties[i].Getter))
if (filter == null || filter(resolvedProperties[i].Getter))
yield return resolvedProperties[i].Getter;
}
if (unresolvedProperties[i].CanSet) {
if (filter == null || filter(unresolvedProperties[i].Setter))
if (filter == null || filter(resolvedProperties[i].Setter))
yield return resolvedProperties[i].Setter;
}
}

8
ICSharpCode.Decompiler/TypeSystem/ArrayType.cs

@ -98,7 +98,7 @@ namespace ICSharpCode.Decompiler.TypeSystem @@ -98,7 +98,7 @@ namespace ICSharpCode.Decompiler.TypeSystem
}
}
public override IEnumerable<IMethod> GetMethods(Predicate<IUnresolvedMethod> filter = null, GetMemberOptions options = GetMemberOptions.None)
public override IEnumerable<IMethod> GetMethods(Predicate<IMethod> filter = null, GetMemberOptions options = GetMemberOptions.None)
{
if ((options & GetMemberOptions.IgnoreInheritedMembers) == GetMemberOptions.IgnoreInheritedMembers)
return EmptyList<IMethod>.Instance;
@ -106,7 +106,7 @@ namespace ICSharpCode.Decompiler.TypeSystem @@ -106,7 +106,7 @@ namespace ICSharpCode.Decompiler.TypeSystem
return compilation.FindType(KnownTypeCode.Array).GetMethods(filter, options);
}
public override IEnumerable<IMethod> GetMethods(IReadOnlyList<IType> typeArguments, Predicate<IUnresolvedMethod> filter = null, GetMemberOptions options = GetMemberOptions.None)
public override IEnumerable<IMethod> GetMethods(IReadOnlyList<IType> typeArguments, Predicate<IMethod> filter = null, GetMemberOptions options = GetMemberOptions.None)
{
if ((options & GetMemberOptions.IgnoreInheritedMembers) == GetMemberOptions.IgnoreInheritedMembers)
return EmptyList<IMethod>.Instance;
@ -114,7 +114,7 @@ namespace ICSharpCode.Decompiler.TypeSystem @@ -114,7 +114,7 @@ namespace ICSharpCode.Decompiler.TypeSystem
return compilation.FindType(KnownTypeCode.Array).GetMethods(typeArguments, filter, options);
}
public override IEnumerable<IMethod> GetAccessors(Predicate<IUnresolvedMethod> filter = null, GetMemberOptions options = GetMemberOptions.None)
public override IEnumerable<IMethod> GetAccessors(Predicate<IMethod> filter = null, GetMemberOptions options = GetMemberOptions.None)
{
if ((options & GetMemberOptions.IgnoreInheritedMembers) == GetMemberOptions.IgnoreInheritedMembers)
return EmptyList<IMethod>.Instance;
@ -122,7 +122,7 @@ namespace ICSharpCode.Decompiler.TypeSystem @@ -122,7 +122,7 @@ namespace ICSharpCode.Decompiler.TypeSystem
return compilation.FindType(KnownTypeCode.Array).GetAccessors(filter, options);
}
public override IEnumerable<IProperty> GetProperties(Predicate<IUnresolvedProperty> filter = null, GetMemberOptions options = GetMemberOptions.None)
public override IEnumerable<IProperty> GetProperties(Predicate<IProperty> filter = null, GetMemberOptions options = GetMemberOptions.None)
{
if ((options & GetMemberOptions.IgnoreInheritedMembers) == GetMemberOptions.IgnoreInheritedMembers)
return EmptyList<IProperty>.Instance;

7
ICSharpCode.Decompiler/TypeSystem/IMethod.cs

@ -76,13 +76,6 @@ namespace ICSharpCode.Decompiler.TypeSystem @@ -76,13 +76,6 @@ namespace ICSharpCode.Decompiler.TypeSystem
/// </summary>
public interface IMethod : IParameterizedMember
{
/// <summary>
/// Gets the unresolved method parts.
/// For partial methods, this returns all parts.
/// Otherwise, this returns an array with a single element (new[] { UnresolvedMember }).
/// </summary>
IReadOnlyList<IUnresolvedMethod> Parts { get; }
/// <summary>
/// Gets the attributes associated with the return type. (e.g. [return: MarshalAs(...)])
/// </summary>

18
ICSharpCode.Decompiler/TypeSystem/IType.cs

@ -203,7 +203,7 @@ namespace ICSharpCode.Decompiler.TypeSystem @@ -203,7 +203,7 @@ namespace ICSharpCode.Decompiler.TypeSystem
/// and the appropriate <see cref="Implementation.SpecializedMethod"/> will be returned.
/// </para>
/// </remarks>
IEnumerable<IMethod> GetConstructors(Predicate<IUnresolvedMethod> filter = null, GetMemberOptions options = GetMemberOptions.IgnoreInheritedMembers);
IEnumerable<IMethod> GetConstructors(Predicate<IMethod> filter = null, GetMemberOptions options = GetMemberOptions.IgnoreInheritedMembers);
/// <summary>
/// Gets all methods that can be called on this type.
@ -230,7 +230,7 @@ namespace ICSharpCode.Decompiler.TypeSystem @@ -230,7 +230,7 @@ namespace ICSharpCode.Decompiler.TypeSystem
/// the ambiguity can be avoided.
/// </para>
/// </remarks>
IEnumerable<IMethod> GetMethods(Predicate<IUnresolvedMethod> filter = null, GetMemberOptions options = GetMemberOptions.None);
IEnumerable<IMethod> GetMethods(Predicate<IMethod> filter = null, GetMemberOptions options = GetMemberOptions.None);
/// <summary>
/// Gets all generic methods that can be called on this type with the specified type arguments.
@ -251,7 +251,7 @@ namespace ICSharpCode.Decompiler.TypeSystem @@ -251,7 +251,7 @@ namespace ICSharpCode.Decompiler.TypeSystem
/// and the other overload's remarks about ambiguous signatures apply here as well.
/// </para>
/// </remarks>
IEnumerable<IMethod> GetMethods(IReadOnlyList<IType> typeArguments, Predicate<IUnresolvedMethod> filter = null, GetMemberOptions options = GetMemberOptions.None);
IEnumerable<IMethod> GetMethods(IReadOnlyList<IType> typeArguments, Predicate<IMethod> filter = null, GetMemberOptions options = GetMemberOptions.None);
/// <summary>
/// Gets all properties that can be called on this type.
@ -263,7 +263,7 @@ namespace ICSharpCode.Decompiler.TypeSystem @@ -263,7 +263,7 @@ namespace ICSharpCode.Decompiler.TypeSystem
/// For properties on parameterized types, type substitution will be performed on the property signature,
/// and the appropriate <see cref="Implementation.SpecializedProperty"/> will be returned.
/// </remarks>
IEnumerable<IProperty> GetProperties(Predicate<IUnresolvedProperty> filter = null, GetMemberOptions options = GetMemberOptions.None);
IEnumerable<IProperty> GetProperties(Predicate<IProperty> filter = null, GetMemberOptions options = GetMemberOptions.None);
/// <summary>
/// Gets all fields that can be accessed on this type.
@ -275,7 +275,7 @@ namespace ICSharpCode.Decompiler.TypeSystem @@ -275,7 +275,7 @@ namespace ICSharpCode.Decompiler.TypeSystem
/// For fields on parameterized types, type substitution will be performed on the field's return type,
/// and the appropriate <see cref="Implementation.SpecializedField"/> will be returned.
/// </remarks>
IEnumerable<IField> GetFields(Predicate<IUnresolvedField> filter = null, GetMemberOptions options = GetMemberOptions.None);
IEnumerable<IField> GetFields(Predicate<IField> filter = null, GetMemberOptions options = GetMemberOptions.None);
/// <summary>
/// Gets all events that can be accessed on this type.
@ -287,7 +287,7 @@ namespace ICSharpCode.Decompiler.TypeSystem @@ -287,7 +287,7 @@ namespace ICSharpCode.Decompiler.TypeSystem
/// For fields on parameterized types, type substitution will be performed on the event's return type,
/// and the appropriate <see cref="Implementation.SpecializedEvent"/> will be returned.
/// </remarks>
IEnumerable<IEvent> GetEvents(Predicate<IUnresolvedEvent> filter = null, GetMemberOptions options = GetMemberOptions.None);
IEnumerable<IEvent> GetEvents(Predicate<IEvent> filter = null, GetMemberOptions options = GetMemberOptions.None);
/// <summary>
/// Gets all members that can be called on this type.
@ -303,10 +303,10 @@ namespace ICSharpCode.Decompiler.TypeSystem @@ -303,10 +303,10 @@ namespace ICSharpCode.Decompiler.TypeSystem
/// </para>
/// <para>
/// For generic methods, the remarks about ambiguous signatures from the
/// <see cref="GetMethods(Predicate{IUnresolvedMethod}, GetMemberOptions)"/> method apply here as well.
/// <see cref="GetMethods(Predicate{IMethod}, GetMemberOptions)"/> method apply here as well.
/// </para>
/// </remarks>
IEnumerable<IMember> GetMembers(Predicate<IUnresolvedMember> filter = null, GetMemberOptions options = GetMemberOptions.None);
IEnumerable<IMember> GetMembers(Predicate<IMember> filter = null, GetMemberOptions options = GetMemberOptions.None);
/// <summary>
/// Gets all accessors belonging to properties or events on this type.
@ -317,7 +317,7 @@ namespace ICSharpCode.Decompiler.TypeSystem @@ -317,7 +317,7 @@ namespace ICSharpCode.Decompiler.TypeSystem
/// <remarks>
/// Accessors are not returned by GetMembers() or GetMethods().
/// </remarks>
IEnumerable<IMethod> GetAccessors(Predicate<IUnresolvedMethod> filter = null, GetMemberOptions options = GetMemberOptions.None);
IEnumerable<IMethod> GetAccessors(Predicate<IMethod> filter = null, GetMemberOptions options = GetMemberOptions.None);
}
[Flags]

23
ICSharpCode.Decompiler/TypeSystem/Implementation/AbstractResolvedTypeParameter.cs

@ -262,12 +262,13 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -262,12 +262,13 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
return EmptyList<IType>.Instance;
}
public IEnumerable<IMethod> GetConstructors(Predicate<IUnresolvedMethod> filter = null, GetMemberOptions options = GetMemberOptions.IgnoreInheritedMembers)
public IEnumerable<IMethod> GetConstructors(Predicate<IMethod> filter = null, GetMemberOptions options = GetMemberOptions.IgnoreInheritedMembers)
{
if ((options & GetMemberOptions.IgnoreInheritedMembers) == GetMemberOptions.IgnoreInheritedMembers) {
if (this.HasDefaultConstructorConstraint || this.HasValueTypeConstraint) {
if (filter == null || filter(DefaultUnresolvedMethod.DummyConstructor)) {
return new [] { DefaultResolvedMethod.GetDummyConstructor(compilation, this) };
var dummyCtor = DefaultResolvedMethod.GetDummyConstructor(compilation, this);
if (filter == null || filter(dummyCtor)) {
return new [] { dummyCtor };
}
}
return EmptyList<IMethod>.Instance;
@ -276,7 +277,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -276,7 +277,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
}
}
public IEnumerable<IMethod> GetMethods(Predicate<IUnresolvedMethod> filter = null, GetMemberOptions options = GetMemberOptions.None)
public IEnumerable<IMethod> GetMethods(Predicate<IMethod> filter = null, GetMemberOptions options = GetMemberOptions.None)
{
if ((options & GetMemberOptions.IgnoreInheritedMembers) == GetMemberOptions.IgnoreInheritedMembers)
return EmptyList<IMethod>.Instance;
@ -284,7 +285,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -284,7 +285,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
return GetMembersHelper.GetMethods(this, FilterNonStatic(filter), options);
}
public IEnumerable<IMethod> GetMethods(IReadOnlyList<IType> typeArguments, Predicate<IUnresolvedMethod> filter = null, GetMemberOptions options = GetMemberOptions.None)
public IEnumerable<IMethod> GetMethods(IReadOnlyList<IType> typeArguments, Predicate<IMethod> filter = null, GetMemberOptions options = GetMemberOptions.None)
{
if ((options & GetMemberOptions.IgnoreInheritedMembers) == GetMemberOptions.IgnoreInheritedMembers)
return EmptyList<IMethod>.Instance;
@ -292,7 +293,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -292,7 +293,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
return GetMembersHelper.GetMethods(this, typeArguments, FilterNonStatic(filter), options);
}
public IEnumerable<IProperty> GetProperties(Predicate<IUnresolvedProperty> filter = null, GetMemberOptions options = GetMemberOptions.None)
public IEnumerable<IProperty> GetProperties(Predicate<IProperty> filter = null, GetMemberOptions options = GetMemberOptions.None)
{
if ((options & GetMemberOptions.IgnoreInheritedMembers) == GetMemberOptions.IgnoreInheritedMembers)
return EmptyList<IProperty>.Instance;
@ -300,7 +301,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -300,7 +301,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
return GetMembersHelper.GetProperties(this, FilterNonStatic(filter), options);
}
public IEnumerable<IField> GetFields(Predicate<IUnresolvedField> filter = null, GetMemberOptions options = GetMemberOptions.None)
public IEnumerable<IField> GetFields(Predicate<IField> filter = null, GetMemberOptions options = GetMemberOptions.None)
{
if ((options & GetMemberOptions.IgnoreInheritedMembers) == GetMemberOptions.IgnoreInheritedMembers)
return EmptyList<IField>.Instance;
@ -308,7 +309,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -308,7 +309,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
return GetMembersHelper.GetFields(this, FilterNonStatic(filter), options);
}
public IEnumerable<IEvent> GetEvents(Predicate<IUnresolvedEvent> filter = null, GetMemberOptions options = GetMemberOptions.None)
public IEnumerable<IEvent> GetEvents(Predicate<IEvent> filter = null, GetMemberOptions options = GetMemberOptions.None)
{
if ((options & GetMemberOptions.IgnoreInheritedMembers) == GetMemberOptions.IgnoreInheritedMembers)
return EmptyList<IEvent>.Instance;
@ -316,7 +317,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -316,7 +317,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
return GetMembersHelper.GetEvents(this, FilterNonStatic(filter), options);
}
public IEnumerable<IMember> GetMembers(Predicate<IUnresolvedMember> filter = null, GetMemberOptions options = GetMemberOptions.None)
public IEnumerable<IMember> GetMembers(Predicate<IMember> filter = null, GetMemberOptions options = GetMemberOptions.None)
{
if ((options & GetMemberOptions.IgnoreInheritedMembers) == GetMemberOptions.IgnoreInheritedMembers)
return EmptyList<IMember>.Instance;
@ -324,7 +325,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -324,7 +325,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
return GetMembersHelper.GetMembers(this, FilterNonStatic(filter), options);
}
public IEnumerable<IMethod> GetAccessors(Predicate<IUnresolvedMethod> filter = null, GetMemberOptions options = GetMemberOptions.None)
public IEnumerable<IMethod> GetAccessors(Predicate<IMethod> filter = null, GetMemberOptions options = GetMemberOptions.None)
{
if ((options & GetMemberOptions.IgnoreInheritedMembers) == GetMemberOptions.IgnoreInheritedMembers)
return EmptyList<IMethod>.Instance;
@ -342,7 +343,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -342,7 +343,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
return TypeParameterSubstitution.Identity;
}
static Predicate<T> FilterNonStatic<T>(Predicate<T> filter) where T : class, IUnresolvedMember
static Predicate<T> FilterNonStatic<T>(Predicate<T> filter) where T : class, IMember
{
if (filter == null)
return member => !member.IsStatic;

16
ICSharpCode.Decompiler/TypeSystem/Implementation/AbstractType.cs

@ -90,37 +90,37 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -90,37 +90,37 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
return EmptyList<IType>.Instance;
}
public virtual IEnumerable<IMethod> GetMethods(Predicate<IUnresolvedMethod> filter = null, GetMemberOptions options = GetMemberOptions.None)
public virtual IEnumerable<IMethod> GetMethods(Predicate<IMethod> filter = null, GetMemberOptions options = GetMemberOptions.None)
{
return EmptyList<IMethod>.Instance;
}
public virtual IEnumerable<IMethod> GetMethods(IReadOnlyList<IType> typeArguments, Predicate<IUnresolvedMethod> filter = null, GetMemberOptions options = GetMemberOptions.None)
public virtual IEnumerable<IMethod> GetMethods(IReadOnlyList<IType> typeArguments, Predicate<IMethod> filter = null, GetMemberOptions options = GetMemberOptions.None)
{
return EmptyList<IMethod>.Instance;
}
public virtual IEnumerable<IMethod> GetConstructors(Predicate<IUnresolvedMethod> filter = null, GetMemberOptions options = GetMemberOptions.IgnoreInheritedMembers)
public virtual IEnumerable<IMethod> GetConstructors(Predicate<IMethod> filter = null, GetMemberOptions options = GetMemberOptions.IgnoreInheritedMembers)
{
return EmptyList<IMethod>.Instance;
}
public virtual IEnumerable<IProperty> GetProperties(Predicate<IUnresolvedProperty> filter = null, GetMemberOptions options = GetMemberOptions.None)
public virtual IEnumerable<IProperty> GetProperties(Predicate<IProperty> filter = null, GetMemberOptions options = GetMemberOptions.None)
{
return EmptyList<IProperty>.Instance;
}
public virtual IEnumerable<IField> GetFields(Predicate<IUnresolvedField> filter = null, GetMemberOptions options = GetMemberOptions.None)
public virtual IEnumerable<IField> GetFields(Predicate<IField> filter = null, GetMemberOptions options = GetMemberOptions.None)
{
return EmptyList<IField>.Instance;
}
public virtual IEnumerable<IEvent> GetEvents(Predicate<IUnresolvedEvent> filter = null, GetMemberOptions options = GetMemberOptions.None)
public virtual IEnumerable<IEvent> GetEvents(Predicate<IEvent> filter = null, GetMemberOptions options = GetMemberOptions.None)
{
return EmptyList<IEvent>.Instance;
}
public virtual IEnumerable<IMember> GetMembers(Predicate<IUnresolvedMember> filter = null, GetMemberOptions options = GetMemberOptions.None)
public virtual IEnumerable<IMember> GetMembers(Predicate<IMember> filter = null, GetMemberOptions options = GetMemberOptions.None)
{
IEnumerable<IMember> members = GetMethods(filter, options);
return members
@ -129,7 +129,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -129,7 +129,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
.Concat(GetEvents(filter, options));
}
public virtual IEnumerable<IMethod> GetAccessors(Predicate<IUnresolvedMethod> filter = null, GetMemberOptions options = GetMemberOptions.None)
public virtual IEnumerable<IMethod> GetAccessors(Predicate<IMethod> filter = null, GetMemberOptions options = GetMemberOptions.None)
{
return EmptyList<IMethod>.Instance;
}

91
ICSharpCode.Decompiler/TypeSystem/Implementation/DefaultResolvedTypeDefinition.cs

@ -611,63 +611,36 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -611,63 +611,36 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
}
#region GetMembers()
IEnumerable<IMember> GetFilteredMembers(Predicate<IUnresolvedMember> filter)
IEnumerable<IMember> GetFilteredMembers(Predicate<IMember> filter)
{
var members = GetMemberList();
for (int i = 0; i < members.unresolvedMembers.Length; i++) {
if (filter == null || filter(members.unresolvedMembers[i])) {
yield return members[i];
foreach (var member in GetMemberList()) {
if (filter == null || filter(member)) {
yield return member;
}
}
for (int i = members.unresolvedMembers.Length; i < members.Count; i++) {
var method = (IMethod)members[i];
bool ok = false;
foreach (var part in method.Parts) {
if (filter == null || filter(part)) {
ok = true;
break;
}
}
if (ok)
yield return method;
}
}
IEnumerable<IMethod> GetFilteredMethods(Predicate<IUnresolvedMethod> filter)
IEnumerable<IMethod> GetFilteredMethods(Predicate<IMethod> filter)
{
var members = GetMemberList();
for (int i = 0; i < members.unresolvedMembers.Length; i++) {
IUnresolvedMethod unresolved = members.unresolvedMembers[i] as IUnresolvedMethod;
if (unresolved != null && (filter == null || filter(unresolved))) {
yield return (IMethod)members[i];
}
}
for (int i = members.unresolvedMembers.Length; i < members.Count; i++) {
var method = (IMethod)members[i];
bool ok = false;
foreach (var part in method.Parts) {
if (filter == null || filter(part)) {
ok = true;
break;
}
foreach (var member in GetMemberList().OfType<IMethod>()) {
if (filter == null || filter(member)) {
yield return member;
}
if (ok)
yield return method;
}
}
IEnumerable<TResolved> GetFilteredNonMethods<TUnresolved, TResolved>(Predicate<TUnresolved> filter) where TUnresolved : class, IUnresolvedMember where TResolved : class, IMember
IEnumerable<TResolved> GetFilteredNonMethods<TUnresolved, TResolved>(Predicate<TResolved> filter) where TUnresolved : class, IUnresolvedMember where TResolved : class, IMember
{
var members = GetMemberList();
for (int i = 0; i < members.unresolvedMembers.Length; i++) {
TUnresolved unresolved = members.unresolvedMembers[i] as TUnresolved;
if (unresolved != null && (filter == null || filter(unresolved))) {
yield return (TResolved)members[i];
if (members.unresolvedMembers[i] is TUnresolved && members[i] is TResolved member) {
if (filter == null || filter(member))
yield return member;
}
}
}
public virtual IEnumerable<IMethod> GetMethods(Predicate<IUnresolvedMethod> filter = null, GetMemberOptions options = GetMemberOptions.None)
public virtual IEnumerable<IMethod> GetMethods(Predicate<IMethod> filter = null, GetMemberOptions options = GetMemberOptions.None)
{
if ((options & GetMemberOptions.IgnoreInheritedMembers) == GetMemberOptions.IgnoreInheritedMembers) {
return GetFilteredMethods(ExtensionMethods.And(m => !m.IsConstructor, filter));
@ -676,12 +649,12 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -676,12 +649,12 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
}
}
public virtual IEnumerable<IMethod> GetMethods(IReadOnlyList<IType> typeArguments, Predicate<IUnresolvedMethod> filter = null, GetMemberOptions options = GetMemberOptions.None)
public virtual IEnumerable<IMethod> GetMethods(IReadOnlyList<IType> typeArguments, Predicate<IMethod> filter = null, GetMemberOptions options = GetMemberOptions.None)
{
return GetMembersHelper.GetMethods(this, typeArguments, filter, options);
}
public virtual IEnumerable<IMethod> GetConstructors(Predicate<IUnresolvedMethod> filter = null, GetMemberOptions options = GetMemberOptions.IgnoreInheritedMembers)
public virtual IEnumerable<IMethod> GetConstructors(Predicate<IMethod> filter = null, GetMemberOptions options = GetMemberOptions.IgnoreInheritedMembers)
{
if (ComHelper.IsComImport(this)) {
IType coClass = ComHelper.GetCoClass(this);
@ -700,7 +673,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -700,7 +673,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
}
}
public virtual IEnumerable<IProperty> GetProperties(Predicate<IUnresolvedProperty> filter = null, GetMemberOptions options = GetMemberOptions.None)
public virtual IEnumerable<IProperty> GetProperties(Predicate<IProperty> filter = null, GetMemberOptions options = GetMemberOptions.None)
{
if ((options & GetMemberOptions.IgnoreInheritedMembers) == GetMemberOptions.IgnoreInheritedMembers) {
return GetFilteredNonMethods<IUnresolvedProperty, IProperty>(filter);
@ -709,7 +682,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -709,7 +682,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
}
}
public virtual IEnumerable<IField> GetFields(Predicate<IUnresolvedField> filter = null, GetMemberOptions options = GetMemberOptions.None)
public virtual IEnumerable<IField> GetFields(Predicate<IField> filter = null, GetMemberOptions options = GetMemberOptions.None)
{
if ((options & GetMemberOptions.IgnoreInheritedMembers) == GetMemberOptions.IgnoreInheritedMembers) {
return GetFilteredNonMethods<IUnresolvedField, IField>(filter);
@ -718,7 +691,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -718,7 +691,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
}
}
public virtual IEnumerable<IEvent> GetEvents(Predicate<IUnresolvedEvent> filter = null, GetMemberOptions options = GetMemberOptions.None)
public virtual IEnumerable<IEvent> GetEvents(Predicate<IEvent> filter = null, GetMemberOptions options = GetMemberOptions.None)
{
if ((options & GetMemberOptions.IgnoreInheritedMembers) == GetMemberOptions.IgnoreInheritedMembers) {
return GetFilteredNonMethods<IUnresolvedEvent, IEvent>(filter);
@ -727,7 +700,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -727,7 +700,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
}
}
public virtual IEnumerable<IMember> GetMembers(Predicate<IUnresolvedMember> filter = null, GetMemberOptions options = GetMemberOptions.None)
public virtual IEnumerable<IMember> GetMembers(Predicate<IMember> filter = null, GetMemberOptions options = GetMemberOptions.None)
{
if ((options & GetMemberOptions.IgnoreInheritedMembers) == GetMemberOptions.IgnoreInheritedMembers) {
return GetFilteredMembers(filter);
@ -736,7 +709,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -736,7 +709,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
}
}
public virtual IEnumerable<IMethod> GetAccessors(Predicate<IUnresolvedMethod> filter = null, GetMemberOptions options = GetMemberOptions.None)
public virtual IEnumerable<IMethod> GetAccessors(Predicate<IMethod> filter = null, GetMemberOptions options = GetMemberOptions.None)
{
if ((options & GetMemberOptions.IgnoreInheritedMembers) == GetMemberOptions.IgnoreInheritedMembers) {
return GetFilteredAccessors(filter);
@ -745,7 +718,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -745,7 +718,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
}
}
IEnumerable<IMethod> GetFilteredAccessors(Predicate<IUnresolvedMethod> filter)
IEnumerable<IMethod> GetFilteredAccessors(Predicate<IMethod> filter)
{
var members = GetMemberList();
for (int i = 0; i < members.unresolvedMembers.Length; i++) {
@ -753,17 +726,19 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -753,17 +726,19 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
var unresolvedProperty = unresolved as IUnresolvedProperty;
var unresolvedEvent = unresolved as IUnresolvedEvent;
if (unresolvedProperty != null) {
if (unresolvedProperty.CanGet && (filter == null || filter(unresolvedProperty.Getter)))
yield return ((IProperty)members[i]).Getter;
if (unresolvedProperty.CanSet && (filter == null || filter(unresolvedProperty.Setter)))
yield return ((IProperty)members[i]).Setter;
var prop = (IProperty)members[i];
if (unresolvedProperty.CanGet && (filter == null || filter(prop.Getter)))
yield return prop.Getter;
if (unresolvedProperty.CanSet && (filter == null || filter(prop.Setter)))
yield return prop.Setter;
} else if (unresolvedEvent != null) {
if (unresolvedEvent.CanAdd && (filter == null || filter(unresolvedEvent.AddAccessor)))
yield return ((IEvent)members[i]).AddAccessor;
if (unresolvedEvent.CanRemove && (filter == null || filter(unresolvedEvent.RemoveAccessor)))
yield return ((IEvent)members[i]).RemoveAccessor;
if (unresolvedEvent.CanInvoke && (filter == null || filter(unresolvedEvent.InvokeAccessor)))
yield return ((IEvent)members[i]).InvokeAccessor;
var ev = (IEvent)members[i];
if (unresolvedEvent.CanAdd && (filter == null || filter(ev.AddAccessor)))
yield return ev.AddAccessor;
if (unresolvedEvent.CanRemove && (filter == null || filter(ev.RemoveAccessor)))
yield return ev.RemoveAccessor;
if (unresolvedEvent.CanInvoke && (filter == null || filter(ev.InvokeAccessor)))
yield return ev.InvokeAccessor;
}
}
}

2
ICSharpCode.Decompiler/TypeSystem/Implementation/FakeMember.cs

@ -132,8 +132,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -132,8 +132,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
public override SymbolKind SymbolKind => symbolKind;
IReadOnlyList<IUnresolvedMethod> IMethod.Parts => throw new NotImplementedException();
IReadOnlyList<IAttribute> IMethod.ReturnTypeAttributes => EmptyList<IAttribute>.Instance;
public IReadOnlyList<ITypeParameter> TypeParameters { get; set; } = EmptyList<ITypeParameter>.Instance;

38
ICSharpCode.Decompiler/TypeSystem/Implementation/GetMembersHelper.cs

@ -87,12 +87,12 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -87,12 +87,12 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
#endregion
#region GetMethods
public static IEnumerable<IMethod> GetMethods(IType type, Predicate<IUnresolvedMethod> filter, GetMemberOptions options)
public static IEnumerable<IMethod> GetMethods(IType type, Predicate<IMethod> filter, GetMemberOptions options)
{
return GetMethods(type, null, filter, options);
}
public static IEnumerable<IMethod> GetMethods(IType type, IReadOnlyList<IType> typeArguments, Predicate<IUnresolvedMethod> filter, GetMemberOptions options)
public static IEnumerable<IMethod> GetMethods(IType type, IReadOnlyList<IType> typeArguments, Predicate<IMethod> filter, GetMemberOptions options)
{
if (typeArguments != null && typeArguments.Count > 0) {
filter = FilterTypeParameterCount(typeArguments.Count).And(filter);
@ -105,14 +105,14 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -105,14 +105,14 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
}
}
static Predicate<IUnresolvedMethod> FilterTypeParameterCount(int expectedTypeParameterCount)
static Predicate<IMethod> FilterTypeParameterCount(int expectedTypeParameterCount)
{
return m => m.TypeParameters.Count == expectedTypeParameterCount;
}
const GetMemberOptions declaredMembers = GetMemberOptions.IgnoreInheritedMembers | GetMemberOptions.ReturnMemberDefinitions;
static IEnumerable<IMethod> GetMethodsImpl(IType baseType, IReadOnlyList<IType> methodTypeArguments, Predicate<IUnresolvedMethod> filter, GetMemberOptions options)
static IEnumerable<IMethod> GetMethodsImpl(IType baseType, IReadOnlyList<IType> methodTypeArguments, Predicate<IMethod> filter, GetMemberOptions options)
{
IEnumerable<IMethod> declaredMethods = baseType.GetMethods(filter, options | declaredMembers);
@ -143,7 +143,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -143,7 +143,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
#endregion
#region GetAccessors
public static IEnumerable<IMethod> GetAccessors(IType type, Predicate<IUnresolvedMethod> filter, GetMemberOptions options)
public static IEnumerable<IMethod> GetAccessors(IType type, Predicate<IMethod> filter, GetMemberOptions options)
{
if ((options & GetMemberOptions.IgnoreInheritedMembers) == GetMemberOptions.IgnoreInheritedMembers) {
return GetAccessorsImpl(type, filter, options);
@ -152,14 +152,14 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -152,14 +152,14 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
}
}
static IEnumerable<IMethod> GetAccessorsImpl(IType baseType, Predicate<IUnresolvedMethod> filter, GetMemberOptions options)
static IEnumerable<IMethod> GetAccessorsImpl(IType baseType, Predicate<IMethod> filter, GetMemberOptions options)
{
return GetConstructorsOrAccessorsImpl(baseType, baseType.GetAccessors(filter, options | declaredMembers), filter, options);
return GetConstructorsOrAccessorsImpl(baseType, baseType.GetAccessors(filter, options | declaredMembers), options);
}
#endregion
#region GetConstructors
public static IEnumerable<IMethod> GetConstructors(IType type, Predicate<IUnresolvedMethod> filter, GetMemberOptions options)
public static IEnumerable<IMethod> GetConstructors(IType type, Predicate<IMethod> filter, GetMemberOptions options)
{
if ((options & GetMemberOptions.IgnoreInheritedMembers) == GetMemberOptions.IgnoreInheritedMembers) {
return GetConstructorsImpl(type, filter, options);
@ -168,12 +168,12 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -168,12 +168,12 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
}
}
static IEnumerable<IMethod> GetConstructorsImpl(IType baseType, Predicate<IUnresolvedMethod> filter, GetMemberOptions options)
static IEnumerable<IMethod> GetConstructorsImpl(IType baseType, Predicate<IMethod> filter, GetMemberOptions options)
{
return GetConstructorsOrAccessorsImpl(baseType, baseType.GetConstructors(filter, options | declaredMembers), filter, options);
return GetConstructorsOrAccessorsImpl(baseType, baseType.GetConstructors(filter, options | declaredMembers), options);
}
static IEnumerable<IMethod> GetConstructorsOrAccessorsImpl(IType baseType, IEnumerable<IMethod> declaredMembers, Predicate<IUnresolvedMethod> filter, GetMemberOptions options)
static IEnumerable<IMethod> GetConstructorsOrAccessorsImpl(IType baseType, IEnumerable<IMethod> declaredMembers, GetMemberOptions options)
{
if ((options & GetMemberOptions.ReturnMemberDefinitions) == GetMemberOptions.ReturnMemberDefinitions) {
return declaredMembers;
@ -190,7 +190,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -190,7 +190,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
#endregion
#region GetProperties
public static IEnumerable<IProperty> GetProperties(IType type, Predicate<IUnresolvedProperty> filter, GetMemberOptions options)
public static IEnumerable<IProperty> GetProperties(IType type, Predicate<IProperty> filter, GetMemberOptions options)
{
if ((options & GetMemberOptions.IgnoreInheritedMembers) == GetMemberOptions.IgnoreInheritedMembers) {
return GetPropertiesImpl(type, filter, options);
@ -199,7 +199,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -199,7 +199,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
}
}
static IEnumerable<IProperty> GetPropertiesImpl(IType baseType, Predicate<IUnresolvedProperty> filter, GetMemberOptions options)
static IEnumerable<IProperty> GetPropertiesImpl(IType baseType, Predicate<IProperty> filter, GetMemberOptions options)
{
IEnumerable<IProperty> declaredProperties = baseType.GetProperties(filter, options | declaredMembers);
if ((options & GetMemberOptions.ReturnMemberDefinitions) == GetMemberOptions.ReturnMemberDefinitions) {
@ -217,7 +217,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -217,7 +217,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
#endregion
#region GetFields
public static IEnumerable<IField> GetFields(IType type, Predicate<IUnresolvedField> filter, GetMemberOptions options)
public static IEnumerable<IField> GetFields(IType type, Predicate<IField> filter, GetMemberOptions options)
{
if ((options & GetMemberOptions.IgnoreInheritedMembers) == GetMemberOptions.IgnoreInheritedMembers) {
return GetFieldsImpl(type, filter, options);
@ -226,7 +226,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -226,7 +226,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
}
}
static IEnumerable<IField> GetFieldsImpl(IType baseType, Predicate<IUnresolvedField> filter, GetMemberOptions options)
static IEnumerable<IField> GetFieldsImpl(IType baseType, Predicate<IField> filter, GetMemberOptions options)
{
IEnumerable<IField> declaredFields = baseType.GetFields(filter, options | declaredMembers);
if ((options & GetMemberOptions.ReturnMemberDefinitions) == GetMemberOptions.ReturnMemberDefinitions) {
@ -244,7 +244,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -244,7 +244,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
#endregion
#region GetEvents
public static IEnumerable<IEvent> GetEvents(IType type, Predicate<IUnresolvedEvent> filter, GetMemberOptions options)
public static IEnumerable<IEvent> GetEvents(IType type, Predicate<IEvent> filter, GetMemberOptions options)
{
if ((options & GetMemberOptions.IgnoreInheritedMembers) == GetMemberOptions.IgnoreInheritedMembers) {
return GetEventsImpl(type, filter, options);
@ -253,7 +253,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -253,7 +253,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
}
}
static IEnumerable<IEvent> GetEventsImpl(IType baseType, Predicate<IUnresolvedEvent> filter, GetMemberOptions options)
static IEnumerable<IEvent> GetEventsImpl(IType baseType, Predicate<IEvent> filter, GetMemberOptions options)
{
IEnumerable<IEvent> declaredEvents = baseType.GetEvents(filter, options | declaredMembers);
if ((options & GetMemberOptions.ReturnMemberDefinitions) == GetMemberOptions.ReturnMemberDefinitions) {
@ -271,7 +271,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -271,7 +271,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
#endregion
#region GetMembers
public static IEnumerable<IMember> GetMembers(IType type, Predicate<IUnresolvedMember> filter, GetMemberOptions options)
public static IEnumerable<IMember> GetMembers(IType type, Predicate<IMember> filter, GetMemberOptions options)
{
if ((options & GetMemberOptions.IgnoreInheritedMembers) == GetMemberOptions.IgnoreInheritedMembers) {
return GetMembersImpl(type, filter, options);
@ -280,7 +280,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -280,7 +280,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
}
}
static IEnumerable<IMember> GetMembersImpl(IType baseType, Predicate<IUnresolvedMember> filter, GetMemberOptions options)
static IEnumerable<IMember> GetMembersImpl(IType baseType, Predicate<IMember> filter, GetMemberOptions options)
{
foreach (var m in GetMethodsImpl(baseType, null, filter, options))
yield return m;

4
ICSharpCode.Decompiler/TypeSystem/Implementation/SpecializedMethod.cs

@ -93,10 +93,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -93,10 +93,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
get { return this.Substitution.MethodTypeArguments ?? EmptyList<IType>.Instance; }
}
public IReadOnlyList<IUnresolvedMethod> Parts {
get { return methodDefinition.Parts; }
}
public IReadOnlyList<IAttribute> ReturnTypeAttributes {
get { return methodDefinition.ReturnTypeAttributes; }
}

14
ICSharpCode.Decompiler/TypeSystem/Implementation/VoidTypeDefinition.cs

@ -36,37 +36,37 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -36,37 +36,37 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
get { return TypeKind.Void; }
}
public override IEnumerable<IMethod> GetConstructors(Predicate<IUnresolvedMethod> filter, GetMemberOptions options)
public override IEnumerable<IMethod> GetConstructors(Predicate<IMethod> filter, GetMemberOptions options)
{
return EmptyList<IMethod>.Instance;
}
public override IEnumerable<IEvent> GetEvents(Predicate<IUnresolvedEvent> filter, GetMemberOptions options)
public override IEnumerable<IEvent> GetEvents(Predicate<IEvent> filter, GetMemberOptions options)
{
return EmptyList<IEvent>.Instance;
}
public override IEnumerable<IField> GetFields(Predicate<IUnresolvedField> filter, GetMemberOptions options)
public override IEnumerable<IField> GetFields(Predicate<IField> filter, GetMemberOptions options)
{
return EmptyList<IField>.Instance;
}
public override IEnumerable<IMethod> GetMethods(Predicate<IUnresolvedMethod> filter, GetMemberOptions options)
public override IEnumerable<IMethod> GetMethods(Predicate<IMethod> filter, GetMemberOptions options)
{
return EmptyList<IMethod>.Instance;
}
public override IEnumerable<IMethod> GetMethods(IReadOnlyList<IType> typeArguments, Predicate<IUnresolvedMethod> filter, GetMemberOptions options)
public override IEnumerable<IMethod> GetMethods(IReadOnlyList<IType> typeArguments, Predicate<IMethod> filter, GetMemberOptions options)
{
return EmptyList<IMethod>.Instance;
}
public override IEnumerable<IProperty> GetProperties(Predicate<IUnresolvedProperty> filter, GetMemberOptions options)
public override IEnumerable<IProperty> GetProperties(Predicate<IProperty> filter, GetMemberOptions options)
{
return EmptyList<IProperty>.Instance;
}
public override IEnumerable<IMember> GetMembers(Predicate<IUnresolvedMember> filter, GetMemberOptions options)
public override IEnumerable<IMember> GetMembers(Predicate<IMember> filter, GetMemberOptions options)
{
return EmptyList<IMember>.Instance;
}

16
ICSharpCode.Decompiler/TypeSystem/IntersectionType.cs

@ -126,42 +126,42 @@ namespace ICSharpCode.Decompiler.TypeSystem @@ -126,42 +126,42 @@ namespace ICSharpCode.Decompiler.TypeSystem
get { return types; }
}
public override IEnumerable<IMethod> GetMethods(Predicate<IUnresolvedMethod> filter, GetMemberOptions options)
public override IEnumerable<IMethod> GetMethods(Predicate<IMethod> filter, GetMemberOptions options)
{
return GetMembersHelper.GetMethods(this, FilterNonStatic(filter), options);
}
public override IEnumerable<IMethod> GetMethods(IReadOnlyList<IType> typeArguments, Predicate<IUnresolvedMethod> filter, GetMemberOptions options)
public override IEnumerable<IMethod> GetMethods(IReadOnlyList<IType> typeArguments, Predicate<IMethod> filter, GetMemberOptions options)
{
return GetMembersHelper.GetMethods(this, typeArguments, filter, options);
}
public override IEnumerable<IProperty> GetProperties(Predicate<IUnresolvedProperty> filter, GetMemberOptions options)
public override IEnumerable<IProperty> GetProperties(Predicate<IProperty> filter, GetMemberOptions options)
{
return GetMembersHelper.GetProperties(this, FilterNonStatic(filter), options);
}
public override IEnumerable<IField> GetFields(Predicate<IUnresolvedField> filter, GetMemberOptions options)
public override IEnumerable<IField> GetFields(Predicate<IField> filter, GetMemberOptions options)
{
return GetMembersHelper.GetFields(this, FilterNonStatic(filter), options);
}
public override IEnumerable<IEvent> GetEvents(Predicate<IUnresolvedEvent> filter, GetMemberOptions options)
public override IEnumerable<IEvent> GetEvents(Predicate<IEvent> filter, GetMemberOptions options)
{
return GetMembersHelper.GetEvents(this, FilterNonStatic(filter), options);
}
public override IEnumerable<IMember> GetMembers(Predicate<IUnresolvedMember> filter, GetMemberOptions options)
public override IEnumerable<IMember> GetMembers(Predicate<IMember> filter, GetMemberOptions options)
{
return GetMembersHelper.GetMembers(this, FilterNonStatic(filter), options);
}
public override IEnumerable<IMethod> GetAccessors(Predicate<IUnresolvedMethod> filter, GetMemberOptions options)
public override IEnumerable<IMethod> GetAccessors(Predicate<IMethod> filter, GetMemberOptions options)
{
return GetMembersHelper.GetAccessors(this, FilterNonStatic(filter), options);
}
static Predicate<T> FilterNonStatic<T>(Predicate<T> filter) where T : class, IUnresolvedMember
static Predicate<T> FilterNonStatic<T>(Predicate<T> filter) where T : class, IMember
{
if (filter == null)
return member => !member.IsStatic;

16
ICSharpCode.Decompiler/TypeSystem/ParameterizedType.cs

@ -200,7 +200,7 @@ namespace ICSharpCode.Decompiler.TypeSystem @@ -200,7 +200,7 @@ namespace ICSharpCode.Decompiler.TypeSystem
return GetMembersHelper.GetNestedTypes(this, typeArguments, filter, options);
}
public IEnumerable<IMethod> GetConstructors(Predicate<IUnresolvedMethod> filter = null, GetMemberOptions options = GetMemberOptions.IgnoreInheritedMembers)
public IEnumerable<IMethod> GetConstructors(Predicate<IMethod> filter = null, GetMemberOptions options = GetMemberOptions.IgnoreInheritedMembers)
{
if ((options & GetMemberOptions.ReturnMemberDefinitions) == GetMemberOptions.ReturnMemberDefinitions)
return genericType.GetConstructors(filter, options);
@ -208,7 +208,7 @@ namespace ICSharpCode.Decompiler.TypeSystem @@ -208,7 +208,7 @@ namespace ICSharpCode.Decompiler.TypeSystem
return GetMembersHelper.GetConstructors(this, filter, options);
}
public IEnumerable<IMethod> GetMethods(Predicate<IUnresolvedMethod> filter = null, GetMemberOptions options = GetMemberOptions.None)
public IEnumerable<IMethod> GetMethods(Predicate<IMethod> filter = null, GetMemberOptions options = GetMemberOptions.None)
{
if ((options & GetMemberOptions.ReturnMemberDefinitions) == GetMemberOptions.ReturnMemberDefinitions)
return genericType.GetMethods(filter, options);
@ -216,7 +216,7 @@ namespace ICSharpCode.Decompiler.TypeSystem @@ -216,7 +216,7 @@ namespace ICSharpCode.Decompiler.TypeSystem
return GetMembersHelper.GetMethods(this, filter, options);
}
public IEnumerable<IMethod> GetMethods(IReadOnlyList<IType> typeArguments, Predicate<IUnresolvedMethod> filter = null, GetMemberOptions options = GetMemberOptions.None)
public IEnumerable<IMethod> GetMethods(IReadOnlyList<IType> typeArguments, Predicate<IMethod> filter = null, GetMemberOptions options = GetMemberOptions.None)
{
if ((options & GetMemberOptions.ReturnMemberDefinitions) == GetMemberOptions.ReturnMemberDefinitions)
return genericType.GetMethods(typeArguments, filter, options);
@ -224,7 +224,7 @@ namespace ICSharpCode.Decompiler.TypeSystem @@ -224,7 +224,7 @@ namespace ICSharpCode.Decompiler.TypeSystem
return GetMembersHelper.GetMethods(this, typeArguments, filter, options);
}
public IEnumerable<IProperty> GetProperties(Predicate<IUnresolvedProperty> filter = null, GetMemberOptions options = GetMemberOptions.None)
public IEnumerable<IProperty> GetProperties(Predicate<IProperty> filter = null, GetMemberOptions options = GetMemberOptions.None)
{
if ((options & GetMemberOptions.ReturnMemberDefinitions) == GetMemberOptions.ReturnMemberDefinitions)
return genericType.GetProperties(filter, options);
@ -232,7 +232,7 @@ namespace ICSharpCode.Decompiler.TypeSystem @@ -232,7 +232,7 @@ namespace ICSharpCode.Decompiler.TypeSystem
return GetMembersHelper.GetProperties(this, filter, options);
}
public IEnumerable<IField> GetFields(Predicate<IUnresolvedField> filter = null, GetMemberOptions options = GetMemberOptions.None)
public IEnumerable<IField> GetFields(Predicate<IField> filter = null, GetMemberOptions options = GetMemberOptions.None)
{
if ((options & GetMemberOptions.ReturnMemberDefinitions) == GetMemberOptions.ReturnMemberDefinitions)
return genericType.GetFields(filter, options);
@ -240,7 +240,7 @@ namespace ICSharpCode.Decompiler.TypeSystem @@ -240,7 +240,7 @@ namespace ICSharpCode.Decompiler.TypeSystem
return GetMembersHelper.GetFields(this, filter, options);
}
public IEnumerable<IEvent> GetEvents(Predicate<IUnresolvedEvent> filter = null, GetMemberOptions options = GetMemberOptions.None)
public IEnumerable<IEvent> GetEvents(Predicate<IEvent> filter = null, GetMemberOptions options = GetMemberOptions.None)
{
if ((options & GetMemberOptions.ReturnMemberDefinitions) == GetMemberOptions.ReturnMemberDefinitions)
return genericType.GetEvents(filter, options);
@ -248,7 +248,7 @@ namespace ICSharpCode.Decompiler.TypeSystem @@ -248,7 +248,7 @@ namespace ICSharpCode.Decompiler.TypeSystem
return GetMembersHelper.GetEvents(this, filter, options);
}
public IEnumerable<IMember> GetMembers(Predicate<IUnresolvedMember> filter = null, GetMemberOptions options = GetMemberOptions.None)
public IEnumerable<IMember> GetMembers(Predicate<IMember> filter = null, GetMemberOptions options = GetMemberOptions.None)
{
if ((options & GetMemberOptions.ReturnMemberDefinitions) == GetMemberOptions.ReturnMemberDefinitions)
return genericType.GetMembers(filter, options);
@ -256,7 +256,7 @@ namespace ICSharpCode.Decompiler.TypeSystem @@ -256,7 +256,7 @@ namespace ICSharpCode.Decompiler.TypeSystem
return GetMembersHelper.GetMembers(this, filter, options);
}
public IEnumerable<IMethod> GetAccessors(Predicate<IUnresolvedMethod> filter = null, GetMemberOptions options = GetMemberOptions.None)
public IEnumerable<IMethod> GetAccessors(Predicate<IMethod> filter = null, GetMemberOptions options = GetMemberOptions.None)
{
if ((options & GetMemberOptions.ReturnMemberDefinitions) == GetMemberOptions.ReturnMemberDefinitions)
return genericType.GetAccessors(filter, options);

14
ICSharpCode.Decompiler/TypeSystem/TupleType.cs

@ -258,12 +258,12 @@ namespace ICSharpCode.Decompiler.TypeSystem @@ -258,12 +258,12 @@ namespace ICSharpCode.Decompiler.TypeSystem
}
}
public override IEnumerable<IMethod> GetAccessors(Predicate<IUnresolvedMethod> filter = null, GetMemberOptions options = GetMemberOptions.None)
public override IEnumerable<IMethod> GetAccessors(Predicate<IMethod> filter = null, GetMemberOptions options = GetMemberOptions.None)
{
return UnderlyingType.GetAccessors(filter, options);
}
public override IEnumerable<IMethod> GetConstructors(Predicate<IUnresolvedMethod> filter = null, GetMemberOptions options = GetMemberOptions.IgnoreInheritedMembers)
public override IEnumerable<IMethod> GetConstructors(Predicate<IMethod> filter = null, GetMemberOptions options = GetMemberOptions.IgnoreInheritedMembers)
{
// CS8181 'new' cannot be used with tuple type. Use a tuple literal expression instead.
return EmptyList<IMethod>.Instance;
@ -274,12 +274,12 @@ namespace ICSharpCode.Decompiler.TypeSystem @@ -274,12 +274,12 @@ namespace ICSharpCode.Decompiler.TypeSystem
return UnderlyingType.GetDefinition();
}
public override IEnumerable<IEvent> GetEvents(Predicate<IUnresolvedEvent> filter = null, GetMemberOptions options = GetMemberOptions.None)
public override IEnumerable<IEvent> GetEvents(Predicate<IEvent> filter = null, GetMemberOptions options = GetMemberOptions.None)
{
return UnderlyingType.GetEvents(filter, options);
}
public override IEnumerable<IField> GetFields(Predicate<IUnresolvedField> filter = null, GetMemberOptions options = GetMemberOptions.None)
public override IEnumerable<IField> GetFields(Predicate<IField> filter = null, GetMemberOptions options = GetMemberOptions.None)
{
// The fields from the underlying type (Item1..Item7 and Rest)
foreach (var field in UnderlyingType.GetFields(filter, options)) {
@ -305,12 +305,12 @@ namespace ICSharpCode.Decompiler.TypeSystem @@ -305,12 +305,12 @@ namespace ICSharpCode.Decompiler.TypeSystem
return new TupleElementField(f, Compilation.TypeResolveContext);
}*/
public override IEnumerable<IMethod> GetMethods(Predicate<IUnresolvedMethod> filter = null, GetMemberOptions options = GetMemberOptions.None)
public override IEnumerable<IMethod> GetMethods(Predicate<IMethod> filter = null, GetMemberOptions options = GetMemberOptions.None)
{
return UnderlyingType.GetMethods(filter, options);
}
public override IEnumerable<IMethod> GetMethods(IReadOnlyList<IType> typeArguments, Predicate<IUnresolvedMethod> filter = null, GetMemberOptions options = GetMemberOptions.None)
public override IEnumerable<IMethod> GetMethods(IReadOnlyList<IType> typeArguments, Predicate<IMethod> filter = null, GetMemberOptions options = GetMemberOptions.None)
{
return UnderlyingType.GetMethods(typeArguments, filter, options);
}
@ -325,7 +325,7 @@ namespace ICSharpCode.Decompiler.TypeSystem @@ -325,7 +325,7 @@ namespace ICSharpCode.Decompiler.TypeSystem
return UnderlyingType.GetNestedTypes(typeArguments, filter, options);
}
public override IEnumerable<IProperty> GetProperties(Predicate<IUnresolvedProperty> filter = null, GetMemberOptions options = GetMemberOptions.None)
public override IEnumerable<IProperty> GetProperties(Predicate<IProperty> filter = null, GetMemberOptions options = GetMemberOptions.None)
{
return UnderlyingType.GetProperties(filter, options);
}

4
ICSharpCode.Decompiler/TypeSystem/VarArgInstanceMethod.cs

@ -110,10 +110,6 @@ namespace ICSharpCode.Decompiler.TypeSystem @@ -110,10 +110,6 @@ namespace ICSharpCode.Decompiler.TypeSystem
parameters.Skip(baseMethod.Parameters.Count - 1).Select(p => p.Type.AcceptVisitor(substitution)).ToList());
}
public IReadOnlyList<IUnresolvedMethod> Parts {
get { return baseMethod.Parts; }
}
public IReadOnlyList<IAttribute> ReturnTypeAttributes {
get { return baseMethod.ReturnTypeAttributes; }
}

Loading…
Cancel
Save