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/json_object.sql
---
SOURCE_FILE@0..306
  COMMENT@0..47 "-- `key: value` pairs ..."
  WHITESPACE@47..48 "\n"
  SELECT@48..87
    SELECT_CLAUSE@48..86
      SELECT_KW@48..54 "select"
      WHITESPACE@54..55 " "
      TARGET_LIST@55..86
        TARGET@55..86
          CALL_EXPR@55..86
            JSON_OBJECT_FN@55..86
              JSON_OBJECT_KW@55..66 "json_object"
              L_PAREN@66..67 "("
              JSON_KEY_VALUE@67..75
                LITERAL@67..70
                  STRING@67..70 "'k'"
                COLON@70..71 ":"
                WHITESPACE@71..72 " "
                JSON_VALUE_EXPR@72..75
                  LITERAL@72..75
                    STRING@72..75 "'v'"
              COMMA@75..76 ","
              WHITESPACE@76..77 " "
              NAMED_ARG@77..85
                PARAM_NAME_REF@77..78
                  IDENT@77..78 "a"
                WHITESPACE@78..79 " "
                FAT_ARROW@79..81 "=>"
                WHITESPACE@81..82 " "
                LITERAL@82..85
                  STRING@82..85 "'x'"
              R_PAREN@85..86 ")"
    SEMICOLON@86..87 ";"
  WHITESPACE@87..88 "\n"
  SELECT@88..132
    SELECT_CLAUSE@88..131
      SELECT_KW@88..94 "select"
      WHITESPACE@94..95 " "
      TARGET_LIST@95..131
        TARGET@95..131
          CALL_EXPR@95..131
            JSON_OBJECT_FN@95..131
              JSON_OBJECT_KW@95..106 "json_object"
              L_PAREN@106..107 "("
              JSON_KEY_VALUE@107..120
                LITERAL@107..110
                  STRING@107..110 "'k'"
                WHITESPACE@110..111 " "
                VALUE_KW@111..116 "value"
                WHITESPACE@116..117 " "
                JSON_VALUE_EXPR@117..120
                  LITERAL@117..120
                    STRING@117..120 "'v'"
              COMMA@120..121 ","
              WHITESPACE@121..122 " "
              NAMED_ARG@122..130
                PARAM_NAME_REF@122..123
                  IDENT@122..123 "a"
                WHITESPACE@123..124 " "
                COLON_EQ@124..126 ":="
                WHITESPACE@126..127 " "
                LITERAL@127..130
                  STRING@127..130 "'x'"
              R_PAREN@130..131 ")"
    SEMICOLON@131..132 ";"
  WHITESPACE@132..133 "\n"
  SELECT@133..172
    SELECT_CLAUSE@133..171
      SELECT_KW@133..139 "select"
      WHITESPACE@139..140 " "
      TARGET_LIST@140..171
        TARGET@140..171
          CALL_EXPR@140..171
            JSON_OBJECT_FN@140..171
              JSON_OBJECT_KW@140..151 "json_object"
              L_PAREN@151..152 "("
              JSON_KEY_VALUE@152..160
                LITERAL@152..155
                  STRING@152..155 "'k'"
                COLON@155..156 ":"
                WHITESPACE@156..157 " "
                JSON_VALUE_EXPR@157..160
                  LITERAL@157..160
                    STRING@157..160 "'v'"
              COMMA@160..161 ","
              WHITESPACE@161..162 " "
              LITERAL@162..165
                STRING@162..165 "'a'"
              COMMA@165..166 ","
              WHITESPACE@166..167 " "
              LITERAL@167..170
                STRING@167..170 "'b'"
              R_PAREN@170..171 ")"
    SEMICOLON@171..172 ";"
  WHITESPACE@172..174 "\n\n"
  COMMENT@174..225 "-- and args can't be  ..."
  WHITESPACE@225..226 "\n"
  SELECT@226..265
    SELECT_CLAUSE@226..264
      SELECT_KW@226..232 "select"
      WHITESPACE@232..233 " "
      TARGET_LIST@233..264
        TARGET@233..264
          CALL_EXPR@233..264
            JSON_OBJECT_FN@233..264
              JSON_OBJECT_KW@233..244 "json_object"
              L_PAREN@244..245 "("
              LITERAL@245..248
                STRING@245..248 "'a'"
              COMMA@248..249 ","
              WHITESPACE@249..250 " "
              LITERAL@250..253
                STRING@250..253 "'b'"
              COMMA@253..254 ","
              WHITESPACE@254..255 " "
              JSON_KEY_VALUE@255..263
                LITERAL@255..258
                  STRING@255..258 "'k'"
                COLON@258..259 ":"
                WHITESPACE@259..260 " "
                JSON_VALUE_EXPR@260..263
                  LITERAL@260..263
                    STRING@260..263 "'v'"
              R_PAREN@263..264 ")"
    SEMICOLON@264..265 ";"
  WHITESPACE@265..266 "\n"
  SELECT@266..305
    SELECT_CLAUSE@266..304
      SELECT_KW@266..272 "select"
      WHITESPACE@272..273 " "
      TARGET_LIST@273..304
        TARGET@273..304
          CALL_EXPR@273..304
            JSON_OBJECT_FN@273..304
              JSON_OBJECT_KW@273..284 "json_object"
              L_PAREN@284..285 "("
              NAMED_ARG@285..293
                PARAM_NAME_REF@285..286
                  IDENT@285..286 "a"
                WHITESPACE@286..287 " "
                FAT_ARROW@287..289 "=>"
                WHITESPACE@289..290 " "
                LITERAL@290..293
                  STRING@290..293 "'x'"
              COMMA@293..294 ","
              WHITESPACE@294..295 " "
              JSON_KEY_VALUE@295..303
                LITERAL@295..298
                  STRING@295..298 "'k'"
                COLON@298..299 ":"
                WHITESPACE@299..300 " "
                JSON_VALUE_EXPR@300..303
                  LITERAL@300..303
                    STRING@300..303 "'v'"
              R_PAREN@303..304 ")"
    SEMICOLON@304..305 ";"
  WHITESPACE@305..306 "\n"

error[syntax-error]: Cannot mix `key: value` pairs with other arguments
  ╭▸ 
2 │ select json_object('k': 'v', a => 'x');
  ╰╴                             ━━━━━━━━
error[syntax-error]: Cannot mix `key: value` pairs with other arguments
  ╭▸ 
3 │ select json_object('k' value 'v', a := 'x');
  ╰╴                                  ━━━━━━━━
error[syntax-error]: Cannot mix `key: value` pairs with other arguments
  ╭▸ 
4 │ select json_object('k': 'v', 'a', 'b');
  ╰╴                             ━━━
error[syntax-error]: Cannot mix `key: value` pairs with other arguments
  ╭▸ 
7 │ select json_object('a', 'b', 'k': 'v');
  ╰╴                             ━━━━━━━━
error[syntax-error]: Cannot mix `key: value` pairs with other arguments
  ╭▸ 
8 │ select json_object(a => 'x', 'k': 'v');
  ╰╴                             ━━━━━━━━