Skip to content

Commit

Permalink
Change S.R.M.TypeName to be consumed from System.Reflection.Metadata …
Browse files Browse the repository at this point in the history
…package (dotnet#101666)

Contributes to dotnet#101541

Fixes dotnet#101628
  • Loading branch information
jkotas authored and matouskozak committed Apr 30, 2024
1 parent 84898af commit f6a5bd5
Show file tree
Hide file tree
Showing 14 changed files with 118 additions and 143 deletions.
36 changes: 18 additions & 18 deletions eng/Version.Details.xml
Expand Up @@ -282,43 +282,43 @@
<Uri>https://github.com/dotnet/llvm-project</Uri>
<Sha>26f8c30340764cfa7fa9090dc01a36c222bf09c1</Sha>
</Dependency>
<Dependency Name="Microsoft.NETCore.App.Runtime.win-x64" Version="9.0.0-preview.4.24219.3">
<Dependency Name="Microsoft.NETCore.App.Runtime.win-x64" Version="9.0.0-preview.4.24227.6">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>56610095196ac12a397b1acd00835db4d86849b9</Sha>
<Sha>b8fe1d0ccb60926d6e7ef5d42e2398c178c9ee5c</Sha>
</Dependency>
<Dependency Name="runtime.native.System.IO.Ports" Version="9.0.0-preview.4.24219.3">
<Dependency Name="runtime.native.System.IO.Ports" Version="9.0.0-preview.4.24227.6">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>56610095196ac12a397b1acd00835db4d86849b9</Sha>
<Sha>b8fe1d0ccb60926d6e7ef5d42e2398c178c9ee5c</Sha>
</Dependency>
<Dependency Name="Microsoft.NETCore.ILAsm" Version="9.0.0-preview.4.24219.3">
<Dependency Name="Microsoft.NETCore.ILAsm" Version="9.0.0-preview.4.24227.6">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>56610095196ac12a397b1acd00835db4d86849b9</Sha>
<Sha>b8fe1d0ccb60926d6e7ef5d42e2398c178c9ee5c</Sha>
</Dependency>
<Dependency Name="Microsoft.NET.Sdk.IL" Version="9.0.0-preview.4.24219.3">
<Dependency Name="Microsoft.NET.Sdk.IL" Version="9.0.0-preview.4.24227.6">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>56610095196ac12a397b1acd00835db4d86849b9</Sha>
<Sha>b8fe1d0ccb60926d6e7ef5d42e2398c178c9ee5c</Sha>
</Dependency>
<Dependency Name="System.Text.Json" Version="9.0.0-preview.4.24219.3">
<Dependency Name="System.Text.Json" Version="9.0.0-preview.4.24227.6">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>56610095196ac12a397b1acd00835db4d86849b9</Sha>
<Sha>b8fe1d0ccb60926d6e7ef5d42e2398c178c9ee5c</Sha>
</Dependency>
<!-- Intermediate is necessary for source build. -->
<Dependency Name="Microsoft.SourceBuild.Intermediate.runtime.linux-x64" Version="9.0.0-preview.4.24219.3">
<Dependency Name="Microsoft.SourceBuild.Intermediate.runtime.linux-x64" Version="9.0.0-preview.4.24227.6">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>56610095196ac12a397b1acd00835db4d86849b9</Sha>
<Sha>b8fe1d0ccb60926d6e7ef5d42e2398c178c9ee5c</Sha>
<SourceBuild RepoName="runtime" ManagedOnly="false" />
</Dependency>
<Dependency Name="Microsoft.DotNet.ILCompiler" Version="9.0.0-preview.4.24219.3">
<Dependency Name="Microsoft.DotNet.ILCompiler" Version="9.0.0-preview.4.24227.6">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>56610095196ac12a397b1acd00835db4d86849b9</Sha>
<Sha>b8fe1d0ccb60926d6e7ef5d42e2398c178c9ee5c</Sha>
</Dependency>
<Dependency Name="System.Reflection.Metadata" Version="9.0.0-preview.4.24219.3">
<Dependency Name="System.Reflection.Metadata" Version="9.0.0-preview.4.24227.6">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>56610095196ac12a397b1acd00835db4d86849b9</Sha>
<Sha>b8fe1d0ccb60926d6e7ef5d42e2398c178c9ee5c</Sha>
</Dependency>
<Dependency Name="System.Reflection.MetadataLoadContext" Version="9.0.0-preview.4.24219.3">
<Dependency Name="System.Reflection.MetadataLoadContext" Version="9.0.0-preview.4.24227.6">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>56610095196ac12a397b1acd00835db4d86849b9</Sha>
<Sha>b8fe1d0ccb60926d6e7ef5d42e2398c178c9ee5c</Sha>
</Dependency>
<Dependency Name="Microsoft.DotNet.XHarness.TestRunners.Common" Version="9.0.0-prerelease.24224.1">
<Uri>https://github.com/dotnet/xharness</Uri>
Expand Down
14 changes: 7 additions & 7 deletions eng/Versions.props
Expand Up @@ -104,10 +104,10 @@
<!-- NuGet dependencies -->
<NuGetBuildTasksPackVersion>6.0.0-preview.1.102</NuGetBuildTasksPackVersion>
<!-- Installer dependencies -->
<MicrosoftNETCoreAppRuntimewinx64Version>9.0.0-preview.4.24219.3</MicrosoftNETCoreAppRuntimewinx64Version>
<MicrosoftNETCoreAppRuntimewinx64Version>9.0.0-preview.4.24227.6</MicrosoftNETCoreAppRuntimewinx64Version>
<MicrosoftExtensionsDependencyModelVersion>6.0.0</MicrosoftExtensionsDependencyModelVersion>
<!-- ILAsm dependencies -->
<MicrosoftNETCoreILAsmVersion>9.0.0-preview.4.24219.3</MicrosoftNETCoreILAsmVersion>
<MicrosoftNETCoreILAsmVersion>9.0.0-preview.4.24227.6</MicrosoftNETCoreILAsmVersion>
<!-- Libraries dependencies -->
<MicrosoftBclAsyncInterfacesVersion>6.0.0</MicrosoftBclAsyncInterfacesVersion>
<MicrosoftBclHashCodeVersion>1.1.1</MicrosoftBclHashCodeVersion>
Expand All @@ -119,19 +119,19 @@
<SystemDrawingCommonVersion>8.0.0</SystemDrawingCommonVersion>
<SystemIOFileSystemAccessControlVersion>5.0.0</SystemIOFileSystemAccessControlVersion>
<SystemMemoryVersion>4.5.5</SystemMemoryVersion>
<SystemReflectionMetadataVersion>9.0.0-preview.4.24219.3</SystemReflectionMetadataVersion>
<SystemReflectionMetadataLoadContextVersion>9.0.0-preview.4.24219.3</SystemReflectionMetadataLoadContextVersion>
<SystemReflectionMetadataVersion>9.0.0-preview.4.24227.6</SystemReflectionMetadataVersion>
<SystemReflectionMetadataLoadContextVersion>9.0.0-preview.4.24227.6</SystemReflectionMetadataLoadContextVersion>
<SystemSecurityAccessControlVersion>6.0.0</SystemSecurityAccessControlVersion>
<SystemSecurityCryptographyCngVersion>5.0.0</SystemSecurityCryptographyCngVersion>
<SystemSecurityCryptographyOpenSslVersion>5.0.0</SystemSecurityCryptographyOpenSslVersion>
<SystemSecurityPrincipalWindowsVersion>5.0.0</SystemSecurityPrincipalWindowsVersion>
<SystemSecurityPermissionsVersion>7.0.0</SystemSecurityPermissionsVersion>
<SystemTextJsonVersion>9.0.0-preview.4.24219.3</SystemTextJsonVersion>
<SystemTextJsonVersion>9.0.0-preview.4.24227.6</SystemTextJsonVersion>
<SystemRuntimeCompilerServicesUnsafeVersion>6.0.0</SystemRuntimeCompilerServicesUnsafeVersion>
<SystemThreadingAccessControlVersion>7.0.0</SystemThreadingAccessControlVersion>
<SystemThreadingTasksExtensionsVersion>4.5.4</SystemThreadingTasksExtensionsVersion>
<SystemValueTupleVersion>4.5.0</SystemValueTupleVersion>
<runtimenativeSystemIOPortsVersion>9.0.0-preview.4.24219.3</runtimenativeSystemIOPortsVersion>
<runtimenativeSystemIOPortsVersion>9.0.0-preview.4.24227.6</runtimenativeSystemIOPortsVersion>
<!-- Keep toolset versions in sync with dotnet/msbuild and dotnet/sdk -->
<SystemCollectionsImmutableToolsetVersion>8.0.0</SystemCollectionsImmutableToolsetVersion>
<SystemTextJsonToolsetVersion>8.0.0</SystemTextJsonToolsetVersion>
Expand Down Expand Up @@ -210,7 +210,7 @@
<!-- Mono Cecil -->
<MicrosoftDotNetCecilVersion>0.11.4-alpha.24222.1</MicrosoftDotNetCecilVersion>
<!-- ILCompiler -->
<MicrosoftDotNetILCompilerVersion>9.0.0-preview.4.24219.3</MicrosoftDotNetILCompilerVersion>
<MicrosoftDotNetILCompilerVersion>9.0.0-preview.4.24227.6</MicrosoftDotNetILCompilerVersion>
<!-- ICU -->
<MicrosoftNETCoreRuntimeICUTransportVersion>9.0.0-preview.5.24223.2</MicrosoftNETCoreRuntimeICUTransportVersion>
<!-- MsQuic -->
Expand Down
Expand Up @@ -29,14 +29,16 @@ namespace System.Reflection
{
internal partial struct TypeNameParser
{
private static readonly TypeNameParseOptions s_typeNameParseOptions = new() { MaxNodes = int.MaxValue };

private ModuleDesc _module;
private bool _throwIfNotFound;
private Func<ModuleDesc, string, MetadataType> _canonResolver;

public static TypeDesc ResolveType(ModuleDesc module, string name, bool throwIfNotFound,
Func<ModuleDesc, string, MetadataType> canonResolver)
{
if (!TypeName.TryParse(name.AsSpan(), out TypeName parsed))
if (!TypeName.TryParse(name.AsSpan(), out TypeName parsed, s_typeNameParseOptions))
{
ThrowHelper.ThrowTypeLoadException(name, module);
}
Expand Down
24 changes: 0 additions & 24 deletions src/coreclr/tools/ILVerification/ILVerification.projitems
Expand Up @@ -66,30 +66,6 @@
<Compile Include="$(ToolsCommonPath)TypeSystem\Common\Utilities\CustomAttributeTypeNameParser.cs">
<Link>Utilities\CustomAttributeTypeNameParser.cs</Link>
</Compile>
<Compile Include="$(LibrariesProjectRoot)\Common\src\System\HexConverter.cs">
<Link>Utilities\HexConverter.cs</Link>
</Compile>
<Compile Include="$(LibrariesProjectRoot)\Common\src\System\Reflection\AssemblyNameFormatter.cs">
<Link>Utilities\AssemblyNameFormatter.cs</Link>
</Compile>
<Compile Include="$(LibrariesProjectRoot)\Common\src\System\Reflection\AssemblyNameParser.cs">
<Link>Utilities\AssemblyNameParser.cs</Link>
</Compile>
<Compile Include="$(LibrariesProjectRoot)\Common\src\System\Reflection\Metadata\AssemblyNameInfo.cs">
<Link>Utilities\Metadata\AssemblyNameInfo.cs</Link>
</Compile>
<Compile Include="$(LibrariesProjectRoot)\Common\src\System\Reflection\Metadata\TypeName.cs">
<Link>Utilities\TypeName.cs</Link>
</Compile>
<Compile Include="$(LibrariesProjectRoot)\Common\src\System\Reflection\Metadata\TypeNameParserOptions.cs">
<Link>Utilities\TypeNameParserOptions.cs</Link>
</Compile>
<Compile Include="$(LibrariesProjectRoot)\Common\src\System\Reflection\Metadata\TypeNameParser.cs">
<Link>Utilities\TypeNameParser.cs</Link>
</Compile>
<Compile Include="$(LibrariesProjectRoot)\Common\src\System\Reflection\Metadata\TypeNameParserHelpers.cs">
<Link>Utilities\TypeNameParserHelpers.cs</Link>
</Compile>
<Compile Include="$(CoreLibSharedDir)System\Diagnostics\CodeAnalysis\UnconditionalSuppressMessageAttribute.cs" Condition="'$(TargetFrameworkIdentifier)' != '.NETCoreApp'">
<Link>System\Diagnostics\CodeAnalysis\UnconditionalSuppressMessageAttribute.cs</Link>
</Compile>
Expand Down
1 change: 1 addition & 0 deletions src/coreclr/tools/ILVerify/ILVerify.csproj
Expand Up @@ -17,6 +17,7 @@
</ItemGroup>

<ItemGroup>
<PackageReference Include="System.Reflection.Metadata" Version="$(SystemReflectionMetadataVersion)" />
<PackageReference Include="System.CommandLine" Version="$(SystemCommandLineVersion)" />
</ItemGroup>
</Project>
Expand Up @@ -9,6 +9,8 @@ namespace System.Reflection
{
internal partial struct TypeNameParser
{
private static readonly TypeNameParseOptions s_typeNameParseOptions = new() { MaxNodes = int.MaxValue };

private TypeSystemContext _context;
private ModuleDesc _callingModule;
private List<ModuleDesc> _referencedModules;
Expand All @@ -17,7 +19,7 @@ internal partial struct TypeNameParser
public static TypeDesc ResolveType(string name, ModuleDesc callingModule,
TypeSystemContext context, List<ModuleDesc> referencedModules, out bool typeWasNotFoundInAssemblyNorBaseLibrary)
{
if (!TypeName.TryParse(name, out TypeName parsed))
if (!TypeName.TryParse(name, out TypeName parsed, s_typeNameParseOptions))
{
typeWasNotFoundInAssemblyNorBaseLibrary = false;
return null;
Expand Down
Expand Up @@ -198,39 +198,12 @@
<Compile Include="..\..\Common\TypeSystem\Common\Utilities\CustomAttributeTypeNameParser.cs">
<Link>Utilities\CustomAttributeTypeNameParser.cs</Link>
</Compile>
<Compile Include="$(LibrariesProjectRoot)\Common\src\System\HexConverter.cs">
<Link>Utilities\HexConverter.cs</Link>
</Compile>
<Compile Include="$(LibrariesProjectRoot)\Common\src\System\Reflection\AssemblyNameFormatter.cs">
<Link>Utilities\AssemblyNameFormatter.cs</Link>
</Compile>
<Compile Include="$(LibrariesProjectRoot)\Common\src\System\Reflection\AssemblyNameParser.cs">
<Link>Utilities\AssemblyNameParser.cs</Link>
</Compile>
<Compile Include="$(LibrariesProjectRoot)\Common\src\System\Reflection\Metadata\AssemblyNameInfo.cs">
<Link>Utilities\AssemblyNameInfo.cs</Link>
</Compile>
<Compile Include="$(LibrariesProjectRoot)\Common\src\System\Reflection\Metadata\TypeName.cs">
<Link>Utilities\TypeName.cs</Link>
</Compile>
<Compile Include="$(LibrariesProjectRoot)\Common\src\System\Reflection\Metadata\TypeNameParser.cs">
<Link>Utilities\TypeNameParser.cs</Link>
</Compile>
<Compile Include="$(LibrariesProjectRoot)\Common\src\System\Reflection\Metadata\TypeNameParserHelpers.cs">
<Link>Utilities\TypeNameParserHelpers.cs</Link>
</Compile>
<Compile Include="$(LibrariesProjectRoot)\Common\src\System\Reflection\Metadata\TypeNameParserOptions.cs">
<Link>Utilities\TypeNameParserOptions.cs</Link>
</Compile>
<Compile Include="$(LibrariesProjectRoot)\Common\src\System\Reflection\TypeNameParser.Helpers.cs">
<Link>Utilities\CustomAttributeTypeNameParser.Helpers</Link>
</Compile>
<Compile Include="$(LibrariesProjectRoot)\Common\src\System\Text\ValueStringBuilder.cs">
<Link>Utilities\ValueStringBuilder.cs</Link>
</Compile>
<Compile Include="$(LibrariesProjectRoot)\Common\src\System\Text\ValueStringBuilder.AppendSpanFormattable.cs">
<Link>Utilities\ValueStringBuilder.AppendSpanFormattable.cs</Link>
</Compile>
<Compile Include="..\..\Common\TypeSystem\Common\Utilities\GCPointerMap.Algorithm.cs">
<Link>Utilities\GCPointerMap.Algorithm.cs</Link>
</Compile>
Expand Down Expand Up @@ -741,6 +714,10 @@
<AdditionalFiles Include="BannedSymbols.txt" />
</ItemGroup>

<ItemGroup>
<PackageReference Include="System.Reflection.Metadata" Version="$(SystemReflectionMetadataVersion)" />
</ItemGroup>

<ItemGroup>
<PackageReference Include="Microsoft.CodeAnalysis.BannedApiAnalyzers" Version="$(MicrosoftCodeAnalysisBannedApiAnalyzersVersion)" Condition="'$(DotNetBuildSourceOnly)' != 'true'">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
Expand Down
Expand Up @@ -21,10 +21,10 @@ namespace System.Reflection.Metadata
/// It's a more lightweight, immutable version of <seealso cref="AssemblyName"/> that does not pre-allocate <seealso cref="System.Globalization.CultureInfo"/> instances.
/// </remarks>
[DebuggerDisplay("{FullName}")]
#if SYSTEM_PRIVATE_CORELIB
internal
#else
#if SYSTEM_REFLECTION_METADATA
public
#else
internal
#endif
sealed class AssemblyNameInfo
{
Expand Down Expand Up @@ -182,11 +182,7 @@ public AssemblyName ToAssemblyName()
public static AssemblyNameInfo Parse(ReadOnlySpan<char> assemblyName)
=> TryParse(assemblyName, out AssemblyNameInfo? result)
? result!
#if SYSTEM_REFLECTION_METADATA || SYSTEM_PRIVATE_CORELIB
: throw new ArgumentException(SR.InvalidAssemblyName, nameof(assemblyName));
#else // tools that reference this file as a link
: throw new ArgumentException("The given assembly name was invalid.", nameof(assemblyName));
#endif

/// <summary>
/// Tries to parse a span of characters into an assembly name.
Expand Down
Expand Up @@ -16,10 +16,10 @@
namespace System.Reflection.Metadata
{
[DebuggerDisplay("{AssemblyQualifiedName}")]
#if SYSTEM_PRIVATE_CORELIB
internal
#else
#if SYSTEM_REFLECTION_METADATA
public
#else
internal
#endif
sealed class TypeName
{
Expand Down
Expand Up @@ -17,7 +17,8 @@ namespace System.Reflection.Metadata
[DebuggerDisplay("{_inputString}")]
internal ref struct TypeNameParser
{
private static readonly TypeNameParseOptions _defaults = new();
private static readonly TypeNameParseOptions s_defaults = new();

private readonly bool _throwOnError;
private readonly TypeNameParseOptions _parseOptions;
private ReadOnlySpan<char> _inputString;
Expand All @@ -26,7 +27,7 @@ private TypeNameParser(ReadOnlySpan<char> name, bool throwOnError, TypeNameParse
{
_inputString = name;
_throwOnError = throwOnError;
_parseOptions = options ?? _defaults;
_parseOptions = options ?? s_defaults;
}

internal static TypeName? Parse(ReadOnlySpan<char> typeName, bool throwOnError, TypeNameParseOptions? options = default)
Expand All @@ -50,7 +51,7 @@ private TypeNameParser(ReadOnlySpan<char> name, bool throwOnError, TypeNameParse
{
if (throwOnError)
{
if (recursiveDepth >= parser._parseOptions.MaxNodes)
if (parser._parseOptions.IsMaxDepthExceeded(recursiveDepth))
{
ThrowInvalidOperation_MaxNodesExceeded(parser._parseOptions.MaxNodes);
}
Expand Down Expand Up @@ -249,7 +250,7 @@ private bool TryParseAssemblyName(ref AssemblyNameInfo? assemblyName)

private bool TryDive(ref int depth)
{
if (depth >= _parseOptions.MaxNodes)
if (_parseOptions.IsMaxDepthExceeded(depth))
{
return false;
}
Expand Down

0 comments on commit f6a5bd5

Please sign in to comment.