---
source: crates/squawk_syntax/src/test.rs
input_file: crates/squawk_parser/tests/data/plpgsql/err/loop_stmt.sql
---
PLPGSQL@0..114
WHITESPACE@0..1 "\n"
PLPGSQL_BLOCK@1..113
BEGIN_KW@1..6 "begin"
WHITESPACE@6..9 "\n "
PLPGSQL_BODY@9..113
PLPGSQL_LOOP_STMT@9..30
LOOP_KW@9..13 "loop"
WHITESPACE@13..18 "\n "
PLPGSQL_BODY@18..23
PLPGSQL_NULL_STMT@18..23
NULL_KW@18..22 "null"
SEMICOLON@22..23 ";"
WHITESPACE@23..26 "\n "
END_KW@26..29 "end"
SEMICOLON@29..30 ";"
WHITESPACE@30..34 "\n\n "
PLPGSQL_WHILE_STMT@34..67
WHILE_KW@34..39 "while"
WHITESPACE@39..40 " "
PLPGSQL_EXPR@40..54
TARGET_LIST@40..54
TARGET@40..54
BIN_EXPR@40..45
LITERAL@40..41
INT_NUMBER@40..41 "1"
WHITESPACE@41..42 " "
EQ@42..43 "="
WHITESPACE@43..44 " "
LITERAL@44..45
INT_NUMBER@44..45 "1"
WHITESPACE@45..50 "\n "
AS_NAME@50..54
COLUMN_NAME@50..54
NULL_KW@50..54 "null"
PLPGSQL_BODY@54..55
ERROR@54..55
SEMICOLON@54..55 ";"
WHITESPACE@55..58 "\n "
END_KW@58..61 "end"
WHITESPACE@61..62 " "
LOOP_KW@62..66 "loop"
SEMICOLON@66..67 ";"
WHITESPACE@67..71 "\n\n "
PLPGSQL_LOOP_STMT@71..104
LOOP_KW@71..75 "loop"
WHITESPACE@75..80 "\n "
PLPGSQL_BODY@80..85
PLPGSQL_NULL_STMT@80..85
NULL_KW@80..84 "null"
SEMICOLON@84..85 ";"
WHITESPACE@85..88 "\n "
END_KW@88..91 "end"
WHITESPACE@91..92 " "
LOOP_KW@92..96 "loop"
WHITESPACE@96..100 "\n\n "
PLPGSQL_LABEL_NAME_REF@100..104
IDENT@100..104 "exit"
WHITESPACE@104..105 " "
ERROR@105..113
WHEN_KW@105..109 "when"
WHITESPACE@109..110 "\n"
END_KW@110..113 "end"
WHITESPACE@113..114 "\n"
error[syntax-error]: expected LOOP_KW
╭▸
5 │ end;
╰╴ ━
error[syntax-error]: expected LOOP_KW
╭▸
8 │ null;
╰╴ ━
error[syntax-error]: expected a statement, got SEMICOLON
╭▸
8 │ null;
╰╴ ━
error[syntax-error]: expected SEMICOLON
╭▸
15 │ exit when
╰╴ ━
error[syntax-error]: expected a statement, got WHEN_KW
╭▸
15 │ exit when
╰╴ ━
error[syntax-error]: expected END_KW
╭▸
16 │ end
╰╴ ━