diff options
Diffstat (limited to 'lib/CodeGen/FunctionGen.cc')
| -rw-r--r-- | lib/CodeGen/FunctionGen.cc | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/lib/CodeGen/FunctionGen.cc b/lib/CodeGen/FunctionGen.cc index dc238b5..cbaee75 100644 --- a/lib/CodeGen/FunctionGen.cc +++ b/lib/CodeGen/FunctionGen.cc @@ -34,6 +34,10 @@ Type *FunctionGen::getLLVMType(const std::string &TypeName) { void FunctionGen::createArgumentAllocas(Function *F, const std::vector<ParamDecl> &Params) { Function::arg_iterator AI = F->arg_begin(); for (const ParamDecl &P : Params) { + if (Types.lookupEnumConstant(P.Name)) { + fprintf(stderr, "Error: parameter '%s' collides with an enum value\n", P.Name.c_str()); + HadError = true; + } Value *ArgVal = &(*AI); ++AI; ArgVal->setName(P.Name); @@ -70,6 +74,12 @@ Function *FunctionGen::emitPrototype(PrototypeAST *Proto) { HadError = true; return nullptr; } + if (Types.lookupEnumConstant(Proto->getName())) { + fprintf(stderr, "Error: '%s' is an enum value and cannot be a FUNCTION/PROCEDURE name\n", + Proto->getName().c_str()); + HadError = true; + return nullptr; + } FuncSig Sig; Sig.ReturnTypeName = Proto->getReturnType(); |
