fun foo(x: f64) -> f64 { x + 7 } fun test() -> f64 { foo(1) } // @no-errors // @eval: Float(8.0) // @type: 20 f64 // @concrete: // | File // | FunctionDecl // | Fun:'"fun"' // | Identifier:'"foo"' // | ParamList // | LeftParen:'"("' // | Parameter // | Identifier:'"x"' // | Colon:'":"' // | TypeExpression // | TypeIdentifier // | Identifier:'"f64"' // | RightParen:'")"' // | ReturnType // | Arrow:'"->"' // | TypeExpression // | TypeIdentifier // | Identifier:'"f64"' // | Block // | LeftBrace:'"{"' // | ExpressionStatement // | BinaryExpression // | Identifier // | Identifier:'"x"' // | Plus:'"+"' // | LiteralExpression // | Number:'"7"' // | RightBrace:'"}"' // | FunctionDecl // | Fun:'"fun"' // | Identifier:'"test"' // | ParamList // | LeftParen:'"("' // | RightParen:'")"' // | ReturnType // | Arrow:'"->"' // | TypeExpression // | TypeIdentifier // | Identifier:'"f64"' // | Block // | LeftBrace:'"{"' // | ExpressionStatement // | CallExpression // | Identifier // | Identifier:'"foo"' // | ArgumentList // | LeftParen:'"("' // | Argument // | LiteralExpression // | Number:'"1"' // | RightParen:'")"' // | RightBrace:'"}"' // | // @compiles-to: // | function << module >> (0 args, 0 locals): // | strings (0): // | code (2): // | 0: PushNothing // | 1: Return // | function foo (1 args, 0 locals): // | strings (0): // | code (4): // | 0: LoadArgument(0) // | 1: PushFloat(7.0) // | 2: FloatAdd // | 3: Return // | function test (0 args, 0 locals): // | strings (0): // | code (4): // | 0: PushFloat(1.0) // | 1: LoadFunction(1) // | 2: Call(1) // | 3: Return // |