Skip to content

nala: Rework PRIMITIVE_TYPES check#9

Merged
eerimoq merged 1 commit intoeerimoq:masterfrom
thebolt:primitive-type-parsing
Oct 23, 2025
Merged

nala: Rework PRIMITIVE_TYPES check#9
eerimoq merged 1 commit intoeerimoq:masterfrom
thebolt:primitive-type-parsing

Conversation

@thebolt
Copy link
Contributor

@thebolt thebolt commented Oct 22, 2025

The old check wasn't appropriate as the order of qualifiers isn't enforced by pycparser nor C compilers, yet Nala enforced the order.

This is a problem with stdatomic.h which contains instances of "short unsigned int", a type not recognized by Nala.

Instead just check that all qualifiers and the core types are common, leaving the qualifier validation to pycarser and the compiler. Utilize a set for this.

Encapsulate the PRIMITIVE_TYPES list in a method and call that instead of implementing the set check everywhere.
This results in some changes to is_primitive_type_pointer and is_primitive_type_pointer_type to no longer take a types argument, instead they call the new is_primitive_type method as necessary.

The old check wasn't appropriate as the order of qualifiers isn't
enforced by pycparser nor C compilers, yet Nala enforced the order.

This is a problem with stdatomic.h which contains instances of
"short unsigned int", a type not recognized by Nala.

Instead just check that all qualifiers and the core types are common,
leaving the qualifier validation to pycarser and the compiler.
Utilize a set for this.

Encapsulate the PRIMITIVE_TYPES list in a method and call that instead
of implementing the set check everywhere.
This results in some changes to is_primitive_type_pointer and
is_primitive_type_pointer_type to no longer take a types argument,
instead they call the new is_primitive_type method as necessary.
@eerimoq
Copy link
Owner

eerimoq commented Oct 22, 2025

Seems some tests fail. Not sure if it's due to the changes in the PR though. Do you? =)

python -m unittest passes on my computer, but fails in CI. hmmm

@thebolt
Copy link
Contributor Author

thebolt commented Oct 23, 2025

It does seem very weird and somehow more related to the CI environment than the actual code.

I tested to run locally with python 3.9 (3.9.21, latest provided by uv and almost same as CI), 3.10.12, 3.11.11 and 3.14.0a4, and all of them passes.

I'm not really familiar with the github actions environment so cannot really say what the problem might be.

@eerimoq eerimoq merged commit 1387275 into eerimoq:master Oct 23, 2025
2 of 4 checks passed
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.

3 participants