Skip to content

Commit c9cbdc6

Browse files
authored
Merge pull request #26 from Certora/panic_in_the_display
Panic! in the Display
2 parents f69c337 + 6b158e2 commit c9cbdc6

File tree

9 files changed

+51
-36
lines changed

9 files changed

+51
-36
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,4 @@
33
**/.DS_Store
44
BUGS
55
**/python_wrapper/.env
6+
**/tests

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
# Changelog
2+
<<<<<<< HEAD
3+
## [0.6.5] - 2023-01-09
4+
### Fixed
5+
- Use span-based capturing for `Definition`
6+
=======
27
## [1.0.0] - 2022-12-20
38
- Release Candidate for first public version
9+
>>>>>>> master
410
511
## [0.6.4] - 2022-12-14
612
### Fixed

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "cvldoc_parser_core"
3-
version = "1.0.0"
3+
version = "0.6.5"
44
edition = "2021"
55

66
[dependencies]

src/parse/builder.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -298,6 +298,8 @@ impl<'src> Builder<'src> {
298298
returns,
299299
definition,
300300
} => {
301+
let definition = self.owned_slice(definition);
302+
301303
let ast = Ast::Definition {
302304
name,
303305
params,

src/parse/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -273,7 +273,7 @@ fn decl_parser() -> impl Parser<Token, Intermediate, Error = Simple<Token>> {
273273
let rhs = none_of(Token::Semicolon)
274274
.at_least_once()
275275
.then_ignore(just(Token::Semicolon))
276-
.map(String::from_iter);
276+
.map_with_span(|_, span| span);
277277

278278
just(Token::Definition)
279279
.ignore_then(ident())

src/parse/types.rs

Lines changed: 35 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -41,36 +41,41 @@ pub enum Token {
4141

4242
impl Display for Token {
4343
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
44-
let s = match self {
45-
Token::Ghost => "ghost",
46-
Token::Definition => "definition",
47-
Token::Rule => "rule",
48-
Token::Invariant => "invariant",
49-
Token::Methods => "methods",
50-
Token::Function => "function",
51-
Token::Mapping => "mapping",
52-
Token::Returns => "returns",
53-
Token::Filtered => "filtered",
54-
Token::Ident(data) | Token::Other(data) | Token::Number(data) => data.as_str(),
55-
Token::RoundOpen => "(",
56-
Token::RoundClose => ")",
57-
Token::SquareOpen => "[",
58-
Token::SquareClose => "]",
59-
Token::CurlyOpen => "{",
60-
Token::CurlyClose => "}",
61-
Token::Dot => ".",
62-
Token::Comma => ",",
63-
Token::Semicolon => ";",
64-
Token::Equals => "=",
65-
Token::Arrow => "=>",
66-
Token::Axiom => "axiom",
67-
Token::Using => "using",
68-
Token::Hook => "hook",
69-
Token::Preserved => "preserved",
70-
_ => panic!("{self:?}"),
71-
};
44+
match self {
45+
Token::Ghost => write!(f, "ghost"),
46+
Token::Definition => write!(f, "definition"),
47+
Token::Rule => write!(f, "rule"),
48+
Token::Invariant => write!(f, "invariant"),
49+
Token::Methods => write!(f, "methods"),
50+
Token::Function => write!(f, "function"),
51+
Token::Mapping => write!(f, "mapping"),
52+
Token::Returns => write!(f, "returns"),
53+
Token::Filtered => write!(f, "filtered"),
54+
Token::RoundOpen => write!(f, "("),
55+
Token::RoundClose => write!(f, ")"),
56+
Token::SquareOpen => write!(f, "["),
57+
Token::SquareClose => write!(f, "]"),
58+
Token::CurlyOpen => write!(f, "{{"),
59+
Token::CurlyClose => write!(f, "}}"),
60+
Token::Dot => write!(f, "."),
61+
Token::Comma => write!(f, ","),
62+
Token::Semicolon => write!(f, ";"),
63+
Token::Equals => write!(f, "="),
64+
Token::Arrow => write!(f, "=>"),
65+
Token::Axiom => write!(f, "axiom"),
66+
Token::Using => write!(f, "using"),
67+
Token::Hook => write!(f, "hook"),
68+
Token::Preserved => write!(f, "preserved"),
7269

73-
write!(f, "{s}")
70+
Token::Ident(data) | Token::Other(data) | Token::Number(data) => write!(f, "{data}"),
71+
72+
Token::CvlDocSlashed
73+
| Token::CvlDocStarred
74+
| Token::FreeFormSlashed
75+
| Token::FreeFormStarred
76+
| Token::SingleLineComment
77+
| Token::MultiLineComment => write!(f, "{self:?}"),
78+
}
7479
}
7580
}
7681

@@ -112,7 +117,7 @@ pub enum Intermediate {
112117
name: String,
113118
params: Vec<(String, Option<String>)>,
114119
returns: String,
115-
definition: String,
120+
definition: Span,
116121
},
117122
Invariant {
118123
name: String,

src/python_wrapper/CHANGELOG.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# Changelog
2-
## [1.0.0] - 2022-12-20
3-
- Release Candidate for first public version
2+
## [0.6.5] - 2023-01-09
3+
### Fixed
4+
- Bugfix in core
45

56
## [0.6.4] - 2022-12-14
67
### Fixed

src/python_wrapper/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "cvldoc_parser_py"
3-
version = "1.0.0"
3+
version = "0.6.5"
44
edition = "2021"
55

66
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

src/python_wrapper/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "maturin"
44

55
[project]
66
name = "cvldoc_parser"
7-
version = "1.0.0"
7+
version = "0.6.5"
88
requires-python = ">=3.7"
99
classifiers = [
1010
"Programming Language :: Rust",

0 commit comments

Comments
 (0)