Skip to content

Commit

Permalink
[wip] uninterp marker on uniterpreted spec fns
Browse files Browse the repository at this point in the history
  • Loading branch information
utaal committed Feb 27, 2025
1 parent 65f122f commit 4c45266
Show file tree
Hide file tree
Showing 19 changed files with 249 additions and 26 deletions.
9 changes: 9 additions & 0 deletions dependencies/syn/src/gen/clone.rs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

13 changes: 13 additions & 0 deletions dependencies/syn/src/gen/debug.rs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

11 changes: 11 additions & 0 deletions dependencies/syn/src/gen/eq.rs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

14 changes: 14 additions & 0 deletions dependencies/syn/src/gen/fold.rs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

13 changes: 12 additions & 1 deletion dependencies/syn/src/gen/hash.rs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 7 additions & 0 deletions dependencies/syn/src/gen/token.css

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 12 additions & 0 deletions dependencies/syn/src/gen/visit.rs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 12 additions & 0 deletions dependencies/syn/src/gen/visit_mut.rs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion dependencies/syn/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -559,7 +559,7 @@ pub use crate::verus::{
InvariantNameSetNone, ItemBroadcastGroup, MatchesOpExpr, MatchesOpToken, Mode, ModeExec,
ModeGhost, ModeProof, ModeSpec, ModeSpecChecked, ModeTracked, Open, OpenRestricted, Prover,
Publish, Recommends, Requires, Returns, RevealHide, SignatureDecreases, SignatureInvariants,
SignatureSpec, SignatureSpecAttr, SignatureUnwind, Specification, TypeFnSpec, View,
SignatureSpec, SignatureSpecAttr, SignatureUnwind, Specification, TypeFnSpec, Uninterp, View,
};

#[rustfmt::skip] // https://github.com/rust-lang/rustfmt/issues/6176
Expand Down
2 changes: 2 additions & 0 deletions dependencies/syn/src/token.rs
Original file line number Diff line number Diff line change
Expand Up @@ -748,6 +748,7 @@ define_keywords! {
"exec" pub struct Exec
"open" pub struct Open
"closed" pub struct Closed
"uninterp" pub struct Uninterp
"ghost" pub struct Ghost
"tracked" pub struct Tracked
"requires" pub struct Requires
Expand Down Expand Up @@ -1031,6 +1032,7 @@ macro_rules! Token {
[exec] => { $crate::token::Exec };
[open] => { $crate::token::Open };
[closed] => { $crate::token::Closed };
[uninterp] => { $crate::token::Uninterp };
[ghost] => { $crate::token::Ghost };
[tracked] => { $crate::token::Tracked };
[requires] => { $crate::token::Requires };
Expand Down
16 changes: 16 additions & 0 deletions dependencies/syn/src/verus.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ ast_enum_of_structs! {
Closed(Closed),
Open(Open),
OpenRestricted(OpenRestricted),
Uninterp(Uninterp),
Default,
}
}
Expand All @@ -32,6 +33,12 @@ ast_struct! {
}
}

ast_struct! {
pub struct Uninterp {
pub token: Token![uninterp],
}
}

ast_enum_of_structs! {
pub enum Mode {
Spec(ModeSpec),
Expand Down Expand Up @@ -503,6 +510,9 @@ pub mod parsing {
} else {
Ok(Publish::Open(Open { token }))
}
} else if input.peek(Token![uninterp]) {
let token = input.parse::<Token![uninterp]>()?;
Ok(Publish::Uninterp(Uninterp { token }))
} else {
Ok(Publish::Default)
}
Expand Down Expand Up @@ -1414,6 +1424,12 @@ mod printing {
}
}

impl ToTokens for Uninterp {
fn to_tokens(&self, tokens: &mut TokenStream) {
self.token.to_tokens(tokens);
}
}

#[cfg_attr(doc_cfg, doc(cfg(feature = "printing")))]
impl ToTokens for ModeSpec {
fn to_tokens(&self, tokens: &mut TokenStream) {
Expand Down
17 changes: 17 additions & 0 deletions dependencies/syn/syn.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

18 changes: 18 additions & 0 deletions dependencies/syn/tests/debug/gen.rs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions source/builtin_macros/src/rustdoc.rs
Original file line number Diff line number Diff line change
Expand Up @@ -185,6 +185,7 @@ fn fn_mode_to_string(mode: &FnMode, publish: &Publish) -> String {
Publish::OpenRestricted(res) => {
"open(".to_string() + &module_path_to_string(&res.path) + ") spec"
}
Publish::Uninterp(_) => "uninterp".to_string(),
Publish::Default => "spec".to_string(),
},
FnMode::Proof(_) => "proof".to_string(),
Expand Down
Loading

0 comments on commit 4c45266

Please sign in to comment.