Siegfried Pammer
82edef3bc6
Add scaffolding for the C# 15 runtime-async lowering.
...
Detect MethodImplOptions.Async (0x2000) in ILReader and unpack Task/Task<T>
return types so the IL Leave value and function.AsyncReturnType match the
source signature. Add CSharp15_0 (Preview also bumped to 1500) and a
RuntimeAsync setting (default on, gated to >=CSharp15_0), expose it in the
Languages dropdown, mask the synthetic MethodImplAsync bit out of the
decompiled [MethodImpl], and add a .runtimeasync test suffix.
2026-05-20 22:30:41 +02:00
Siegfried Pammer
98d764a169
Add a treenode and decompiler APIs for extensions.
2026-03-16 22:41:21 +01:00
Siegfried Pammer
396b58031b
Add support for C# 14 first-class span types in the type system.
2025-11-21 21:39:09 +01:00
Peter Crabtree
e1e16b64f5
dev: Strip BOM mark from text files
2025-08-28 20:56:19 -04:00
ds5678
586c04d081
Support params keyword on non-array collections
2025-07-04 19:08:07 +02:00
Siegfried Pammer
ac0ef8a113
Fix #3253 : Remove duplicate assembly references keeping the ones with the highest version.
2024-10-19 12:08:29 +02:00
Siegfried Pammer
02d2a8c1f8
Add metadata processing for C# 12 'ref readonly' parameters
2024-07-19 18:40:08 +02:00
Siegfried Pammer
4bf9487ecd
Remove IsRef, IsOut and IsIn flags from IParameter and Replace ParameterModifiers with ReferenceKind.
2024-07-19 18:40:07 +02:00
Siegfried Pammer
ca78d4a14d
Use MetadataFile instead of PEFile in TypeSystem.
2024-03-24 15:35:13 +01:00
Daniel Grunwald
3dc2f3d5b6
Rename lifetime annotation to ScopedRef
2023-05-30 11:32:25 +02:00
Daniel Grunwald
9359d47c0b
Add support for ScopedRefAttribute
2023-05-29 18:59:49 +02:00
Daniel Grunwald
efeaf1356f
Add feature: C#11 nint without NativeIntegerAttribute
...
Because it is no longer possible to distinguish IntPtr from nint, this required a lot of testcase adjustment.
2023-05-29 14:07:06 +02:00
Siegfried Pammer
2ed9ad6b51
Add support for C# 11 scoped parameter modifier.
2022-07-16 16:20:18 +02:00
Siegfried Pammer
50cfcc214c
DecompilerTypeSystem: Add support for implicit references
2022-03-07 09:19:25 +01:00
Siegfried Pammer
1e4d8b6f44
Add DecompilerTypeSystem.CreateAsync to allow asynchronous initialization.
2021-10-26 18:04:41 +02:00
Daniel Grunwald
d70bfe80d5
Add ResolveAsync() method to IAssemblyResolver interface.
...
DecompilerTypeSystem uses this to resolve/load multiple assemblies in parallel.
Unfortunately this doesn't gain us any performance yet in ILSpy because there we have a global assembly-loader-lock :(
2021-02-13 20:17:12 +01:00
Siegfried Pammer
f0012cbc1a
#2198 : Make ILSpy more resilient in case of obfuscated assemblies.
2020-10-25 12:55:33 +01: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
b788441c78
DecompilerTypeSystem: If some known types are present in referenced assemblies but others are missing; add the missing known types to the compilation.
...
This ensures that FindType(KnownTypeCode).GetDefinition() always returns a usable definition.
2020-08-06 23:18:12 +02:00
Daniel Grunwald
c9e41d0582
Add support for decoding NativeIntegerAttribute.
2020-07-12 02:05:34 +02:00
Daniel Grunwald
8f90f3834d
Implement support for C# 8 readonly members.
2019-09-28 19:13:21 +02:00
Daniel Grunwald
2f35374d7d
Support "where T : unmanaged" constraints.
2019-02-24 01:24:33 +01:00
Daniel Grunwald
7a058f6262
First attempt at integrating C# nullable reference types into the type system.
2019-02-14 21:00:07 +01:00
Siegfried Pammer
af4dd6e9e3
Fix DecompilerTypeSystem: struct is never null.
2019-01-26 09:36:34 +01:00
Siegfried Pammer
7ef7f1870e
Refactor TS representation of ref / readonly structs. Add support for in parameters.
2018-07-29 23:50:59 +02:00
Daniel Grunwald
79352d18d7
#1195 : Remove modopts/modreqs from the type system; they confuse the decompiler.
2018-07-29 00:17:01 +02:00
Andrey Shchekin
d15fe0f254
Fixed bug with decimal optional parameters not being resolved correctly.
...
Added option to uglify presentation of decimal constants (show `[DecimalConstant(...)]`).
2018-07-26 00:43:33 +12:00
Daniel Grunwald
ab157b2fc0
Add TypeSystemOptions.Uncached.
2018-07-14 18:48:58 +02:00
Daniel Grunwald
b396d203bd
Merge IDecompilerTypeSystem with ICompilation.
2018-07-14 16:50:36 +02:00
Daniel Grunwald
1f3916d554
Use the resolve methods in MetadataModule, and remove the wrappers in DecompilerTypeSystem.
2018-07-14 16:12:03 +02:00
Daniel Grunwald
107fe5eb1c
Eliminate SpecializingDecompilerTypeSystem and use GenericContext instead.
2018-07-14 14:18:54 +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
529a61a117
Fix bug in DecompilerTypeSystem initialization, causing assemblies being added multiple times.
2018-07-12 08:20:26 +02:00
Siegfried Pammer
4540b93e19
Use ArgumentOutOfRangeException or BadImageFormatException in switch-default sections.
2018-07-11 17:18:08 +02:00
Siegfried Pammer
2359b09d9b
DecompilerTypeSystem: Do not load modules that contain no metadata.
2018-07-11 14:25:05 +02:00
Siegfried Pammer
ab977c95a6
Add IAssemblyResolver.ResolveModule
2018-07-11 00:33:19 +02:00
Siegfried Pammer
bcfb3742eb
Clean up PEFile, move Pdb related types to DebugInfo namespace
2018-07-07 18:22:53 +02:00
Siegfried Pammer
e901fd2ad9
Add ApplyAttributeTypeVisitor.ApplyAttributesToType to DecodeMethodSignature and DecodeLocalSignature
2018-06-28 22:42:56 +02:00
Daniel Grunwald
621d90d006
Use MetadataAssembly (the new TS implementation) in DecompilerTypeSystem.
2018-06-28 00:28:09 +02:00
Daniel Grunwald
ee3012281d
Implement MetadataEvent and re-work the representation of attribute arguments.
2018-06-26 23:19:58 +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
5c0190b186
Rename TypeAttributeOptions -> TypeSystemOptions
2018-06-23 22:21:11 +02:00
Daniel Grunwald
96e3b23ab3
Fix crash in ProxyCallReplacer
2018-06-23 20:42:04 +02:00
Daniel Grunwald
802f6e54fd
Refactor DecompilerTypeSystem.ResolveMethod().
2018-06-23 20:17:48 +02:00
Daniel Grunwald
629e586b25
C# 2.0 mode now disables extension methods.
2018-06-19 22:27:02 +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
Daniel Grunwald
4e654cff38
Merge branch 'master' into srm
2018-06-02 10:58:23 +02:00