---
source: full-moon/tests/pass_cases.rs
expression: ast.nodes()
input_file: full-moon/tests/roblox_cases/pass/types_function
---
stmts:
  - - TypeFunction:
        type_token:
          leading_trivia: []
          token:
            start_position:
              bytes: 0
              line: 1
              character: 1
            end_position:
              bytes: 4
              line: 1
              character: 5
            token_type:
              type: Identifier
              identifier: type
          trailing_trivia:
            - start_position:
                bytes: 4
                line: 1
                character: 5
              end_position:
                bytes: 5
                line: 1
                character: 6
              token_type:
                type: Whitespace
                characters: " "
        function_token:
          leading_trivia: []
          token:
            start_position:
              bytes: 5
              line: 1
              character: 6
            end_position:
              bytes: 13
              line: 1
              character: 14
            token_type:
              type: Symbol
              symbol: function
          trailing_trivia:
            - start_position:
                bytes: 13
                line: 1
                character: 14
              end_position:
                bytes: 14
                line: 1
                character: 15
              token_type:
                type: Whitespace
                characters: " "
        function_name:
          leading_trivia: []
          token:
            start_position:
              bytes: 14
              line: 1
              character: 15
            end_position:
              bytes: 15
              line: 1
              character: 16
            token_type:
              type: Identifier
              identifier: f
          trailing_trivia: []
        function_body:
          generics: ~
          parameters_parentheses:
            tokens:
              - leading_trivia: []
                token:
                  start_position:
                    bytes: 15
                    line: 1
                    character: 16
                  end_position:
                    bytes: 16
                    line: 1
                    character: 17
                  token_type:
                    type: Symbol
                    symbol: (
                trailing_trivia: []
              - leading_trivia: []
                token:
                  start_position:
                    bytes: 19
                    line: 1
                    character: 20
                  end_position:
                    bytes: 20
                    line: 1
                    character: 21
                  token_type:
                    type: Symbol
                    symbol: )
                trailing_trivia:
                  - start_position:
                      bytes: 20
                      line: 1
                      character: 21
                    end_position:
                      bytes: 21
                      line: 1
                      character: 21
                    token_type:
                      type: Whitespace
                      characters: "\n"
          parameters:
            pairs:
              - End:
                  Ellipsis:
                    leading_trivia: []
                    token:
                      start_position:
                        bytes: 16
                        line: 1
                        character: 17
                      end_position:
                        bytes: 19
                        line: 1
                        character: 20
                      token_type:
                        type: Symbol
                        symbol: "..."
                    trailing_trivia: []
          type_specifiers:
            - ~
          block:
            stmts: []
          end_token:
            leading_trivia:
              - start_position:
                  bytes: 21
                  line: 2
                  character: 1
                end_position:
                  bytes: 25
                  line: 2
                  character: 5
                token_type:
                  type: Whitespace
                  characters: "    "
              - start_position:
                  bytes: 25
                  line: 2
                  character: 5
                end_position:
                  bytes: 63
                  line: 2
                  character: 43
                token_type:
                  type: SingleLineComment
                  comment: " implementation of the type function"
              - start_position:
                  bytes: 63
                  line: 2
                  character: 43
                end_position:
                  bytes: 64
                  line: 2
                  character: 43
                token_type:
                  type: Whitespace
                  characters: "\n"
            token:
              start_position:
                bytes: 64
                line: 3
                character: 1
              end_position:
                bytes: 67
                line: 3
                character: 4
              token_type:
                type: Symbol
                symbol: end
            trailing_trivia:
              - start_position:
                  bytes: 67
                  line: 3
                  character: 4
                end_position:
                  bytes: 68
                  line: 3
                  character: 4
                token_type:
                  type: Whitespace
                  characters: "\n"
    - ~
  - - ExportedTypeFunction:
        export_token:
          leading_trivia:
            - start_position:
                bytes: 68
                line: 4
                character: 1
              end_position:
                bytes: 69
                line: 4
                character: 1
              token_type:
                type: Whitespace
                characters: "\n"
          token:
            start_position:
              bytes: 69
              line: 5
              character: 1
            end_position:
              bytes: 75
              line: 5
              character: 7
            token_type:
              type: Identifier
              identifier: export
          trailing_trivia:
            - start_position:
                bytes: 75
                line: 5
                character: 7
              end_position:
                bytes: 76
                line: 5
                character: 8
              token_type:
                type: Whitespace
                characters: " "
        type_function:
          type_token:
            leading_trivia: []
            token:
              start_position:
                bytes: 76
                line: 5
                character: 8
              end_position:
                bytes: 80
                line: 5
                character: 12
              token_type:
                type: Identifier
                identifier: type
            trailing_trivia:
              - start_position:
                  bytes: 80
                  line: 5
                  character: 12
                end_position:
                  bytes: 81
                  line: 5
                  character: 13
                token_type:
                  type: Whitespace
                  characters: " "
          function_token:
            leading_trivia: []
            token:
              start_position:
                bytes: 81
                line: 5
                character: 13
              end_position:
                bytes: 89
                line: 5
                character: 21
              token_type:
                type: Symbol
                symbol: function
            trailing_trivia:
              - start_position:
                  bytes: 89
                  line: 5
                  character: 21
                end_position:
                  bytes: 90
                  line: 5
                  character: 22
                token_type:
                  type: Whitespace
                  characters: " "
          function_name:
            leading_trivia: []
            token:
              start_position:
                bytes: 90
                line: 5
                character: 22
              end_position:
                bytes: 91
                line: 5
                character: 23
              token_type:
                type: Identifier
                identifier: f
            trailing_trivia: []
          function_body:
            generics: ~
            parameters_parentheses:
              tokens:
                - leading_trivia: []
                  token:
                    start_position:
                      bytes: 91
                      line: 5
                      character: 23
                    end_position:
                      bytes: 92
                      line: 5
                      character: 24
                    token_type:
                      type: Symbol
                      symbol: (
                  trailing_trivia: []
                - leading_trivia: []
                  token:
                    start_position:
                      bytes: 95
                      line: 5
                      character: 27
                    end_position:
                      bytes: 96
                      line: 5
                      character: 28
                    token_type:
                      type: Symbol
                      symbol: )
                  trailing_trivia:
                    - start_position:
                        bytes: 96
                        line: 5
                        character: 28
                      end_position:
                        bytes: 97
                        line: 5
                        character: 28
                      token_type:
                        type: Whitespace
                        characters: "\n"
            parameters:
              pairs:
                - End:
                    Ellipsis:
                      leading_trivia: []
                      token:
                        start_position:
                          bytes: 92
                          line: 5
                          character: 24
                        end_position:
                          bytes: 95
                          line: 5
                          character: 27
                        token_type:
                          type: Symbol
                          symbol: "..."
                      trailing_trivia: []
            type_specifiers:
              - ~
            block:
              stmts: []
            end_token:
              leading_trivia:
                - start_position:
                    bytes: 97
                    line: 6
                    character: 1
                  end_position:
                    bytes: 101
                    line: 6
                    character: 5
                  token_type:
                    type: Whitespace
                    characters: "    "
                - start_position:
                    bytes: 101
                    line: 6
                    character: 5
                  end_position:
                    bytes: 139
                    line: 6
                    character: 43
                  token_type:
                    type: SingleLineComment
                    comment: " implementation of the type function"
                - start_position:
                    bytes: 139
                    line: 6
                    character: 43
                  end_position:
                    bytes: 140
                    line: 6
                    character: 43
                  token_type:
                    type: Whitespace
                    characters: "\n"
              token:
                start_position:
                  bytes: 140
                  line: 7
                  character: 1
                end_position:
                  bytes: 143
                  line: 7
                  character: 4
                token_type:
                  type: Symbol
                  symbol: end
              trailing_trivia: []
    - ~
