]> granicus.if.org Git - clang/commitdiff
Minor refactoring to eliminate an extra switch during template instantiation
authorDouglas Gregor <dgregor@apple.com>
Wed, 25 Mar 2009 15:04:13 +0000 (15:04 +0000)
committerDouglas Gregor <dgregor@apple.com>
Wed, 25 Mar 2009 15:04:13 +0000 (15:04 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67684 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Sema/SemaTemplateInstantiateDecl.cpp

index 97fd2ed5f40b5f7e85846559cd5863df42a4e62c..5fd38f71ed20b86122f9b086735f2a0c52906dbd 100644 (file)
@@ -43,11 +43,12 @@ namespace {
     Decl *VisitFieldDecl(FieldDecl *D);
     Decl *VisitStaticAssertDecl(StaticAssertDecl *D);
     Decl *VisitEnumDecl(EnumDecl *D);
+    Decl *VisitEnumConstantDecl(EnumConstantDecl *D);
     Decl *VisitCXXMethodDecl(CXXMethodDecl *D);
     Decl *VisitCXXConstructorDecl(CXXConstructorDecl *D);
     Decl *VisitCXXDestructorDecl(CXXDestructorDecl *D);
     Decl *VisitCXXConversionDecl(CXXConversionDecl *D);
-    Decl *VisitParmVarDecl(ParmVarDecl *D);
+    ParmVarDecl *VisitParmVarDecl(ParmVarDecl *D);
     Decl *VisitOriginalParmVarDecl(OriginalParmVarDecl *D);
 
     // Base case. FIXME: Remove once we can instantiate everything.
@@ -203,6 +204,11 @@ Decl *TemplateDeclInstantiator::VisitEnumDecl(EnumDecl *D) {
   return Enum;
 }
 
+Decl *TemplateDeclInstantiator::VisitEnumConstantDecl(EnumConstantDecl *D) {
+  assert(false && "EnumConstantDecls can only occur within EnumDecls.");
+  return 0;
+}
+
 Decl *TemplateDeclInstantiator::VisitCXXMethodDecl(CXXMethodDecl *D) {
   // Only handle actual methods; we'll deal with constructors,
   // destructors, etc. separately.
@@ -351,7 +357,7 @@ Decl *TemplateDeclInstantiator::VisitCXXConversionDecl(CXXConversionDecl *D) {
   return Conversion;  
 }
 
-Decl *TemplateDeclInstantiator::VisitParmVarDecl(ParmVarDecl *D) {
+ParmVarDecl *TemplateDeclInstantiator::VisitParmVarDecl(ParmVarDecl *D) {
   QualType OrigT = SemaRef.InstantiateType(D->getOriginalType(), TemplateArgs,
                                            NumTemplateArgs, D->getLocation(),
                                            D->getDeclName());
@@ -425,7 +431,7 @@ TemplateDeclInstantiator::InstantiateFunctionType(FunctionDecl *D,
   for (FunctionDecl::param_iterator P = D->param_begin(), 
                                  PEnd = D->param_end();
        P != PEnd; ++P) {
-    if (ParmVarDecl *PInst = (ParmVarDecl *)ParamInstantiator.Visit(*P)) {
+    if (ParmVarDecl *PInst = ParamInstantiator.VisitParmVarDecl(*P)) {
       if (PInst->getType()->isVoidType()) {
         SemaRef.Diag(PInst->getLocation(), diag::err_param_with_void_type);
         PInst->setInvalidDecl();