Generate a parse error instead of a checked exception if template args are
authorChris Lattner <sabre@nondot.org>
Fri, 30 Sep 2005 04:42:31 +0000 (04:42 +0000)
committerChris Lattner <sabre@nondot.org>
Fri, 30 Sep 2005 04:42:31 +0000 (04:42 +0000)
used on a def.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23545 91177308-0d34-0410-b5e6-96231b3b80d8

utils/TableGen/FileParser.y

index 8fc704280f5e8498a8b2d5796ac679234c7c749f..9be816ecb4dc75577159f15fd8c691996ed029de 100644 (file)
@@ -559,15 +559,15 @@ DefName : ObjectName {
   Records.addDef(CurRec);
 };
 
-ObjectBody : OptTemplateArgList ClassList {
+ObjectBody : ClassList {
            ParsingTemplateArgs = false;
-           for (unsigned i = 0, e = $2->size(); i != e; ++i) {
-             addSubClass((*$2)[i].first, *(*$2)[i].second);
+           for (unsigned i = 0, e = $1->size(); i != e; ++i) {
+             addSubClass((*$1)[i].first, *(*$1)[i].second);
              // Delete the template arg values for the class
-             delete (*$2)[i].second;
+             delete (*$1)[i].second;
            }
-           delete $2;   // Delete the class list...
-
+           delete $1;   // Delete the class list...
+  
            // Process any variables on the set stack...
            for (unsigned i = 0, e = LetStack.size(); i != e; ++i)
              for (unsigned j = 0, e = LetStack[i].size(); j != e; ++j)
@@ -579,19 +579,15 @@ ObjectBody : OptTemplateArgList ClassList {
            CurRec = 0;
          };
 
-ClassInst : CLASS ClassName ObjectBody {
-  $$ = $3;
-};
+ClassInst : CLASS ClassName OptTemplateArgList ObjectBody {
+        $$ = $4;
+     };
 
 DefInst : DEF DefName ObjectBody {
   $3->resolveReferences();
 
   // If ObjectBody has template arguments, it's an error.
-  if (!$3->getTemplateArgs().empty()) {
-    err() << "Def '" << $3->getName()
-          << "' is not permitted to have template arguments!\n";
-    exit(1);
-  }
+  assert($3->getTemplateArgs().empty() && "How'd this get template args?");
   $$ = $3;
 };