aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/cps/FunctionAST.h3
-rw-r--r--include/cps/FunctionGen.h2
-rw-r--r--include/cps/Lexer.h1
3 files changed, 6 insertions, 0 deletions
diff --git a/include/cps/FunctionAST.h b/include/cps/FunctionAST.h
index 9188015..5280d58 100644
--- a/include/cps/FunctionAST.h
+++ b/include/cps/FunctionAST.h
@@ -35,6 +35,7 @@ class PrototypeAST {
std::string OwnerClass;
bool IsPublic;
bool IsVariadic = false;
+ bool IsDefaultReturn = false;
int Operator = 0;
public:
@@ -49,6 +50,8 @@ public:
const std::vector<ParamDecl> &getParams() const { return Params; }
const std::string &getReturnType() const { return ReturnType; }
bool isOverload() const { return IsOverload; }
+ bool isDefaultReturn() const { return IsDefaultReturn; }
+ void setDefaultReturn(bool V) { IsDefaultReturn = V; }
int getOperator() const { return Operator; }
void setOperator(int Op) { Operator = Op; }
bool isExternal() const { return IsExternal; }
diff --git a/include/cps/FunctionGen.h b/include/cps/FunctionGen.h
index c3c530b..5e895fe 100644
--- a/include/cps/FunctionGen.h
+++ b/include/cps/FunctionGen.h
@@ -42,6 +42,7 @@ struct FuncSig {
std::string ParamKey;
std::string ReturnKey;
bool IsOverload = false;
+ bool IsDefaultReturn = false;
const PrototypeAST *Prototype = nullptr;
std::string ReturnTypeName;
std::vector<ParamSig> Params;
@@ -122,6 +123,7 @@ public:
void setVisibility(std::function<bool(size_t)> Predicate) { Visible = std::move(Predicate); }
std::vector<const FuncSig *> getOverloads(const std::string &Name, bool AllUnits = false) const;
static bool isReservedRuntimeName(const std::string &Name);
+ static const FuncSig *selectDefaultReturn(const std::vector<const FuncSig *> &Candidates);
bool hasFunction(const std::string &Name) const { return !getOverloads(Name).empty(); }
const FuncSig *getSignatureByLink(const std::string &Name) const;
diff --git a/include/cps/Lexer.h b/include/cps/Lexer.h
index 3d057a3..1268582 100644
--- a/include/cps/Lexer.h
+++ b/include/cps/Lexer.h
@@ -79,6 +79,7 @@ enum Token {
tok_call = -406,
tok_byref = -407,
tok_byval = -408,
+ tok_default = -409,
tok_openfile = -500,
tok_readfile = -501,