---
source: crates/squawk_syntax/src/test.rs
input_file: crates/squawk_parser/tests/data/plpgsql/err/if_stmt.sql
---
PLPGSQL@0..248
WHITESPACE@0..1 "\n"
PLPGSQL_BLOCK@1..247
BEGIN_KW@1..6 "begin"
WHITESPACE@6..9 "\n "
PLPGSQL_BODY@9..243
PLPGSQL_IF_STMT@9..37
IF_KW@9..11 "if"
WHITESPACE@11..12 " "
PLPGSQL_EXPR@12..26
TARGET_LIST@12..26
TARGET@12..26
BIN_EXPR@12..17
LITERAL@12..13
INT_NUMBER@12..13 "1"
WHITESPACE@13..14 " "
EQ@14..15 "="
WHITESPACE@15..16 " "
LITERAL@16..17
INT_NUMBER@16..17 "1"
WHITESPACE@17..22 "\n "
AS_NAME@22..26
COLUMN_NAME@22..26
NULL_KW@22..26 "null"
PLPGSQL_BODY@26..27
ERROR@26..27
SEMICOLON@26..27 ";"
WHITESPACE@27..30 "\n "
END_KW@30..33 "end"
WHITESPACE@33..34 " "
IF_KW@34..36 "if"
SEMICOLON@36..37 ";"
WHITESPACE@37..41 "\n\n "
PLPGSQL_IF_STMT@41..120
IF_KW@41..43 "if"
WHITESPACE@43..44 " "
PLPGSQL_EXPR@44..49
TARGET_LIST@44..49
TARGET@44..49
BIN_EXPR@44..49
LITERAL@44..45
INT_NUMBER@44..45 "1"
WHITESPACE@45..46 " "
EQ@46..47 "="
WHITESPACE@47..48 " "
LITERAL@48..49
INT_NUMBER@48..49 "1"
WHITESPACE@49..50 " "
THEN_KW@50..54 "then"
WHITESPACE@54..59 "\n "
PLPGSQL_BODY@59..64
PLPGSQL_NULL_STMT@59..64
NULL_KW@59..63 "null"
SEMICOLON@63..64 ";"
WHITESPACE@64..67 "\n "
PLPGSQL_ELSE_CLAUSE@67..110
ELSE_KW@67..71 "else"
WHITESPACE@71..76 "\n "
PLPGSQL_BODY@76..110
PLPGSQL_NULL_STMT@76..81
NULL_KW@76..80 "null"
SEMICOLON@80..81 ";"
WHITESPACE@81..84 "\n "
PLPGSQL_EXEC_SQL_STMT@84..110
ERROR@84..89
IDENT@84..89 "elsif"
WHITESPACE@89..90 " "
ERROR@90..109
INT_NUMBER@90..91 "1"
WHITESPACE@91..92 " "
EQ@92..93 "="
WHITESPACE@93..94 " "
INT_NUMBER@94..95 "2"
WHITESPACE@95..96 " "
THEN_KW@96..100 "then"
WHITESPACE@100..105 "\n "
NULL_KW@105..109 "null"
SEMICOLON@109..110 ";"
WHITESPACE@110..113 "\n "
END_KW@113..116 "end"
WHITESPACE@116..117 " "
IF_KW@117..119 "if"
SEMICOLON@119..120 ";"
WHITESPACE@120..124 "\n\n "
PLPGSQL_IF_STMT@124..234
IF_KW@124..126 "if"
WHITESPACE@126..127 " "
PLPGSQL_EXPR@127..156
TARGET_LIST@127..156
TARGET@127..156
BIN_EXPR@127..156
CASE_EXPR@127..152
CASE_KW@127..131 "case"
WHITESPACE@131..132 " "
WHEN_CLAUSE_LIST@132..148
WHEN_CLAUSE@132..148
WHEN_KW@132..136 "when"
WHITESPACE@136..137 " "
LITERAL@137..141
TRUE_KW@137..141 "true"
WHITESPACE@141..142 " "
THEN_KW@142..146 "then"
WHITESPACE@146..147 " "
LITERAL@147..148
INT_NUMBER@147..148 "1"
WHITESPACE@148..149 " "
END_KW@149..152 "end"
WHITESPACE@152..153 " "
EQ@153..154 "="
WHITESPACE@154..155 " "
LITERAL@155..156
INT_NUMBER@155..156 "1"
WHITESPACE@156..157 " "
THEN_KW@157..161 "then"
WHITESPACE@161..166 "\n "
PLPGSQL_BODY@166..171
PLPGSQL_NULL_STMT@166..171
NULL_KW@166..170 "null"
SEMICOLON@170..171 ";"
WHITESPACE@171..174 "\n "
PLPGSQL_ELSIF_CLAUSE@174..224
ELSIF_KW@174..179 "elsif"
WHITESPACE@179..180 " "
PLPGSQL_EXPR@180..209
TARGET_LIST@180..209
TARGET@180..209
BIN_EXPR@180..209
LITERAL@180..181
INT_NUMBER@180..181 "1"
WHITESPACE@181..182 " "
EQ@182..183 "="
WHITESPACE@183..184 " "
CASE_EXPR@184..209
CASE_KW@184..188 "case"
WHITESPACE@188..189 " "
WHEN_CLAUSE_LIST@189..205
WHEN_CLAUSE@189..205
WHEN_KW@189..193 "when"
WHITESPACE@193..194 " "
LITERAL@194..198
TRUE_KW@194..198 "true"
WHITESPACE@198..199 " "
THEN_KW@199..203 "then"
WHITESPACE@203..204 " "
LITERAL@204..205
INT_NUMBER@204..205 "1"
WHITESPACE@205..206 " "
END_KW@206..209 "end"
WHITESPACE@209..210 " "
THEN_KW@210..214 "then"
WHITESPACE@214..219 "\n "
PLPGSQL_BODY@219..224
PLPGSQL_NULL_STMT@219..224
NULL_KW@219..223 "null"
SEMICOLON@223..224 ";"
WHITESPACE@224..227 "\n "
END_KW@227..230 "end"
WHITESPACE@230..231 " "
IF_KW@231..233 "if"
SEMICOLON@233..234 ";"
WHITESPACE@234..238 "\n\n "
PLPGSQL_NULL_STMT@238..243
NULL_KW@238..242 "null"
SEMICOLON@242..243 ";"
WHITESPACE@243..244 "\n"
END_KW@244..247 "end"
WHITESPACE@247..248 "\n"
error[syntax-error]: expected THEN_KW
╭▸
4 │ null;
╰╴ ━
error[syntax-error]: expected a statement, got SEMICOLON
╭▸
4 │ null;
╰╴ ━
error[syntax-error]: expected command, found IDENT
╭▸
11 │ elsif 1 = 2 then
╰╴ ━
error[syntax-error]: expected SEMICOLON, got INT_NUMBER
╭▸
11 │ elsif 1 = 2 then
╰╴ ━
error[syntax-error]: CASE expression must be parenthesized
╭▸
15 │ if case when true then 1 end = 1 then
╰╴ ━━━━━━━━━━━━━━━━━━━━━━━━━
error[syntax-error]: CASE expression must be parenthesized
╭▸
17 │ elsif 1 = case when true then 1 end then
╰╴ ━━━━━━━━━━━━━━━━━━━━━━━━━