Invalid opcode generation at "StaticTypeRegistryPostProcessor.InjectLoadFromCustomArgument"

Dear Team,
I found a bug in entities code generation. this bug prevents me from compiling assembly.

package: com.unity.entities

File: SystemInfoGeneration.cs
Class: StaticTypeRegistryPostProcessor
Method: InjectLoadFromCustomArgument

Original code

                case MetadataType.Boolean:
                    instructions.Add(Instruction.Create(OpCodes.Ldc_I4, (bool) caValue ? 1 : 0)); break;
                case MetadataType.Byte:
                    instructions.Add(Instruction.Create(OpCodes.Ldc_I4, (byte) caValue)); break;
                case MetadataType.Char:
                    instructions.Add(Instruction.Create(OpCodes.Ldc_I4, (char) caValue)); break;
                case MetadataType.Double:
                    instructions.Add(Instruction.Create(OpCodes.Ldc_R8, (double) caValue)); break;
                case MetadataType.Single:
                    instructions.Add(Instruction.Create(OpCodes.Ldc_R4, (float) caValue)); break;
                case MetadataType.UInt16:
                    instructions.Add(Instruction.Create(OpCodes.Ldc_I4, (int)(ushort) caValue)); break;
                case MetadataType.Int16:
                    instructions.Add(Instruction.Create(OpCodes.Ldc_I4, (int)(short) caValue)); break;
                case MetadataType.UInt32:
                    instructions.Add(Instruction.Create(OpCodes.Ldc_I4, (int)(uint) caValue)); break;
                case MetadataType.Int32:
                    instructions.Add(Instruction.Create(OpCodes.Ldc_I4, (int) caValue)); break;
                case MetadataType.UInt64:
                    instructions.Add(Instruction.Create(OpCodes.Ldc_I8, (long)(ulong) caValue)); break;
                case MetadataType.Int64:
                    instructions.Add(Instruction.Create(OpCodes.Ldc_I8, (long) caValue)); break;
                case MetadataType.SByte:
                    instructions.Add(Instruction.Create(OpCodes.Ldc_I4, (sbyte) caValue)); break;
                case MetadataType.String:
                    instructions.Add(Instruction.Create(OpCodes.Ldstr, (string) caValue)); break;
                case MetadataType.Class:

but Ldc_I4 rvalue should be loaded as int (4 bytes), not byte or any other type.
So proper could should look like:

                case MetadataType.Boolean:
                    instructions.Add(Instruction.Create(OpCodes.Ldc_I4, (bool) caValue ? 1 : 0)); break;
                case MetadataType.Byte:
                    instructions.Add(Instruction.Create(OpCodes.Ldc_I4, (int)(byte) caValue)); break;
                case MetadataType.Char:
                    instructions.Add(Instruction.Create(OpCodes.Ldc_I4, (int)(char) caValue)); break;
                case MetadataType.Double:
                    instructions.Add(Instruction.Create(OpCodes.Ldc_R8, (double) caValue)); break;
                case MetadataType.Single:
                    instructions.Add(Instruction.Create(OpCodes.Ldc_R4, (float) caValue)); break;
                case MetadataType.UInt16:
                    instructions.Add(Instruction.Create(OpCodes.Ldc_I4, (int)(ushort) caValue)); break;
                case MetadataType.Int16:
                    instructions.Add(Instruction.Create(OpCodes.Ldc_I4, (int)(short) caValue)); break;
                case MetadataType.UInt32:
                    instructions.Add(Instruction.Create(OpCodes.Ldc_I4, (int)(uint) caValue)); break;
                case MetadataType.Int32:
                    instructions.Add(Instruction.Create(OpCodes.Ldc_I4, (int) caValue)); break;
                case MetadataType.UInt64:
                    instructions.Add(Instruction.Create(OpCodes.Ldc_I8, (long)(ulong) caValue)); break;
                case MetadataType.Int64:
                    instructions.Add(Instruction.Create(OpCodes.Ldc_I8, (long) caValue)); break;
                case MetadataType.SByte:
                    instructions.Add(Instruction.Create(OpCodes.Ldc_I4_S, (sbyte) caValue)); break;
                case MetadataType.String:
                    instructions.Add(Instruction.Create(OpCodes.Ldstr, (string) caValue)); break;

This prevents me from utilizing some of Roslyn code generators.
Could you fix this ASAP?
Thanks! :smiley: