]> granicus.if.org Git - clang/commitdiff
Look through SubstNonTypeTemplateParmExpr nodes in the various
authorDouglas Gregor <dgregor@apple.com>
Thu, 8 Sep 2011 17:56:33 +0000 (17:56 +0000)
committerDouglas Gregor <dgregor@apple.com>
Thu, 8 Sep 2011 17:56:33 +0000 (17:56 +0000)
Expr::Ignore* methods that also look through implicit casts.

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

lib/AST/Expr.cpp

index 26ff6f3b7d5f185f438ae481ae48ad3daba4cfc7..a3df189a6137f3333635b891da49d68500578c65 100644 (file)
@@ -2042,7 +2042,11 @@ Expr *Expr::IgnoreParenCasts() {
       E = Materialize->GetTemporaryExpr();
       continue;
     }
-      
+    if (SubstNonTypeTemplateParmExpr *NTTP
+                                  = dyn_cast<SubstNonTypeTemplateParmExpr>(E)) {
+      E = NTTP->getReplacement();
+      continue;
+    }      
     return E;
   }
 }
@@ -2076,6 +2080,10 @@ Expr *Expr::IgnoreParenLValueCasts() {
                                       = dyn_cast<MaterializeTemporaryExpr>(E)) {
       E = Materialize->GetTemporaryExpr();
       continue;
+    } else if (SubstNonTypeTemplateParmExpr *NTTP
+                                  = dyn_cast<SubstNonTypeTemplateParmExpr>(E)) {
+      E = NTTP->getReplacement();
+      continue;
     }
     break;
   }
@@ -2110,6 +2118,11 @@ Expr *Expr::IgnoreParenImpCasts() {
       E = Materialize->GetTemporaryExpr();
       continue;
     }
+    if (SubstNonTypeTemplateParmExpr *NTTP
+                                  = dyn_cast<SubstNonTypeTemplateParmExpr>(E)) {
+      E = NTTP->getReplacement();
+      continue;
+    }
     return E;
   }
 }
@@ -2167,6 +2180,12 @@ Expr *Expr::IgnoreParenNoopCasts(ASTContext &Ctx) {
       }
     }
 
+    if (SubstNonTypeTemplateParmExpr *NTTP
+                                  = dyn_cast<SubstNonTypeTemplateParmExpr>(E)) {
+      E = NTTP->getReplacement();
+      continue;
+    }
+    
     return E;
   }
 }