difftreelog
refactor update logos
in: master
10 files changed
cmds/jrsonnet-fmt/src/main.rsdiffbeforeafterboth--- a/cmds/jrsonnet-fmt/src/main.rs
+++ b/cmds/jrsonnet-fmt/src/main.rs
@@ -647,10 +647,10 @@
fn format(input: &str, opts: &FormatOptions) -> Option<String> {
let (parsed, errors) = jrsonnet_rowan_parser::parse(input);
if !errors.is_empty() {
- let mut builder = ass_stroke::SnippetBuilder::new(input);
+ let mut builder = hi_doc::SnippetBuilder::new(input);
for error in errors {
builder
- .error(ass_stroke::Text::single(
+ .error(hi_doc::Text::single(
format!("{:?}", error.error).chars(),
Default::default(),
))
@@ -661,7 +661,7 @@
.build();
}
let snippet = builder.build();
- let ansi = ass_stroke::source_to_ansi(&snippet);
+ let ansi = hi_doc::source_to_ansi(&snippet);
eprintln!("{ansi}");
// It is possible to recover from this failure, but the output may be broken, as formatter is free to skip
// ERROR rowan nodes.
crates/jrsonnet-rowan-parser/src/generated/syntax_kinds.rsdiffbeforeafterboth1//! This is a generated file, please do not edit manually. Changes can be2//! made in codegeneration that lives in `xtask` top-level dir.34#![allow(5 bad_style,6 missing_docs,7 unreachable_pub,8 clippy::manual_non_exhaustive,9 clippy::match_like_matches_macro10)]11use logos::Logos;12#[doc = r" The kind of syntax node, e.g. `IDENT`, `USE_KW`, or `STRUCT`."]13#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Debug, Logos)]14#[repr(u16)]15pub enum SyntaxKind {16 #[doc(hidden)]17 TOMBSTONE,18 #[doc(hidden)]19 EOF,20 #[token("||")]21 OR,22 #[token("??")]23 NULL_COAELSE,24 #[token("&&")]25 AND,26 #[token("|")]27 BIT_OR,28 #[token("^")]29 BIT_XOR,30 #[token("&")]31 BIT_AND,32 #[token("==")]33 EQ,34 #[token("!=")]35 NE,36 #[token("<")]37 LT,38 #[token(">")]39 GT,40 #[token("<=")]41 LE,42 #[token(">=")]43 GE,44 #[token("<<")]45 LHS,46 #[token(">>")]47 RHS,48 #[token("+")]49 PLUS,50 #[token("-")]51 MINUS,52 #[token("*")]53 MUL,54 #[token("/")]55 DIV,56 #[token("%")]57 MODULO,58 #[token("!")]59 NOT,60 #[token("~")]61 BIT_NOT,62 #[token("[")]63 L_BRACK,64 #[token("]")]65 R_BRACK,66 #[token("(")]67 L_PAREN,68 #[token(")")]69 R_PAREN,70 #[token("{")]71 L_BRACE,72 #[token("}")]73 R_BRACE,74 #[token(":")]75 COLON,76 #[token("::")]77 COLONCOLON,78 #[token(":::")]79 COLONCOLONCOLON,80 #[token(";")]81 SEMI,82 #[token(".")]83 DOT,84 #[token("...")]85 DOTDOTDOT,86 #[token(",")]87 COMMA,88 #[token("$")]89 DOLLAR,90 #[token("=")]91 ASSIGN,92 #[token("?")]93 QUESTION_MARK,94 #[regex("(?:0|[1-9][0-9]*)(?:\\.[0-9]+)?(?:[eE][+-]?[0-9]+)?")]95 FLOAT,96 #[regex("(?:0|[1-9][0-9]*)\\.[^0-9]")]97 ERROR_FLOAT_JUNK_AFTER_POINT,98 #[regex("(?:0|[1-9][0-9]*)(?:\\.[0-9]+)?[eE][^+\\-0-9]")]99 ERROR_FLOAT_JUNK_AFTER_EXPONENT,100 #[regex("(?:0|[1-9][0-9]*)(?:\\.[0-9]+)?[eE][+-][^0-9]")]101 ERROR_FLOAT_JUNK_AFTER_EXPONENT_SIGN,102 #[regex("\"(?s:[^\"\\\\]|\\\\.)*\"")]103 STRING_DOUBLE,104 #[regex("\"(?s:[^\"\\\\]|\\\\.)*")]105 ERROR_STRING_DOUBLE_UNTERMINATED,106 #[regex("'(?s:[^'\\\\]|\\\\.)*'")]107 STRING_SINGLE,108 #[regex("'(?s:[^'\\\\]|\\\\.)*")]109 ERROR_STRING_SINGLE_UNTERMINATED,110 #[regex("@\"(?:[^\"]|\"\")*\"")]111 STRING_DOUBLE_VERBATIM,112 #[regex("@\"(?:[^\"]|\"\")*")]113 ERROR_STRING_DOUBLE_VERBATIM_UNTERMINATED,114 #[regex("@'(?:[^']|'')*'")]115 STRING_SINGLE_VERBATIM,116 #[regex("@'(?:[^']|'')*")]117 ERROR_STRING_SINGLE_VERBATIM_UNTERMINATED,118 #[regex("@[^\"'\\s]\\S+")]119 ERROR_STRING_VERBATIM_MISSING_QUOTES,120 #[regex("\\|\\|\\|", crate::string_block::lex_str_block_test)]121 STRING_BLOCK,122 ERROR_STRING_BLOCK_UNEXPECTED_END,123 ERROR_STRING_BLOCK_MISSING_NEW_LINE,124 ERROR_STRING_BLOCK_MISSING_TERMINATION,125 ERROR_STRING_BLOCK_MISSING_INDENT,126 #[regex("[_a-zA-Z][_a-zA-Z0-9]*")]127 IDENT,128 #[regex("[ \\t\\n\\r]+")]129 WHITESPACE,130 #[regex("//[^\\r\\n]*(\\r\\n|\\n)?")]131 SINGLE_LINE_SLASH_COMMENT,132 #[regex("#[^\\r\\n]*(\\r\\n|\\n)?")]133 SINGLE_LINE_HASH_COMMENT,134 #[regex("/\\*([^*]|\\*[^/])*\\*/")]135 MULTI_LINE_COMMENT,136 #[regex("/\\*/")]137 ERROR_COMMENT_TOO_SHORT,138 #[regex("/\\*([^*]|\\*[^/])+")]139 ERROR_COMMENT_UNTERMINATED,140 #[token("tailstrict")]141 TAILSTRICT_KW,142 #[token("local")]143 LOCAL_KW,144 #[token("importstr")]145 IMPORTSTR_KW,146 #[token("importbin")]147 IMPORTBIN_KW,148 #[token("import")]149 IMPORT_KW,150 #[token("if")]151 IF_KW,152 #[token("then")]153 THEN_KW,154 #[token("else")]155 ELSE_KW,156 #[token("function")]157 FUNCTION_KW,158 #[token("error")]159 ERROR_KW,160 #[token("in")]161 IN_KW,162 META_OBJECT_APPLY,163 ERROR_NO_OPERATOR,164 #[token("null")]165 NULL_KW,166 #[token("true")]167 TRUE_KW,168 #[token("false")]169 FALSE_KW,170 #[token("self")]171 SELF_KW,172 #[token("super")]173 SUPER_KW,174 #[token("for")]175 FOR_KW,176 #[token("assert")]177 ASSERT_KW,178 ERROR_MISSING_TOKEN,179 ERROR_UNEXPECTED_TOKEN,180 ERROR_CUSTOM,181 #[doc = r" Also acts as __LAST_TOKEN"]182 #[error]183 LEXING_ERROR,184 SOURCE_FILE,185 EXPR,186 SUFFIX_INDEX,187 NAME,188 SUFFIX_INDEX_EXPR,189 SUFFIX_SLICE,190 SLICE_DESC,191 SUFFIX_APPLY,192 ARGS_DESC,193 STMT_LOCAL,194 STMT_ASSERT,195 ASSERTION,196 EXPR_BINARY,197 EXPR_UNARY,198 EXPR_OBJ_EXTEND,199 EXPR_PARENED,200 EXPR_LITERAL,201 EXPR_STRING,202 EXPR_NUMBER,203 EXPR_ARRAY,204 EXPR_OBJECT,205 EXPR_ARRAY_COMP,206 EXPR_IMPORT,207 EXPR_VAR,208 EXPR_IF_THEN_ELSE,209 TRUE_EXPR,210 FALSE_EXPR,211 EXPR_FUNCTION,212 PARAMS_DESC,213 EXPR_ERROR,214 SLICE_DESC_END,215 SLICE_DESC_STEP,216 ARG,217 OBJ_BODY_COMP,218 OBJ_BODY_MEMBER_LIST,219 MEMBER_BIND_STMT,220 OBJ_LOCAL,221 MEMBER_ASSERT_STMT,222 MEMBER_FIELD_NORMAL,223 MEMBER_FIELD_METHOD,224 FIELD_NAME_FIXED,225 FIELD_NAME_DYNAMIC,226 FOR_SPEC,227 IF_SPEC,228 BIND_DESTRUCT,229 BIND_FUNCTION,230 PARAM,231 DESTRUCT_FULL,232 DESTRUCT_SKIP,233 DESTRUCT_ARRAY,234 DESTRUCT_OBJECT,235 DESTRUCT_OBJECT_FIELD,236 DESTRUCT_REST,237 DESTRUCT_ARRAY_ELEMENT,238 SUFFIX,239 BIND,240 STMT,241 OBJ_BODY,242 COMP_SPEC,243 EXPR_BASE,244 MEMBER_COMP,245 MEMBER,246 FIELD_NAME,247 DESTRUCT,248 DESTRUCT_ARRAY_PART,249 BINARY_OPERATOR,250 UNARY_OPERATOR,251 LITERAL,252 TEXT,253 NUMBER,254 IMPORT_KIND,255 VISIBILITY,256 TRIVIA,257 CUSTOM_ERROR,258 #[doc(hidden)]259 __LAST,260}261use self::SyntaxKind::*;262impl SyntaxKind {263 pub fn is_keyword(self) -> bool {264 match self {265 OR | NULL_COAELSE | AND | BIT_OR | BIT_XOR | BIT_AND | EQ | NE | LT | GT | LE | GE266 | LHS | RHS | PLUS | MINUS | MUL | DIV | MODULO | NOT | BIT_NOT | L_BRACK | R_BRACK267 | L_PAREN | R_PAREN | L_BRACE | R_BRACE | COLON | COLONCOLON | COLONCOLONCOLON268 | SEMI | DOT | DOTDOTDOT | COMMA | DOLLAR | ASSIGN | QUESTION_MARK | TAILSTRICT_KW269 | LOCAL_KW | IMPORTSTR_KW | IMPORTBIN_KW | IMPORT_KW | IF_KW | THEN_KW | ELSE_KW270 | FUNCTION_KW | ERROR_KW | IN_KW | NULL_KW | TRUE_KW | FALSE_KW | SELF_KW271 | SUPER_KW | FOR_KW | ASSERT_KW => true,272 _ => false,273 }274 }275 pub fn is_enum(self) -> bool {276 match self {277 SUFFIX | BIND | STMT | OBJ_BODY | COMP_SPEC | EXPR_BASE | MEMBER_COMP | MEMBER278 | FIELD_NAME | DESTRUCT | DESTRUCT_ARRAY_PART | BINARY_OPERATOR | UNARY_OPERATOR279 | LITERAL | TEXT | NUMBER | IMPORT_KIND | VISIBILITY | TRIVIA | CUSTOM_ERROR => true,280 _ => false,281 }282 }283 pub fn from_raw(r: u16) -> Self {284 assert!(r < Self::__LAST as u16);285 unsafe { std::mem::transmute(r) }286 }287 pub fn into_raw(self) -> u16 {288 self as u16289 }290}291#[macro_export]292macro_rules ! T { [||] => { $ crate :: SyntaxKind :: OR } ; [??] => { $ crate :: SyntaxKind :: NULL_COAELSE } ; [&&] => { $ crate :: SyntaxKind :: AND } ; [|] => { $ crate :: SyntaxKind :: BIT_OR } ; [^] => { $ crate :: SyntaxKind :: BIT_XOR } ; [&] => { $ crate :: SyntaxKind :: BIT_AND } ; [==] => { $ crate :: SyntaxKind :: EQ } ; [!=] => { $ crate :: SyntaxKind :: NE } ; [<] => { $ crate :: SyntaxKind :: LT } ; [>] => { $ crate :: SyntaxKind :: GT } ; [<=] => { $ crate :: SyntaxKind :: LE } ; [>=] => { $ crate :: SyntaxKind :: GE } ; [<<] => { $ crate :: SyntaxKind :: LHS } ; [>>] => { $ crate :: SyntaxKind :: RHS } ; [+] => { $ crate :: SyntaxKind :: PLUS } ; [-] => { $ crate :: SyntaxKind :: MINUS } ; [*] => { $ crate :: SyntaxKind :: MUL } ; [/] => { $ crate :: SyntaxKind :: DIV } ; [%] => { $ crate :: SyntaxKind :: MODULO } ; [!] => { $ crate :: SyntaxKind :: NOT } ; [~] => { $ crate :: SyntaxKind :: BIT_NOT } ; ['['] => { $ crate :: SyntaxKind :: L_BRACK } ; [']'] => { $ crate :: SyntaxKind :: R_BRACK } ; ['('] => { $ crate :: SyntaxKind :: L_PAREN } ; [')'] => { $ crate :: SyntaxKind :: R_PAREN } ; ['{'] => { $ crate :: SyntaxKind :: L_BRACE } ; ['}'] => { $ crate :: SyntaxKind :: R_BRACE } ; [:] => { $ crate :: SyntaxKind :: COLON } ; [::] => { $ crate :: SyntaxKind :: COLONCOLON } ; [:::] => { $ crate :: SyntaxKind :: COLONCOLONCOLON } ; [;] => { $ crate :: SyntaxKind :: SEMI } ; [.] => { $ crate :: SyntaxKind :: DOT } ; [...] => { $ crate :: SyntaxKind :: DOTDOTDOT } ; [,] => { $ crate :: SyntaxKind :: COMMA } ; ['$'] => { $ crate :: SyntaxKind :: DOLLAR } ; [=] => { $ crate :: SyntaxKind :: ASSIGN } ; [?] => { $ crate :: SyntaxKind :: QUESTION_MARK } ; [tailstrict] => { $ crate :: SyntaxKind :: TAILSTRICT_KW } ; [local] => { $ crate :: SyntaxKind :: LOCAL_KW } ; [importstr] => { $ crate :: SyntaxKind :: IMPORTSTR_KW } ; [importbin] => { $ crate :: SyntaxKind :: IMPORTBIN_KW } ; [import] => { $ crate :: SyntaxKind :: IMPORT_KW } ; [if] => { $ crate :: SyntaxKind :: IF_KW } ; [then] => { $ crate :: SyntaxKind :: THEN_KW } ; [else] => { $ crate :: SyntaxKind :: ELSE_KW } ; [function] => { $ crate :: SyntaxKind :: FUNCTION_KW } ; [error] => { $ crate :: SyntaxKind :: ERROR_KW } ; [in] => { $ crate :: SyntaxKind :: IN_KW } ; [null] => { $ crate :: SyntaxKind :: NULL_KW } ; [true] => { $ crate :: SyntaxKind :: TRUE_KW } ; [false] => { $ crate :: SyntaxKind :: FALSE_KW } ; [self] => { $ crate :: SyntaxKind :: SELF_KW } ; [super] => { $ crate :: SyntaxKind :: SUPER_KW } ; [for] => { $ crate :: SyntaxKind :: FOR_KW } ; [assert] => { $ crate :: SyntaxKind :: ASSERT_KW } }293#[allow(unused_imports)]294pub use T;crates/jrsonnet-rowan-parser/src/lex.rsdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/lex.rs
+++ b/crates/jrsonnet-rowan-parser/src/lex.rs
@@ -30,7 +30,7 @@
let mut kind = self.inner.next()?;
let text = self.inner.slice();
- if kind == STRING_BLOCK {
+ if kind == Ok(STRING_BLOCK) {
// We use custom lexer, which skips enough bytes, but not returns error
// Instead we should call lexer again to verify if there is something wrong with string block
let mut lexer = logos::Lexer::<SyntaxKind>::new(text);
@@ -41,20 +41,20 @@
match res {
Ok(_) => {}
Err(e) => {
- kind = match e {
+ kind = Ok(match e {
StringBlockError::UnexpectedEnd => ERROR_STRING_BLOCK_UNEXPECTED_END,
StringBlockError::MissingNewLine => ERROR_STRING_BLOCK_MISSING_NEW_LINE,
StringBlockError::MissingTermination => {
ERROR_STRING_BLOCK_MISSING_TERMINATION
}
StringBlockError::MissingIndent => ERROR_STRING_BLOCK_MISSING_INDENT,
- }
+ })
}
}
}
Some(Self::Item {
- kind,
+ kind: kind.unwrap_or(SyntaxKind::LEXING_ERROR),
text,
range: {
let Range { start, end } = self.inner.span();
crates/jrsonnet-rowan-parser/src/parser.rsdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/parser.rs
+++ b/crates/jrsonnet-rowan-parser/src/parser.rs
@@ -57,7 +57,7 @@
fn from(val: LocatedSyntaxError) -> Self {
let span = SourceSpan::new(
SourceOffset::from(usize::from(val.range.start())),
- SourceOffset::from(usize::from(val.range.end() - val.range.start())),
+ usize::from(val.range.end() - val.range.start()),
);
dbg!(&val);
match val.error {
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__continue_after_total_failure.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__continue_after_total_failure.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__continue_after_total_failure.snap
@@ -65,10 +65,10 @@
LocatedSyntaxError { error: Custom { error: "unexpected tokens after end" }, range: 29..67 }
===
x syntax error
- ,-[1:1]
+ ,-[1:15]
1 | ,-> local intr = $intrinsic(test);
- : || ^^^^|^^^^
- : || `-- expected L_BRACK, L_PAREN, L_BRACE, SEMI, DOT, COMMA or QUESTION_MARK, found IDENT
+ : | ^^^^|^^^^
+ : | `-- expected L_BRACK, L_PAREN, L_BRACE, SEMI, DOT, COMMA or QUESTION_MARK, found IDENT
2 | |
3 | | local a = 1, b = 2, c = a + b;
4 | |
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__local_no_value_recovery.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__local_no_value_recovery.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__local_no_value_recovery.snap
@@ -40,7 +40,7 @@
LocatedSyntaxError { error: Missing { expected: Named("expression") }, range: 25..25 }
===
x syntax error
- ,-[2:1]
+ ,-[3:3]
2 | local b = 3;
3 | 1
: ^^
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__unexpected_destruct.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__unexpected_destruct.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__unexpected_destruct.snap
@@ -26,7 +26,7 @@
LocatedSyntaxError { error: Unexpected { expected: Named("destruction specifier"), found: MUL }, range: 6..7 }
===
x syntax error
- ,-[1:1]
+ ,-[1:7]
1 | local * = 1;
: |
: `-- expected destruction specifier, found MUL
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__wrong_field_end.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__wrong_field_end.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__wrong_field_end.snap
@@ -39,7 +39,7 @@
LocatedSyntaxError { error: Unexpected { expected: Named("comma"), found: SEMI }, range: 14..15 }
===
x syntax error
- ,-[1:1]
+ ,-[2:6]
1 | {
2 | a: 1;
: |
xtask/src/sourcegen/kinds.rsdiffbeforeafterboth--- a/xtask/src/sourcegen/kinds.rs
+++ b/xtask/src/sourcegen/kinds.rs
@@ -273,7 +273,7 @@
lit("SINGLE_LINE_HASH_COMMENT") => r"#[^\r\n]*(\r\n|\n)?";
lit("MULTI_LINE_COMMENT") => r"/\*([^*]|\*[^/])*\*/";
error("COMMENT_TOO_SHORT") => r"/\*/";
- error("COMMENT_UNTERMINATED") => r"/\*([^*]|\*[^/])+";
+ error("COMMENT_UNTERMINATED") => r"/\*([^*/]|\*[^/])+";
];
kinds
}
xtask/src/sourcegen/mod.rsdiffbeforeafterboth--- a/xtask/src/sourcegen/mod.rs
+++ b/xtask/src/sourcegen/mod.rs
@@ -149,9 +149,8 @@
#[doc(hidden)]
EOF,
#(#token_kinds,)*
- /// Also acts as __LAST_TOKEN
- #[error]
LEXING_ERROR,
+ __LAST_TOKEN,
#(#nodes,)*
#[doc(hidden)]
__LAST,