Skip to content

Can bypass repr(packed) checking by using --cap-lints #26

@taiki-e

Description

@taiki-e

NOTE: pin-project (not lite) is not affected by this issue. see taiki-e/pin-project#34 (comment) for more.
EDIT: see taiki-e/pin-project#342 for pin-project (not lite)

Currently, pin-project-lite uses safe_packed_borrow lint to check that the struct is not repr(packed). Unfortunately, safe_packed_borrow is lint and you can use the rustc's --cap-lints flag to lower the lint cap level: https://godbolt.org/z/jEf1fG

The current pin-project-lite generates almost the same code as pin-project, but does not have the equivalent of the repr(packed) checking that proc-macro(pin-project) does during expansion. (Since the proc-macro-attribute used on the struct expand later than declarative macro used for the struct, a complete fix for the problem is probably impossible until safe_packed_borrow gets a hard error.)

Metadata

Metadata

Assignees

No one assigned

    Labels

    C-bugCategory: related to a bug.C-upstream-bugCategory: This is a bug of compiler or dependencies (the fix may require action in the upstream)I-unsoundA soundness hole (worst kind of bug), see: https://en.wikipedia.org/wiki/Soundness

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions