diff --git a/crates/aiken-lang/src/parser/extra.rs b/crates/aiken-lang/src/parser/extra.rs index b7a04540..65f5b2c3 100644 --- a/crates/aiken-lang/src/parser/extra.rs +++ b/crates/aiken-lang/src/parser/extra.rs @@ -24,7 +24,7 @@ pub struct Comment<'a> { impl<'a> From<(&Span, &'a str)> for Comment<'a> { fn from(src: (&Span, &'a str)) -> Comment<'a> { fn char_indice(s: &str, i: usize) -> usize { - s.char_indices().nth(i).expect("char at given indice").0 + s.char_indices().nth(i).unwrap_or((i, ' ')).0 } let start = char_indice(src.1, src.0.start); diff --git a/crates/aiken-lang/src/tests/format.rs b/crates/aiken-lang/src/tests/format.rs index a698593a..9fc4aa83 100644 --- a/crates/aiken-lang/src/tests/format.rs +++ b/crates/aiken-lang/src/tests/format.rs @@ -17,6 +17,23 @@ fn assert_fmt(src: &str, expected: &str) { assert_eq!(out, out2, "formatting isn't idempotent"); } +#[test] +fn comment_at_end_of_file() { + let input = indoc! { r#" + type Foo = + Int + + //"#}; + + let output = indoc! { r#" + type Foo = + Int + // + "#}; + + assert_fmt(input, output); +} + #[test] fn test_format_if() { let src = indoc! {r#"