Skip to content

ModuleBuilder.GetType does not work with ignore case with certain unicode chars on Unix #18231

Description

@hughbe

The following test passes on Windows, but fails on non-Windows platforms, discovered in dotnet/corefx#10532

[Fact]
public void Test()
{
    AssemblyBuilder assemblyBuilder = AssemblyBuilder.DefineDynamicAssembly(new AssemblyName("AssemblyName"), AssemblyBuilderAccess.Run);
    ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule("ModuleName");

    TypeBuilder type = moduleBuilder.DefineType("\uD800\uDC00");
    TypeInfo createdType = type.CreateTypeInfo();

    moduleBuilder.GetType("\uD800\uDC00", false, false); // Works on all platforms
    moduleBuilder.GetType("\uD800\uDC00", true, false); // Works on all platforms

    moduleBuilder.GetType("\uD800\uDC00", true, true); // Throws TypeLoadException on Unix
    moduleBuilder.GetType("\uD800\uDC00".ToLowerInvariant(), true, true); // Throws TypeLoadException on Unix
    moduleBuilder.GetType("\uD800\uDC00".ToUpperInvariant(), true, true); // Throws TypeLoadException on Unix}

/cc @stephentoub @atsushikan

Metadata

Metadata

Labels

area-VM-reflection-monoReflection issues specific to MonoVMbugdisabled-testThe test is disabled in source code against the issueos-linuxLinux OS (any supported distro)

Type

No type

Projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions