---
source: full-moon/tests/pass_cases.rs
expression: ast.nodes()
---
stmts:
  - - TypeDeclaration:
        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: " "
        base:
          leading_trivia: []
          token:
            start_position:
              bytes: 5
              line: 1
              character: 6
            end_position:
              bytes: 8
              line: 1
              character: 9
            token_type:
              type: Identifier
              identifier: Bar
          trailing_trivia:
            - start_position:
                bytes: 8
                line: 1
                character: 9
              end_position:
                bytes: 9
                line: 1
                character: 10
              token_type:
                type: Whitespace
                characters: " "
        generics: ~
        equal_token:
          leading_trivia: []
          token:
            start_position:
              bytes: 9
              line: 1
              character: 10
            end_position:
              bytes: 10
              line: 1
              character: 11
            token_type:
              type: Symbol
              symbol: "="
          trailing_trivia:
            - start_position:
                bytes: 10
                line: 1
                character: 11
              end_position:
                bytes: 11
                line: 1
                character: 12
              token_type:
                type: Whitespace
                characters: " "
        declare_as:
          Generic:
            base:
              leading_trivia: []
              token:
                start_position:
                  bytes: 11
                  line: 1
                  character: 12
                end_position:
                  bytes: 14
                  line: 1
                  character: 15
                token_type:
                  type: Identifier
                  identifier: Foo
              trailing_trivia: []
            arrows:
              tokens:
                - leading_trivia: []
                  token:
                    start_position:
                      bytes: 14
                      line: 1
                      character: 15
                    end_position:
                      bytes: 15
                      line: 1
                      character: 16
                    token_type:
                      type: Symbol
                      symbol: "<"
                  trailing_trivia: []
                - 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:
                    - start_position:
                        bytes: 16
                        line: 1
                        character: 17
                      end_position:
                        bytes: 17
                        line: 1
                        character: 17
                      token_type:
                        type: Whitespace
                        characters: "\n"
            generics:
              pairs: []
    - ~
  - - TypeDeclaration:
        type_token:
          leading_trivia: []
          token:
            start_position:
              bytes: 17
              line: 2
              character: 1
            end_position:
              bytes: 21
              line: 2
              character: 5
            token_type:
              type: Identifier
              identifier: type
          trailing_trivia:
            - start_position:
                bytes: 21
                line: 2
                character: 5
              end_position:
                bytes: 22
                line: 2
                character: 6
              token_type:
                type: Whitespace
                characters: " "
        base:
          leading_trivia: []
          token:
            start_position:
              bytes: 22
              line: 2
              character: 6
            end_position:
              bytes: 25
              line: 2
              character: 9
            token_type:
              type: Identifier
              identifier: Baz
          trailing_trivia:
            - start_position:
                bytes: 25
                line: 2
                character: 9
              end_position:
                bytes: 26
                line: 2
                character: 10
              token_type:
                type: Whitespace
                characters: " "
        generics: ~
        equal_token:
          leading_trivia: []
          token:
            start_position:
              bytes: 26
              line: 2
              character: 10
            end_position:
              bytes: 27
              line: 2
              character: 11
            token_type:
              type: Symbol
              symbol: "="
          trailing_trivia:
            - start_position:
                bytes: 27
                line: 2
                character: 11
              end_position:
                bytes: 28
                line: 2
                character: 12
              token_type:
                type: Whitespace
                characters: " "
        declare_as:
          Module:
            module:
              leading_trivia: []
              token:
                start_position:
                  bytes: 28
                  line: 2
                  character: 12
                end_position:
                  bytes: 34
                  line: 2
                  character: 18
                token_type:
                  type: Identifier
                  identifier: module
              trailing_trivia: []
            punctuation:
              leading_trivia: []
              token:
                start_position:
                  bytes: 34
                  line: 2
                  character: 18
                end_position:
                  bytes: 35
                  line: 2
                  character: 19
                token_type:
                  type: Symbol
                  symbol: "."
              trailing_trivia: []
            type_info:
              Generic:
                base:
                  leading_trivia: []
                  token:
                    start_position:
                      bytes: 35
                      line: 2
                      character: 19
                    end_position:
                      bytes: 38
                      line: 2
                      character: 22
                    token_type:
                      type: Identifier
                      identifier: Foo
                  trailing_trivia: []
                arrows:
                  tokens:
                    - leading_trivia: []
                      token:
                        start_position:
                          bytes: 38
                          line: 2
                          character: 22
                        end_position:
                          bytes: 39
                          line: 2
                          character: 23
                        token_type:
                          type: Symbol
                          symbol: "<"
                      trailing_trivia: []
                    - leading_trivia: []
                      token:
                        start_position:
                          bytes: 39
                          line: 2
                          character: 23
                        end_position:
                          bytes: 40
                          line: 2
                          character: 24
                        token_type:
                          type: Symbol
                          symbol: ">"
                      trailing_trivia: []
                generics:
                  pairs: []
    - ~

