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.
2 months ago
Siegfried Pammer
317e33b3b8
Fix five small analyzer warnings.
...
* ExtensionDeclaration.SymbolKind (CA1065) — was throwing
NotImplementedException; return SymbolKind.TypeDefinition to match
TypeDeclaration / DelegateDeclaration, since `extension` declarations
are type-level.
* CustomAttribute.DecodeValue (CA2002) — replace `lock(this)` on the
sealed-but-internal class with a private syncRoot field.
* PlainTextOutput (CA1001) — implement IDisposable; track an
ownsWriter flag so we only dispose the underlying TextWriter when
the parameterless constructor created its own StringWriter.
* DotNetCorePathFinder (CA1060) — move the libc realpath / free
PInvokes into a private nested NativeMethods class.
* ILSpy.ReadyToRun (CA1016) — add [assembly: AssemblyVersion("1.0.0.0")]
in Properties/AssemblyInfo.cs to match the BamlDecompiler plugin.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2 months ago
Siegfried Pammer
98d764a169
Add a treenode and decompiler APIs for extensions.
4 months ago
Siegfried Pammer
77d9ee73e9
Fix IDE2000 globally
6 months ago
ds5678
a04c0e4cab
Improve decompilation of unmanaged function pointers
...
This improves how function pointers are decompiled.
* ExpressionBuilder::VisitLdFtn now properly constructs the calling conventions.
* FunctionPointerType::FromSignature now checks whether a modopt type affects the calling convention.
7 months ago
Siegfried Pammer
396b58031b
Add support for C# 14 first-class span types in the type system.
8 months ago
Siegfried Pammer
1fe8771bc6
Fixed issue described in PR #3596 : Derived record classes do not necessarily declare a ToString override, as the core logic is in PrintMembers.
8 months ago
Siegfried Pammer
17a533647b
Add C# 14 ExtensionMarkerAttribute
10 months ago
Siegfried Pammer
732f285c41
Rename KnownAttributes.RequiredAttribute to KnownAttributes.Required
10 months ago
Peter Crabtree
e1e16b64f5
dev: Strip BOM mark from text files
10 months ago
Siegfried Pammer
3b0939d99c
Add ExtensionInfo: mapping of extension members to extension implementations and more.
11 months ago
Siegfried Pammer
68ae8ae833
Rename ITypeDefinition.HasExtensionMethods to ITypeDefinition.HasExtensions
11 months ago
Siegfried Pammer
7ea2c8f32f
Remove dead code
11 months ago
Daniel Grunwald
ccb8887657
Move AllowByRefLike to SRMExtensions.
11 months ago
Jan Jones
2357d00939
Support `allows ref struct` constraint
12 months ago
ds5678
586c04d081
Support params keyword on non-array collections
1 year ago
Siegfried Pammer
667036c54e
Add support for InlineArrayConversion
1 year ago
Jeremy Pritts
c1ecf1ae9c
Handle explicit optional parameter after default parameter ( #3470 )
...
* Handle explicit optional parameter after default parameter
* Rename and add documentation
* Move extension method
* Add unit test for lamba function
* Apply suggestions from code review
Co-authored-by: Siegfried Pammer <siegfried@pammer.io>
---------
Co-authored-by: Siegfried Pammer <siegfried@pammer.io>
1 year ago
Siegfried Pammer
3c70224441
Fix detection and display of explicitly implemented operators.
1 year ago
Siegfried Pammer
e6004e5f26
Handle ReferenceKind.RefReadOnly in a few more cases
2 years ago
Siegfried Pammer
02d2a8c1f8
Add metadata processing for C# 12 'ref readonly' parameters
2 years ago
Siegfried Pammer
4bf9487ecd
Remove IsRef, IsOut and IsIn flags from IParameter and Replace ParameterModifiers with ReferenceKind.
2 years ago
Siegfried Pammer
ca78d4a14d
Use MetadataFile instead of PEFile in TypeSystem.
2 years ago
Siegfried Pammer
2e777201f3
Fix bug in UnknownType: FullName of nested unknown types did not contain the outer type name(s), but only namespace and nested type name.
2 years ago
Daniel Grunwald
18666d8d5d
Fix additionalReturnTypeAttributes not being applied.
3 years ago
Daniel Grunwald
a14cc0234e
Fix #3094 : look for `[NullableAttribute]` both on the property getter and property itself
3 years ago
Siegfried Pammer
591ab6b75d
Implement support for explicit interface implementation of operators and operator uses.
3 years ago
Siegfried Pammer
6172d63ff3
Support virtual modifier on static abstract interface members.
3 years ago
Daniel Grunwald
94ee5ed216
Fix assertion: UnknownType for unresolved reference can still be nullable; only the SpecialType.Unknown cannot.
3 years ago
Daniel Grunwald
9bfec8cf98
Fix #2860
3 years ago
Daniel Grunwald
3dc2f3d5b6
Rename lifetime annotation to `ScopedRef`
3 years ago
Daniel Grunwald
9359d47c0b
Add support for ScopedRefAttribute
3 years ago
Daniel Grunwald
475f2b3c28
Fix "ref readonly" fields.
3 years ago
Siegfried Pammer
263360f3f3
Add RemoveCompilerFeatureRequiredAttribute
3 years ago
Siegfried Pammer
5c67844500
Fix #2920 : Implement support for DefaultParameterValueAttribute.
3 years ago
Siegfried Pammer
8b0c7fbe85
Fix #2921 : struct type definition contains duplicate default constructor.
3 years ago
ElektroKill
0b9d546f46
Fix dynamic type index calculation in `ApplyAttributeTypeVisitor`
4 years ago
Daniel Grunwald
f3013010cd
Add support for C# 11 required members.
4 years ago
Siegfried Pammer
c3d0e5ecc2
Fix #1784 : Move RemoveEmbeddedAttributes transform to ICSharpCode.Decompiler and do no longer decompile embedded attributes in WholeProjectDecompiler and PortablePdbWriter.
4 years ago
Siegfried Pammer
6766ad0c59
#2823 : Introduce `IType.GetDefinitionOrUnknown()` to allow better detection of async state-machines involving unknown types.
4 years ago
Standa Lukeš
93eecf93a5
Add more asserts and ToStrings around the FakeProperty.Setter problem
4 years ago
Siegfried Pammer
b85d1ba65a
Fix #2771 : Allow MetadataTypeDefinition.DefaultMemberName to return null if DefaultMemberAttribute is not present.
4 years ago
Siegfried Pammer
b9f2fc4f96
Fix #2781 : Fix missing nullability annotation on base type
4 years ago
Siegfried Pammer
ed02b2eb9e
Add MemberNotNullWhenAttribute to IMethod, IProperty and IEvent. Make sure that it's guaranteed that AccessorOwner is non-null, when IsAccessor is true.
4 years ago
Siegfried Pammer
583f661153
Work on #1204 : Add optimized implementation of HasAttribute and GetAttribute to IEntity.
4 years ago
Siegfried Pammer
2ed9ad6b51
Add support for C# 11 scoped parameter modifier.
4 years ago
Siegfried Pammer
e905160537
Extend definition of ComputeIsRecord to avoid false-positives.
4 years ago
Siegfried Pammer
d248867302
Add support for C# 10 record structs.
4 years ago
Siegfried Pammer
e61f46c474
Add MethodCodeType argument to MethodImplAttribute.
4 years ago
Siegfried Pammer
40ffc1e90e
Remove backing fields of auto properties and events.
...
The previous commit started decompiling backing fields because they are still needed prior to the C# transforms.
4 years ago