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/create_function.sql
---
SOURCE_FILE
  CREATE_FUNCTION
    CREATE_KW "create"
    WHITESPACE " "
    FUNCTION_KW "function"
    WHITESPACE " "
    FUNCTION_NAME
      PATH
        PATH_SEGMENT
          IDENT "f"
    PARAM_LIST
      L_PAREN "("
      R_PAREN ")"
    WHITESPACE "\n"
    COMMENT "-- missing comma"
    WHITESPACE "\n"
    RET_TYPE
      RETURNS_KW "returns"
      WHITESPACE " "
      TABLE_KW "table"
      WHITESPACE " "
      RETURN_TABLE_ARG_LIST
        L_PAREN "("
        RETURN_TABLE_COLUMN
          COLUMN_NAME
            IDENT "a"
          WHITESPACE " "
          PATH_TYPE
            PATH_REF
              PATH_SEGMENT_REF
                TEXT_KW "text"
        WHITESPACE "  "
        RETURN_TABLE_COLUMN
          COLUMN_NAME
            IDENT "b"
          WHITESPACE " "
          PATH_TYPE
            PATH_REF
              PATH_SEGMENT_REF
                INT_KW "int"
        R_PAREN ")"
    WHITESPACE "\n"
    FUNC_OPTION_LIST
      AS_FUNC_OPTION
        AS_KW "as"
        WHITESPACE " "
        AS_DEFINITION
          LITERAL
            STRING "''"
      WHITESPACE " "
      LANGUAGE_FUNC_OPTION
        LANGUAGE_KW "language"
        WHITESPACE " "
        LANGUAGE_REF
          SQL_KW "sql"
    SEMICOLON ";"
  WHITESPACE "\n\n"
  CREATE_FUNCTION
    CREATE_KW "create"
    WHITESPACE " "
    FUNCTION_KW "function"
    WHITESPACE " "
    FUNCTION_NAME
      PATH
        PATH_SEGMENT
          IDENT "foo"
    PARAM_LIST
      L_PAREN "("
      PARAM
        PARAM_NAME
          IDENT "arg"
        WHITESPACE " "
        PATH_TYPE
          PATH_REF
            PATH_SEGMENT_REF
              FLOAT_KW "float"
        WHITESPACE " "
        PARAM_DEFAULT
          EQ "="
          WHITESPACE " "
          LITERAL
            INT_NUMBER "1"
      WHITESPACE " "
      PARAM
        PATH_TYPE
          PATH_REF
            PATH_SEGMENT_REF
              IDENT "int4"
        WHITESPACE " "
        PARAM_DEFAULT
          EQ "="
          WHITESPACE " "
          LITERAL
            INT_NUMBER "4"
      R_PAREN ")"
    WHITESPACE "\n"
    COMMENT "-- missing comma                 ^"
    WHITESPACE "\n"
    RET_TYPE
      RETURNS_KW "returns"
      WHITESPACE " "
      PATH_TYPE
        PATH_REF
          PATH_SEGMENT_REF
            IDENT "void"
    WHITESPACE "\n"
    FUNC_OPTION_LIST
      AS_FUNC_OPTION
        AS_KW "as"
        WHITESPACE " "
        AS_DEFINITION
          LITERAL
            STRING "''"
      WHITESPACE "\n"
      LANGUAGE_FUNC_OPTION
        LANGUAGE_KW "language"
        WHITESPACE " "
        LANGUAGE_REF
          SQL_KW "sql"
    SEMICOLON ";"
  WHITESPACE "\n\n"
  COMMENT "-- regression partial definition"
  WHITESPACE "\n"
  CREATE_FUNCTION
    CREATE_KW "create"
    WHITESPACE " "
    FUNCTION_KW "function"
    WHITESPACE "\n\n"
    COMMENT "-- transform list cannot end with a comma"
    WHITESPACE "\n"
    FUNCTION_NAME
  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 " "
      AS_FUNC_OPTION
        AS_KW "as"
        WHITESPACE " "
        AS_DEFINITION
          LITERAL
            STRING "''"
      WHITESPACE " "
      TRANSFORM_FUNC_OPTION
        TRANSFORM_KW "transform"
        WHITESPACE " "
        TRANSFORM_FOR_TYPE
          FOR_KW "for"
          WHITESPACE " "
          TYPE_KW "type"
          WHITESPACE " "
          PATH_TYPE
            PATH_REF
              PATH_SEGMENT_REF
                INT_KW "int"
        COMMA ","
  WHITESPACE "\n\n"
---
error[syntax-error]: expected COMMA
  ╭▸ 
3 │ returns table (a text  b int)
  ╰╴                     ━
error[syntax-error]: expected COMMA
  ╭▸ 
6 │ create function foo(arg float = 1 int4 = 4)
  ╰╴                                 ━
error[syntax-error]: expected path name
   ╭▸ 
16 │ create function f() returns int language sql as '' transform for type int,
   ╰╴━
error[syntax-error]: expected param list
   ╭▸ 
16 │ create function f() returns int language sql as '' transform for type int,
   ╰╴━
error[syntax-error]: expected function option
   ╭▸ 
16 │ create function f() returns int language sql as '' transform for type int,
   ╰╴━
error[syntax-error]: expected FOR TYPE entry after comma
   ╭▸ 
16 │   create function f() returns int language sql as '' transform for type int,
   │ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
17 │ ┃
   ╰╴┗━┛