diff --git a/src/Evaluator/Core/EvalFunctionCall.cpp b/src/Evaluator/Core/EvalFunctionCall.cpp index 01e10e0..c52ae7d 100644 --- a/src/Evaluator/Core/EvalFunctionCall.cpp +++ b/src/Evaluator/Core/EvalFunctionCall.cpp @@ -64,7 +64,7 @@ namespace Fig fnName.toBasicString(), fn.builtinParamCount, evaluatedArgs.getLength()), - fnArgs.argv.back()); + (fnArgs.getLength() > 0 ? fnArgs.argv.back() : call)); } return executeFunction(fn, evaluatedArgs, nullptr); } diff --git a/src/Evaluator/Core/EvalStatement.cpp b/src/Evaluator/Core/EvalStatement.cpp index 6fc34b8..629b2be 100644 --- a/src/Evaluator/Core/EvalStatement.cpp +++ b/src/Evaluator/Core/EvalStatement.cpp @@ -1,4 +1,4 @@ -#include "Evaluator/Core/ExprResult.hpp" +#include #include #include #include diff --git a/src/Module/Library/std/value/value.fig b/src/Module/Library/std/value/value.fig index 481afc6..d3a8dd7 100644 --- a/src/Module/Library/std/value/value.fig +++ b/src/Module/Library/std/value/value.fig @@ -7,7 +7,7 @@ import _builtins; -public func type(object: Any) -> String +public func _type(object: Any) -> String { return __fvalue_type(object); } diff --git a/src/Module/builtins.cpp b/src/Module/builtins.cpp index 95541ea..6e6dbb6 100644 --- a/src/Module/builtins.cpp +++ b/src/Module/builtins.cpp @@ -1,10 +1,10 @@ -#include "Ast/Expressions/BinaryExpr.hpp" -#include "Ast/Expressions/FunctionCall.hpp" -#include "Ast/Expressions/ValueExpr.hpp" -#include "Ast/Expressions/VarExpr.hpp" -#include "Ast/Statements/ControlSt.hpp" -#include "Ast/astBase.hpp" -#include "Ast/functionParameters.hpp" +#include +#include +#include +#include +#include +#include +#include #include #include #include @@ -75,6 +75,16 @@ namespace Fig::Builtins {u8"Map", std::make_shared(StructType(ValueType::Map, nullptr, {}, true))}, // Type `StructType` `StructInstance` `Module` `InterfaceType` // Not allowed to call constructor! + + {u8"type", std::make_shared(Function( + u8"type", + [](const std::vector &_args) -> ObjectPtr + { + const ObjectPtr &arg = _args[0]; + return std::make_shared(prettyType(arg)); + }, + 1 + ))}, }; return builtinValues; }