SOURCE_FILE
  FN
    FN_KW "fn"
    WHITESPACE " "
    NAME
      IDENT "foo"
    PARAM_LIST
      L_PAREN "("
      R_PAREN ")"
    WHITESPACE " "
    BLOCK_EXPR
      STMT_LIST
        L_CURLY "{"
        WHITESPACE "\n"
        R_CURLY "}"
  WHITESPACE "\n\n"
  MACRO_CALL
    PATH
      PATH_SEGMENT
        NAME_REF
          IDENT "bar"
    TOKEN_TREE
      L_PAREN "("
      R_PAREN ")"
  WHITESPACE " "
  ERROR
    L_CURLY "{"
    WHITESPACE "\n    "
    IF_EXPR
      IF_KW "if"
      WHITESPACE " "
      CONDITION
        LITERAL
          TRUE_KW "true"
      WHITESPACE " "
      BLOCK_EXPR
        STMT_LIST
          L_CURLY "{"
          WHITESPACE "\n        "
          LITERAL
            INT_NUMBER "1"
          WHITESPACE "\n    "
          R_CURLY "}"
      WHITESPACE " "
      ELSE_KW "else"
      WHITESPACE " "
      BLOCK_EXPR
        STMT_LIST
          L_CURLY "{"
          WHITESPACE "\n        "
          BIN_EXPR
            LITERAL
              INT_NUMBER "2"
            WHITESPACE " "
            PLUS "+"
            WHITESPACE " "
            LITERAL
              INT_NUMBER "3"
          WHITESPACE "\n    "
          R_CURLY "}"
    WHITESPACE "\n"
    R_CURLY "}"
  WHITESPACE "\n\n"
  FN
    FN_KW "fn"
    WHITESPACE " "
    NAME
      IDENT "baz"
    PARAM_LIST
      L_PAREN "("
      R_PAREN ")"
    WHITESPACE " "
    BLOCK_EXPR
      STMT_LIST
        L_CURLY "{"
        WHITESPACE "\n"
        R_CURLY "}"
  WHITESPACE "\n"
error 17: expected BANG
error 19: expected SEMICOLON
error 20: expected an item
