Skip to content

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

@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