squawk-syntax 2.55.0

Linter for Postgres migrations & SQL
Documentation
---
source: crates/squawk_syntax/src/test.rs
input_file: crates/squawk_syntax/test_data/validation/custom_operators.sql
---
SOURCE_FILE@0..423
  COMMENT@0..30 "-- disallowed prefix  ..."
  WHITESPACE@30..31 "\n"
  SELECT@31..41
    SELECT_CLAUSE@31..40
      SELECT_KW@31..37 "select"
      WHITESPACE@37..38 " "
      TARGET_LIST@38..40
        TARGET@38..39
          STAR@38..39 "*"
        TARGET@39..40
          NAME_REF@39..40
            IDENT@39..40 "c"
    SEMICOLON@40..41 ";"
  WHITESPACE@41..42 "\n"
  SELECT@42..52
    SELECT_CLAUSE@42..51
      SELECT_KW@42..48 "select"
      WHITESPACE@48..49 " "
      TARGET_LIST@49..51
        TARGET@49..51
          PREFIX_EXPR@49..51
            CUSTOM_OP@49..50
              SLASH@49..50 "/"
            NAME_REF@50..51
              IDENT@50..51 "d"
    SEMICOLON@51..52 ";"
  WHITESPACE@52..53 "\n"
  SELECT@53..63
    SELECT_CLAUSE@53..62
      SELECT_KW@53..59 "select"
      WHITESPACE@59..60 " "
      TARGET_LIST@60..62
        TARGET@60..62
          PREFIX_EXPR@60..62
            CUSTOM_OP@60..61
              L_ANGLE@60..61 "<"
            NAME_REF@61..62
              IDENT@61..62 "e"
    SEMICOLON@62..63 ";"
  WHITESPACE@63..64 "\n"
  SELECT@64..74
    SELECT_CLAUSE@64..73
      SELECT_KW@64..70 "select"
      WHITESPACE@70..71 " "
      TARGET_LIST@71..73
        TARGET@71..73
          PREFIX_EXPR@71..73
            CUSTOM_OP@71..72
              R_ANGLE@71..72 ">"
            NAME_REF@72..73
              IDENT@72..73 "f"
    SEMICOLON@73..74 ";"
  WHITESPACE@74..75 "\n"
  SELECT@75..85
    SELECT_CLAUSE@75..84
      SELECT_KW@75..81 "select"
      WHITESPACE@81..82 " "
      TARGET_LIST@82..84
        TARGET@82..84
          PREFIX_EXPR@82..84
            CUSTOM_OP@82..83
              EQ@82..83 "="
            NAME_REF@83..84
              IDENT@83..84 "g"
    SEMICOLON@84..85 ";"
  WHITESPACE@85..86 "\n"
  SELECT@86..96
    SELECT_CLAUSE@86..95
      SELECT_KW@86..92 "select"
      WHITESPACE@92..93 " "
      TARGET_LIST@93..95
        TARGET@93..95
          PREFIX_EXPR@93..95
            CUSTOM_OP@93..94
              PERCENT@93..94 "%"
            NAME_REF@94..95
              IDENT@94..95 "l"
    SEMICOLON@95..96 ";"
  WHITESPACE@96..97 "\n"
  SELECT@97..107
    SELECT_CLAUSE@97..106
      SELECT_KW@97..103 "select"
      WHITESPACE@103..104 " "
      TARGET_LIST@104..106
        TARGET@104..106
          PREFIX_EXPR@104..106
            CUSTOM_OP@104..105
              CARET@104..105 "^"
            NAME_REF@105..106
              IDENT@105..106 "m"
    SEMICOLON@106..107 ";"
  WHITESPACE@107..108 "\n"
  COMMENT@108..165 "-- operators may not  ..."
  WHITESPACE@165..166 "\n"
  SELECT@166..240
    SELECT_CLAUSE@166..239
      SELECT_KW@166..172 "select"
      WHITESPACE@172..173 " "
      TARGET_LIST@173..239
        TARGET@173..239
          PREFIX_EXPR@173..239
            CUSTOM_OP@173..237
              PIPE@173..174 "|"
              PIPE@174..175 "|"
              PIPE@175..176 "|"
              PIPE@176..177 "|"
              PIPE@177..178 "|"
              PIPE@178..179 "|"
              PIPE@179..180 "|"
              PIPE@180..181 "|"
              PIPE@181..182 "|"
              PIPE@182..183 "|"
              PIPE@183..184 "|"
              PIPE@184..185 "|"
              PIPE@185..186 "|"
              PIPE@186..187 "|"
              PIPE@187..188 "|"
              PIPE@188..189 "|"
              PIPE@189..190 "|"
              PIPE@190..191 "|"
              PIPE@191..192 "|"
              PIPE@192..193 "|"
              PIPE@193..194 "|"
              PIPE@194..195 "|"
              PIPE@195..196 "|"
              PIPE@196..197 "|"
              PIPE@197..198 "|"
              PIPE@198..199 "|"
              PIPE@199..200 "|"
              PIPE@200..201 "|"
              PIPE@201..202 "|"
              PIPE@202..203 "|"
              PIPE@203..204 "|"
              PIPE@204..205 "|"
              PIPE@205..206 "|"
              PIPE@206..207 "|"
              PIPE@207..208 "|"
              PIPE@208..209 "|"
              PIPE@209..210 "|"
              PIPE@210..211 "|"
              PIPE@211..212 "|"
              PIPE@212..213 "|"
              PIPE@213..214 "|"
              PIPE@214..215 "|"
              PIPE@215..216 "|"
              PIPE@216..217 "|"
              PIPE@217..218 "|"
              PIPE@218..219 "|"
              PIPE@219..220 "|"
              PIPE@220..221 "|"
              PIPE@221..222 "|"
              PIPE@222..223 "|"
              PIPE@223..224 "|"
              PIPE@224..225 "|"
              PIPE@225..226 "|"
              PIPE@226..227 "|"
              PIPE@227..228 "|"
              PIPE@228..229 "|"
              PIPE@229..230 "|"
              PIPE@230..231 "|"
              PIPE@231..232 "|"
              PIPE@232..233 "|"
              PIPE@233..234 "|"
              PIPE@234..235 "|"
              PIPE@235..236 "|"
              PIPE@236..237 "|"
            WHITESPACE@237..238 " "
            LITERAL@238..239
              INT_NUMBER@238..239 "1"
    SEMICOLON@239..240 ";"
  WHITESPACE@240..241 "\n"
  SELECT@241..317
    SELECT_CLAUSE@241..316
      SELECT_KW@241..247 "select"
      WHITESPACE@247..248 " "
      TARGET_LIST@248..316
        TARGET@248..316
          BIN_EXPR@248..316
            LITERAL@248..249
              INT_NUMBER@248..249 "1"
            WHITESPACE@249..250 " "
            CUSTOM_OP@250..314
              PIPE@250..251 "|"
              PIPE@251..252 "|"
              PIPE@252..253 "|"
              PIPE@253..254 "|"
              PIPE@254..255 "|"
              PIPE@255..256 "|"
              PIPE@256..257 "|"
              PIPE@257..258 "|"
              PIPE@258..259 "|"
              PIPE@259..260 "|"
              PIPE@260..261 "|"
              PIPE@261..262 "|"
              PIPE@262..263 "|"
              PIPE@263..264 "|"
              PIPE@264..265 "|"
              PIPE@265..266 "|"
              PIPE@266..267 "|"
              PIPE@267..268 "|"
              PIPE@268..269 "|"
              PIPE@269..270 "|"
              PIPE@270..271 "|"
              PIPE@271..272 "|"
              PIPE@272..273 "|"
              PIPE@273..274 "|"
              PIPE@274..275 "|"
              PIPE@275..276 "|"
              PIPE@276..277 "|"
              PIPE@277..278 "|"
              PIPE@278..279 "|"
              PIPE@279..280 "|"
              PIPE@280..281 "|"
              PIPE@281..282 "|"
              PIPE@282..283 "|"
              PIPE@283..284 "|"
              PIPE@284..285 "|"
              PIPE@285..286 "|"
              PIPE@286..287 "|"
              PIPE@287..288 "|"
              PIPE@288..289 "|"
              PIPE@289..290 "|"
              PIPE@290..291 "|"
              PIPE@291..292 "|"
              PIPE@292..293 "|"
              PIPE@293..294 "|"
              PIPE@294..295 "|"
              PIPE@295..296 "|"
              PIPE@296..297 "|"
              PIPE@297..298 "|"
              PIPE@298..299 "|"
              PIPE@299..300 "|"
              PIPE@300..301 "|"
              PIPE@301..302 "|"
              PIPE@302..303 "|"
              PIPE@303..304 "|"
              PIPE@304..305 "|"
              PIPE@305..306 "|"
              PIPE@306..307 "|"
              PIPE@307..308 "|"
              PIPE@308..309 "|"
              PIPE@309..310 "|"
              PIPE@310..311 "|"
              PIPE@311..312 "|"
              PIPE@312..313 "|"
              PIPE@313..314 "|"
            WHITESPACE@314..315 " "
            LITERAL@315..316
              INT_NUMBER@315..316 "2"
    SEMICOLON@316..317 ";"
  WHITESPACE@317..318 "\n"
  COMMENT@318..346 "-- 63 chars is still  ..."
  WHITESPACE@346..347 "\n"
  SELECT@347..422
    SELECT_CLAUSE@347..421
      SELECT_KW@347..353 "select"
      WHITESPACE@353..354 " "
      TARGET_LIST@354..421
        TARGET@354..421
          BIN_EXPR@354..421
            LITERAL@354..355
              INT_NUMBER@354..355 "1"
            WHITESPACE@355..356 " "
            CUSTOM_OP@356..419
              PLUS@356..357 "+"
              PLUS@357..358 "+"
              PLUS@358..359 "+"
              PLUS@359..360 "+"
              PLUS@360..361 "+"
              PLUS@361..362 "+"
              PLUS@362..363 "+"
              PLUS@363..364 "+"
              PLUS@364..365 "+"
              PLUS@365..366 "+"
              PLUS@366..367 "+"
              PLUS@367..368 "+"
              PLUS@368..369 "+"
              PLUS@369..370 "+"
              PLUS@370..371 "+"
              PLUS@371..372 "+"
              PLUS@372..373 "+"
              PLUS@373..374 "+"
              PLUS@374..375 "+"
              PLUS@375..376 "+"
              PLUS@376..377 "+"
              PLUS@377..378 "+"
              PLUS@378..379 "+"
              PLUS@379..380 "+"
              PLUS@380..381 "+"
              PLUS@381..382 "+"
              PLUS@382..383 "+"
              PLUS@383..384 "+"
              PLUS@384..385 "+"
              PLUS@385..386 "+"
              PLUS@386..387 "+"
              PLUS@387..388 "+"
              PLUS@388..389 "+"
              PLUS@389..390 "+"
              PLUS@390..391 "+"
              PLUS@391..392 "+"
              PLUS@392..393 "+"
              PLUS@393..394 "+"
              PLUS@394..395 "+"
              PLUS@395..396 "+"
              PLUS@396..397 "+"
              PLUS@397..398 "+"
              PLUS@398..399 "+"
              PLUS@399..400 "+"
              PLUS@400..401 "+"
              PLUS@401..402 "+"
              PLUS@402..403 "+"
              PLUS@403..404 "+"
              PLUS@404..405 "+"
              PLUS@405..406 "+"
              PLUS@406..407 "+"
              PLUS@407..408 "+"
              PLUS@408..409 "+"
              PLUS@409..410 "+"
              PLUS@410..411 "+"
              PLUS@411..412 "+"
              PLUS@412..413 "+"
              PLUS@413..414 "+"
              PLUS@414..415 "+"
              PLUS@415..416 "+"
              PLUS@416..417 "+"
              PLUS@417..418 "+"
              PLUS@418..419 "+"
            WHITESPACE@419..420 " "
            LITERAL@420..421
              INT_NUMBER@420..421 "2"
    SEMICOLON@421..422 ";"
  WHITESPACE@422..423 "\n"

error[syntax-error]: missing comma
  ╭▸ 
2 │ select *c;
  ╰╴        ━
error[syntax-error]: Invalid operator.
  ╭▸ 
3 │ select /d;
  ╰╴       ━
error[syntax-error]: Invalid operator.
  ╭▸ 
4 │ select <e;
  ╰╴       ━
error[syntax-error]: Invalid operator.
  ╭▸ 
5 │ select >f;
  ╰╴       ━
error[syntax-error]: Invalid operator.
  ╭▸ 
6 │ select =g;
  ╰╴       ━
error[syntax-error]: Invalid operator.
  ╭▸ 
7 │ select %l;
  ╰╴       ━
error[syntax-error]: Invalid operator.
  ╭▸ 
8 │ select ^m;
  ╰╴       ━
error[syntax-error]: operator too long
   ╭▸ 
10 │ select |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 1;
   ╰╴       ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
error[syntax-error]: operator too long
   ╭▸ 
11 │ select 1 |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 2;
   ╰╴         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━