Skip to content

Reject unsupported __counted_by use cases in nested contexts #166454

@rapidsna

Description

@rapidsna

__counted_by should not be allowed to reference struct members from within nested contexts, as this is not supported.

The following cases should be rejected with clear diagnostics:

struct counted_by_function_pointer_param_late {
    int (*callback)(int *__counted_by(len)); // Should error: cannot reference member from nested context
    int len;
};

struct counted_by_function_pointer_param {
    int len;  
    int (*callback)(int *__counted_by(len)); // Should error: cannot reference member from nested context
};

Current behavior:

These cases are currently accepted by the compiler.

Expected behavior:

The compiler should reject __counted_by attributes that attempt to reference struct members from within nested contexts (such as function pointer parameter types), regardless of whether the referenced member is declared before or after.

Rationale:

Referring to a struct member from a nested context is not supported and should be diagnosed as an error.

Metadata

Metadata

Assignees

No one assigned

    Labels

    clang:bounds-safetyIssue/PR relating to the experimental -fbounds-safety feature in Clang

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions