Skip to content

Fixes for fulminate - #1020

Draft
kmemarian wants to merge 20 commits into
rems-project:masterfrom
kmemarian:fixes-for-fulminate
Draft

kmemarian wants to merge 20 commits into
rems-project:masterfrom
kmemarian:fixes-for-fulminate

Conversation

@kmemarian

Copy link
Copy Markdown
Collaborator

No description provided.

This removes the dependency of the elaboration on the reference in
switches.ml.
This fixes the ill-typed Core generated when using the inner_arg_temps
calling convention
@kmemarian
kmemarian force-pushed the fixes-for-fulminate branch 4 times, most recently from 77732c9 to 30edde0 Compare September 29, 2026 23:07
…ements

The controlling expression of switch statements is now promoted and the
expression in case statements is now converted to that promoted type.

As a result switch statements are no longer supported with --agnostic.

The .expected for ci test 0213 is updated to now show the location of
the whole case statement.

This commit also fixes a crash of the elaboration on singleton GNU case
range statements (by desugaring to a standard case statement).
These are still reachable when control-flow falls through a preceding
case statement.
…ified value

There is a new "branching_on_unspec_is_nd" switch making it a
non-deterministic choice, otherwise the default makes the branching
undefined behaviour.
This is to unsure that all uses of its types/functions are qualified to
ease upcoming refactorings.
With this commit the lifetime of objects declared inside the body of a
switch statement is properly started/ended when control-flow jumps to a
case or default statement.

This commit also adds an arity check in the Core typing of Erun.
…pointers

Fixes: cerberus-lean-04
Reported-by: Mike Dodds <mike@oath.tech>
No more buggy state, the tag definitions must now always be threaded
through.  The memory interface has changed a bit to add these
parameters where needed.

Formatted now always use the effectful array_shift to avoid threading
the tagDefs through.  Since these are internal to printf() not Core
actions directly visible to the Driver it does not change the sb-graph
for the concurrency.
…mpound literals

Cabs_to_ail.qs_ctype_builder is now using the exception monad to allow
reporting an error when building array types.

The check of the type of compound literals is done during desugaring so
that it happens before the desugaring of the initializer.
@kmemarian
kmemarian force-pushed the fixes-for-fulminate branch from 26abe68 to 2a121fb Compare October 2, 2026 18:15

This branch has not been deployed

No deployments
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.

1 participant