difftreelog
fix(rowan-parser) handle unhidden fields
in: master
4 files changed
crates/jrsonnet-formatter/src/snapshots/jrsonnet_formatter__tests__snapshots@basic_object.jsonnet.snapdiffbeforeafterboth--- a/crates/jrsonnet-formatter/src/snapshots/jrsonnet_formatter__tests__snapshots@basic_object.jsonnet.snap
+++ b/crates/jrsonnet-formatter/src/snapshots/jrsonnet_formatter__tests__snapshots@basic_object.jsonnet.snap
@@ -3,4 +3,4 @@
expression: reformat(&input)
input_file: crates/jrsonnet-formatter/src/tests/basic_object.jsonnet
---
-{ foo: 'bar', baz: 'qux', nested: { a: 1, b: 2 } }
+{ foo: 'bar', baz: 'qux', nested: { a: 1, b: 2 }, unhidden::: 1 }
crates/jrsonnet-formatter/src/tests/basic_object.jsonnetdiffbeforeafterboth--- a/crates/jrsonnet-formatter/src/tests/basic_object.jsonnet
+++ b/crates/jrsonnet-formatter/src/tests/basic_object.jsonnet
@@ -1 +1 @@
-{ foo: 'bar', baz: 'qux', nested: { a: 1, b: 2 } }
+{ foo: 'bar', baz: 'qux', nested: { a: 1, b: 2 }, unhidden::: 1 }
crates/jrsonnet-rowan-parser/src/lib.rsdiffbeforeafterboth21pub use ast::{AstChildren, AstNode, AstToken};21pub use ast::{AstChildren, AstNode, AstToken};22pub use generated::{nodes, syntax_kinds::SyntaxKind};22pub use generated::{nodes, syntax_kinds::SyntaxKind};23pub use language::*;23pub use language::*;24pub use token_set::SyntaxKindSet;25pub use string_block::{collect_lexed_str_block, CollectStrBlock};24pub use string_block::{collect_lexed_str_block, CollectStrBlock};25pub use token_set::SyntaxKindSet;262627use self::{27use self::{28 ast::support,28 ast::support,crates/jrsonnet-rowan-parser/src/parser.rsdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/parser.rs
+++ b/crates/jrsonnet-rowan-parser/src/parser.rs
@@ -407,11 +407,13 @@
m.complete(p, FIELD_NAME_FIXED);
} else {
m.forget(p);
- p.error_with_recovery_set(TS![; : :: ::: '(']);
+ // ::: it split because in TS it is being handled as : ::
+ p.error_with_recovery_set(TS![; : :: '('].with(T![:::]));
}
}
fn visibility(p: &mut Parser) {
- if p.at_ts(TS![: :: :::]) {
+ // ::: it split because in TS it is being handled as : ::
+ if p.at_ts(TS![: ::].with(T![:::])) {
p.bump();
} else {
p.error_with_recovery_set(TS![=]);
@@ -471,7 +473,8 @@
visibility(p);
expr(p);
true
- } else if p.at_ts(TS![: :: :::]) && p.nth_at(1, T![function]) {
+ // ::: it split because in TS it is being handled as : ::
+ } else if p.at_ts(TS![: ::].with(T![:::])) && p.nth_at(1, T![function]) {
visibility(p);
p.bump_assert(T![function]);
params_desc(p);