]> granicus.if.org Git - clang/commitdiff
Make sure Sema::ParsedFreeStandingDeclSpec() returns a decl representing the type.
authorSteve Naroff <snaroff@apple.com>
Sat, 17 Nov 2007 21:21:01 +0000 (21:21 +0000)
committerSteve Naroff <snaroff@apple.com>
Sat, 17 Nov 2007 21:21:01 +0000 (21:21 +0000)
Adding basic printing to StmtPrinter::PrintRawDecl().

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

AST/StmtPrinter.cpp
Driver/ASTConsumers.cpp
Sema/SemaDecl.cpp

index d96a0486cf28d327ee649ae8dbb5595d2e55e529..fa3eb84b529700d86cac11eb413e0c43807e1692 100644 (file)
@@ -133,8 +133,16 @@ void StmtPrinter::PrintRawDecl(Decl *D) {
         PrintExpr(V->getInit());
       }
     }
+  } else if (TagDecl *TD = dyn_cast<TagDecl>(D)) {
+    // print a free standing tag decl (e.g. "struct x;"). 
+    OS << TD->getKindName();
+    OS << " ";
+    if (const IdentifierInfo *II = TD->getIdentifier())
+      OS << II->getName();
+    else
+      OS << "<anonymous>";
+    // FIXME: print tag bodies.
   } else {
-    // FIXME: "struct x;"
     assert(0 && "Unexpected decl");
   }
 }
index e347ccb832a3bef3f609b7da2ed85ac59e758dac..9175a08314228ac1727962668e80adf79ddab73b 100644 (file)
@@ -536,7 +536,7 @@ namespace {
       } else if (FileVarDecl *FVD = dyn_cast<FileVarDecl>(D)) {
         CodeGen::CodeGenGlobalVar(Builder, FVD);
       } else {
-        assert(isa<TypedefDecl>(D) && "Only expected typedefs here");
+        assert(isa<TypeDecl>(D) && "Only expected type decls here");
         // don't codegen for now, eventually pass down for debug info.
         //std::cerr << "Read top-level typedef decl: '" << D->getName() << "'\n";
       }
index 2c016df78129f2fae2fc4a5f1f24a0ff5ba57932..bd6307f36b38bc8c89eeaec38eab44a46af3f773 100644 (file)
@@ -347,7 +347,7 @@ Sema::DeclTy *Sema::ParsedFreeStandingDeclSpec(Scope *S, DeclSpec &DS) {
   // TODO: emit error on 'typedef int;'
   // if (!DS.isMissingDeclaratorOk()) Diag(...);
   
-  return 0;
+  return DS.getTypeRep();
 }
 
 bool Sema::CheckSingleInitializer(Expr *&Init, bool isStatic,