third_party_rust_syn/codegen
David Tolnay c6ce512015
Switch non exhaustive syntax tree enums to use #[non_exhaustive]
This follows through on the comments on the __TestExhaustive variants
promising that their purpose will be substituted with a deny(reachable)
rustc lint once one is available.

That lint is now landing as non_exhaustive_omitted_patterns in Rust 1.57.
The correct way to use it for checking exhaustivity of a match is:

    match expr {
        Expr::Array(e) => {...}
        Expr::Assign(e) => {...}
        ...
        Expr::Yield(e) => {...}

        #[cfg_attr(test, deny(non_exhaustive_omitted_patterns))]
        _ => { /* some sane fallback */ }
    }
2022-03-27 14:19:01 -07:00
..
src Switch non exhaustive syntax tree enums to use #[non_exhaustive] 2022-03-27 14:19:01 -07:00
Cargo.toml Replace rustfmt with prettyplease crate 2022-01-12 10:01:19 -08:00
README.md Briefer ast traversal trait names 2018-01-06 13:48:05 -08:00

syn_codegen

This is an internal (not published on crates.io) crate which is used to generate the files in the gen/ directory of syn. It is used to ensure that the implementations for Fold, Visit, and VisitMut remain in sync with the actual AST.

To run this program, run cargo run in this directory, and the gen/ folder will be re-generated.

This program is slow, and is therefore not run when building syn as part of the build script to save on compile time.