Browse Source

Remove some dead code in the type system.

pull/1087/head
Daniel Grunwald 8 years ago
parent
commit
da6b371dd3
  1. 8
      ICSharpCode.Decompiler/CSharp/Resolver/CSharpOperators.cs
  2. 14
      ICSharpCode.Decompiler/CSharp/Resolver/ReducedExtensionMethod.cs
  3. 166
      ICSharpCode.Decompiler/CSharp/TypeSystem/CSharpAttribute.cs
  4. 2
      ICSharpCode.Decompiler/CSharp/TypeSystem/MethodTypeParameterWithInheritedConstraints.cs
  5. 1
      ICSharpCode.Decompiler/ICSharpCode.Decompiler.csproj
  6. 5
      ICSharpCode.Decompiler/Semantics/LocalResolveResult.cs
  7. 5
      ICSharpCode.Decompiler/Semantics/MemberResolveResult.cs
  8. 5
      ICSharpCode.Decompiler/Semantics/ResolveResult.cs
  9. 9
      ICSharpCode.Decompiler/Semantics/TypeResolveResult.cs
  10. 4
      ICSharpCode.Decompiler/TypeSystem/AnonymousType.cs
  11. 13
      ICSharpCode.Decompiler/TypeSystem/IAttribute.cs
  12. 26
      ICSharpCode.Decompiler/TypeSystem/IEntity.cs
  13. 5
      ICSharpCode.Decompiler/TypeSystem/IField.cs
  14. 5
      ICSharpCode.Decompiler/TypeSystem/IParameter.cs
  15. 10
      ICSharpCode.Decompiler/TypeSystem/ITypeParameter.cs
  16. 5
      ICSharpCode.Decompiler/TypeSystem/IVariable.cs
  17. 8
      ICSharpCode.Decompiler/TypeSystem/Implementation/AbstractResolvedEntity.cs
  18. 11
      ICSharpCode.Decompiler/TypeSystem/Implementation/AbstractResolvedTypeParameter.cs
  19. 59
      ICSharpCode.Decompiler/TypeSystem/Implementation/AbstractUnresolvedEntity.cs
  20. 25
      ICSharpCode.Decompiler/TypeSystem/Implementation/DefaultAttribute.cs
  21. 16
      ICSharpCode.Decompiler/TypeSystem/Implementation/DefaultParameter.cs
  22. 3
      ICSharpCode.Decompiler/TypeSystem/Implementation/DefaultResolvedMethod.cs
  23. 10
      ICSharpCode.Decompiler/TypeSystem/Implementation/DefaultResolvedTypeDefinition.cs
  24. 6
      ICSharpCode.Decompiler/TypeSystem/Implementation/DefaultResolvedTypeParameter.cs
  25. 2
      ICSharpCode.Decompiler/TypeSystem/Implementation/DefaultUnresolvedAssembly.cs
  26. 16
      ICSharpCode.Decompiler/TypeSystem/Implementation/DefaultUnresolvedAttribute.cs
  27. 2
      ICSharpCode.Decompiler/TypeSystem/Implementation/DefaultUnresolvedEvent.cs
  28. 2
      ICSharpCode.Decompiler/TypeSystem/Implementation/DefaultUnresolvedField.cs
  29. 6
      ICSharpCode.Decompiler/TypeSystem/Implementation/DefaultUnresolvedMethod.cs
  30. 17
      ICSharpCode.Decompiler/TypeSystem/Implementation/DefaultUnresolvedParameter.cs
  31. 2
      ICSharpCode.Decompiler/TypeSystem/Implementation/DefaultUnresolvedProperty.cs
  32. 1
      ICSharpCode.Decompiler/TypeSystem/Implementation/DefaultUnresolvedTypeDefinition.cs
  33. 11
      ICSharpCode.Decompiler/TypeSystem/Implementation/DefaultUnresolvedTypeParameter.cs
  34. 16
      ICSharpCode.Decompiler/TypeSystem/Implementation/DefaultVariable.cs
  35. 4
      ICSharpCode.Decompiler/TypeSystem/Implementation/DummyTypeParameter.cs
  36. 14
      ICSharpCode.Decompiler/TypeSystem/Implementation/ResolvedAttributeBlob.cs
  37. 16
      ICSharpCode.Decompiler/TypeSystem/Implementation/SpecializedMember.cs
  38. 2
      ICSharpCode.Decompiler/TypeSystem/Implementation/SpecializedMethod.cs
  39. 6
      ICSharpCode.Decompiler/TypeSystem/TypeSystemExtensions.cs
  40. 8
      ICSharpCode.Decompiler/TypeSystem/VarArgInstanceMethod.cs
  41. 130
      ICSharpCode.Decompiler/Util/ProjectedList.cs

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

@ -152,14 +152,6 @@ namespace ICSharpCode.Decompiler.CSharp.Resolver @@ -152,14 +152,6 @@ namespace ICSharpCode.Decompiler.CSharp.Resolver
get { return SymbolKind.Operator; }
}
DomRegion IEntity.Region {
get { return DomRegion.Empty; }
}
DomRegion IEntity.BodyRegion {
get { return DomRegion.Empty; }
}
IReadOnlyList<IAttribute> IEntity.Attributes {
get { return EmptyList<IAttribute>.Instance; }
}

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

@ -276,19 +276,7 @@ namespace ICSharpCode.Decompiler.CSharp.Resolver @@ -276,19 +276,7 @@ namespace ICSharpCode.Decompiler.CSharp.Resolver
return baseMethod.SymbolKind;
}
}
public DomRegion Region {
get {
return baseMethod.Region;
}
}
public DomRegion BodyRegion {
get {
return baseMethod.BodyRegion;
}
}
public ITypeDefinition DeclaringTypeDefinition {
get {
return baseMethod.DeclaringTypeDefinition;

166
ICSharpCode.Decompiler/CSharp/TypeSystem/CSharpAttribute.cs

@ -1,166 +0,0 @@ @@ -1,166 +0,0 @@
// Copyright (c) 2010-2013 AlphaSierraPapa for the SharpDevelop Team
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of this
// software and associated documentation files (the "Software"), to deal in the Software
// without restriction, including without limitation the rights to use, copy, modify, merge,
// publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
// to whom the Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all copies or
// substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
// FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
using System;
using System.Collections.Generic;
using System.Linq;
using ICSharpCode.Decompiler.CSharp.Resolver;
using ICSharpCode.Decompiler.Semantics;
using ICSharpCode.Decompiler.TypeSystem;
using ICSharpCode.Decompiler.Util;
namespace ICSharpCode.Decompiler.CSharp.TypeSystem
{
[Serializable]
public sealed class CSharpAttribute : IUnresolvedAttribute
{
ITypeReference attributeType;
DomRegion region;
IList<IConstantValue> positionalArguments;
IList<KeyValuePair<string, IConstantValue>> namedCtorArguments;
IList<KeyValuePair<string, IConstantValue>> namedArguments;
public CSharpAttribute(ITypeReference attributeType, DomRegion region,
IList<IConstantValue> positionalArguments,
IList<KeyValuePair<string, IConstantValue>> namedCtorArguments,
IList<KeyValuePair<string, IConstantValue>> namedArguments)
{
if (attributeType == null)
throw new ArgumentNullException("attributeType");
this.attributeType = attributeType;
this.region = region;
this.positionalArguments = positionalArguments ?? EmptyList<IConstantValue>.Instance;
this.namedCtorArguments = namedCtorArguments ?? EmptyList<KeyValuePair<string, IConstantValue>>.Instance;
this.namedArguments = namedArguments ?? EmptyList<KeyValuePair<string, IConstantValue>>.Instance;
}
public DomRegion Region {
get { return region; }
}
public ITypeReference AttributeType {
get { return attributeType; }
}
public IAttribute CreateResolvedAttribute(ITypeResolveContext context)
{
return new CSharpResolvedAttribute((CSharpTypeResolveContext)context, this);
}
sealed class CSharpResolvedAttribute : IAttribute
{
readonly CSharpTypeResolveContext context;
readonly CSharpAttribute unresolved;
readonly IType attributeType;
IList<KeyValuePair<IMember, ResolveResult>> namedArguments;
public CSharpResolvedAttribute(CSharpTypeResolveContext context, CSharpAttribute unresolved)
{
this.context = context;
this.unresolved = unresolved;
// Pretty much any access to the attribute checks the type first, so
// we don't need to use lazy-loading for that.
this.attributeType = unresolved.AttributeType.Resolve(context);
}
DomRegion IAttribute.Region {
get { return unresolved.Region; }
}
IType IAttribute.AttributeType {
get { return attributeType; }
}
ResolveResult ctorInvocation;
InvocationResolveResult GetCtorInvocation()
{
ResolveResult rr = LazyInit.VolatileRead(ref this.ctorInvocation);
if (rr != null) {
return rr as InvocationResolveResult;
} else {
CSharpResolver resolver = new CSharpResolver(context);
int totalArgumentCount = unresolved.positionalArguments.Count + unresolved.namedCtorArguments.Count;
ResolveResult[] arguments = new ResolveResult[totalArgumentCount];
string[] argumentNames = new string[totalArgumentCount];
int i = 0;
while (i < unresolved.positionalArguments.Count) {
IConstantValue cv = unresolved.positionalArguments[i];
arguments[i] = cv.Resolve(context);
i++;
}
foreach (var pair in unresolved.namedCtorArguments) {
argumentNames[i] = pair.Key;
arguments[i] = pair.Value.Resolve(context);
i++;
}
rr = resolver.ResolveObjectCreation(attributeType, arguments, argumentNames);
return LazyInit.GetOrSet(ref this.ctorInvocation, rr) as InvocationResolveResult;
}
}
IMethod IAttribute.Constructor {
get {
var invocation = GetCtorInvocation();
if (invocation != null)
return invocation.Member as IMethod;
else
return null;
}
}
IList<ResolveResult> positionalArguments;
IList<ResolveResult> IAttribute.PositionalArguments {
get {
var result = LazyInit.VolatileRead(ref this.positionalArguments);
if (result != null) {
return result;
} else {
var invocation = GetCtorInvocation();
if (invocation != null)
result = invocation.GetArgumentsForCall();
else
result = EmptyList<ResolveResult>.Instance;
return LazyInit.GetOrSet(ref this.positionalArguments, result);
}
}
}
IList<KeyValuePair<IMember, ResolveResult>> IAttribute.NamedArguments {
get {
var namedArgs = LazyInit.VolatileRead(ref this.namedArguments);
if (namedArgs != null) {
return namedArgs;
} else {
namedArgs = new List<KeyValuePair<IMember, ResolveResult>>();
foreach (var pair in unresolved.namedArguments) {
IMember member = attributeType.GetMembers(m => (m.SymbolKind == SymbolKind.Field || m.SymbolKind == SymbolKind.Property) && m.Name == pair.Key).FirstOrDefault();
if (member != null) {
ResolveResult val = pair.Value.Resolve(context);
namedArgs.Add(new KeyValuePair<IMember, ResolveResult>(member, val));
}
}
return LazyInit.GetOrSet(ref this.namedArguments, namedArgs);
}
}
}
}
}
}

2
ICSharpCode.Decompiler/CSharp/TypeSystem/MethodTypeParameterWithInheritedConstraints.cs

@ -67,7 +67,7 @@ namespace ICSharpCode.Decompiler.CSharp.TypeSystem @@ -67,7 +67,7 @@ namespace ICSharpCode.Decompiler.CSharp.TypeSystem
public ResolvedMethodTypeParameterWithInheritedConstraints(MethodTypeParameterWithInheritedConstraints unresolved, ITypeResolveContext context)
: base(context.CurrentMember, unresolved.Index, unresolved.Name, unresolved.Variance,
unresolved.Attributes.CreateResolvedAttributes(context), unresolved.Region)
unresolved.Attributes.CreateResolvedAttributes(context))
{
}

1
ICSharpCode.Decompiler/ICSharpCode.Decompiler.csproj

@ -235,7 +235,6 @@ @@ -235,7 +235,6 @@
<Compile Include="CSharp\TypeSystem\AliasNamespaceReference.cs" />
<Compile Include="CSharp\TypeSystem\AttributeTypeReference.cs" />
<Compile Include="CSharp\TypeSystem\ConstantValues.cs" />
<Compile Include="CSharp\TypeSystem\CSharpAttribute.cs" />
<Compile Include="CSharp\TypeSystem\CSharpTypeResolveContext.cs" />
<Compile Include="CSharp\TypeSystem\MemberTypeOrNamespaceReference.cs" />
<Compile Include="CSharp\TypeSystem\MethodTypeParameterWithInheritedConstraints.cs" />

5
ICSharpCode.Decompiler/Semantics/LocalResolveResult.cs

@ -68,10 +68,5 @@ namespace ICSharpCode.Decompiler.Semantics @@ -68,10 +68,5 @@ namespace ICSharpCode.Decompiler.Semantics
{
return string.Format(CultureInfo.InvariantCulture, "[LocalResolveResult {0}]", variable);
}
public override DomRegion GetDefinitionRegion()
{
return variable.Region;
}
}
}

5
ICSharpCode.Decompiler/Semantics/MemberResolveResult.cs

@ -139,10 +139,5 @@ namespace ICSharpCode.Decompiler.Semantics @@ -139,10 +139,5 @@ namespace ICSharpCode.Decompiler.Semantics
{
return string.Format(CultureInfo.InvariantCulture, "[{0} {1}]", GetType().Name, member);
}
public override DomRegion GetDefinitionRegion()
{
return member.Region;
}
}
}

5
ICSharpCode.Decompiler/Semantics/ResolveResult.cs

@ -65,11 +65,6 @@ namespace ICSharpCode.Decompiler.Semantics @@ -65,11 +65,6 @@ namespace ICSharpCode.Decompiler.Semantics
return Enumerable.Empty<ResolveResult>();
}
public virtual DomRegion GetDefinitionRegion()
{
return DomRegion.Empty;
}
public virtual ResolveResult ShallowClone()
{
return (ResolveResult)MemberwiseClone();

9
ICSharpCode.Decompiler/Semantics/TypeResolveResult.cs

@ -33,14 +33,5 @@ namespace ICSharpCode.Decompiler.Semantics @@ -33,14 +33,5 @@ namespace ICSharpCode.Decompiler.Semantics
public override bool IsError {
get { return this.Type.Kind == TypeKind.Unknown; }
}
public override DomRegion GetDefinitionRegion()
{
ITypeDefinition def = this.Type.GetDefinition();
if (def != null)
return def.Region;
else
return DomRegion.Empty;
}
}
}

4
ICSharpCode.Decompiler/TypeSystem/AnonymousType.cs

@ -31,7 +31,7 @@ namespace ICSharpCode.Decompiler.TypeSystem @@ -31,7 +31,7 @@ namespace ICSharpCode.Decompiler.TypeSystem
{
ICompilation compilation;
IUnresolvedProperty[] unresolvedProperties;
IList<IProperty> resolvedProperties;
IReadOnlyList<IProperty> resolvedProperties;
public AnonymousType(ICompilation compilation, IList<IUnresolvedProperty> properties)
{
@ -129,7 +129,7 @@ namespace ICSharpCode.Decompiler.TypeSystem @@ -129,7 +129,7 @@ namespace ICSharpCode.Decompiler.TypeSystem
get { return true; }
}
public IList<IProperty> Properties {
public IReadOnlyList<IProperty> Properties {
get { return resolvedProperties; }
}

13
ICSharpCode.Decompiler/TypeSystem/IAttribute.cs

@ -44,11 +44,6 @@ namespace ICSharpCode.Decompiler.TypeSystem @@ -44,11 +44,6 @@ namespace ICSharpCode.Decompiler.TypeSystem
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1711:IdentifiersShouldNotHaveIncorrectSuffix")]
public interface IAttribute
{
/// <summary>
/// Gets the code region of this attribute.
/// </summary>
DomRegion Region { get; }
/// <summary>
/// Gets the type of the attribute.
/// </summary>
@ -59,15 +54,15 @@ namespace ICSharpCode.Decompiler.TypeSystem @@ -59,15 +54,15 @@ namespace ICSharpCode.Decompiler.TypeSystem
/// This property may return null if no matching constructor was found.
/// </summary>
IMethod Constructor { get; }
/// <summary>
/// Gets the positional arguments.
/// </summary>
IList<ResolveResult> PositionalArguments { get; }
IReadOnlyList<ResolveResult> PositionalArguments { get; }
/// <summary>
/// Gets the named arguments passed to the attribute.
/// </summary>
IList<KeyValuePair<IMember, ResolveResult>> NamedArguments { get; }
IReadOnlyList<KeyValuePair<IMember, ResolveResult>> NamedArguments { get; }
}
}

26
ICSharpCode.Decompiler/TypeSystem/IEntity.cs

@ -31,16 +31,6 @@ namespace ICSharpCode.Decompiler.TypeSystem @@ -31,16 +31,6 @@ namespace ICSharpCode.Decompiler.TypeSystem
/// </summary>
SymbolKind SymbolKind { get; }
/// <summary>
/// Gets the complete entity region (including header+body)
/// </summary>
DomRegion Region { get; }
/// <summary>
/// Gets the entity body region.
/// </summary>
DomRegion BodyRegion { get; }
/// <summary>
/// Gets the declaring class.
/// For members, this is the class that contains the member.
@ -48,12 +38,6 @@ namespace ICSharpCode.Decompiler.TypeSystem @@ -48,12 +38,6 @@ namespace ICSharpCode.Decompiler.TypeSystem
/// </summary>
IUnresolvedTypeDefinition DeclaringTypeDefinition { get; }
/// <summary>
/// Gets the parsed file in which this entity is defined.
/// Returns null if this entity wasn't parsed from source code (e.g. loaded from a .dll with CecilLoader).
/// </summary>
IUnresolvedFile UnresolvedFile { get; }
/// <summary>
/// Gets the attributes on this entity.
/// </summary>
@ -98,16 +82,6 @@ namespace ICSharpCode.Decompiler.TypeSystem @@ -98,16 +82,6 @@ namespace ICSharpCode.Decompiler.TypeSystem
/// </summary>
new string Name { get; }
/// <summary>
/// Gets the complete entity region (including header+body)
/// </summary>
DomRegion Region { get; }
/// <summary>
/// Gets the entity body region.
/// </summary>
DomRegion BodyRegion { get; }
/// <summary>
/// Gets the declaring class.
/// For members, this is the class that contains the member.

5
ICSharpCode.Decompiler/TypeSystem/IField.cs

@ -70,11 +70,6 @@ namespace ICSharpCode.Decompiler.TypeSystem @@ -70,11 +70,6 @@ namespace ICSharpCode.Decompiler.TypeSystem
/// </summary>
new string Name { get; } // solve ambiguity between IMember.Name and IVariable.Name
/// <summary>
/// Gets the region where the field is declared.
/// </summary>
new DomRegion Region { get; } // solve ambiguity between IEntity.Region and IVariable.Region
/// <summary>
/// Gets whether this field is readonly.
/// </summary>

5
ICSharpCode.Decompiler/TypeSystem/IParameter.cs

@ -27,11 +27,6 @@ namespace ICSharpCode.Decompiler.TypeSystem @@ -27,11 +27,6 @@ namespace ICSharpCode.Decompiler.TypeSystem
/// </summary>
string Name { get; }
/// <summary>
/// Gets the declaration region of the variable.
/// </summary>
DomRegion Region { get; }
/// <summary>
/// Gets the type of the variable.
/// </summary>

10
ICSharpCode.Decompiler/TypeSystem/ITypeParameter.cs

@ -46,11 +46,6 @@ namespace ICSharpCode.Decompiler.TypeSystem @@ -46,11 +46,6 @@ namespace ICSharpCode.Decompiler.TypeSystem
/// </summary>
VarianceModifier Variance { get; }
/// <summary>
/// Gets the region where the type parameter is defined.
/// </summary>
DomRegion Region { get; }
ITypeParameter CreateResolvedTypeParameter(ITypeResolveContext context);
}
@ -96,11 +91,6 @@ namespace ICSharpCode.Decompiler.TypeSystem @@ -96,11 +91,6 @@ namespace ICSharpCode.Decompiler.TypeSystem
/// </summary>
VarianceModifier Variance { get; }
/// <summary>
/// Gets the region where the type parameter is defined.
/// </summary>
DomRegion Region { get; }
/// <summary>
/// Gets the effective base class of this type parameter.
/// </summary>

5
ICSharpCode.Decompiler/TypeSystem/IVariable.cs

@ -28,11 +28,6 @@ namespace ICSharpCode.Decompiler.TypeSystem @@ -28,11 +28,6 @@ namespace ICSharpCode.Decompiler.TypeSystem
/// </summary>
new string Name { get; }
/// <summary>
/// Gets the declaration region of the variable.
/// </summary>
DomRegion Region { get; }
/// <summary>
/// Gets the type of the variable.
/// </summary>

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

@ -44,14 +44,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -44,14 +44,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
get { return unresolved.SymbolKind; }
}
public DomRegion Region {
get { return unresolved.Region; }
}
public DomRegion BodyRegion {
get { return unresolved.BodyRegion; }
}
public ITypeDefinition DeclaringTypeDefinition {
get { return parentContext.CurrentTypeDefinition; }
}

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

@ -32,10 +32,9 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -32,10 +32,9 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
readonly int index;
readonly string name;
readonly IReadOnlyList<IAttribute> attributes;
readonly DomRegion region;
readonly VarianceModifier variance;
protected AbstractTypeParameter(IEntity owner, int index, string name, VarianceModifier variance, IReadOnlyList<IAttribute> attributes, DomRegion region)
protected AbstractTypeParameter(IEntity owner, int index, string name, VarianceModifier variance, IReadOnlyList<IAttribute> attributes)
{
if (owner == null)
throw new ArgumentNullException("owner");
@ -45,11 +44,10 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -45,11 +44,10 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
this.index = index;
this.name = name ?? ((this.OwnerType == SymbolKind.Method ? "!!" : "!") + index.ToString(CultureInfo.InvariantCulture));
this.attributes = attributes ?? EmptyList<IAttribute>.Instance;
this.region = region;
this.variance = variance;
}
protected AbstractTypeParameter(ICompilation compilation, SymbolKind ownerType, int index, string name, VarianceModifier variance, IReadOnlyList<IAttribute> attributes, DomRegion region)
protected AbstractTypeParameter(ICompilation compilation, SymbolKind ownerType, int index, string name, VarianceModifier variance, IReadOnlyList<IAttribute> attributes)
{
if (compilation == null)
throw new ArgumentNullException("compilation");
@ -58,7 +56,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -58,7 +56,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
this.index = index;
this.name = name ?? ((this.OwnerType == SymbolKind.Method ? "!!" : "!") + index.ToString(CultureInfo.InvariantCulture));
this.attributes = attributes ?? EmptyList<IAttribute>.Instance;
this.region = region;
this.variance = variance;
}
@ -86,10 +83,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -86,10 +83,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
get { return variance; }
}
public DomRegion Region {
get { return region; }
}
public ICompilation Compilation {
get { return compilation; }
}

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

@ -36,7 +36,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -36,7 +36,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
string name = string.Empty;
IList<IUnresolvedAttribute> attributes;
internal RareFields rareFields;
// 1 byte per enum + 2 bytes for flags
SymbolKind symbolKind;
@ -84,8 +83,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -84,8 +83,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
protected virtual void FreezeInternal()
{
attributes = FreezableHelper.FreezeListAndElements(attributes);
if (rareFields != null)
rareFields.FreezeInternal();
}
/// <summary>
@ -101,8 +98,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -101,8 +98,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
ThrowIfFrozen();
name = provider.Intern(name);
attributes = provider.InternList(attributes);
if (rareFields != null)
rareFields.ApplyInterningProvider(provider);
}
/// <summary>
@ -117,32 +112,9 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -117,32 +112,9 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
copy.flags[FlagFrozen] = false;
if (attributes != null)
copy.attributes = new List<IUnresolvedAttribute>(attributes);
if (rareFields != null)
copy.rareFields = (RareFields)rareFields.Clone();
return copy;
}
[Serializable]
internal class RareFields
{
internal DomRegion region;
internal DomRegion bodyRegion;
internal IUnresolvedFile unresolvedFile;
protected internal virtual void FreezeInternal()
{
}
public virtual void ApplyInterningProvider(InterningProvider provider)
{
}
public virtual object Clone()
{
return MemberwiseClone();
}
}
protected void ThrowIfFrozen()
{
FreezableHelper.ThrowIfFrozen(this);
@ -156,37 +128,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -156,37 +128,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
}
}
internal virtual RareFields WriteRareFields()
{
ThrowIfFrozen();
if (rareFields == null) rareFields = new RareFields();
return rareFields;
}
public DomRegion Region {
get { return rareFields != null ? rareFields.region : DomRegion.Empty; }
set {
if (value != DomRegion.Empty || rareFields != null)
WriteRareFields().region = value;
}
}
public DomRegion BodyRegion {
get { return rareFields != null ? rareFields.bodyRegion : DomRegion.Empty; }
set {
if (value != DomRegion.Empty || rareFields != null)
WriteRareFields().bodyRegion = value;
}
}
public IUnresolvedFile UnresolvedFile {
get { return rareFields != null ? rareFields.unresolvedFile : null; }
set {
if (value != null || rareFields != null)
WriteRareFields().unresolvedFile = value;
}
}
public IUnresolvedTypeDefinition DeclaringTypeDefinition {
get { return declaringTypeDefinition; }
set {

25
ICSharpCode.Decompiler/TypeSystem/Implementation/DefaultAttribute.cs

@ -30,26 +30,22 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -30,26 +30,22 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
public class DefaultAttribute : IAttribute
{
readonly IType attributeType;
readonly IList<ResolveResult> positionalArguments;
readonly IList<KeyValuePair<IMember, ResolveResult>> namedArguments;
readonly DomRegion region;
readonly IReadOnlyList<ResolveResult> positionalArguments;
readonly IReadOnlyList<KeyValuePair<IMember, ResolveResult>> namedArguments;
volatile IMethod constructor;
public DefaultAttribute(IType attributeType, IList<ResolveResult> positionalArguments = null,
IList<KeyValuePair<IMember, ResolveResult>> namedArguments = null,
DomRegion region = default(DomRegion))
public DefaultAttribute(IType attributeType, IReadOnlyList<ResolveResult> positionalArguments = null,
IReadOnlyList<KeyValuePair<IMember, ResolveResult>> namedArguments = null)
{
if (attributeType == null)
throw new ArgumentNullException("attributeType");
this.attributeType = attributeType;
this.positionalArguments = positionalArguments ?? EmptyList<ResolveResult>.Instance;
this.namedArguments = namedArguments ?? EmptyList<KeyValuePair<IMember, ResolveResult>>.Instance;
this.region = region;
}
public DefaultAttribute(IMethod constructor, IList<ResolveResult> positionalArguments = null,
IList<KeyValuePair<IMember, ResolveResult>> namedArguments = null,
DomRegion region = default(DomRegion))
public DefaultAttribute(IMethod constructor, IReadOnlyList<ResolveResult> positionalArguments = null,
IReadOnlyList<KeyValuePair<IMember, ResolveResult>> namedArguments = null)
{
if (constructor == null)
throw new ArgumentNullException("constructor");
@ -57,7 +53,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -57,7 +53,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
this.attributeType = constructor.DeclaringType ?? SpecialType.UnknownType;
this.positionalArguments = positionalArguments ?? EmptyList<ResolveResult>.Instance;
this.namedArguments = namedArguments ?? EmptyList<KeyValuePair<IMember, ResolveResult>>.Instance;
this.region = region;
if (this.positionalArguments.Count != constructor.Parameters.Count) {
throw new ArgumentException("Positional argument count must match the constructor's parameter count");
}
@ -67,10 +62,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -67,10 +62,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
get { return attributeType; }
}
public DomRegion Region {
get { return region; }
}
public IMethod Constructor {
get {
IMethod ctor = this.constructor;
@ -87,11 +78,11 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -87,11 +78,11 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
}
}
public IList<ResolveResult> PositionalArguments {
public IReadOnlyList<ResolveResult> PositionalArguments {
get { return positionalArguments; }
}
public IList<KeyValuePair<IMember, ResolveResult>> NamedArguments {
public IReadOnlyList<KeyValuePair<IMember, ResolveResult>> NamedArguments {
get { return namedArguments; }
}
}

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

@ -30,7 +30,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -30,7 +30,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
{
readonly IType type;
readonly string name;
readonly DomRegion region;
readonly IReadOnlyList<IAttribute> attributes;
readonly bool isRef, isOut, isParams, isOptional;
readonly object defaultValue;
@ -46,7 +45,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -46,7 +45,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
this.name = name;
}
public DefaultParameter(IType type, string name, IParameterizedMember owner = null, DomRegion region = default(DomRegion), IReadOnlyList<IAttribute> attributes = null,
public DefaultParameter(IType type, string name, IParameterizedMember owner = null, IReadOnlyList<IAttribute> attributes = null,
bool isRef = false, bool isOut = false, bool isParams = false, bool isOptional = false, object defaultValue = null)
{
if (type == null)
@ -56,7 +55,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -56,7 +55,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
this.type = type;
this.name = name;
this.owner = owner;
this.region = region;
this.attributes = attributes;
this.isRef = isRef;
this.isOut = isOut;
@ -97,10 +95,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -97,10 +95,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
get { return name; }
}
public DomRegion Region {
get { return region; }
}
public IType Type {
get { return type; }
}
@ -143,7 +137,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -143,7 +137,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
public ISymbolReference ToReference()
{
if (owner == null)
return new ParameterReference(type.ToTypeReference(), name, region, isRef, isOut, isParams, isOptional, defaultValue);
return new ParameterReference(type.ToTypeReference(), name, isRef, isOut, isParams, isOptional, defaultValue);
return new OwnedParameterReference(owner.ToReference(), owner.Parameters.IndexOf(this));
}
}
@ -175,11 +169,10 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -175,11 +169,10 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
{
readonly ITypeReference type;
readonly string name;
readonly DomRegion region;
readonly bool isRef, isOut, isParams, isOptional;
readonly object defaultValue;
public ParameterReference(ITypeReference type, string name, DomRegion region, bool isRef, bool isOut, bool isParams, bool isOptional, object defaultValue)
public ParameterReference(ITypeReference type, string name, bool isRef, bool isOut, bool isParams, bool isOptional, object defaultValue)
{
if (type == null)
throw new ArgumentNullException("type");
@ -187,7 +180,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -187,7 +180,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
throw new ArgumentNullException("name");
this.type = type;
this.name = name;
this.region = region;
this.isRef = isRef;
this.isOut = isOut;
this.isParams = isParams;
@ -197,7 +189,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -197,7 +189,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
public ISymbol Resolve(ITypeResolveContext context)
{
return new DefaultParameter(type.Resolve(context), name, region: region, isRef: isRef, isOut: isOut, isParams: isParams, isOptional: isOptional, defaultValue: defaultValue);
return new DefaultParameter(type.Resolve(context), name, isRef: isRef, isOut: isOut, isParams: isParams, isOptional: isOptional, defaultValue: defaultValue);
}
}
}

3
ICSharpCode.Decompiler/TypeSystem/Implementation/DefaultResolvedMethod.cs

@ -174,8 +174,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -174,8 +174,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
public IReadOnlyList<IType> TypeArguments {
get {
// ToList() call is necessary because IList<> isn't covariant
return TypeParameters.ToList<IType>();
return TypeParameters;
}
}

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

@ -78,7 +78,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -78,7 +78,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
else
typeParameters[i] = unresolvedTP.CreateResolvedTypeParameter(contextForTypeParameters);
}
result = Array.AsReadOnly(typeParameters);
result = typeParameters;
}
return LazyInit.GetOrSet(ref this.typeParameters, result);
}
@ -550,14 +550,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -550,14 +550,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
get { return parts[0].FullTypeName; }
}
public DomRegion Region {
get { return parts[0].Region; }
}
public DomRegion BodyRegion {
get { return parts[0].BodyRegion; }
}
public ITypeDefinition DeclaringTypeDefinition {
get { return parentContext.CurrentTypeDefinition; }
}

6
ICSharpCode.Decompiler/TypeSystem/Implementation/DefaultResolvedTypeParameter.cs

@ -33,10 +33,9 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -33,10 +33,9 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
int index, string name = null,
VarianceModifier variance = VarianceModifier.Invariant,
IReadOnlyList<IAttribute> attributes = null,
DomRegion region = default(DomRegion),
bool hasValueTypeConstraint = false, bool hasReferenceTypeConstraint = false, bool hasDefaultConstructorConstraint = false,
IReadOnlyList<IType> constraints = null)
: base(owner, index, name, variance, attributes, region)
: base(owner, index, name, variance, attributes)
{
this.hasValueTypeConstraint = hasValueTypeConstraint;
this.hasReferenceTypeConstraint = hasReferenceTypeConstraint;
@ -49,10 +48,9 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -49,10 +48,9 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
int index, string name = null,
VarianceModifier variance = VarianceModifier.Invariant,
IReadOnlyList<IAttribute> attributes = null,
DomRegion region = default(DomRegion),
bool hasValueTypeConstraint = false, bool hasReferenceTypeConstraint = false, bool hasDefaultConstructorConstraint = false,
IReadOnlyList<IType> constraints = null)
: base(compilation, ownerType, index, name, variance, attributes, region)
: base(compilation, ownerType, index, name, variance, attributes)
{
this.hasValueTypeConstraint = hasValueTypeConstraint;
this.hasReferenceTypeConstraint = hasReferenceTypeConstraint;

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

@ -427,7 +427,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -427,7 +427,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
readonly DefaultResolvedAssembly assembly;
readonly UnresolvedNamespace ns;
readonly INamespace parentNamespace;
readonly IList<NS> childNamespaces;
readonly IReadOnlyList<NS> childNamespaces;
IEnumerable<ITypeDefinition> types;
public NS(DefaultResolvedAssembly assembly, UnresolvedNamespace ns, INamespace parentNamespace)

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

@ -192,10 +192,10 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -192,10 +192,10 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
readonly DefaultUnresolvedAttribute unresolved;
readonly ITypeResolveContext context;
readonly IType attributeType;
readonly IList<ResolveResult> positionalArguments;
readonly IReadOnlyList<ResolveResult> positionalArguments;
// cannot use ProjectedList because KeyValuePair is value type
IList<KeyValuePair<IMember, ResolveResult>> namedArguments;
IReadOnlyList<KeyValuePair<IMember, ResolveResult>> namedArguments;
IMethod constructor;
volatile bool constructorResolved;
@ -244,25 +244,25 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -244,25 +244,25 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
return null;
}
public IList<ResolveResult> PositionalArguments {
public IReadOnlyList<ResolveResult> PositionalArguments {
get { return positionalArguments; }
}
public IList<KeyValuePair<IMember, ResolveResult>> NamedArguments {
public IReadOnlyList<KeyValuePair<IMember, ResolveResult>> NamedArguments {
get {
var namedArgs = LazyInit.VolatileRead(ref this.namedArguments);
if (namedArgs != null) {
return namedArgs;
} else {
namedArgs = new List<KeyValuePair<IMember, ResolveResult>>();
var newNamedArgs = new List<KeyValuePair<IMember, ResolveResult>>();
foreach (var pair in unresolved.NamedArguments) {
IMember member = pair.Key.Resolve(context);
if (member != null) {
ResolveResult val = pair.Value.Resolve(context);
namedArgs.Add(new KeyValuePair<IMember, ResolveResult>(member, val));
newNamedArgs.Add(new KeyValuePair<IMember, ResolveResult>(member, val));
}
}
return LazyInit.GetOrSet(ref this.namedArguments, namedArgs);
return LazyInit.GetOrSet(ref this.namedArguments, newNamedArgs);
}
}
}

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

@ -46,8 +46,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -46,8 +46,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
this.SymbolKind = SymbolKind.Event;
this.DeclaringTypeDefinition = declaringType;
this.Name = name;
if (declaringType != null)
this.UnresolvedFile = declaringType.UnresolvedFile;
}
public bool CanAdd {

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

@ -44,8 +44,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -44,8 +44,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
this.SymbolKind = SymbolKind.Field;
this.DeclaringTypeDefinition = declaringType;
this.Name = name;
if (declaringType != null)
this.UnresolvedFile = declaringType.UnresolvedFile;
}
public bool IsConst {

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

@ -74,8 +74,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -74,8 +74,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
this.SymbolKind = SymbolKind.Method;
this.DeclaringTypeDefinition = declaringType;
this.Name = name;
if (declaringType != null)
this.UnresolvedFile = declaringType.UnresolvedFile;
}
public IList<IUnresolvedAttribute> ReturnTypeAttributes {
@ -220,15 +218,11 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -220,15 +218,11 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
{
if (typeDefinition == null)
throw new ArgumentNullException("typeDefinition");
DomRegion region = typeDefinition.Region;
region = new DomRegion(region.FileName, region.BeginLine, region.BeginColumn); // remove endline/endcolumn
return new DefaultUnresolvedMethod(typeDefinition, ".ctor") {
SymbolKind = SymbolKind.Constructor,
Accessibility = typeDefinition.IsAbstract ? Accessibility.Protected : Accessibility.Public,
IsSynthetic = true,
HasBody = true,
Region = region,
BodyRegion = region,
ReturnType = KnownTypeReference.Void
};
}

17
ICSharpCode.Decompiler/TypeSystem/Implementation/DefaultUnresolvedParameter.cs

@ -35,7 +35,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -35,7 +35,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
ITypeReference type = SpecialType.UnknownType;
IList<IUnresolvedAttribute> attributes;
IConstantValue defaultValue;
DomRegion region;
byte flags;
public DefaultUnresolvedParameter()
@ -94,14 +93,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -94,14 +93,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
}
}
public DomRegion Region {
get { return region; }
set {
FreezableHelper.ThrowIfFrozen(this);
region = value;
}
}
bool HasFlag(byte flag)
{
return (this.flags & flag) != 0;
@ -169,7 +160,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -169,7 +160,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
// compare everything except for the IsFrozen flag
DefaultUnresolvedParameter p = other as DefaultUnresolvedParameter;
return p != null && type == p.type && name == p.name &&
defaultValue == p.defaultValue && region == p.region && (flags & ~1) == (p.flags & ~1) && ListEquals(attributes, p.attributes);
defaultValue == p.defaultValue && (flags & ~1) == (p.flags & ~1) && ListEquals(attributes, p.attributes);
}
static bool ListEquals(IList<IUnresolvedAttribute> list1, IList<IUnresolvedAttribute> list2)
@ -208,7 +199,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -208,7 +199,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
return new ResolvedParameterWithDefaultValue(defaultValue, context) {
Type = type.Resolve(context),
Name = name,
Region = region,
Attributes = attributes.CreateResolvedAttributes(context),
IsRef = this.IsRef,
IsOut = this.IsOut,
@ -218,7 +208,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -218,7 +208,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
var owner = context.CurrentMember as IParameterizedMember;
var resolvedAttributes = attributes.CreateResolvedAttributes (context);
bool isOptional = resolvedAttributes != null && resolvedAttributes.Any (a => IsOptionalAttribute (a.AttributeType));
return new DefaultParameter (type.Resolve (context), name, owner, region,
return new DefaultParameter (type.Resolve (context), name, owner,
resolvedAttributes, IsRef, IsOut, IsParams, isOptional);
}
}
@ -238,7 +228,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -238,7 +228,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
public IParameterizedMember Owner { get { return context.CurrentMember as IParameterizedMember; } }
public IType Type { get; internal set; }
public string Name { get; internal set; }
public DomRegion Region { get; internal set; }
public IReadOnlyList<IAttribute> Attributes { get; internal set; }
public bool IsRef { get; internal set; }
public bool IsOut { get; internal set; }
@ -267,7 +256,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -267,7 +256,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
public ISymbolReference ToReference()
{
if (Owner == null)
return new ParameterReference(Type.ToTypeReference(), Name, Region, IsRef, IsOut, IsParams, true, ConstantValue);
return new ParameterReference(Type.ToTypeReference(), Name, IsRef, IsOut, IsParams, true, ConstantValue);
return new OwnedParameterReference(Owner.ToReference(), Owner.Parameters.IndexOf(this));
}
}

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

@ -63,8 +63,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -63,8 +63,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
this.SymbolKind = SymbolKind.Property;
this.DeclaringTypeDefinition = declaringType;
this.Name = name;
if (declaringType != null)
this.UnresolvedFile = declaringType.UnresolvedFile;
}
public bool IsIndexer {

1
ICSharpCode.Decompiler/TypeSystem/Implementation/DefaultUnresolvedTypeDefinition.cs

@ -71,7 +71,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -71,7 +71,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
this.DeclaringTypeDefinition = declaringTypeDefinition;
this.namespaceName = declaringTypeDefinition.Namespace;
this.Name = name;
this.UnresolvedFile = declaringTypeDefinition.UnresolvedFile;
}
protected override void FreezeInternal()

11
ICSharpCode.Decompiler/TypeSystem/Implementation/DefaultUnresolvedTypeParameter.cs

@ -33,7 +33,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -33,7 +33,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
IList<IUnresolvedAttribute> attributes;
IList<ITypeReference> constraints;
string name;
DomRegion region;
SymbolKind ownerType;
VarianceModifier variance;
@ -125,14 +124,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -125,14 +124,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
}
}
public DomRegion Region {
get { return region; }
set {
FreezableHelper.ThrowIfFrozen(this);
region = value;
}
}
public bool HasDefaultConstructorConstraint {
get { return flags[FlagDefaultConstructorConstraint]; }
set {
@ -185,7 +176,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -185,7 +176,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
throw new InvalidOperationException("Could not determine the type parameter's owner.");
return new DefaultTypeParameter(
owner, index, name, variance,
this.Attributes.CreateResolvedAttributes(context), this.Region,
this.Attributes.CreateResolvedAttributes(context),
this.HasValueTypeConstraint, this.HasReferenceTypeConstraint, this.HasDefaultConstructorConstraint, this.Constraints.Resolve(context)
);
}

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

@ -26,7 +26,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -26,7 +26,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
public sealed class DefaultVariable : IVariable
{
readonly string name;
readonly DomRegion region;
readonly IType type;
readonly object constantValue;
readonly bool isConst;
@ -41,11 +40,10 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -41,11 +40,10 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
this.name = name;
}
public DefaultVariable(IType type, string name, DomRegion region = default(DomRegion),
public DefaultVariable(IType type, string name,
bool isConst = false, object constantValue = null)
: this(type, name)
{
this.region = region;
this.isConst = isConst;
this.constantValue = constantValue;
}
@ -54,10 +52,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -54,10 +52,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
get { return name; }
}
public DomRegion Region {
get { return region; }
}
public IType Type {
get { return type; }
}
@ -76,7 +70,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -76,7 +70,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
public ISymbolReference ToReference()
{
return new VariableReference(type.ToTypeReference(), name, region, isConst, constantValue);
return new VariableReference(type.ToTypeReference(), name, isConst, constantValue);
}
}
@ -84,11 +78,10 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -84,11 +78,10 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
{
ITypeReference variableTypeReference;
string name;
DomRegion region;
bool isConst;
object constantValue;
public VariableReference(ITypeReference variableTypeReference, string name, DomRegion region, bool isConst, object constantValue)
public VariableReference(ITypeReference variableTypeReference, string name, bool isConst, object constantValue)
{
if (variableTypeReference == null)
throw new ArgumentNullException("variableTypeReference");
@ -96,14 +89,13 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -96,14 +89,13 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
throw new ArgumentNullException("name");
this.variableTypeReference = variableTypeReference;
this.name = name;
this.region = region;
this.isConst = isConst;
this.constantValue = constantValue;
}
public ISymbol Resolve(ITypeResolveContext context)
{
return new DefaultVariable(variableTypeReference.Resolve(context), name, region, isConst, constantValue);
return new DefaultVariable(variableTypeReference.Resolve(context), name, isConst, constantValue);
}
}
}

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

@ -181,10 +181,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -181,10 +181,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
get { return VarianceModifier.Invariant; }
}
DomRegion ITypeParameter.Region {
get { return DomRegion.Empty; }
}
IEntity ITypeParameter.Owner {
get { return null; }
}

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

@ -42,9 +42,9 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -42,9 +42,9 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
IMethod constructor;
volatile bool constructorResolved;
IList<ResolveResult> positionalArguments;
IList<KeyValuePair<IMember, ResolveResult>> namedArguments;
IReadOnlyList<ResolveResult> positionalArguments;
IReadOnlyList<KeyValuePair<IMember, ResolveResult>> namedArguments;
public CecilResolvedAttribute(ITypeResolveContext context, UnresolvedAttributeBlob unresolved)
{
@ -61,10 +61,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -61,10 +61,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
this.ctorParameterTypes = EmptyList<ITypeReference>.Instance;
}
DomRegion IAttribute.Region {
get { return DomRegion.Empty; }
}
public IType AttributeType {
get { return attributeType; }
}
@ -96,7 +92,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -96,7 +92,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
return null;
}
public IList<ResolveResult> PositionalArguments {
public IReadOnlyList<ResolveResult> PositionalArguments {
get {
var result = LazyInit.VolatileRead(ref this.positionalArguments);
if (result != null) {
@ -107,7 +103,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -107,7 +103,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
}
}
public IList<KeyValuePair<IMember, ResolveResult>> NamedArguments {
public IReadOnlyList<KeyValuePair<IMember, ResolveResult>> NamedArguments {
get {
var result = LazyInit.VolatileRead(ref this.namedArguments);
if (result != null) {

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

@ -170,14 +170,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -170,14 +170,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
get { return baseMember.SymbolKind; }
}
public DomRegion Region {
get { return baseMember.Region; }
}
public DomRegion BodyRegion {
get { return baseMember.BodyRegion; }
}
public ITypeDefinition DeclaringTypeDefinition {
get { return baseMember.DeclaringTypeDefinition; }
}
@ -342,11 +334,11 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -342,11 +334,11 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
}
}
protected IReadOnlyList<IParameter> CreateParameters(TypeVisitor substitution)
protected IParameter[] CreateParameters(TypeVisitor substitution)
{
var paramDefs = ((IParameterizedMember)this.baseMember).Parameters;
if (paramDefs.Count == 0) {
return EmptyList<IParameter>.Instance;
return Empty<IParameter>.Array;
} else {
var parameters = new IParameter[paramDefs.Count];
for (int i = 0; i < parameters.Length; i++) {
@ -354,11 +346,11 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -354,11 +346,11 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
IType newType = p.Type.AcceptVisitor(substitution);
parameters[i] = new DefaultParameter(
newType, p.Name, this,
p.Region, p.Attributes, p.IsRef, p.IsOut,
p.Attributes, p.IsRef, p.IsOut,
p.IsParams, p.IsOptional, p.ConstantValue
);
}
return Array.AsReadOnly(parameters);
return parameters;
}
}

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

@ -234,7 +234,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -234,7 +234,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
internal TypeVisitor substitution;
public SpecializedTypeParameter(ITypeParameter baseTp, IMethod specializedOwner)
: base(specializedOwner, baseTp.Index, baseTp.Name, baseTp.Variance, baseTp.Attributes, baseTp.Region)
: base(specializedOwner, baseTp.Index, baseTp.Name, baseTp.Variance, baseTp.Attributes)
{
// We don't have to consider already-specialized baseTps because
// we read the baseTp directly from the unpacked memberDefinition.

6
ICSharpCode.Decompiler/TypeSystem/TypeSystemExtensions.cs

@ -224,7 +224,7 @@ namespace ICSharpCode.Decompiler.TypeSystem @@ -224,7 +224,7 @@ namespace ICSharpCode.Decompiler.TypeSystem
IVariable v = (IVariable)symbol;
return new DefaultVariable(
Import(compilation, v.Type),
v.Name, v.Region, v.IsConst, v.ConstantValue
v.Name, v.IsConst, v.ConstantValue
);
case SymbolKind.Parameter:
IParameter p = (IParameter)symbol;
@ -237,7 +237,7 @@ namespace ICSharpCode.Decompiler.TypeSystem @@ -237,7 +237,7 @@ namespace ICSharpCode.Decompiler.TypeSystem
} else {
return new DefaultParameter(
Import(compilation, p.Type),
p.Name, null, p.Region,
p.Name, null,
null, p.IsRef, p.IsOut, p.IsParams
);
}
@ -498,7 +498,7 @@ namespace ICSharpCode.Decompiler.TypeSystem @@ -498,7 +498,7 @@ namespace ICSharpCode.Decompiler.TypeSystem
// There is intentionally no Resolve() overload for IList<IMemberReference>: the resulting IList<Member> would
// contains nulls when there are resolve errors.
public static IList<ResolveResult> Resolve(this IList<IConstantValue> constantValues, ITypeResolveContext context)
public static IReadOnlyList<ResolveResult> Resolve(this IList<IConstantValue> constantValues, ITypeResolveContext context)
{
if (constantValues == null)
throw new ArgumentNullException("constantValues");

8
ICSharpCode.Decompiler/TypeSystem/VarArgInstanceMethod.cs

@ -229,14 +229,6 @@ namespace ICSharpCode.Decompiler.TypeSystem @@ -229,14 +229,6 @@ namespace ICSharpCode.Decompiler.TypeSystem
#region IEntity implementation
public DomRegion Region {
get { return baseMethod.Region; }
}
public DomRegion BodyRegion {
get { return baseMethod.BodyRegion; }
}
public ITypeDefinition DeclaringTypeDefinition {
get { return baseMethod.DeclaringTypeDefinition; }
}

130
ICSharpCode.Decompiler/Util/ProjectedList.cs

@ -21,7 +21,7 @@ using System.Collections.Generic; @@ -21,7 +21,7 @@ using System.Collections.Generic;
namespace ICSharpCode.Decompiler.Util
{
public sealed class ProjectedList<TInput, TOutput> : IList<TOutput>, IReadOnlyList<TOutput> where TOutput : class
public sealed class ProjectedList<TInput, TOutput> : IReadOnlyList<TOutput> where TOutput : class
{
readonly IList<TInput> input;
readonly Func<TInput, TOutput> projection;
@ -48,73 +48,10 @@ namespace ICSharpCode.Decompiler.Util @@ -48,73 +48,10 @@ namespace ICSharpCode.Decompiler.Util
}
}
TOutput IList<TOutput>.this[int index] {
get { return this[index]; }
set {
throw new NotSupportedException();
}
}
public int Count {
get { return items.Length; }
}
bool ICollection<TOutput>.IsReadOnly {
get { return true; }
}
int IList<TOutput>.IndexOf(TOutput item)
{
var comparer = EqualityComparer<TOutput>.Default;
for (int i = 0; i < this.Count; i++) {
if (comparer.Equals(this[i], item))
return i;
}
return -1;
}
void IList<TOutput>.Insert(int index, TOutput item)
{
throw new NotSupportedException();
}
void IList<TOutput>.RemoveAt(int index)
{
throw new NotSupportedException();
}
void ICollection<TOutput>.Add(TOutput item)
{
throw new NotSupportedException();
}
void ICollection<TOutput>.Clear()
{
throw new NotSupportedException();
}
bool ICollection<TOutput>.Contains(TOutput item)
{
var comparer = EqualityComparer<TOutput>.Default;
for (int i = 0; i < this.Count; i++) {
if (comparer.Equals(this[i], item))
return true;
}
return false;
}
void ICollection<TOutput>.CopyTo(TOutput[] array, int arrayIndex)
{
for (int i = 0; i < items.Length; i++) {
array[arrayIndex + i] = this[i];
}
}
bool ICollection<TOutput>.Remove(TOutput item)
{
throw new NotSupportedException();
}
public IEnumerator<TOutput> GetEnumerator()
{
for (int i = 0; i < this.Count; i++) {
@ -128,7 +65,7 @@ namespace ICSharpCode.Decompiler.Util @@ -128,7 +65,7 @@ namespace ICSharpCode.Decompiler.Util
}
}
public sealed class ProjectedList<TContext, TInput, TOutput> : IList<TOutput>, IReadOnlyList<TOutput> where TOutput : class
public sealed class ProjectedList<TContext, TInput, TOutput> : IReadOnlyList<TOutput> where TOutput : class
{
readonly IList<TInput> input;
readonly TContext context;
@ -157,73 +94,10 @@ namespace ICSharpCode.Decompiler.Util @@ -157,73 +94,10 @@ namespace ICSharpCode.Decompiler.Util
}
}
TOutput IList<TOutput>.this[int index] {
get { return this[index]; }
set {
throw new NotSupportedException();
}
}
public int Count {
get { return items.Length; }
}
bool ICollection<TOutput>.IsReadOnly {
get { return true; }
}
int IList<TOutput>.IndexOf(TOutput item)
{
var comparer = EqualityComparer<TOutput>.Default;
for (int i = 0; i < this.Count; i++) {
if (comparer.Equals(this[i], item))
return i;
}
return -1;
}
void IList<TOutput>.Insert(int index, TOutput item)
{
throw new NotSupportedException();
}
void IList<TOutput>.RemoveAt(int index)
{
throw new NotSupportedException();
}
void ICollection<TOutput>.Add(TOutput item)
{
throw new NotSupportedException();
}
void ICollection<TOutput>.Clear()
{
throw new NotSupportedException();
}
bool ICollection<TOutput>.Contains(TOutput item)
{
var comparer = EqualityComparer<TOutput>.Default;
for (int i = 0; i < this.Count; i++) {
if (comparer.Equals(this[i], item))
return true;
}
return false;
}
void ICollection<TOutput>.CopyTo(TOutput[] array, int arrayIndex)
{
for (int i = 0; i < items.Length; i++) {
array[arrayIndex + i] = this[i];
}
}
bool ICollection<TOutput>.Remove(TOutput item)
{
throw new NotSupportedException();
}
public IEnumerator<TOutput> GetEnumerator()
{
for (int i = 0; i < this.Count; i++) {

Loading…
Cancel
Save