Browse Source

Fix remaining compile errors after merge.

pull/1198/head
Siegfried Pammer 8 years ago
parent
commit
bb67948844
  1. 2
      ICSharpCode.Decompiler.Tests/TypeSystem/TypeSystemLoaderTests.cs
  2. 7
      ICSharpCode.Decompiler/CSharp/CSharpDecompiler.cs
  3. 4
      ICSharpCode.Decompiler/CSharp/Transforms/PatternStatementTransform.cs
  4. 2
      ICSharpCode.Decompiler/ICSharpCode.Decompiler.csproj
  5. 12
      ICSharpCode.Decompiler/IL/ILReader.cs
  6. 5
      ICSharpCode.Decompiler/TypeSystem/Implementation/TypeSpecification.cs

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

@ -44,7 +44,7 @@ namespace ICSharpCode.Decompiler.Tests.TypeSystem
static readonly Lazy<IUnresolvedAssembly> testAssembly = new Lazy<IUnresolvedAssembly>( static readonly Lazy<IUnresolvedAssembly> testAssembly = new Lazy<IUnresolvedAssembly>(
delegate { delegate {
return new CecilLoader { IncludeInternalMembers = true }.LoadAssemblyFile(typeof(SimplePublicClass).Assembly.Location); return new MetadataLoader { IncludeInternalMembers = true }.LoadAssemblyFile(typeof(SimplePublicClass).Assembly.Location);
}); });
public static IUnresolvedAssembly Mscorlib { get { return mscorlib.Value; } } public static IUnresolvedAssembly Mscorlib { get { return mscorlib.Value; } }

7
ICSharpCode.Decompiler/CSharp/CSharpDecompiler.cs

@ -245,6 +245,8 @@ namespace ICSharpCode.Decompiler.CSharp
if (settings.AnonymousTypes && type.IsAnonymousType(metadata)) if (settings.AnonymousTypes && type.IsAnonymousType(metadata))
return true; return true;
} }
if (settings.ArrayInitializers && settings.SwitchStatementOnString && name.StartsWith("<PrivateImplementationDetails>", StringComparison.Ordinal))
return true;
return false; return false;
case HandleKind.FieldDefinition: case HandleKind.FieldDefinition:
var fieldHandle = (FieldDefinitionHandle)member; var fieldHandle = (FieldDefinitionHandle)member;
@ -261,8 +263,8 @@ namespace ICSharpCode.Decompiler.CSharp
// event-fields are not [CompilerGenerated] // event-fields are not [CompilerGenerated]
if (settings.AutomaticEvents && metadata.GetTypeDefinition(field.GetDeclaringType()).GetEvents().Any(ev => metadata.GetEventDefinition(ev).Name == field.Name)) if (settings.AutomaticEvents && metadata.GetTypeDefinition(field.GetDeclaringType()).GetEvents().Any(ev => metadata.GetEventDefinition(ev).Name == field.Name))
return true; return true;
// HACK : only hide fields starting with '__StaticArrayInit'
if (settings.ArrayInitializers && metadata.GetString(metadata.GetTypeDefinition(field.GetDeclaringType()).Name).StartsWith("<PrivateImplementationDetails>", StringComparison.Ordinal)) { if (settings.ArrayInitializers && metadata.GetString(metadata.GetTypeDefinition(field.GetDeclaringType()).Name).StartsWith("<PrivateImplementationDetails>", StringComparison.Ordinal)) {
// only hide fields starting with '__StaticArrayInit'
if (name.StartsWith("__StaticArrayInit", StringComparison.Ordinal)) if (name.StartsWith("__StaticArrayInit", StringComparison.Ordinal))
return true; return true;
// hide fields starting with '$$method' // hide fields starting with '$$method'
@ -272,11 +274,8 @@ namespace ICSharpCode.Decompiler.CSharp
return true; return true;
} }
return false; return false;
if (settings.ArrayInitializers && settings.SwitchStatementOnString && type.Name.StartsWith("<PrivateImplementationDetails>", StringComparison.Ordinal))
return true;
} }
return false; return false;
} }

4
ICSharpCode.Decompiler/CSharp/Transforms/PatternStatementTransform.cs

@ -506,7 +506,7 @@ namespace ICSharpCode.Decompiler.CSharp.Transforms
propertyDeclaration.Setter.Body = null; propertyDeclaration.Setter.Body = null;
} }
// Add C# 7.3 attributes on backing field: // Add C# 7.3 attributes on backing field:
var attributes = fieldInfo.Attributes var attributes = field.Attributes
.Where(a => !attributeTypesToRemoveFromAutoProperties.Any(t => t == a.AttributeType.FullName)) .Where(a => !attributeTypesToRemoveFromAutoProperties.Any(t => t == a.AttributeType.FullName))
.Select(context.TypeSystemAstBuilder.ConvertAttribute).ToArray(); .Select(context.TypeSystemAstBuilder.ConvertAttribute).ToArray();
if (attributes.Length > 0) { if (attributes.Length > 0) {
@ -514,7 +514,7 @@ namespace ICSharpCode.Decompiler.CSharp.Transforms
AttributeTarget = "field" AttributeTarget = "field"
}; };
section.Attributes.AddRange(attributes); section.Attributes.AddRange(attributes);
property.Attributes.Add(section); propertyDeclaration.Attributes.Add(section);
} }
// Since the property instance is not changed, we can continue in the visitor as usual, so return null // Since the property instance is not changed, we can continue in the visitor as usual, so return null
return null; return null;

2
ICSharpCode.Decompiler/ICSharpCode.Decompiler.csproj

@ -289,8 +289,6 @@
<Compile Include="Metadata\LightJson\JsonValueType.cs" /> <Compile Include="Metadata\LightJson\JsonValueType.cs" />
<Compile Include="Metadata\LightJson\Serialization\JsonParseException.cs" /> <Compile Include="Metadata\LightJson\Serialization\JsonParseException.cs" />
<Compile Include="Metadata\LightJson\Serialization\JsonReader.cs" /> <Compile Include="Metadata\LightJson\Serialization\JsonReader.cs" />
<Compile Include="Metadata\LightJson\Serialization\JsonSerializationException.cs" />
<Compile Include="Metadata\LightJson\Serialization\JsonWriter.cs" />
<Compile Include="Metadata\LightJson\Serialization\TextPosition.cs" /> <Compile Include="Metadata\LightJson\Serialization\TextPosition.cs" />
<Compile Include="Metadata\LightJson\Serialization\TextScanner.cs" /> <Compile Include="Metadata\LightJson\Serialization\TextScanner.cs" />
<Compile Include="Metadata\OperandType.cs" /> <Compile Include="Metadata\OperandType.cs" />

12
ICSharpCode.Decompiler/IL/ILReader.cs

@ -132,7 +132,7 @@ namespace ICSharpCode.Decompiler.IL
var variableTypes = standaloneSignature.DecodeLocalSignature(TypeSystem.Implementation.TypeReferenceSignatureDecoder.Instance, default); var variableTypes = standaloneSignature.DecodeLocalSignature(TypeSystem.Implementation.TypeReferenceSignatureDecoder.Instance, default);
var localVariables = new ILVariable[variableTypes.Length]; var localVariables = new ILVariable[variableTypes.Length];
foreach (var (index, type) in variableTypes.WithIndex()) { foreach (var (index, type) in variableTypes.WithIndex()) {
localVariables[index] = CreateILVariable(index, type); localVariables[index] = CreateILVariable(index, typeSystem.ResolveFromSignature(type));
} }
return localVariables; return localVariables;
} }
@ -148,19 +148,18 @@ namespace ICSharpCode.Decompiler.IL
int paramIndex = 0; int offset = 0; int paramIndex = 0; int offset = 0;
if (methodSignature.Header.IsInstance) { if (methodSignature.Header.IsInstance) {
offset = 1; offset = 1;
parameterVariables[paramIndex++] = CreateILVariable(-1, method.DeclaringType.ToTypeReference(), "this"); parameterVariables[paramIndex++] = CreateILVariable(-1, method.DeclaringType, "this");
} }
while (paramIndex < parameterVariables.Length) { while (paramIndex < parameterVariables.Length) {
var type = methodSignature.ParameterTypes[paramIndex - offset]; var type = typeSystem.ResolveFromSignature(methodSignature.ParameterTypes[paramIndex - offset]);
parameterVariables[paramIndex] = CreateILVariable(paramIndex - offset, type, method.Parameters[paramIndex - offset].Name); parameterVariables[paramIndex] = CreateILVariable(paramIndex - offset, type, method.Parameters[paramIndex - offset].Name);
paramIndex++; paramIndex++;
} }
Debug.Assert(paramIndex == parameterVariables.Length); Debug.Assert(paramIndex == parameterVariables.Length);
} }
ILVariable CreateILVariable(int index, ITypeReference typeRef) ILVariable CreateILVariable(int index, IType type)
{ {
IType type = typeSystem.ResolveFromSignature(typeRef);
VariableKind kind; VariableKind kind;
if (type is PinnedType pinned) { if (type is PinnedType pinned) {
kind = VariableKind.PinnedLocal; kind = VariableKind.PinnedLocal;
@ -181,9 +180,8 @@ namespace ICSharpCode.Decompiler.IL
return ilVar; return ilVar;
} }
ILVariable CreateILVariable(int index, ITypeReference typeReference, string name) ILVariable CreateILVariable(int index, IType parameterType, string name)
{ {
IType parameterType = typeSystem.ResolveFromSignature(typeReference);
ITypeDefinition def = parameterType.GetDefinition(); ITypeDefinition def = parameterType.GetDefinition();
if (def != null && index < 0 && def.IsReferenceType == false) { if (def != null && index < 0 && def.IsReferenceType == false) {
parameterType = new ByReferenceType(parameterType); parameterType = new ByReferenceType(parameterType);

5
ICSharpCode.Decompiler/TypeSystem/Implementation/TypeSpecification.cs

@ -39,11 +39,6 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
public override TypeKind Kind => TypeKind.Other; public override TypeKind Kind => TypeKind.Other;
public override ITypeReference ToTypeReference()
{
return new PinnedTypeReference(elementType.ToTypeReference());
}
public override IType VisitChildren(TypeVisitor visitor) public override IType VisitChildren(TypeVisitor visitor)
{ {
var newType = elementType.AcceptVisitor(visitor); var newType = elementType.AcceptVisitor(visitor);

Loading…
Cancel
Save