18 Commits
Author SHA1 Message Date
Daniel Grunwald 4fc8f4e66e Fix #2913: ArgumentException when generic class is missing `1 suffix. 2023-05-31 14:38:04 +02:00
Siegfried Pammer b453930c1d #2241: Fix possible NRE in TypeProvider.GetTypeFromReference 2020-12-09 10:47:22 +01:00
Daniel Grunwald 3831b42197 Properly support calli instruction and its interaction with function pointer types. 2020-09-06 18:59:07 +02:00
Daniel Grunwald cabb02b5fd Add support for decoding function pointer types in signatures. 2020-09-06 18:59:06 +02:00
dotnet format 0d9f871a4f #2128: Reformat the whole code base. 2020-08-28 01:05:38 +02:00
Daniel Grunwald 8061634e67 #1203, #2092: New logic for resolving assembly references within the type system.
We now avoid the old `IModuleReference` interface which required allocating for every type being resolved.
Instead `MetadataModule.ResolveModule` now combines decoding+resolving assembly references into a single step.
This allows the type system to maintain a cache indexed by row number.

This also changes the behavior of resolving references within a compilation: We now prefer an exact match (name + version + publickeytoken) first; and fall back to a name-only match only if no exact match exists.
This somewhat improves the decompilation of assemblies created by using ilmerge to combine assemblies with different target frameworks.
2020-08-07 00:03:07 +02:00
Daniel Grunwald 1751c9922c Avoid constructing a GetClassTypeReference instance in TypeProvider.GetTypeFromReference. 2020-08-06 23:33:07 +02:00
Daniel Grunwald dec9c83c4c Fix #1570: Handle ReflectionNameParseException when decoding invalid attribute arguments 2019-07-14 14:31:15 +02:00
Siegfried Pammer 5a692610ff Fix #1523: Search throws EnumUnderlyingTypeResolverException 2019-06-08 17:05:14 +02:00
Daniel Grunwald 3b46776c5e Rename IAssembly -> IModule.
While support for multi-module assemblies isn't fully working yet; it is clear at this point that we want
to treat each module in a multi-module assembly separately for the purposes of the type system.
2018-07-13 22:20:49 +02:00
Siegfried Pammer 29277eb94c Add EnumUnderlyingTypeResolveException to TypeProvider. 2018-07-13 14:41:15 +02:00
Siegfried Pammer 1f9472e10e Refactor GetDeclaringAssembly + Add support for module references. 2018-07-11 00:33:19 +02:00
Daniel Grunwald 621d90d006 Use MetadataAssembly (the new TS implementation) in DecompilerTypeSystem. 2018-06-28 00:28:09 +02:00
Daniel Grunwald 385433aff4 Add MetadataMethod. 2018-06-24 22:55:09 +02:00
Daniel Grunwald 0f8c310de2 Started work on new resolved TS implementation that directly uses SRM.
This is a work-in-progress; ILSpy is not functional with this commit.
The old code path still exists but is broken because some classes were modified for the new system.
The new system is still highly incomplete (types only have fields, but no methods).
2018-06-24 19:47:14 +02:00
Daniel Grunwald 225a3f9f92 Fix typedef names in IL view 2018-06-23 23:05:40 +02:00
Daniel Grunwald 98d00415d1 Fix tuple types. 2018-06-19 21:29:45 +02:00
Daniel Grunwald 9a74f018b5 Decode metadata signatures directly into IType; without going through ITypeReference. 2018-06-17 19:58:32 +02:00