From 144cb7462cc203fd79f21300183e97930d1636df Mon Sep 17 00:00:00 2001 From: Yaroslav Bolyukin Date: Thu, 12 Feb 2026 16:10:45 +0000 Subject: [PATCH] fix(rowan-parser): handle unhidden fields --- --- 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 } --- 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 } --- a/crates/jrsonnet-rowan-parser/src/lib.rs +++ b/crates/jrsonnet-rowan-parser/src/lib.rs @@ -21,8 +21,8 @@ pub use ast::{AstChildren, AstNode, AstToken}; pub use generated::{nodes, syntax_kinds::SyntaxKind}; pub use language::*; +pub use string_block::{collect_lexed_str_block, CollectStrBlock}; pub use token_set::SyntaxKindSet; -pub use string_block::{collect_lexed_str_block, CollectStrBlock}; use self::{ ast::support, --- 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); -- gitstuff