Skip to content

Parser: support MSVC-style fixed-size integer suffixes#985

Open
ehaas wants to merge 1 commit intoVexu:masterfrom
ehaas:msvc-suffixes
Open

Parser: support MSVC-style fixed-size integer suffixes#985
ehaas wants to merge 1 commit intoVexu:masterfrom
ehaas:msvc-suffixes

Conversation

@ehaas
Copy link
Collaborator

@ehaas ehaas commented Mar 15, 2026

Closes #956

pub fn parseNumberToken(p: *Parser, tok_i: TokenIndex) !Result {
const buf = p.tokSlice(tok_i);
const prefix = NumberPrefix.fromString(buf);
const is_msvc = p.comp.langopts.emulate == .msvc;
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Clang allows these suffixes with -fms-extensions.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Upon looking into this more, it looks like clang (I tested x86_64) with ms-extensions treats __int64 as long long, but an i64 literal as int64_t (long). On x86-64 MSVC __int64 and int64_t are both long long so it doesn't matter. So basically it looks like those literals will need to use the platform-specific int64_t type. i8 suffix on the other hand uses char (same as __int8), whereas int8_t is signed char. I'll have to dig into this more.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Missing support for MSVC integer suffixes like i64, ui64

2 participants