squawk-syntax 2.65.0

Linter for Postgres migrations & SQL
Documentation
---
source: crates/squawk_syntax/src/test.rs
input_file: crates/squawk_syntax/test_data/validation/create_procedure_params.sql
---
SOURCE_FILE@0..188
  CREATE_PROCEDURE@0..90
    CREATE_KW@0..6 "create"
    WHITESPACE@6..7 " "
    PROCEDURE_KW@7..16 "procedure"
    WHITESPACE@16..17 " "
    PROCEDURE_NAME@17..33
      PATH@17..33
        PATH_SEGMENT@17..33
          IDENT@17..33 "invalid_variadic"
    PARAM_LIST@33..70
      L_PAREN@33..34 "("
      PARAM@34..54
        PARAM_VARIADIC@34..42
          VARIADIC_KW@34..42 "variadic"
        WHITESPACE@42..43 " "
        PARAM_NAME@43..48
          IDENT@43..48 "items"
        WHITESPACE@48..49 " "
        ARRAY_TYPE@49..54
          PATH_TYPE@49..52
            PATH_REF@49..52
              PATH_SEGMENT_REF@49..52
                INT_KW@49..52 "int"
          ARRAY_BOUND@52..54
            L_BRACK@52..53 "["
            R_BRACK@53..54 "]"
      COMMA@54..55 ","
      WHITESPACE@55..56 " "
      PARAM@56..69
        PARAM_NAME@56..65
          FOLLOWING_KW@56..65 "following"
        WHITESPACE@65..66 " "
        PATH_TYPE@66..69
          PATH_REF@66..69
            PATH_SEGMENT_REF@66..69
              INT_KW@66..69 "int"
      R_PAREN@69..70 ")"
    WHITESPACE@70..71 "\n"
    FUNC_OPTION_LIST@71..89
      LANGUAGE_FUNC_OPTION@71..83
        LANGUAGE_KW@71..79 "language"
        WHITESPACE@79..80 " "
        LANGUAGE_REF@80..83
          SQL_KW@80..83 "sql"
      WHITESPACE@83..84 "\n"
      AS_FUNC_OPTION@84..89
        AS_KW@84..86 "as"
        WHITESPACE@86..87 " "
        AS_DEFINITION@87..89
          LITERAL@87..89
            STRING@87..89 "''"
    SEMICOLON@89..90 ";"
  WHITESPACE@90..92 "\n\n"
  CREATE_PROCEDURE@92..187
    CREATE_KW@92..98 "create"
    WHITESPACE@98..99 " "
    PROCEDURE_KW@99..108 "procedure"
    WHITESPACE@108..109 " "
    PROCEDURE_NAME@109..129
      PATH@109..129
        PATH_SEGMENT@109..129
          IDENT@109..129 "invalid_variadic_out"
    PARAM_LIST@129..167
      L_PAREN@129..130 "("
      PARAM@130..150
        PARAM_VARIADIC@130..138
          VARIADIC_KW@130..138 "variadic"
        WHITESPACE@138..139 " "
        PARAM_NAME@139..144
          IDENT@139..144 "items"
        WHITESPACE@144..145 " "
        ARRAY_TYPE@145..150
          PATH_TYPE@145..148
            PATH_REF@145..148
              PATH_SEGMENT_REF@145..148
                INT_KW@145..148 "int"
          ARRAY_BOUND@148..150
            L_BRACK@148..149 "["
            R_BRACK@149..150 "]"
      COMMA@150..151 ","
      WHITESPACE@151..152 " "
      PARAM@152..166
        PARAM_OUT@152..155
          OUT_KW@152..155 "out"
        WHITESPACE@155..156 " "
        PARAM_NAME@156..162
          IDENT@156..162 "result"
        WHITESPACE@162..163 " "
        PATH_TYPE@163..166
          PATH_REF@163..166
            PATH_SEGMENT_REF@163..166
              INT_KW@163..166 "int"
      R_PAREN@166..167 ")"
    WHITESPACE@167..168 "\n"
    FUNC_OPTION_LIST@168..186
      LANGUAGE_FUNC_OPTION@168..180
        LANGUAGE_KW@168..176 "language"
        WHITESPACE@176..177 " "
        LANGUAGE_REF@177..180
          SQL_KW@177..180 "sql"
      WHITESPACE@180..181 "\n"
      AS_FUNC_OPTION@181..186
        AS_KW@181..183 "as"
        WHITESPACE@183..184 " "
        AS_DEFINITION@184..186
          LITERAL@184..186
            STRING@184..186 "''"
    SEMICOLON@186..187 ";"
  WHITESPACE@187..188 "\n"

error[syntax-error]: VARIADIC param must be last input param.
  ╭▸ 
1 │ create procedure invalid_variadic(variadic items int[], following int)
  ╰╴                                                        ━━━━━━━━━━━━━
error[syntax-error]: VARIADIC param must be last.
  ╭▸ 
5 │ create procedure invalid_variadic_out(variadic items int[], out result int)
  ╰╴                                                            ━━━━━━━━━━━━━━