don't infer diag class from parenting relations, make it an explicit field
authorChris Lattner <sabre@nondot.org>
Wed, 15 Apr 2009 16:55:46 +0000 (16:55 +0000)
committerChris Lattner <sabre@nondot.org>
Wed, 15 Apr 2009 16:55:46 +0000 (16:55 +0000)
in the record.

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

utils/TableGen/ClangDiagnosticsEmitter.cpp

index 430b4f7a15ec685f96f2390074acd4ca9643cd6b..147e2fd1b8d65e9759949cce3be5f18f63352e8f 100644 (file)
@@ -39,16 +39,6 @@ static const RecordVal* findRecordVal(const Record& R, const std::string &key) {
   return 0;
 }
 
-static const Record* getDiagKind(const Record* DiagClass, const Record &R) {  
-  const SuperClassVector &SC = R.getSuperClasses();
-  for (SuperClassVector::const_iterator I=SC.begin(), E=SC.end(); I!=E; ++I)
-    if ((*I)->isSubClassOf(DiagClass) && 
-        (*I)->getName() != "DiagnosticControlled")
-      return *I;
-  
-  return 0;
-}
-
 static void EmitEscaped(std::ostream& OS, const std::string &s) {
   for (std::string::const_iterator I=s.begin(), E=s.end(); I!=E; ++I)
     switch (*I) {
@@ -69,12 +59,8 @@ static void EmitAllCaps(std::ostream& OS, const std::string &s) {
 
 static void ProcessDiag(std::ostream &OS, const Record *DiagClass,
                         const Record &R) {
-  const Record* DiagKind = getDiagKind(DiagClass, R);
-  if (!DiagKind)
-    return;
-
   OS << "DIAG(" << R.getName() << ", ";
-  EmitAllCaps(OS, DiagKind->getName());
+  OS << R.getValueAsDef("Class")->getName();
   OS << ", diag::" << R.getValueAsDef("DefaultMapping")->getName();
   OS << ", \"";
   EmitEscaped(OS, R.getValueAsString("Text"));