aboutsummaryrefslogtreecommitdiff
path: root/include/cps/CodeGen.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/cps/CodeGen.h')
-rw-r--r--include/cps/CodeGen.h7
1 files changed, 5 insertions, 2 deletions
diff --git a/include/cps/CodeGen.h b/include/cps/CodeGen.h
index 463c613..04bf25c 100644
--- a/include/cps/CodeGen.h
+++ b/include/cps/CodeGen.h
@@ -43,9 +43,12 @@ class CodeGen {
void importSymbols();
void runGlobalPrePass(const SourceUnit &Unit, int Phase);
IdentifierMap<SymbolInfo> Symbols;
- IdentifierMap<IdentifierMap<FunctionDefAST*>> ClassMethods;
+ IdentifierMap<IdentifierMap<std::vector<FunctionDefAST*>>> ClassMethods;
std::string CurrentClass;
- const PrototypeAST *findMethod(const std::string &Class, const std::string &Name) const;
+ const std::vector<FunctionDefAST *> *findMethod(const std::string &Class, const std::string &Name) const;
+ bool isRegisteredMethod(const std::string &Class, const PrototypeAST *Method) const;
+ const FuncSig *resolveMethod(const std::string &Class, const std::string &Name,
+ const std::vector<std::unique_ptr<ExprAST>> &Args);
llvm::Value *emitMemberCall(MemberCallExprAST *Call);
llvm::Value *emitMethodCall(const std::string &Class, llvm::Value *Receiver,
const std::string &Name,