Skip to content

preserve allowzero, align, volatile, and addrspace on pointer types#3172

Open
barry3406 wants to merge 1 commit intozigtools:masterfrom
barry3406:fix-pointer-modifier-inlay-hints
Open

preserve allowzero, align, volatile, and addrspace on pointer types#3172
barry3406 wants to merge 1 commit intozigtools:masterfrom
barry3406:fix-pointer-modifier-inlay-hints

Conversation

@barry3406
Copy link
Copy Markdown

The ptr_type resolver in analysis.zig only read const_token from ptr_info, and Data.createPointer only set is_const on the InternPool.pointer_type flags. So *allowzero u8, *align(4) u8, *volatile u8 and friends all collapsed to *u8 in inlay hints (and anywhere else that runs through stringifyTypeOf).

This reads volatile_token, allowzero_token, and the literal integer in ast.align_node from ptr_info, plumbs them through createPointerType / Data.createPointer into the IP flags and the .pointer Data fallback, and updates rawStringify so the fallback path matches the InternPool printer.

Address-space resolution from arbitrary expressions still defers to .generic; the field is plumbed through but only the literal alignment integer is currently read.

Regression coverage added in tests/lsp_features/inlay_hints.zig.

Fixes #2603.

The `ptr_type` resolver in analysis.zig only read `const_token` from
`ptr_info`, and `Data.createPointer` only set `is_const` on the
`InternPool.pointer_type` flags. As a result, types like
`*allowzero u8`, `*align(4) u8`, `*volatile u8` were collapsed to
`*u8` in inlay hints (and any other surface that runs through
`stringifyTypeOf`).

Read `volatile_token`, `allowzero_token`, and the integer literal in
`ast.align_node` from `ptr_info`, plumb them through
`createPointerType` / `Data.createPointer` into the IP flags and the
`.pointer` Data fallback, and update `rawStringify` so the fallback
path matches the InternPool printer.

Address-space resolution from arbitrary expressions still defers to
`.generic`; only the literal alignment integer is read for now.

Fixes zigtools#2603.
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.

Inline hint of the pointer type is incomplete.

1 participant