1use flux_macros::symbols;
2use rustc_span::{Symbol, edition::Edition};
3
4symbols! {
5 Keywords {
6 Bitvec: "bitvec",
7 Exists: "exists",
8 Forall: "forall",
9 Hrn: "hrn",
10 Hdl: "hdl",
11 Requires: "requires",
12 Ensures: "ensures",
13 Property: "property",
14 Qualifier: "qualifier",
15 Sort: "sort",
16 Strg: "strg",
17 Trusted: "trusted",
18 Reft: "reft",
19 Invariant: "invariant",
20 RefinedBy: "refined_by",
21 }
22
23 Symbols {
24 Map,
25 Set,
26 int,
27 real,
28 }
29}
30
31pub mod kw {
33 #![allow(non_upper_case_globals)]
34
35 use rustc_span::Symbol;
36 pub use rustc_span::symbol::kw::*;
37
38 pub use super::kw_generated::*;
39
40 pub const Opaque: Symbol = rustc_span::symbol::sym::opaque;
43 pub const Local: Symbol = rustc_span::symbol::sym::local;
44}
45
46pub mod sym {
47 pub use rustc_span::sym::*;
48
49 pub use super::sym_generated::*;
50}
51
52pub fn is_reserved(sym: Symbol, edition: Edition) -> bool {
53 if sym == kw::SelfLower || sym == kw::SelfUpper || sym == kw::Crate {
55 return false;
56 }
57 sym.is_reserved(|| edition) || is_flux_reserved(sym)
58}
59
60fn is_flux_reserved(sym: Symbol) -> bool {
62 (kw::Bitvec <= sym && sym <= kw::Strg) || sym == kw::Opaque || sym == kw::Local
63}