// RUN: %ink-compiler --stdin --compile-only --dump-ast < %s | FileCheck %s // CHECK: File "" // CHECK-NEXT: |--BlockStmt // CHECK-NEXT: | `--ContentStmt // CHECK-NEXT: | `--Content // CHECK-NEXT: | `--InlineLogicExpr // CHECK-NEXT: | `--CallExpr // CHECK-NEXT: | |--Identifier `fib` // CHECK-NEXT: | `--ArgumentList // CHECK-NEXT: | `--NumberLiteral `10` // CHECK-NEXT: `--FunctionDecl // CHECK-NEXT: |--FunctionProto // CHECK-NEXT: | |--Identifier `fib` // CHECK-NEXT: | `--ParamList // CHECK-NEXT: | `--ParamDecl `n` // CHECK-NEXT: `--BlockStmt // CHECK-NEXT: `--ContentStmt // CHECK-NEXT: `--Content // CHECK-NEXT: `--MultiIfStmt // CHECK-NEXT: |--IfBranch // CHECK-NEXT: | |--LogicalEqualityExpr // CHECK-NEXT: | | |--Identifier `n` // CHECK-NEXT: | | `--NumberLiteral `0` // CHECK-NEXT: | `--BlockStmt // CHECK-NEXT: | `--ReturnStmt // CHECK-NEXT: | `--NumberLiteral `0` // CHECK-NEXT: |--IfBranch // CHECK-NEXT: | |--LogicalEqualityExpr // CHECK-NEXT: | | |--Identifier `n` // CHECK-NEXT: | | `--NumberLiteral `1` // CHECK-NEXT: | `--BlockStmt // CHECK-NEXT: | `--ReturnStmt // CHECK-NEXT: | `--NumberLiteral `1` // CHECK-NEXT: `--ElseBranch // CHECK-NEXT: `--BlockStmt // CHECK-NEXT: `--ReturnStmt // CHECK-NEXT: `--AddExpr // CHECK-NEXT: |--CallExpr // CHECK-NEXT: | |--Identifier `fib` // CHECK-NEXT: | `--ArgumentList // CHECK-NEXT: | `--SubtractExpr // CHECK-NEXT: | |--Identifier `n` // CHECK-NEXT: | `--NumberLiteral `1` // CHECK-NEXT: `--CallExpr // CHECK-NEXT: |--Identifier `fib` // CHECK-NEXT: `--ArgumentList // CHECK-NEXT: `--SubtractExpr // CHECK-NEXT: |--Identifier `n` // CHECK-NEXT: `--NumberLiteral `2` { fib(10) } == function fib(n) { - n == 0: ~ return 0 - n == 1: ~ return 1 - else: ~ return fib(n - 1) + fib(n - 2) }