squawk-syntax 2.66.0

Linter for Postgres migrations & SQL
Documentation
---
source: crates/squawk_syntax/src/test.rs
input_file: crates/squawk_parser/tests/data/plpgsql/err/get_diag_stmt.sql
---
PLPGSQL@0..178
  WHITESPACE@0..1 "\n"
  PLPGSQL_BLOCK@1..177
    PLPGSQL_DECLARE_SECTION@1..17
      DECLARE_KW@1..8 "declare"
      WHITESPACE@8..11 "\n  "
      PLPGSQL_VAR_DECL@11..17
        PLPGSQL_VAR_NAME@11..12
          IDENT@11..12 "x"
        WHITESPACE@12..13 " "
        PATH_TYPE@13..16
          PATH_REF@13..16
            PATH_SEGMENT_REF@13..16
              INT_KW@13..16 "int"
        SEMICOLON@16..17 ";"
    WHITESPACE@17..18 "\n"
    BEGIN_KW@18..23 "begin"
    WHITESPACE@23..26 "\n  "
    PLPGSQL_BODY@26..173
      PLPGSQL_GET_DIAG_STMT@26..52
        GET_KW@26..29 "get"
        WHITESPACE@29..30 " "
        DIAGNOSTICS_KW@30..41 "diagnostics"
        WHITESPACE@41..42 " "
        PLPGSQL_DIAG_ITEM_LIST@42..51
          PLPGSQL_DIAG_ITEM@42..51
            PLPGSQL_DIAG_TARGET@42..43
              PLPGSQL_VAR_NAME_REF@42..43
                IDENT@42..43 "x"
            WHITESPACE@43..44 " "
            EQ@44..45 "="
            WHITESPACE@45..46 " "
            PLPGSQL_DIAG_KIND@46..51
              IDENT@46..51 "bogus"
        SEMICOLON@51..52 ";"
      WHITESPACE@52..55 "\n  "
      PLPGSQL_GET_DIAG_STMT@55..87
        GET_KW@55..58 "get"
        WHITESPACE@58..59 " "
        DIAGNOSTICS_KW@59..70 "diagnostics"
        WHITESPACE@70..71 " "
        PLPGSQL_DIAG_ITEM_LIST@71..86
          PLPGSQL_DIAG_ITEM@71..86
            PLPGSQL_DIAG_TARGET@71..72
              PLPGSQL_VAR_NAME_REF@71..72
                IDENT@71..72 "x"
            WHITESPACE@72..73 " "
            EQ@73..74 "="
            WHITESPACE@74..75 " "
            PLPGSQL_DIAG_KIND@75..86
              IDENT@75..86 "\"row_count\""
        SEMICOLON@86..87 ";"
      WHITESPACE@87..90 "\n  "
      PLPGSQL_GET_DIAG_STMT@90..118
        GET_KW@90..93 "get"
        WHITESPACE@93..94 " "
        DIAGNOSTICS_KW@94..105 "diagnostics"
        WHITESPACE@105..106 " "
        PLPGSQL_DIAG_ITEM_LIST@106..117
          PLPGSQL_DIAG_ITEM@106..117
            PLPGSQL_DIAG_TARGET@106..107
              PLPGSQL_VAR_NAME_REF@106..107
                IDENT@106..107 "x"
            WHITESPACE@107..108 " "
            PLPGSQL_DIAG_KIND@108..117
              ROW_COUNT_KW@108..117 "row_count"
        SEMICOLON@117..118 ";"
      WHITESPACE@118..121 "\n  "
      PLPGSQL_GET_DIAG_STMT@121..154
        GET_KW@121..124 "get"
        WHITESPACE@124..125 " "
        DIAGNOSTICS_KW@125..136 "diagnostics"
        WHITESPACE@136..137 " "
        PLPGSQL_DIAG_ITEM_LIST@137..153
          PLPGSQL_DIAG_ITEM@137..153
            PLPGSQL_DIAG_TARGET@137..141
              PLPGSQL_VAR_NAME_REF@137..138
                IDENT@137..138 "x"
              ERROR@138..141
                INDEX_ACCESSOR@138..141
                  L_BRACK@138..139 "["
                  LITERAL@139..140
                    INT_NUMBER@139..140 "1"
                  R_BRACK@140..141 "]"
            WHITESPACE@141..142 " "
            EQ@142..143 "="
            WHITESPACE@143..144 " "
            PLPGSQL_DIAG_KIND@144..153
              ROW_COUNT_KW@144..153 "row_count"
        SEMICOLON@153..154 ";"
      WHITESPACE@154..157 "\n  "
      PLPGSQL_GET_DIAG_STMT@157..173
        GET_KW@157..160 "get"
        WHITESPACE@160..161 " "
        DIAGNOSTICS_KW@161..172 "diagnostics"
        PLPGSQL_DIAG_ITEM_LIST@172..172
          PLPGSQL_DIAG_ITEM@172..172
        SEMICOLON@172..173 ";"
    WHITESPACE@173..174 "\n"
    END_KW@174..177 "end"
  WHITESPACE@177..178 "\n"

error[syntax-error]: unrecognized GET DIAGNOSTICS item
  ╭▸ 
5 │   get diagnostics x = bogus;
  ╰╴                      ━
error[syntax-error]: unrecognized GET DIAGNOSTICS item
  ╭▸ 
6 │   get diagnostics x = "row_count";
  ╰╴                      ━
error[syntax-error]: expected EQ
  ╭▸ 
7 │   get diagnostics x row_count;
  ╰╴                   ━
error[syntax-error]: subscript not allowed
  ╭▸ 
8 │   get diagnostics x[1] = row_count;
  ╰╴                   ━
error[syntax-error]: expected a diagnostics target, got SEMICOLON
  ╭▸ 
9 │   get diagnostics;
  ╰╴                 ━