Skip to content

Converting long constant to nint generates incorrect result #45525

@cston

Description

@cston
using System;

class Program
{
    static void Main()
    {
        Console.WriteLine("{0}", IntPtr.Size);

        const long x = 0xFFFFFFFFFFFFFFFL;
        checked
        {
            try
            {
                Console.WriteLine("{0}", (nint)x);
            }
            catch (Exception e)
            {
                Console.WriteLine("{0}", e.GetType());
            }
        }

        unchecked
        {
            Console.WriteLine("{0}", (nint)x);
        }
    }
}

Run compiled program on 32-bit:
Expected: 4 System.OverflowException -1
Actual: 4 -1 -1

Run compiled program on 64-bit:
Expected: 8 1152921504606846975 1152921504606846975
Actual: 8 -1 -1

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions