Browse Source

Clean up type system interfaces.

pull/1198/head
Daniel Grunwald 7 years ago
parent
commit
fa2df4df26
  1. 20
      ICSharpCode.Decompiler.Tests/TypeSystem/TypeSystemLoaderTests.cs
  2. 34
      ICSharpCode.Decompiler/CSharp/Resolver/CSharpOperators.cs
  3. 2
      ICSharpCode.Decompiler/CSharp/Resolver/CSharpResolver.cs
  4. 48
      ICSharpCode.Decompiler/CSharp/Resolver/ReducedExtensionMethod.cs
  5. 2
      ICSharpCode.Decompiler/CSharp/Transforms/FixNameCollisions.cs
  6. 56
      ICSharpCode.Decompiler/TypeSystem/Accessibility.cs
  7. 24
      ICSharpCode.Decompiler/TypeSystem/IEntity.cs
  8. 12
      ICSharpCode.Decompiler/TypeSystem/IMember.cs
  9. 6
      ICSharpCode.Decompiler/TypeSystem/ITypeDefinition.cs
  10. 7
      ICSharpCode.Decompiler/TypeSystem/Implementation/AbstractResolvedEntity.cs
  11. 2
      ICSharpCode.Decompiler/TypeSystem/Implementation/AbstractResolvedMember.cs
  12. 34
      ICSharpCode.Decompiler/TypeSystem/Implementation/AbstractUnresolvedEntity.cs
  13. 31
      ICSharpCode.Decompiler/TypeSystem/Implementation/DefaultResolvedTypeDefinition.cs
  14. 2
      ICSharpCode.Decompiler/TypeSystem/Implementation/DefaultUnresolvedMethod.cs
  15. 2
      ICSharpCode.Decompiler/TypeSystem/Implementation/MergedNamespace.cs
  16. 32
      ICSharpCode.Decompiler/TypeSystem/Implementation/SpecializedMember.cs
  17. 2
      ICSharpCode.Decompiler/TypeSystem/InheritanceHelper.cs
  18. 32
      ICSharpCode.Decompiler/TypeSystem/VarArgInstanceMethod.cs

20
ICSharpCode.Decompiler.Tests/TypeSystem/TypeSystemLoaderTests.cs

@ -804,16 +804,16 @@ namespace ICSharpCode.Decompiler.Tests.TypeSystem @@ -804,16 +804,16 @@ namespace ICSharpCode.Decompiler.Tests.TypeSystem
Assert.AreEqual(true, p.IsAbstract);
Assert.AreEqual(true, p.IsOverridable);
Assert.AreEqual(false, p.IsOverride);
Assert.AreEqual(true, p.IsPublic);
Assert.AreEqual(Accessibility.Public, p.Accessibility);
Assert.AreEqual(true, p.Getter.IsAbstract);
Assert.AreEqual(true, p.Getter.IsOverridable);
Assert.AreEqual(false, p.Getter.IsOverride);
Assert.AreEqual(true, p.Getter.IsPublic);
Assert.AreEqual(Accessibility.Public, p.Getter.Accessibility);
Assert.AreEqual(false, p.Getter.HasBody);
Assert.AreEqual(true, p.Setter.IsAbstract);
Assert.AreEqual(true, p.Setter.IsOverridable);
Assert.AreEqual(false, p.Setter.IsOverride);
Assert.AreEqual(true, p.Setter.IsPublic);
Assert.AreEqual(Accessibility.Public, p.Setter.Accessibility);
Assert.AreEqual(false, p.Setter.HasBody);
type = GetTypeDefinition(typeof(IInterfaceWithIndexers));
@ -822,37 +822,37 @@ namespace ICSharpCode.Decompiler.Tests.TypeSystem @@ -822,37 +822,37 @@ namespace ICSharpCode.Decompiler.Tests.TypeSystem
Assert.AreEqual(true, p.IsAbstract);
Assert.AreEqual(true, p.IsOverridable);
Assert.AreEqual(false, p.IsOverride);
Assert.AreEqual(true, p.IsPublic);
Assert.AreEqual(Accessibility.Public, p.Accessibility);
Assert.AreEqual(true, p.Getter.IsAbstract);
Assert.AreEqual(true, p.Getter.IsOverridable);
Assert.AreEqual(false, p.Getter.IsOverride);
Assert.AreEqual(true, p.Getter.IsPublic);
Assert.AreEqual(Accessibility.Public, p.Getter.Accessibility);
Assert.AreEqual(true, p.Setter.IsAbstract);
Assert.AreEqual(true, p.Setter.IsOverridable);
Assert.AreEqual(false, p.Setter.IsOverride);
Assert.AreEqual(true, p.Setter.IsPublic);
Assert.AreEqual(Accessibility.Public, p.Setter.Accessibility);
type = GetTypeDefinition(typeof(IHasEvent));
var e = type.Events.Single();
Assert.AreEqual(true, e.IsAbstract);
Assert.AreEqual(true, e.IsOverridable);
Assert.AreEqual(false, e.IsOverride);
Assert.AreEqual(true, e.IsPublic);
Assert.AreEqual(Accessibility.Public, e.Accessibility);
Assert.AreEqual(true, e.AddAccessor.IsAbstract);
Assert.AreEqual(true, e.AddAccessor.IsOverridable);
Assert.AreEqual(false, e.AddAccessor.IsOverride);
Assert.AreEqual(true, e.AddAccessor.IsPublic);
Assert.AreEqual(Accessibility.Public, e.AddAccessor.Accessibility);
Assert.AreEqual(true, e.RemoveAccessor.IsAbstract);
Assert.AreEqual(true, e.RemoveAccessor.IsOverridable);
Assert.AreEqual(false, e.RemoveAccessor.IsOverride);
Assert.AreEqual(true, e.RemoveAccessor.IsPublic);
Assert.AreEqual(Accessibility.Public, e.RemoveAccessor.Accessibility);
type = GetTypeDefinition(typeof(IDisposable));
var m = type.Methods.Single();
Assert.AreEqual(true, m.IsAbstract);
Assert.AreEqual(true, m.IsOverridable);
Assert.AreEqual(false, m.IsOverride);
Assert.AreEqual(true, m.IsPublic);
Assert.AreEqual(Accessibility.Public, m.Accessibility);
}
[Test]

34
ICSharpCode.Decompiler/CSharp/Resolver/CSharpOperators.cs

@ -130,10 +130,6 @@ namespace ICSharpCode.Decompiler.CSharp.Resolver @@ -130,10 +130,6 @@ namespace ICSharpCode.Decompiler.CSharp.Resolver
get { return this; }
}
IUnresolvedMember IMember.UnresolvedMember {
get { return null; }
}
IReadOnlyList<IMember> IMember.ImplementedInterfaceMembers {
get { return EmptyList<IMember>.Instance; }
}
@ -158,7 +154,7 @@ namespace ICSharpCode.Decompiler.CSharp.Resolver @@ -158,7 +154,7 @@ namespace ICSharpCode.Decompiler.CSharp.Resolver
get { return EmptyList<IAttribute>.Instance; }
}
Accessibility IHasAccessibility.Accessibility {
Accessibility IEntity.Accessibility {
get { return Accessibility.Public; }
}
@ -178,34 +174,6 @@ namespace ICSharpCode.Decompiler.CSharp.Resolver @@ -178,34 +174,6 @@ namespace ICSharpCode.Decompiler.CSharp.Resolver
get { return false; }
}
bool IEntity.IsSynthetic {
get { return true; }
}
bool IHasAccessibility.IsPrivate {
get { return false; }
}
bool IHasAccessibility.IsPublic {
get { return true; }
}
bool IHasAccessibility.IsProtected {
get { return false; }
}
bool IHasAccessibility.IsInternal {
get { return false; }
}
bool IHasAccessibility.IsProtectedOrInternal {
get { return false; }
}
bool IHasAccessibility.IsProtectedAndInternal {
get { return false; }
}
bool IMember.IsExplicitInterfaceImplementation {
get { return false; }
}

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

@ -1531,7 +1531,7 @@ namespace ICSharpCode.Decompiler.CSharp.Resolver @@ -1531,7 +1531,7 @@ namespace ICSharpCode.Decompiler.CSharp.Resolver
bool TopLevelTypeDefinitionIsAccessible(ITypeDefinition typeDef)
{
if (typeDef.IsInternal) {
if (typeDef.Accessibility == Accessibility.Internal) {
return typeDef.ParentAssembly.InternalsVisibleTo(compilation.MainAssembly);
}
return true;

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

@ -80,12 +80,6 @@ namespace ICSharpCode.Decompiler.CSharp.Resolver @@ -80,12 +80,6 @@ namespace ICSharpCode.Decompiler.CSharp.Resolver
}
}
public IUnresolvedMember UnresolvedMember {
get {
return baseMethod.UnresolvedMember;
}
}
public IType ReturnType {
get {
return baseMethod.ReturnType;
@ -297,12 +291,6 @@ namespace ICSharpCode.Decompiler.CSharp.Resolver @@ -297,12 +291,6 @@ namespace ICSharpCode.Decompiler.CSharp.Resolver
}
}
public bool IsSynthetic {
get {
return baseMethod.IsSynthetic;
}
}
#endregion
#region IHasAccessibility implementation
@ -313,42 +301,6 @@ namespace ICSharpCode.Decompiler.CSharp.Resolver @@ -313,42 +301,6 @@ namespace ICSharpCode.Decompiler.CSharp.Resolver
}
}
public bool IsPrivate {
get {
return baseMethod.IsPrivate;
}
}
public bool IsPublic {
get {
return baseMethod.IsPublic;
}
}
public bool IsProtected {
get {
return baseMethod.IsProtected;
}
}
public bool IsInternal {
get {
return baseMethod.IsInternal;
}
}
public bool IsProtectedOrInternal {
get {
return baseMethod.IsProtectedOrInternal;
}
}
public bool IsProtectedAndInternal {
get {
return baseMethod.IsProtectedAndInternal;
}
}
#endregion
#region INamedElement implementation

2
ICSharpCode.Decompiler/CSharp/Transforms/FixNameCollisions.cs

@ -48,7 +48,7 @@ namespace ICSharpCode.Decompiler.CSharp.Transforms @@ -48,7 +48,7 @@ namespace ICSharpCode.Decompiler.CSharp.Transforms
continue;
string oldName = fieldDecl.Variables.Single().Name;
ISymbol symbol = fieldDecl.GetSymbol();
if (memberNames.Contains(oldName) && ((IField)symbol).IsPrivate) {
if (memberNames.Contains(oldName) && ((IField)symbol).Accessibility == Accessibility.Private) {
string newName = PickNewName(memberNames, oldName);
if (symbol != null) {
fieldDecl.Variables.Single().Name = newName;

56
ICSharpCode.Decompiler/TypeSystem/Accessibility.cs

@ -56,60 +56,4 @@ namespace ICSharpCode.Decompiler.TypeSystem @@ -56,60 +56,4 @@ namespace ICSharpCode.Decompiler.TypeSystem
/// <remarks>This corresponds to C# 'private protected'.</remarks>
ProtectedAndInternal,
}
public interface IHasAccessibility
{
/// <summary>
/// Gets the accessibility of this entity.
/// </summary>
Accessibility Accessibility { get; }
/// <summary>
/// Gets a value indicating whether this instance is private.
/// </summary>
/// <value>
/// <c>true</c> if this instance is private; otherwise, <c>false</c>.
/// </value>
bool IsPrivate { get; }
/// <summary>
/// Gets a value indicating whether this instance is public.
/// </summary>
/// <value>
/// <c>true</c> if this instance is public; otherwise, <c>false</c>.
/// </value>
bool IsPublic { get; }
/// <summary>
/// Gets a value indicating whether this instance is protected.
/// </summary>
/// <value>
/// <c>true</c> if this instance is protected; otherwise, <c>false</c>.
/// </value>
bool IsProtected { get; }
/// <summary>
/// Gets a value indicating whether this instance is internal.
/// </summary>
/// <value>
/// <c>true</c> if this instance is internal; otherwise, <c>false</c>.
/// </value>
bool IsInternal { get; }
/// <summary>
/// Gets a value indicating whether this instance is protected or internal.
/// </summary>
/// <value>
/// <c>true</c> if this instance is protected or internal; otherwise, <c>false</c>.
/// </value>
bool IsProtectedOrInternal { get; }
/// <summary>
/// Gets a value indicating whether this instance is protected and internal.
/// </summary>
/// <value>
/// <c>true</c> if this instance is protected and internal; otherwise, <c>false</c>.
/// </value>
bool IsProtectedAndInternal { get; }
}
}

24
ICSharpCode.Decompiler/TypeSystem/IEntity.cs

@ -24,7 +24,7 @@ namespace ICSharpCode.Decompiler.TypeSystem @@ -24,7 +24,7 @@ namespace ICSharpCode.Decompiler.TypeSystem
/// <summary>
/// Represents an unresolved entity.
/// </summary>
public interface IUnresolvedEntity : INamedElement, IHasAccessibility
public interface IUnresolvedEntity : INamedElement
{
/// <summary>
/// Gets the metadata token for this entity.
@ -52,6 +52,11 @@ namespace ICSharpCode.Decompiler.TypeSystem @@ -52,6 +52,11 @@ namespace ICSharpCode.Decompiler.TypeSystem
/// </summary>
IList<IUnresolvedAttribute> Attributes { get; }
/// <summary>
/// Gets the accessibility of this entity.
/// </summary>
Accessibility Accessibility { get; }
/// <summary>
/// Gets whether this entity is static.
/// Returns true if either the 'static' or the 'const' modifier is set.
@ -74,17 +79,12 @@ namespace ICSharpCode.Decompiler.TypeSystem @@ -74,17 +79,12 @@ namespace ICSharpCode.Decompiler.TypeSystem
/// Gets whether this member is declared to be shadowing another member with the same name.
/// </summary>
bool IsShadowing { get; }
/// <summary>
/// Gets whether this member is generated by a macro/compiler feature.
/// </summary>
bool IsSynthetic { get; }
}
/// <summary>
/// Represents a resolved entity.
/// </summary>
public interface IEntity : ISymbol, ICompilationProvider, INamedElement, IHasAccessibility
public interface IEntity : ISymbol, ICompilationProvider, INamedElement
{
/// <summary>
/// Gets the metadata token for this entity.
@ -126,6 +126,11 @@ namespace ICSharpCode.Decompiler.TypeSystem @@ -126,6 +126,11 @@ namespace ICSharpCode.Decompiler.TypeSystem
/// </summary>
IReadOnlyList<IAttribute> Attributes { get; }
/// <summary>
/// Gets the accessibility of this entity.
/// </summary>
Accessibility Accessibility { get; }
/// <summary>
/// Gets whether this entity is static.
/// Returns true if either the 'static' or the 'const' modifier is set.
@ -149,10 +154,5 @@ namespace ICSharpCode.Decompiler.TypeSystem @@ -149,10 +154,5 @@ namespace ICSharpCode.Decompiler.TypeSystem
/// (C# 'new' keyword)
/// </summary>
bool IsShadowing { get; }
/// <summary>
/// Gets whether this member is generated by a macro/compiler feature.
/// </summary>
bool IsSynthetic { get; }
}
}

12
ICSharpCode.Decompiler/TypeSystem/IMember.cs

@ -115,18 +115,6 @@ namespace ICSharpCode.Decompiler.TypeSystem @@ -115,18 +115,6 @@ namespace ICSharpCode.Decompiler.TypeSystem
/// </summary>
IMember MemberDefinition { get; }
/// <summary>
/// Gets the unresolved member instance from which this member was created.
/// This property may return <c>null</c> for special members that do not have a corresponding unresolved member instance.
/// </summary>
/// <remarks>
/// For specialized members, this property returns the unresolved member for the original member definition.
/// For partial methods, this property returns the implementing partial method declaration, if one exists, and the
/// defining partial method declaration otherwise.
/// For the members used to represent the built-in C# operators like "operator +(int, int);", this property returns <c>null</c>.
/// </remarks>
IUnresolvedMember UnresolvedMember { get; }
/// <summary>
/// Gets the return type of this member.
/// This property never returns <c>null</c>.

6
ICSharpCode.Decompiler/TypeSystem/ITypeDefinition.cs

@ -96,12 +96,6 @@ namespace ICSharpCode.Decompiler.TypeSystem @@ -96,12 +96,6 @@ namespace ICSharpCode.Decompiler.TypeSystem
/// </summary>
public interface ITypeDefinition : IType, IEntity
{
/// <summary>
/// Returns all parts that contribute to this type definition.
/// Non-partial classes have a single part that represents the whole class.
/// </summary>
IReadOnlyList<IUnresolvedTypeDefinition> Parts { get; }
IReadOnlyList<ITypeDefinition> NestedTypes { get; }
IReadOnlyList<IMember> Members { get; }

7
ICSharpCode.Decompiler/TypeSystem/Implementation/AbstractResolvedEntity.cs

@ -64,7 +64,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -64,7 +64,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
public bool IsAbstract { get { return unresolved.IsAbstract; } }
public bool IsSealed { get { return unresolved.IsSealed; } }
public bool IsShadowing { get { return unresolved.IsShadowing; } }
public bool IsSynthetic { get { return unresolved.IsSynthetic; } }
public ICompilation Compilation {
get { return parentContext.Compilation; }
@ -76,12 +75,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -76,12 +75,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
public string Namespace { get { return unresolved.Namespace; } }
public virtual Accessibility Accessibility { get { return unresolved.Accessibility; } }
public bool IsPrivate { get { return Accessibility == Accessibility.Private; } }
public bool IsPublic { get { return Accessibility == Accessibility.Public; } }
public bool IsProtected { get { return Accessibility == Accessibility.Protected; } }
public bool IsInternal { get { return Accessibility == Accessibility.Internal; } }
public bool IsProtectedOrInternal { get { return Accessibility == Accessibility.ProtectedOrInternal; } }
public bool IsProtectedAndInternal { get { return Accessibility == Accessibility.ProtectedAndInternal; } }
public override string ToString()
{

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

@ -74,7 +74,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -74,7 +74,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
result.Add(member);
}
return result.ToArray();
} else if (unresolved.IsStatic || !unresolved.IsPublic || DeclaringTypeDefinition == null || DeclaringTypeDefinition.Kind == TypeKind.Interface) {
} else if (unresolved.IsStatic || unresolved.Accessibility != Accessibility.Public || DeclaringTypeDefinition == null || DeclaringTypeDefinition.Kind == TypeKind.Interface) {
return EmptyList<IMember>.Instance;
} else {
// TODO: implement interface member mappings correctly

34
ICSharpCode.Decompiler/TypeSystem/Implementation/AbstractUnresolvedEntity.cs

@ -48,7 +48,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -48,7 +48,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
internal const ushort FlagSealed = 0x0002;
internal const ushort FlagAbstract = 0x0004;
internal const ushort FlagShadowing = 0x0008;
internal const ushort FlagSynthetic = 0x0010;
//internal const ushort FlagSynthetic = 0x0010;
internal const ushort FlagStatic = 0x0020;
// flags for DefaultUnresolvedTypeDefinition/LazyCecilTypeDefinition
internal const ushort FlagAddDefaultConstructorIfRequired = 0x0040;
@ -235,38 +235,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -235,38 +235,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
}
}
public bool IsSynthetic {
get { return flags[FlagSynthetic]; }
set {
ThrowIfFrozen();
flags[FlagSynthetic] = value;
}
}
bool IHasAccessibility.IsPrivate {
get { return accessibility == Accessibility.Private; }
}
bool IHasAccessibility.IsPublic {
get { return accessibility == Accessibility.Public; }
}
bool IHasAccessibility.IsProtected {
get { return accessibility == Accessibility.Protected; }
}
bool IHasAccessibility.IsInternal {
get { return accessibility == Accessibility.Internal; }
}
bool IHasAccessibility.IsProtectedOrInternal {
get { return accessibility == Accessibility.ProtectedOrInternal; }
}
bool IHasAccessibility.IsProtectedAndInternal {
get { return accessibility == Accessibility.ProtectedAndInternal; }
}
public override string ToString()
{
StringBuilder b = new StringBuilder("[");

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

@ -32,7 +32,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -32,7 +32,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
readonly IUnresolvedTypeDefinition[] parts;
Accessibility accessibility = Accessibility.Internal;
bool isAbstract, isSealed, isShadowing;
bool isSynthetic = true; // true if all parts are synthetic
public DefaultResolvedTypeDefinition(ITypeResolveContext parentContext, params IUnresolvedTypeDefinition[] parts)
{
@ -47,7 +46,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -47,7 +46,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
isAbstract |= part.IsAbstract;
isSealed |= part.IsSealed;
isShadowing |= part.IsShadowing;
isSynthetic &= part.IsSynthetic; // true if all parts are synthetic
// internal is the default, so use another part's accessibility until we find a non-internal accessibility
if (accessibility == Accessibility.Internal)
@ -108,10 +106,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -108,10 +106,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
}
}
public IReadOnlyList<IUnresolvedTypeDefinition> Parts {
get { return parts; }
}
public System.Reflection.Metadata.EntityHandle MetadataToken => parts[0].MetadataToken;
public SymbolKind SymbolKind {
@ -569,35 +563,10 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -569,35 +563,10 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
public bool IsAbstract { get { return isAbstract; } }
public bool IsSealed { get { return isSealed; } }
public bool IsShadowing { get { return isShadowing; } }
public bool IsSynthetic { get { return isSynthetic; } }
public Accessibility Accessibility {
get { return accessibility; }
}
bool IHasAccessibility.IsPrivate {
get { return accessibility == Accessibility.Private; }
}
bool IHasAccessibility.IsPublic {
get { return accessibility == Accessibility.Public; }
}
bool IHasAccessibility.IsProtected {
get { return accessibility == Accessibility.Protected; }
}
bool IHasAccessibility.IsInternal {
get { return accessibility == Accessibility.Internal; }
}
bool IHasAccessibility.IsProtectedOrInternal {
get { return accessibility == Accessibility.ProtectedOrInternal; }
}
bool IHasAccessibility.IsProtectedAndInternal {
get { return accessibility == Accessibility.ProtectedAndInternal; }
}
#endregion
ITypeDefinition IType.GetDefinition()

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

@ -221,7 +221,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -221,7 +221,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
return new DefaultUnresolvedMethod(typeDefinition, ".ctor") {
SymbolKind = SymbolKind.Constructor,
Accessibility = typeDefinition.IsAbstract ? Accessibility.Protected : Accessibility.Public,
IsSynthetic = true,
HasBody = true,
MetadataToken = System.Reflection.Metadata.Ecma335.MetadataTokens.MethodDefinitionHandle(0), // initialize with properly typed nil token, to avoid InvalidCastExceptions
ReturnType = KnownTypeReference.Void
@ -246,7 +245,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -246,7 +245,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
SymbolKind = SymbolKind.Constructor,
Name = ".ctor",
Accessibility = Accessibility.Public,
IsSynthetic = true,
ReturnType = KnownTypeReference.Void
};
m.Freeze();

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

@ -136,7 +136,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -136,7 +136,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
foreach (var ns in namespaces) {
ITypeDefinition typeDef = ns.GetTypeDefinition(name, typeParameterCount);
if (typeDef != null) {
if (typeDef.IsPublic) {
if (typeDef.Accessibility == Accessibility.Public) {
// Prefer accessible types over non-accessible types.
return typeDef;
// || (typeDef.IsInternal && typeDef.ParentAssembly.InternalsVisibleTo(...))

32
ICSharpCode.Decompiler/TypeSystem/Implementation/SpecializedMember.cs

@ -111,10 +111,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -111,10 +111,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
get { return baseMember.MemberDefinition; }
}
public IUnresolvedMember UnresolvedMember {
get { return baseMember.UnresolvedMember; }
}
public IType ReturnType {
get {
var result = LazyInit.VolatileRead(ref this.returnType);
@ -201,34 +197,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -201,34 +197,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
get { return baseMember.IsShadowing; }
}
public bool IsSynthetic {
get { return baseMember.IsSynthetic; }
}
public bool IsPrivate {
get { return baseMember.IsPrivate; }
}
public bool IsPublic {
get { return baseMember.IsPublic; }
}
public bool IsProtected {
get { return baseMember.IsProtected; }
}
public bool IsInternal {
get { return baseMember.IsInternal; }
}
public bool IsProtectedOrInternal {
get { return baseMember.IsProtectedOrInternal; }
}
public bool IsProtectedAndInternal {
get { return baseMember.IsProtectedAndInternal; }
}
public string FullName {
get { return baseMember.FullName; }
}

2
ICSharpCode.Decompiler/TypeSystem/InheritanceHelper.cs

@ -82,7 +82,7 @@ namespace ICSharpCode.Decompiler.TypeSystem @@ -82,7 +82,7 @@ namespace ICSharpCode.Decompiler.TypeSystem
baseMembers = baseType.GetMembers(m => m.Name == member.Name && !m.IsExplicitInterfaceImplementation, GetMemberOptions.IgnoreInheritedMembers);
}
foreach (IMember baseMember in baseMembers) {
if (baseMember.IsPrivate) {
if (baseMember.Accessibility == Accessibility.Private) {
// skip private base members;
continue;
}

32
ICSharpCode.Decompiler/TypeSystem/VarArgInstanceMethod.cs

@ -181,10 +181,6 @@ namespace ICSharpCode.Decompiler.TypeSystem @@ -181,10 +181,6 @@ namespace ICSharpCode.Decompiler.TypeSystem
get { return baseMethod.MemberDefinition; }
}
public IUnresolvedMember UnresolvedMember {
get { return baseMethod.UnresolvedMember; }
}
public IType ReturnType {
get { return baseMethod.ReturnType; }
}
@ -261,10 +257,6 @@ namespace ICSharpCode.Decompiler.TypeSystem @@ -261,10 +257,6 @@ namespace ICSharpCode.Decompiler.TypeSystem
get { return baseMethod.IsShadowing; }
}
public bool IsSynthetic {
get { return baseMethod.IsSynthetic; }
}
#endregion
#region IHasAccessibility implementation
@ -273,30 +265,6 @@ namespace ICSharpCode.Decompiler.TypeSystem @@ -273,30 +265,6 @@ namespace ICSharpCode.Decompiler.TypeSystem
get { return baseMethod.Accessibility; }
}
public bool IsPrivate {
get { return baseMethod.IsPrivate; }
}
public bool IsPublic {
get { return baseMethod.IsPublic; }
}
public bool IsProtected {
get { return baseMethod.IsProtected; }
}
public bool IsInternal {
get { return baseMethod.IsInternal; }
}
public bool IsProtectedOrInternal {
get { return baseMethod.IsProtectedOrInternal; }
}
public bool IsProtectedAndInternal {
get { return baseMethod.IsProtectedAndInternal; }
}
#endregion
#region INamedElement implementation

Loading…
Cancel
Save