Skip to content

Commit cce3e3b

Browse files
Merge pull request #3556 from icsharpcode/christophwille/dotnet10rc1
Update to .NET 10 RC1
2 parents d1dc7b2 + 7f84d24 commit cce3e3b

File tree

10 files changed

+283
-223
lines changed

10 files changed

+283
-223
lines changed

.github/workflows/build-ilspy.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ jobs:
4545

4646
- name: Install dotnet-format
4747
env:
48-
DOTNET_FORMAT_VERSION: 10.0.100-preview.7.25380.108
48+
DOTNET_FORMAT_VERSION: 10.0.100-rc.1.25451.107
4949
DOTNET_FORMAT_SOURCE: https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet10-transport/nuget/v3/index.json
5050
run: dotnet tool install -g dotnet-format --version "${{env.DOTNET_FORMAT_VERSION}}" --add-source "${{env.DOTNET_FORMAT_SOURCE}}"
5151

BuildTools/pre-commit

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
set -eu
77

8-
DOTNET_FORMAT_VERSION=10.0.100-preview.7.25380.108
8+
DOTNET_FORMAT_VERSION=10.0.100-rc.1.25451.107
99
DOTNET_FORMAT_SOURCE="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet10-transport/nuget/v3/index.json"
1010
DOTNET_PATH="$LOCALAPPDATA/ICSharpCode/ILSpy/dotnet-format-$DOTNET_FORMAT_VERSION"
1111
if [ ! -d "$DOTNET_PATH" ]; then

Directory.Packages.props

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@
66
<ItemGroup>
77
<PackageVersion Include="AvalonEdit" Version="6.3.1.120" />
88
<PackageVersion Include="CliWrap" Version="3.9.0" />
9-
<PackageVersion Include="DataGridExtensions" Version="2.6.0" />
9+
<PackageVersion Include="DataGridExtensions" Version="2.7.0" />
1010
<PackageVersion Include="DiffLib" Version="2025.0.0" />
1111
<PackageVersion Include="Dirkster.AvalonDock.Themes.VS2013" Version="4.72.1" />
12-
<PackageVersion Include="ILCompiler.Reflection.ReadyToRun.Experimental" Version="10.0.0-preview.7.25380.108" />
12+
<PackageVersion Include="ILCompiler.Reflection.ReadyToRun.Experimental" Version="10.0.0-rc.1.25451.107" />
1313
<PackageVersion Include="Iced" Version="1.21.0" />
1414
<PackageVersion Include="K4os.Compression.LZ4" Version="1.3.8" />
1515
<PackageVersion Include="McMaster.Extensions.CommandLineUtils" Version="4.1.1" />
@@ -19,17 +19,17 @@
1919
<PackageVersion Include="Microsoft.DiaSymReader.Converter.Xml" Version="1.1.0-beta2-22171-02" />
2020
<PackageVersion Include="Microsoft.DiaSymReader" Version="1.4.0" />
2121
<PackageVersion Include="Microsoft.DiaSymReader.Native" Version="17.0.0-beta1.21524.1" />
22-
<PackageVersion Include="Microsoft.Extensions.Configuration" Version="10.0.0-preview.7.25380.108" />
23-
<PackageVersion Include="Microsoft.Extensions.Configuration.Json" Version="10.0.0-preview.7.25380.108" />
24-
<PackageVersion Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="10.0.0-preview.7.25380.108" />
25-
<PackageVersion Include="Microsoft.Extensions.Hosting" Version="10.0.0-preview.7.25380.108" />
22+
<PackageVersion Include="Microsoft.Extensions.Configuration" Version="10.0.0-rc.1.25451.107" />
23+
<PackageVersion Include="Microsoft.Extensions.Configuration.Json" Version="10.0.0-rc.1.25451.107" />
24+
<PackageVersion Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="10.0.0-rc.1.25451.107" />
25+
<PackageVersion Include="Microsoft.Extensions.Hosting" Version="10.0.0-rc.1.25451.107" />
2626
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.14.1" />
27-
<PackageVersion Include="Microsoft.NETCore.ILAsm" Version="10.0.0-preview.7.25380.108" />
28-
<PackageVersion Include="Microsoft.NETCore.ILDAsm" Version="10.0.0-preview.7.25380.108" />
29-
<PackageVersion Include="Microsoft.Sbom.Targets" Version="4.1.0" />
27+
<PackageVersion Include="Microsoft.NETCore.ILAsm" Version="10.0.0-rc.1.25451.107" />
28+
<PackageVersion Include="Microsoft.NETCore.ILDAsm" Version="10.0.0-rc.1.25451.107" />
29+
<PackageVersion Include="Microsoft.Sbom.Targets" Version="4.1.2" />
3030
<PackageVersion Include="Microsoft.SourceLink.GitHub" Version="8.0.0" />
31-
<PackageVersion Include="Microsoft.Testing.Extensions.TrxReport" Version="1.8.2" />
32-
<PackageVersion Include="Microsoft.Testing.Extensions.VSTestBridge" Version="1.8.2" />
31+
<PackageVersion Include="Microsoft.Testing.Extensions.TrxReport" Version="1.8.4" />
32+
<PackageVersion Include="Microsoft.Testing.Extensions.VSTestBridge" Version="1.8.4" />
3333
<PackageVersion Include="Microsoft.Xaml.Behaviors.Wpf" Version="1.1.135" />
3434
<PackageVersion Include="Mono.Cecil" Version="0.11.6" />
3535
<PackageVersion Include="NSubstitute" Version="5.3.0" />
@@ -39,13 +39,13 @@
3939
<PackageVersion Include="NuGet.Protocol" Version="6.14.0" />
4040
<PackageVersion Include="PowerShellStandard.Library" Version="5.1.1" />
4141
<PackageVersion Include="Shouldly" Version="4.3.0" />
42-
<PackageVersion Include="System.Composition.AttributedModel" Version="10.0.0-preview.7.25380.108" />
43-
<PackageVersion Include="System.Collections.Immutable" Version="10.0.0-preview.7.25380.108" />
42+
<PackageVersion Include="System.Composition.AttributedModel" Version="10.0.0-rc.1.25451.107" />
43+
<PackageVersion Include="System.Collections.Immutable" Version="10.0.0-rc.1.25451.107" />
4444
<PackageVersion Include="System.Memory" Version="4.6.3" />
45-
<PackageVersion Include="System.Reflection.Metadata" Version="10.0.0-preview.7.25380.108" />
46-
<PackageVersion Include="System.Resources.Extensions" Version="10.0.0-preview.7.25380.108" />
45+
<PackageVersion Include="System.Reflection.Metadata" Version="10.0.0-rc.1.25451.107" />
46+
<PackageVersion Include="System.Resources.Extensions" Version="10.0.0-rc.1.25451.107" />
4747
<PackageVersion Include="System.Runtime.CompilerServices.Unsafe" Version="6.1.2" />
48-
<PackageVersion Include="System.Security.Cryptography.Pkcs" Version="9.0.8" />
48+
<PackageVersion Include="System.Security.Cryptography.Pkcs" Version="9.0.9" />
4949
<PackageVersion Include="TomsToolbox.Composition.MicrosoftExtensions" Version="2.22.2" />
5050
<PackageVersion Include="TomsToolbox.Wpf.Composition" Version="2.22.2" />
5151
<PackageVersion Include="TomsToolbox.Wpf.Composition.AttributedModel" Version="2.22.2" />
@@ -56,6 +56,6 @@
5656
<PackageVersion Include="System.Text.RegularExpressions" Version="4.3.1" />
5757
</ItemGroup>
5858
<ItemGroup>
59-
<GlobalPackageReference Include="TomsToolbox.Composition.Analyzer" Version="2.22.1" />
59+
<GlobalPackageReference Include="TomsToolbox.Composition.Analyzer" Version="2.22.2" />
6060
</ItemGroup>
6161
</Project>

ICSharpCode.BamlDecompiler/packages.lock.json

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,15 @@
44
"net10.0": {
55
"Microsoft.Sbom.Targets": {
66
"type": "Direct",
7-
"requested": "[4.1.0, )",
8-
"resolved": "4.1.0",
9-
"contentHash": "GidfeSVHFtNwZSbD2wmwWiUiGkVdND8QR1z21WpFa+/47Mi3YiDkAzsWF02wXrMx2Xd8j3QSfKOUY1JtnF+7uw=="
7+
"requested": "[4.1.2, )",
8+
"resolved": "4.1.2",
9+
"contentHash": "AmGCBhWtWu1d1PCit6WTdmpq48nPmmnJz9zZFBsxoCjYZjjZ0Gjm+wuAzHzVMF8VmTo/NeDGi2C73969QXiryw=="
1010
},
1111
"TomsToolbox.Composition.Analyzer": {
1212
"type": "Direct",
13-
"requested": "[2.22.1, )",
14-
"resolved": "2.22.1",
15-
"contentHash": "bKcte9zaz+xH1k6C1YIYpheQ9mPNRSmd0dHQIEIq31KxAKMTLfiAo80aROKDJMYJ7ZomlUjjSMo/QCIikMMWTg=="
13+
"requested": "[2.22.2, )",
14+
"resolved": "2.22.2",
15+
"contentHash": "7gYo8ZR2eq3XkrilvUpLbTypeZy6IlD5FB8jah0YPhMOmDGhya4jJ3kfDMTTRt5m258Ou78P69mHMkG6DKZXsg=="
1616
},
1717
"icsharpcode.decompiler": {
1818
"type": "Project",
@@ -23,13 +23,13 @@
2323
},
2424
"System.Collections.Immutable": {
2525
"type": "CentralTransitive",
26-
"requested": "[10.0.0-preview.7.25380.108, )",
26+
"requested": "[10.0.0-rc.1.25451.107, )",
2727
"resolved": "9.0.0",
2828
"contentHash": "QhkXUl2gNrQtvPmtBTQHb0YsUrDiDQ2QS09YbtTTiSjGcf7NBqtYbrG/BE06zcBPCKEwQGzIv13IVdXNOSub2w=="
2929
},
3030
"System.Reflection.Metadata": {
3131
"type": "CentralTransitive",
32-
"requested": "[10.0.0-preview.7.25380.108, )",
32+
"requested": "[10.0.0-rc.1.25451.107, )",
3333
"resolved": "9.0.0",
3434
"contentHash": "ANiqLu3DxW9kol/hMmTWbt3414t9ftdIuiIU7j80okq2YzAueo120M442xk1kDJWtmZTqWQn7wHDvMRipVOEOQ=="
3535
}

ICSharpCode.Decompiler/CSharp/CSharpDecompiler.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1436,7 +1436,7 @@ EntityDeclaration DoDecompile(ITypeDefinition typeDef, DecompileRun decompileRun
14361436
}
14371437
if (settings.RequiredMembers)
14381438
{
1439-
RemoveAttribute(typeDecl, KnownAttribute.RequiredAttribute);
1439+
RemoveAttribute(typeDecl, KnownAttribute.Required);
14401440
}
14411441
if (typeDecl.ClassType == ClassType.Enum)
14421442
{
@@ -2016,7 +2016,7 @@ EntityDeclaration DoDecompile(IField field, DecompileRun decompileRun, ITypeReso
20162016
typeSystemAstBuilder.UseSpecialConstants = !(field.DeclaringType.Equals(field.ReturnType) || isMathPIOrE);
20172017
var fieldDecl = typeSystemAstBuilder.ConvertEntity(field);
20182018
SetNewModifier(fieldDecl);
2019-
if (settings.RequiredMembers && RemoveAttribute(fieldDecl, KnownAttribute.RequiredAttribute))
2019+
if (settings.RequiredMembers && RemoveAttribute(fieldDecl, KnownAttribute.Required))
20202020
{
20212021
fieldDecl.Modifiers |= Modifiers.Required;
20222022
}
@@ -2132,7 +2132,7 @@ EntityDeclaration DoDecompile(IProperty property, DecompileRun decompileRun, ITy
21322132
propertyDecl.Modifiers &= ~(Modifiers.New | Modifiers.Virtual);
21332133
propertyDecl.Modifiers |= Modifiers.Override;
21342134
}
2135-
if (settings.RequiredMembers && RemoveAttribute(propertyDecl, KnownAttribute.RequiredAttribute))
2135+
if (settings.RequiredMembers && RemoveAttribute(propertyDecl, KnownAttribute.Required))
21362136
{
21372137
propertyDecl.Modifiers |= Modifiers.Required;
21382138
}

ICSharpCode.Decompiler/TypeSystem/ExtensionInfo.cs

Lines changed: 58 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
#nullable enable
2020

21+
using System;
2122
using System.Collections.Generic;
2223
using System.Linq;
2324
using System.Reflection.Metadata;
@@ -37,11 +38,21 @@ public ExtensionInfo(MetadataModule module, ITypeDefinition extensionContainer)
3738
var metadata = module.MetadataFile.Metadata;
3839

3940
foreach (var extGroup in extensionContainer.NestedTypes)
41+
{
42+
if (TryEncodingV1(extGroup))
43+
{
44+
continue;
45+
}
46+
47+
TryEncodingV2(extGroup);
48+
}
49+
50+
bool TryEncodingV1(ITypeDefinition extGroup)
4051
{
4152
if (!(extGroup is { Kind: TypeKind.Class, IsSealed: true }
4253
&& extGroup.Name.StartsWith("<>E__", System.StringComparison.Ordinal)))
4354
{
44-
continue;
55+
return false;
4556
}
4657

4758
TypeDefinition td = metadata.GetTypeDefinition((TypeDefinitionHandle)extGroup.MetadataToken);
@@ -69,8 +80,53 @@ public ExtensionInfo(MetadataModule module, ITypeDefinition extensionContainer)
6980
}
7081

7182
if (marker == null || hasMultipleMarkers)
72-
continue;
83+
return false;
84+
85+
CollectImplementationMethods(extGroup, marker, extensionMethods);
86+
return true;
87+
}
88+
89+
bool TryEncodingV2(ITypeDefinition extGroup)
90+
{
91+
if (!(extGroup is { Kind: TypeKind.Class, IsSealed: true }
92+
&& extGroup.Name.StartsWith("<G>$", StringComparison.Ordinal)))
93+
{
94+
return false;
95+
}
96+
97+
var markerType = extGroup.NestedTypes.SingleOrDefault(t => t.Name.StartsWith("<M>$", StringComparison.Ordinal) && t.IsStatic);
98+
var marker = markerType?.Methods.SingleOrDefault(m => m.Name == "<Extension>$" && m.IsStatic && m.Parameters.Count == 1);
99+
100+
if (markerType == null || marker == null)
101+
return false;
102+
103+
TypeDefinition td = metadata.GetTypeDefinition((TypeDefinitionHandle)extGroup.MetadataToken);
104+
List<IMethod> extensionMethods = [];
105+
106+
// For easier access to accessors we use SRM
107+
foreach (var h in td.GetMethods())
108+
{
109+
var method = module.GetDefinition(h);
110+
111+
if (method.SymbolKind is SymbolKind.Constructor)
112+
continue;
113+
114+
var attribute = method.GetAttribute(KnownAttribute.ExtensionMarker);
115+
if (attribute == null)
116+
continue;
117+
118+
if (attribute.FixedArguments[0].Value?.ToString() != markerType.Name)
119+
continue;
120+
121+
extensionMethods.Add(method);
122+
}
123+
124+
CollectImplementationMethods(extGroup, marker, extensionMethods);
125+
return true;
126+
}
73127

128+
void CollectImplementationMethods(ITypeDefinition extGroup, IMethod marker, List<IMethod> extensionMethods)
129+
{
74130
foreach (var extension in extensionMethods)
75131
{
76132
int expectedTypeParameterCount = extension.TypeParameters.Count + extGroup.TypeParameterCount;
@@ -119,7 +175,6 @@ bool IsMatchingImplementation(IMethod impl)
119175
}
120176
}
121177
}
122-
123178
}
124179

125180
public ExtensionMemberInfo? InfoOfExtensionMember(IMethod method)

ICSharpCode.Decompiler/TypeSystem/Implementation/KnownAttributes.cs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,15 +112,18 @@ public enum KnownAttribute
112112
PreserveBaseOverrides,
113113

114114
// C# 11 attributes:
115-
RequiredAttribute,
115+
Required,
116116

117117
// C# 12 attributes:
118118
InlineArray,
119+
120+
// C# 14 attributes:
121+
ExtensionMarker,
119122
}
120123

121124
public static class KnownAttributes
122125
{
123-
internal const int Count = (int)KnownAttribute.InlineArray + 1;
126+
internal const int Count = (int)KnownAttribute.ExtensionMarker + 1;
124127

125128
static readonly TopLevelTypeName[] typeNames = new TopLevelTypeName[Count]{
126129
default,
@@ -193,6 +196,8 @@ public static class KnownAttributes
193196
new TopLevelTypeName("System.Runtime.CompilerServices", "RequiredMemberAttribute"),
194197
// C# 12 attributes:
195198
new TopLevelTypeName("System.Runtime.CompilerServices", "InlineArrayAttribute"),
199+
// C# 14 attributes:
200+
new TopLevelTypeName("System.Runtime.CompilerServices", "ExtensionMarkerAttribute"),
196201
};
197202

198203
public static ref readonly TopLevelTypeName GetTypeName(this KnownAttribute attr)

0 commit comments

Comments
 (0)