--- source: tests/snapshot_tests.rs --- Program( statements: [ Function(FunctionStatement( name: Token( kind: Identifier("fibonacci"), range: Range( start: 9, end: 18, ), ), local: false, arguments: [ Variable( name: Token( kind: Identifier("n"), range: Range( start: 19, end: 20, ), ), ty: Some(Number), ), ], return_type: Some(Number), generics: [], body: Block(BlockStatement( statements: [ If(IfStatement( condition: Binary(BinaryExpression( operator: Add, left: Identifier(Identifier( name: "n", range: Range( start: 45, end: 46, ), )), right: Literal(Number(NumberLiteral( value: "1", range: Range( start: 49, end: 50, ), ))), range: Range( start: 47, end: 48, ), )), then_body: Block(BlockStatement( statements: [ Return(ReturnStatement( values: [ Identifier(Identifier( name: "n", range: Range( start: 71, end: 72, ), )), ], range: Range( start: 64, end: 70, ), )), ], )), else_if_branches: [], else_body: None, range: Range( start: 42, end: 80, ), )), Return(ReturnStatement( values: [ Binary(BinaryExpression( operator: Add, left: Call(CallExpression( left: Identifier(Identifier( name: "fibonacci", range: Range( start: 92, end: 101, ), )), args: Grouped(GroupedExpression( expressions: [ Binary(BinaryExpression( operator: Subtract, left: Identifier(Identifier( name: "n", range: Range( start: 102, end: 103, ), )), right: Literal(Number(NumberLiteral( value: "1", range: Range( start: 106, end: 107, ), ))), range: Range( start: 104, end: 105, ), )), ], range: Range( start: 101, end: 108, ), )), )), right: Call(CallExpression( left: Identifier(Identifier( name: "fibonacci", range: Range( start: 111, end: 120, ), )), args: Grouped(GroupedExpression( expressions: [ Binary(BinaryExpression( operator: Subtract, left: Identifier(Identifier( name: "n", range: Range( start: 121, end: 122, ), )), right: Literal(Number(NumberLiteral( value: "2", range: Range( start: 125, end: 126, ), ))), range: Range( start: 123, end: 124, ), )), ], range: Range( start: 120, end: 127, ), )), )), range: Range( start: 109, end: 110, ), )), ], range: Range( start: 85, end: 91, ), )), ], )), range: Range( start: 0, end: 131, ), range_return_type: Some(Range( start: 31, end: 37, )), )), ], )