aboutsummaryrefslogtreecommitdiff
path: root/lib/CodeGen/FunctionGen.cc
diff options
context:
space:
mode:
Diffstat (limited to 'lib/CodeGen/FunctionGen.cc')
-rw-r--r--lib/CodeGen/FunctionGen.cc6
1 files changed, 6 insertions, 0 deletions
diff --git a/lib/CodeGen/FunctionGen.cc b/lib/CodeGen/FunctionGen.cc
index 37df8ff..1f7bc2b 100644
--- a/lib/CodeGen/FunctionGen.cc
+++ b/lib/CodeGen/FunctionGen.cc
@@ -132,6 +132,12 @@ Function *FunctionGen::emitPrototype(PrototypeAST *Proto) {
return nullptr;
}
}
+ if (Proto->getOperator() == tok_assign &&
+ (Proto->getOwnerClass().empty() || !Proto->isOverload() ||
+ !sameIdentifier(Proto->getReturnType(), "VOID"))) {
+ reportError("Assignment operator must be an OVERLOAD member PROCEDURE");
+ return nullptr;
+ }
if (int Op = Proto->getOperator()) {
size_t Count = Proto->getParams().size() + !Proto->getOwnerClass().empty();
bool ValidCount = Op == '-' ? Count == 1 || Count == 2