TableGen: add some more helpful error messages
Summary: Change-Id: I6f3dacf675a4126134577616e259696bebdade3a Reviewers: tra, simon_tatham, craig.topper, MartinO, arsenm Subscribers: wdng, llvm-commits Differential Revision: https://reviews.llvm.org/D47429 Change-Id: I614de12a4c154c6d53c090f2f3e53ad2d09942c5 llvm-svn: 333436
This commit is contained in:
parent
5a823d8d63
commit
e7ae0f48f4
|
@ -428,6 +428,13 @@ bool TGParser::addDefOne(std::unique_ptr<Record> Rec, Init *DefmName,
|
|||
Rec->resolveReferences();
|
||||
checkConcrete(*Rec);
|
||||
|
||||
if (!isa<StringInit>(Rec->getNameInit())) {
|
||||
PrintError(Rec->getLoc(), Twine("record name '") +
|
||||
Rec->getNameInit()->getAsString() +
|
||||
"' could not be fully resolved");
|
||||
return true;
|
||||
}
|
||||
|
||||
// If ObjectBody has template arguments, it's an error.
|
||||
assert(Rec->getTemplateArgs().empty() && "How'd this get template args?");
|
||||
|
||||
|
@ -2299,9 +2306,15 @@ bool TGParser::ParseTemplateArgList(Record *CurRec) {
|
|||
Lex.Lex(); // eat the ','
|
||||
|
||||
// Read the following declarations.
|
||||
SMLoc Loc = Lex.getLoc();
|
||||
TemplArg = ParseDeclaration(CurRec, true/*templateargs*/);
|
||||
if (!TemplArg)
|
||||
return true;
|
||||
|
||||
if (TheRecToAddTo->isTemplateArg(TemplArg))
|
||||
return Error(Loc, "template argument with the same name has already been "
|
||||
"defined");
|
||||
|
||||
TheRecToAddTo->addTemplateArg(TemplArg);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue