Skip to content

Commit bd67092

Browse files
authored
Fix type name parsing in NativeAOT (#79963)
Simplified type name parsing was breaking if full name or assembly name has underscode ('_') in it. That breaks referencing `SQLitePCL.Batteries_V2, SQLitePCLRaw.batteries_v2` type inside `Microsoft.Data.Sqlite` Fixes dotnet/efcore#29725
1 parent 712b878 commit bd67092

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/DependencyAnalysis/ReflectionMethodBodyScanner.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public static bool ResolveType(string name, ModuleDesc callingModule, TypeSystem
2323
StringBuilder typeName = new StringBuilder();
2424
StringBuilder typeNamespace = new StringBuilder();
2525
string containingTypeName = null;
26-
while (i < name.Length && (char.IsLetterOrDigit(name[i]) || name[i] == '.' || name[i] == '`' || name[i] == '+'))
26+
while (i < name.Length && (char.IsLetterOrDigit(name[i]) || name[i] == '.' || name[i] == '_' || name[i] == '`' || name[i] == '+'))
2727
{
2828
if (name[i] == '.')
2929
{
@@ -59,7 +59,7 @@ public static bool ResolveType(string name, ModuleDesc callingModule, TypeSystem
5959

6060
// Consume assembly name
6161
StringBuilder assemblyName = new StringBuilder();
62-
while (i < name.Length && (char.IsLetterOrDigit(name[i]) || name[i] == '.'))
62+
while (i < name.Length && (char.IsLetterOrDigit(name[i]) || name[i] == '.' || name[i] == '_'))
6363
{
6464
assemblyName.Append(name[i]);
6565
i++;

0 commit comments

Comments
 (0)