Skip to content

Commit 7596798

Browse files
committed
Better unreachable code elimination in CoreLib
1 parent cf51ee1 commit 7596798

File tree

3 files changed

+14
-3
lines changed

3 files changed

+14
-3
lines changed

src/libraries/Common/src/System/Reflection/Metadata/TypeNameParser.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ private TypeNameParser(ReadOnlySpan<char> name, bool throwOnError, TypeNameParse
5151
{
5252
if (throwOnError)
5353
{
54-
if (recursiveDepth >= parser._parseOptions.MaxNodes)
54+
if (parser._parseOptions.IsMaxDepthExceeded(recursiveDepth))
5555
{
5656
ThrowInvalidOperation_MaxNodesExceeded(parser._parseOptions.MaxNodes);
5757
}
@@ -250,7 +250,7 @@ private bool TryParseAssemblyName(ref AssemblyNameInfo? assemblyName)
250250

251251
private bool TryDive(ref int depth)
252252
{
253-
if (depth >= _parseOptions.MaxNodes)
253+
if (_parseOptions.IsMaxDepthExceeded(depth))
254254
{
255255
return false;
256256
}

src/libraries/Common/src/System/Reflection/Metadata/TypeNameParserOptions.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,5 +27,7 @@ public int MaxNodes
2727
_maxNodes = value;
2828
}
2929
}
30+
31+
internal bool IsMaxDepthExceeded(int depth) => depth >= _maxNodes
3032
}
3133
}

src/libraries/Common/src/System/Reflection/TypeNameParser.Helpers.cs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,16 @@ internal struct TypeNameParseOptions
1515
{
1616
public TypeNameParseOptions() { }
1717
#pragma warning disable CA1822 // Mark members as static
18-
public int MaxNodes => int.MaxValue; // CoreLib does not enforce any limits
18+
// CoreLib does not enforce any limits
19+
public bool IsMaxDepthExceeded(int _) => false;
20+
public int MaxNodes
21+
{
22+
get
23+
{
24+
Debug.Fail("Expected to be unreachable");
25+
return 0;
26+
}
27+
}
1928
#pragma warning restore CA1822
2029
}
2130
}

0 commit comments

Comments
 (0)