Skip to content

Cases generator gets confused about the number of values to pop in case of errors in some macros #122155

Closed
@markshannon

Description

@markshannon

Bug report

Bug description:

This input:

        op(FIRST, (x, y -- a, b)) {
            a = x;
            b = y;
        }

        op(SECOND, (a, b -- a, b)) {
        }

        op(THIRD, (j, k --)) {
            ERROR_IF(cond, error);
        }

        macro(TEST) = FIRST + SECOND + THIRD;
        """

Generates:

     ...
     if (cond) goto pop_4_error;
     ...

This should be if (cond) goto pop_2_error;

I noticed this error when working on a fix to #122029, so this isn't just a theoretical bug.

CPython versions tested on:

CPython main branch

Operating systems tested on:

No response

Linked PRs

Metadata

Metadata

Assignees

No one assigned

    Labels

    3.13bugs and security fixes3.14bugs and security fixestype-bugAn unexpected behavior, bug, or error

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions