squawk-parser 2.65.0

Linter for Postgres migrations & SQL
Documentation
---
source: crates/squawk_parser/tests/tests.rs
input_file: crates/squawk_parser/tests/data/err/routine_body.sql
---
SOURCE_FILE
  COMMENT "-- the routine body must come after the options"
  WHITESPACE "\n"
  CREATE_FUNCTION
    CREATE_KW "create"
    WHITESPACE " "
    FUNCTION_KW "function"
    WHITESPACE " "
    FUNCTION_NAME
      PATH
        PATH_SEGMENT
          IDENT "f"
    PARAM_LIST
      L_PAREN "("
      R_PAREN ")"
    WHITESPACE " "
    RET_TYPE
      RETURNS_KW "returns"
      WHITESPACE " "
      PATH_TYPE
        PATH_REF
          PATH_SEGMENT_REF
            INT_KW "int"
    WHITESPACE " "
    RETURN_STMT
      RETURN_KW "return"
      WHITESPACE " "
      LITERAL
        INT_NUMBER "1"
  WHITESPACE " "
  ERROR
    LANGUAGE_KW "language"
  WHITESPACE " "
  ERROR
    SQL_KW "sql"
  EMPTY_STMT
    SEMICOLON ";"
  WHITESPACE "\n"
  CREATE_FUNCTION
    CREATE_KW "create"
    WHITESPACE " "
    FUNCTION_KW "function"
    WHITESPACE " "
    FUNCTION_NAME
      PATH
        PATH_SEGMENT
          IDENT "f"
    PARAM_LIST
      L_PAREN "("
      R_PAREN ")"
    WHITESPACE " "
    RET_TYPE
      RETURNS_KW "returns"
      WHITESPACE " "
      PATH_TYPE
        PATH_REF
          PATH_SEGMENT_REF
            INT_KW "int"
    WHITESPACE " "
    ATOMIC_BODY
      BEGIN_KW "begin"
      WHITESPACE " "
      ATOMIC_KW "atomic"
      WHITESPACE " "
      SELECT
        SELECT_CLAUSE
          SELECT_KW "select"
          WHITESPACE " "
          TARGET_LIST
            TARGET
              LITERAL
                INT_NUMBER "1"
        SEMICOLON ";"
      WHITESPACE " "
      END_KW "end"
  WHITESPACE " "
  ERROR
    LANGUAGE_KW "language"
  WHITESPACE " "
  ERROR
    SQL_KW "sql"
  EMPTY_STMT
    SEMICOLON ";"
  WHITESPACE "\n\n"
  COMMENT "-- only one routine body"
  WHITESPACE "\n"
  CREATE_FUNCTION
    CREATE_KW "create"
    WHITESPACE " "
    FUNCTION_KW "function"
    WHITESPACE " "
    FUNCTION_NAME
      PATH
        PATH_SEGMENT
          IDENT "f"
    PARAM_LIST
      L_PAREN "("
      R_PAREN ")"
    WHITESPACE " "
    RET_TYPE
      RETURNS_KW "returns"
      WHITESPACE " "
      PATH_TYPE
        PATH_REF
          PATH_SEGMENT_REF
            INT_KW "int"
    WHITESPACE " "
    FUNC_OPTION_LIST
      LANGUAGE_FUNC_OPTION
        LANGUAGE_KW "language"
        WHITESPACE " "
        LANGUAGE_REF
          SQL_KW "sql"
    WHITESPACE " "
    RETURN_STMT
      RETURN_KW "return"
      WHITESPACE " "
      LITERAL
        INT_NUMBER "1"
  WHITESPACE " "
  ERROR
    RETURN_KW "return"
  WHITESPACE " "
  ERROR
    INT_NUMBER "2"
  EMPTY_STMT
    SEMICOLON ";"
  WHITESPACE "\n\n"
  COMMENT "-- alter never takes a routine body"
  WHITESPACE "\n"
  ALTER_FUNCTION
    ALTER_KW "alter"
    WHITESPACE " "
    FUNCTION_KW "function"
    WHITESPACE " "
    FUNCTION_SIG
      FUNCTION_NAME_REF
        PATH_REF
          PATH_SEGMENT_REF
            IDENT "f"
      PARAM_LIST
        L_PAREN "("
        R_PAREN ")"
  WHITESPACE " "
  ERROR
    RETURN_KW "return"
  WHITESPACE " "
  ERROR
    INT_NUMBER "1"
  EMPTY_STMT
    SEMICOLON ";"
  WHITESPACE "\n"
  ALTER_PROCEDURE
    ALTER_KW "alter"
    WHITESPACE " "
    PROCEDURE_KW "procedure"
    WHITESPACE " "
    PROCEDURE_SIG
      PROCEDURE_NAME_REF
        PATH_REF
          PATH_SEGMENT_REF
            IDENT "p"
      PARAM_LIST
        L_PAREN "("
        R_PAREN ")"
  WHITESPACE " "
  BEGIN
    BEGIN_KW "begin"
  WHITESPACE " "
  ERROR
    ATOMIC_KW "atomic"
  WHITESPACE " "
  SELECT
    SELECT_CLAUSE
      SELECT_KW "select"
      WHITESPACE " "
      TARGET_LIST
        TARGET
          LITERAL
            INT_NUMBER "1"
    SEMICOLON ";"
  WHITESPACE " "
  COMMIT_TRANSACTION
    END_KW "end"
    SEMICOLON ";"
  WHITESPACE "\n"
  ALTER_ROUTINE
    ALTER_KW "alter"
    WHITESPACE " "
    ROUTINE_KW "routine"
    WHITESPACE " "
    ROUTINE_SIG
      ROUTINE_NAME_REF
        PATH_REF
          PATH_SEGMENT_REF
            IDENT "r"
      PARAM_LIST
        L_PAREN "("
        R_PAREN ")"
  WHITESPACE " "
  ERROR
    RETURN_KW "return"
  WHITESPACE " "
  ERROR
    INT_NUMBER "1"
  EMPTY_STMT
    SEMICOLON ";"
  WHITESPACE "\n"
---
error[syntax-error]: expected command, found LANGUAGE_KW
  ╭▸ 
2 │ create function f() returns int return 1 language sql;
  ╰╴                                         ━
error[syntax-error]: expected command, found SQL_KW
  ╭▸ 
2 │ create function f() returns int return 1 language sql;
  ╰╴                                                  ━
error[syntax-error]: expected command, found LANGUAGE_KW
  ╭▸ 
3 │ create function f() returns int begin atomic select 1; end language sql;
  ╰╴                                                           ━
error[syntax-error]: expected command, found SQL_KW
  ╭▸ 
3 │ create function f() returns int begin atomic select 1; end language sql;
  ╰╴                                                                    ━
error[syntax-error]: expected command, found RETURN_KW
  ╭▸ 
6 │ create function f() returns int language sql return 1 return 2;
  ╰╴                                                      ━
error[syntax-error]: expected command, found INT_NUMBER
  ╭▸ 
6 │ create function f() returns int language sql return 1 return 2;
  ╰╴                                                             ━
error[syntax-error]: expected function option
  ╭▸ 
9 │ alter function f() return 1;
  ╰╴                  ━
error[syntax-error]: expected command, found RETURN_KW
  ╭▸ 
9 │ alter function f() return 1;
  ╰╴                   ━
error[syntax-error]: expected command, found INT_NUMBER
  ╭▸ 
9 │ alter function f() return 1;
  ╰╴                          ━
error[syntax-error]: expected function option
   ╭▸ 
10 │ alter procedure p() begin atomic select 1; end;
   ╰╴                   ━
error[syntax-error]: expected command, found ATOMIC_KW
   ╭▸ 
10 │ alter procedure p() begin atomic select 1; end;
   ╰╴                          ━
error[syntax-error]: expected function option
   ╭▸ 
11 │ alter routine r() return 1;
   ╰╴                 ━
error[syntax-error]: expected command, found RETURN_KW
   ╭▸ 
11 │ alter routine r() return 1;
   ╰╴                  ━
error[syntax-error]: expected command, found INT_NUMBER
   ╭▸ 
11 │ alter routine r() return 1;
   ╰╴                         ━