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/comment.sql
---
SOURCE_FILE@0..250
  COMMENT_ON@0..61
    COMMENT_KW@0..7 "comment"
    WHITESPACE@7..8 " "
    ON_KW@8..10 "on"
    WHITESPACE@10..11 " "
    OBJECT_FUNCTION@11..46
      FUNCTION_KW@11..19 "function"
      WHITESPACE@19..20 " "
      FUNCTION_SIG@20..46
        FUNCTION_NAME_REF@20..21
          PATH_REF@20..21
            PATH_SEGMENT_REF@20..21
              IDENT@20..21 "f"
        PARAM_LIST@21..46
          L_PAREN@21..22 "("
          PARAM@22..45
            PARAM_NAME@22..27
              VALUE_KW@22..27 "value"
            WHITESPACE@27..28 " "
            PATH_TYPE@28..35
              PATH_REF@28..35
                PATH_SEGMENT_REF@28..35
                  INTEGER_KW@28..35 "integer"
            WHITESPACE@35..36 " "
            PARAM_DEFAULT@36..45
              DEFAULT_KW@36..43 "default"
              WHITESPACE@43..44 " "
              LITERAL@44..45
                INT_NUMBER@44..45 "1"
          R_PAREN@45..46 ")"
    WHITESPACE@46..47 " "
    IS_KW@47..49 "is"
    WHITESPACE@49..50 " "
    LITERAL@50..60
      STRING@50..60 "'function'"
    SEMICOLON@60..61 ";"
  WHITESPACE@61..62 "\n"
  COMMENT_ON@62..125
    COMMENT_KW@62..69 "comment"
    WHITESPACE@69..70 " "
    ON_KW@70..72 "on"
    WHITESPACE@72..73 " "
    OBJECT_PROCEDURE@73..109
      PROCEDURE_KW@73..82 "procedure"
      WHITESPACE@82..83 " "
      PROCEDURE_SIG@83..109
        PROCEDURE_NAME_REF@83..84
          PATH_REF@83..84
            PATH_SEGMENT_REF@83..84
              IDENT@83..84 "p"
        PARAM_LIST@84..109
          L_PAREN@84..85 "("
          PARAM@85..108
            PARAM_NAME@85..90
              VALUE_KW@85..90 "value"
            WHITESPACE@90..91 " "
            PATH_TYPE@91..98
              PATH_REF@91..98
                PATH_SEGMENT_REF@91..98
                  INTEGER_KW@91..98 "integer"
            WHITESPACE@98..99 " "
            PARAM_DEFAULT@99..108
              DEFAULT_KW@99..106 "default"
              WHITESPACE@106..107 " "
              LITERAL@107..108
                INT_NUMBER@107..108 "1"
          R_PAREN@108..109 ")"
    WHITESPACE@109..110 " "
    IS_KW@110..112 "is"
    WHITESPACE@112..113 " "
    LITERAL@113..124
      STRING@113..124 "'procedure'"
    SEMICOLON@124..125 ";"
  WHITESPACE@125..126 "\n"
  COMMENT_ON@126..185
    COMMENT_KW@126..133 "comment"
    WHITESPACE@133..134 " "
    ON_KW@134..136 "on"
    WHITESPACE@136..137 " "
    OBJECT_ROUTINE@137..171
      ROUTINE_KW@137..144 "routine"
      WHITESPACE@144..145 " "
      ROUTINE_SIG@145..171
        ROUTINE_NAME_REF@145..146
          PATH_REF@145..146
            PATH_SEGMENT_REF@145..146
              IDENT@145..146 "r"
        PARAM_LIST@146..171
          L_PAREN@146..147 "("
          PARAM@147..170
            PARAM_NAME@147..152
              VALUE_KW@147..152 "value"
            WHITESPACE@152..153 " "
            PATH_TYPE@153..160
              PATH_REF@153..160
                PATH_SEGMENT_REF@153..160
                  INTEGER_KW@153..160 "integer"
            WHITESPACE@160..161 " "
            PARAM_DEFAULT@161..170
              DEFAULT_KW@161..168 "default"
              WHITESPACE@168..169 " "
              LITERAL@169..170
                INT_NUMBER@169..170 "1"
          R_PAREN@170..171 ")"
    WHITESPACE@171..172 " "
    IS_KW@172..174 "is"
    WHITESPACE@174..175 " "
    LITERAL@175..184
      STRING@175..184 "'routine'"
    SEMICOLON@184..185 ";"
  WHITESPACE@185..186 "\n"
  COMMENT_ON@186..249
    COMMENT_KW@186..193 "comment"
    WHITESPACE@193..194 " "
    ON_KW@194..196 "on"
    WHITESPACE@196..197 " "
    OBJECT_AGGREGATE@197..233
      AGGREGATE_KW@197..206 "aggregate"
      WHITESPACE@206..207 " "
      AGGREGATE@207..233
        PATH_REF@207..208
          PATH_SEGMENT_REF@207..208
            IDENT@207..208 "a"
        PARAM_LIST@208..233
          L_PAREN@208..209 "("
          PARAM@209..232
            PARAM_NAME@209..214
              VALUE_KW@209..214 "value"
            WHITESPACE@214..215 " "
            PATH_TYPE@215..222
              PATH_REF@215..222
                PATH_SEGMENT_REF@215..222
                  INTEGER_KW@215..222 "integer"
            WHITESPACE@222..223 " "
            PARAM_DEFAULT@223..232
              DEFAULT_KW@223..230 "default"
              WHITESPACE@230..231 " "
              LITERAL@231..232
                INT_NUMBER@231..232 "1"
          R_PAREN@232..233 ")"
    WHITESPACE@233..234 " "
    IS_KW@234..236 "is"
    WHITESPACE@236..237 " "
    LITERAL@237..248
      STRING@237..248 "'aggregate'"
    SEMICOLON@248..249 ";"
  WHITESPACE@249..250 "\n"

error[syntax-error]: Defaults are not allowed.
  ╭▸ 
1 │ comment on function f(value integer default 1) is 'function';
  ╰╴                                    ━━━━━━━━━
error[syntax-error]: Defaults are not allowed.
  ╭▸ 
2 │ comment on procedure p(value integer default 1) is 'procedure';
  ╰╴                                     ━━━━━━━━━
error[syntax-error]: Defaults are not allowed.
  ╭▸ 
3 │ comment on routine r(value integer default 1) is 'routine';
  ╰╴                                   ━━━━━━━━━
error[syntax-error]: Defaults are not allowed.
  ╭▸ 
4 │ comment on aggregate a(value integer default 1) is 'aggregate';
  ╰╴                                     ━━━━━━━━━