@@ -154,7 +154,8 @@ fn walk_and_build(
154154 | SyntaxKind :: set_target_list
155155 | SyntaxKind :: insert_column_list
156156 | SyntaxKind :: index_params
157- | SyntaxKind :: values_clause) => {
157+ | SyntaxKind :: values_clause
158+ | SyntaxKind :: TableFuncElementList ) => {
158159 if parent_kind == child_kind {
159160 // [Node: Flatten]
160161 //
325326 cst,
326327 syntax_kind:: SyntaxKind ,
327328 tree_sitter:: {
328- assert_util:: { assert_no_direct_nested_kind, assert_node_count} ,
329+ assert_util:: {
330+ assert_direct_nested_kind, assert_no_direct_nested_kind, assert_node_count,
331+ } ,
329332 convert:: get_ts_tree_and_range_map,
330333 } ,
331334 } ;
336339
337340 let root = cst:: parse ( input) . unwrap ( ) ;
338341 assert_node_count ( & root, SyntaxKind :: target_list, 3 ) ;
342+ assert_direct_nested_kind ( & root, SyntaxKind :: target_list) ;
339343
340344 let ( new_root, _) = get_ts_tree_and_range_map ( input, & root) ;
341345 assert_node_count ( & new_root, SyntaxKind :: target_list, 1 ) ;
@@ -346,17 +350,19 @@ FROM
346350 fn no_nested_stmtmulti ( ) {
347351 let input = "select a,b,c;\n select d,e from t;" ;
348352 let root = cst:: parse ( input) . unwrap ( ) ;
349- let ( new_root , _ ) = get_ts_tree_and_range_map ( input , & root) ;
353+ assert_direct_nested_kind ( & root, SyntaxKind :: stmtmulti ) ;
350354
355+ let ( new_root, _) = get_ts_tree_and_range_map ( input, & root) ;
351356 assert_no_direct_nested_kind ( & new_root, SyntaxKind :: stmtmulti) ;
352357 }
353358
354359 #[ test]
355360 fn no_nested_from_list ( ) {
356361 let input = "select * from t1, t2;" ;
357362 let root = cst:: parse ( input) . unwrap ( ) ;
358- let ( new_root , _ ) = get_ts_tree_and_range_map ( input , & root) ;
363+ assert_direct_nested_kind ( & root, SyntaxKind :: from_list ) ;
359364
365+ let ( new_root, _) = get_ts_tree_and_range_map ( input, & root) ;
360366 assert_no_direct_nested_kind ( & new_root, SyntaxKind :: from_list) ;
361367 }
362368
@@ -365,135 +371,160 @@ FROM
365371 let input =
366372 "select t.a, t.b.c, t1.*, a[1], a[4][5], a[2:5], a[3].b, a[3][4].b, a[3:5].b;" ;
367373 let root = cst:: parse ( input) . unwrap ( ) ;
368- let ( new_root , _ ) = get_ts_tree_and_range_map ( input , & root) ;
374+ assert_direct_nested_kind ( & root, SyntaxKind :: indirection ) ;
369375
376+ let ( new_root, _) = get_ts_tree_and_range_map ( input, & root) ;
370377 assert_no_direct_nested_kind ( & new_root, SyntaxKind :: indirection) ;
371378 }
372379
373380 #[ test]
374381 fn no_nested_expr_list ( ) {
375382 let input = "select a from t where a in (1,2,3);" ;
376383 let root = cst:: parse ( input) . unwrap ( ) ;
377- let ( new_root , _ ) = get_ts_tree_and_range_map ( input , & root) ;
384+ assert_direct_nested_kind ( & root, SyntaxKind :: expr_list ) ;
378385
386+ let ( new_root, _) = get_ts_tree_and_range_map ( input, & root) ;
379387 assert_no_direct_nested_kind ( & new_root, SyntaxKind :: expr_list) ;
380388 }
381389
382390 #[ test]
383391 fn no_nested_func_arg_list ( ) {
384392 let input = "select func(1, 2, func2(3, 4), 5);" ;
385393 let root = cst:: parse ( input) . unwrap ( ) ;
386- let ( new_root , _ ) = get_ts_tree_and_range_map ( input , & root) ;
394+ assert_direct_nested_kind ( & root, SyntaxKind :: func_arg_list ) ;
387395
396+ let ( new_root, _) = get_ts_tree_and_range_map ( input, & root) ;
388397 assert_no_direct_nested_kind ( & new_root, SyntaxKind :: func_arg_list) ;
389398 }
390399
391400 #[ test]
392401 fn no_nested_when_clause_list ( ) {
393402 let input = "select case when a then b when c then d when e then f else g end;" ;
394403 let root = cst:: parse ( input) . unwrap ( ) ;
395- let ( new_root , _ ) = get_ts_tree_and_range_map ( input , & root) ;
404+ assert_direct_nested_kind ( & root, SyntaxKind :: when_clause_list ) ;
396405
406+ let ( new_root, _) = get_ts_tree_and_range_map ( input, & root) ;
397407 assert_no_direct_nested_kind ( & new_root, SyntaxKind :: when_clause_list) ;
398408 }
399409
400410 #[ test]
401411 fn no_nested_sortby_list ( ) {
402412 let input = "select * from t order by a, b, c;" ;
403413 let root = cst:: parse ( input) . unwrap ( ) ;
404- let ( new_root , _ ) = get_ts_tree_and_range_map ( input , & root) ;
414+ assert_direct_nested_kind ( & root, SyntaxKind :: sortby_list ) ;
405415
416+ let ( new_root, _) = get_ts_tree_and_range_map ( input, & root) ;
406417 assert_no_direct_nested_kind ( & new_root, SyntaxKind :: sortby_list) ;
407418 }
408419
409420 #[ test]
410421 fn no_nested_groupby_list ( ) {
411422 let input = "select a, b, c from t group by a, b, c;" ;
412423 let root = cst:: parse ( input) . unwrap ( ) ;
413- let ( new_root , _ ) = get_ts_tree_and_range_map ( input , & root) ;
424+ assert_direct_nested_kind ( & root, SyntaxKind :: group_by_list ) ;
414425
426+ let ( new_root, _) = get_ts_tree_and_range_map ( input, & root) ;
415427 assert_no_direct_nested_kind ( & new_root, SyntaxKind :: group_by_list) ;
416428 }
417429
418430 #[ test]
419431 fn no_nested_for_locking_items ( ) {
420432 let input = "select * from t1, t2 for update of t1 for update of t2;" ;
421433 let root = cst:: parse ( input) . unwrap ( ) ;
422- let ( new_root , _ ) = get_ts_tree_and_range_map ( input , & root) ;
434+ assert_direct_nested_kind ( & root, SyntaxKind :: for_locking_items ) ;
423435
436+ let ( new_root, _) = get_ts_tree_and_range_map ( input, & root) ;
424437 assert_no_direct_nested_kind ( & new_root, SyntaxKind :: for_locking_items) ;
425438 }
426439
427440 #[ test]
428441 fn no_nested_qualified_name_list ( ) {
429442 let input = "select a from t for update of t.a, t.b;" ;
430443 let root = cst:: parse ( input) . unwrap ( ) ;
431- let ( new_root , _ ) = get_ts_tree_and_range_map ( input , & root) ;
444+ assert_direct_nested_kind ( & root, SyntaxKind :: qualified_name_list ) ;
432445
446+ let ( new_root, _) = get_ts_tree_and_range_map ( input, & root) ;
433447 assert_no_direct_nested_kind ( & new_root, SyntaxKind :: qualified_name_list) ;
434448 }
435449
436450 #[ test]
437451 fn no_nested_cte_list ( ) {
438452 let input = "with a as (select 1), b as (select 2) select * from a, b;" ;
439453 let root = cst:: parse ( input) . unwrap ( ) ;
440- let ( new_root , _ ) = get_ts_tree_and_range_map ( input , & root) ;
454+ assert_direct_nested_kind ( & root, SyntaxKind :: cte_list ) ;
441455
456+ let ( new_root, _) = get_ts_tree_and_range_map ( input, & root) ;
442457 assert_no_direct_nested_kind ( & new_root, SyntaxKind :: cte_list) ;
443458 }
444459
445460 #[ test]
446461 fn no_nested_name_list ( ) {
447462 let input = "with t (a, b) as (select 1) select * from t;" ;
448463 let root = cst:: parse ( input) . unwrap ( ) ;
449- let ( new_root , _ ) = get_ts_tree_and_range_map ( input , & root) ;
464+ assert_direct_nested_kind ( & root, SyntaxKind :: name_list ) ;
450465
466+ let ( new_root, _) = get_ts_tree_and_range_map ( input, & root) ;
451467 assert_no_direct_nested_kind ( & new_root, SyntaxKind :: name_list) ;
452468 }
453469
454470 #[ test]
455471 fn no_nested_set_clause_list ( ) {
456472 let input = "update t set a = 1, b = 2, c = 3;" ;
457473 let root = cst:: parse ( input) . unwrap ( ) ;
458- let ( new_root , _ ) = get_ts_tree_and_range_map ( input , & root) ;
474+ assert_direct_nested_kind ( & root, SyntaxKind :: set_clause_list ) ;
459475
476+ let ( new_root, _) = get_ts_tree_and_range_map ( input, & root) ;
460477 assert_no_direct_nested_kind ( & new_root, SyntaxKind :: set_clause_list) ;
461478 }
462479
463480 #[ test]
464481 fn no_nested_set_target_list ( ) {
465482 let input = "update t set (a, b, c) = (1, 2, 3) where id = 1;" ;
466483 let root = cst:: parse ( input) . unwrap ( ) ;
467- let ( new_root , _ ) = get_ts_tree_and_range_map ( input , & root) ;
484+ assert_direct_nested_kind ( & root, SyntaxKind :: set_target_list ) ;
468485
486+ let ( new_root, _) = get_ts_tree_and_range_map ( input, & root) ;
469487 assert_no_direct_nested_kind ( & new_root, SyntaxKind :: set_target_list) ;
470488 }
471489
472490 #[ test]
473491 fn no_nested_insert_column_list ( ) {
474492 let input = "insert into t (a, b, c) values (1, 2, 3);" ;
475493 let root = cst:: parse ( input) . unwrap ( ) ;
476- let ( new_root , _ ) = get_ts_tree_and_range_map ( input , & root) ;
494+ assert_direct_nested_kind ( & root, SyntaxKind :: insert_column_list ) ;
477495
496+ let ( new_root, _) = get_ts_tree_and_range_map ( input, & root) ;
478497 assert_no_direct_nested_kind ( & new_root, SyntaxKind :: insert_column_list) ;
479498 }
480499
481500 #[ test]
482501 fn no_nested_index_params ( ) {
483502 let input = "insert into t (a, b, c) values (1, 2, 3) on conflict (a, b) do nothing;" ;
484503 let root = cst:: parse ( input) . unwrap ( ) ;
485- let ( new_root , _ ) = get_ts_tree_and_range_map ( input , & root) ;
504+ assert_direct_nested_kind ( & root, SyntaxKind :: index_params ) ;
486505
506+ let ( new_root, _) = get_ts_tree_and_range_map ( input, & root) ;
487507 assert_no_direct_nested_kind ( & new_root, SyntaxKind :: index_params) ;
488508 }
489509
490510 #[ test]
491511 fn no_nested_values_clause ( ) {
492512 let input = "values (1,2,3), (4,5,6), (7,8,9);" ;
493513 let root = cst:: parse ( input) . unwrap ( ) ;
494- let ( new_root , _ ) = get_ts_tree_and_range_map ( input , & root) ;
514+ assert_direct_nested_kind ( & root, SyntaxKind :: values_clause ) ;
495515
516+ let ( new_root, _) = get_ts_tree_and_range_map ( input, & root) ;
496517 assert_no_direct_nested_kind ( & new_root, SyntaxKind :: values_clause) ;
497518 }
519+
520+ #[ test]
521+ fn no_nested_table_func_element_list ( ) {
522+ let input = "select * from unnest(a) as (x int, y text);" ;
523+ let root = cst:: parse ( input) . unwrap ( ) ;
524+ assert_direct_nested_kind ( & root, SyntaxKind :: TableFuncElementList ) ;
525+
526+ let ( new_root, _) = get_ts_tree_and_range_map ( input, & root) ;
527+ assert_no_direct_nested_kind ( & new_root, SyntaxKind :: TableFuncElementList ) ;
528+ }
498529 }
499530}
0 commit comments