// 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 `factorial` // CHECK-NEXT: | `--ArgumentList // CHECK-NEXT: | `--NumberLiteral `10` // CHECK-NEXT: `--FunctionDecl // CHECK-NEXT: |--FunctionProto // CHECK-NEXT: | |--Identifier `factorial` // CHECK-NEXT: | `--ParamList // CHECK-NEXT: | `--ParamDecl `n` // CHECK-NEXT: `--BlockStmt // CHECK-NEXT: `--ContentStmt // CHECK-NEXT: `--Content // CHECK-NEXT: `--IfStmt // 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: `--MultiplyExpr // CHECK-NEXT: |--Identifier `n` // CHECK-NEXT: `--CallExpr // CHECK-NEXT: |--Identifier `factorial` // CHECK-NEXT: `--ArgumentList // CHECK-NEXT: `--SubtractExpr // CHECK-NEXT: |--Identifier `n` // CHECK-NEXT: `--NumberLiteral `1` { factorial(10) } == function factorial(n) { n == 1: ~ return 1 - else: ~ return (n * factorial(n - 1)) }