MCPcopy Create free account
hub / github.com/hashintel/hash / nested_arrays

Function nested_arrays

libs/@local/hashql/syntax-jexpr/src/parser/array/visit.rs:422–459  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

420
421 #[test]
422 fn nested_arrays() {
423 bind_context!(let context = "[[1, 2], [3, 4]]");
424 bind_state!(let mut state from context);
425
426 let token = state
427 .advance(SyntaxKind::LBracket)
428 .expect("should have at least one token");
429 assert_eq!(token.kind.syntax(), SyntaxKind::LBracket);
430
431 let mut outer_items = Vec::new();
432 let result: Result<_, ArrayDiagnostic> = visit_array(&mut state, token, |state| {
433 let token = state
434 .advance(SyntaxKindSet::COMPLETE)
435 .expect("should have at least one token");
436 outer_items.push(token.kind.syntax());
437
438 if token.kind.syntax() == SyntaxKind::LBracket {
439 let mut inner_items = Vec::new();
440 let inner_result: Result<_, ArrayDiagnostic> = visit_array(state, token, |state| {
441 let token = state
442 .advance(SyntaxKindSet::COMPLETE)
443 .expect("should have at least one token");
444 inner_items.push(token.kind.syntax());
445 Ok(())
446 });
447
448 inner_result.expect("should be able to parse nested array");
449 assert!(!inner_items.is_empty(), "Nested array should have items");
450 }
451
452 Ok(())
453 });
454
455 let range = result.expect("should be able to parse nested arrays");
456 assert_eq!(range.start(), TextSize::new(0));
457 assert_eq!(range.end(), TextSize::new(16));
458 assert_eq!(outer_items, [SyntaxKind::LBracket, SyntaxKind::LBracket]);
459 }
460
461 #[expect(clippy::panic_in_result_fn)]
462 fn process_nested_array(

Callers

nothing calls this directly

Calls 6

visit_arrayFunction · 0.85
OkInterface · 0.85
syntaxMethod · 0.80
pushMethod · 0.65
expectMethod · 0.45
advanceMethod · 0.45

Tested by

no test coverage detected