==========
Function 1
==========

def func() -> int:
    return 1
end

def func():
    pass
end

def func(a: int, b: float) -> float:
    return 1.0
end

---

(source_file
    (function
        name: (identifier)
        params: (function_params)
        rtype: (reference (identifier))
        body: (function_body
            (return_statement (integer))
        )
    )
    (function
        name: (identifier)
        params: (function_params)
        body: (function_body
            (pass_statement)
        )
    )
    (function
        name: (identifier)
        params: (function_params
            (function_param
                name: (identifier)
                type: (reference (identifier))
            )
            (function_param
                name: (identifier)
                type: (reference (identifier))
            )
        )
        rtype: (reference (identifier))
        body: (function_body
            (return_statement (float))
        )
    )
)

==========
Function 2
==========

def func(a: int) -> int:
    b = 3
    if a > 1:
        b += 2
    else:
        b += 3
    end
    return b
end

---

(source_file
    (function
        name: (identifier)
        params: (function_params
            (function_param
                name: (identifier)
                type: (reference (identifier))
            )
        )
        rtype: (reference (identifier))
        body: (function_body
            (update_statement
                left: (reference (identifier))
                right: (integer)
            )
            (if_statement
                condition: (binary_expression
                    left: (reference (identifier))
                    right: (integer)
                )
                body: (update_statement
                    left: (reference (identifier))
                    right: (integer)
                )
                else: (else_section
                    body: (update_statement
                        left: (reference (identifier))
                        right: (integer)
                    )
                )
            )
            (return_statement
                (reference (identifier))
            )
        )
    )
)

