]> granicus.if.org Git - clang/commitdiff
Pass the ConstructLoc to BuildCXXConstructExpr.
authorAnders Carlsson <andersca@mac.com>
Sat, 5 Sep 2009 07:40:38 +0000 (07:40 +0000)
committerAnders Carlsson <andersca@mac.com>
Sat, 5 Sep 2009 07:40:38 +0000 (07:40 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81068 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Sema/Sema.h
lib/Sema/SemaDeclCXX.cpp
lib/Sema/SemaExprCXX.cpp
lib/Sema/SemaInit.cpp
lib/Sema/TreeTransform.h

index 4b9447740added6150cf99806f93e4cbf163c68e..ba466db77a5a5bb4557bb5381dd791054feb580f 100644 (file)
@@ -1812,13 +1812,17 @@ public:
                                     QualType DeclInitType, 
                                     Expr **Exprs, unsigned NumExprs);
 
-  OwningExprResult BuildCXXConstructExpr(QualType DeclInitType,
+  /// BuildCXXConstructExpr - Creates a complete call to a constructor,
+  /// including handling of its default argument expressions.
+  OwningExprResult BuildCXXConstructExpr(SourceLocation ConstructLoc, 
+                                         QualType DeclInitType,
                                          CXXConstructorDecl *Constructor,
                                          Expr **Exprs, unsigned NumExprs);
 
-  /// BuildCXXConstructExpr - Creates a complete call to a constructor,
-  /// including handling of its default argument expressions.
-  OwningExprResult BuildCXXConstructExpr(QualType DeclInitType,
+  // FIXME: Can re remove this and have the above BuildCXXConstructExpr check if
+  // the constructor can be elidable?
+  OwningExprResult BuildCXXConstructExpr(SourceLocation ConstructLoc, 
+                                         QualType DeclInitType,
                                          CXXConstructorDecl *Constructor,
                                          bool Elidable,
                                          Expr **Exprs, unsigned NumExprs);
index f8c59f4800963e387d7f3af4407187c9ebcf3a7c..3ee40e842c65f4b3a2d70b737d333c3372fbd2c7 100644 (file)
@@ -2808,7 +2808,7 @@ void Sema::DefineImplicitCopyConstructor(SourceLocation CurrentLocation,
 }
 
 Sema::OwningExprResult
-Sema::BuildCXXConstructExpr(QualType DeclInitType,
+Sema::BuildCXXConstructExpr(SourceLocation ConstructLoc, QualType DeclInitType,
                             CXXConstructorDecl *Constructor,
                             Expr **Exprs, unsigned NumExprs) {
   bool Elidable = false;
@@ -2830,18 +2830,16 @@ Sema::BuildCXXConstructExpr(QualType DeclInitType,
       Elidable = true;
   }
   
-  return BuildCXXConstructExpr(DeclInitType, Constructor, Elidable,
-                               Exprs, NumExprs);
+  return BuildCXXConstructExpr(ConstructLoc, DeclInitType, Constructor, 
+                               Elidable, Exprs, NumExprs);
 }
 
 /// BuildCXXConstructExpr - Creates a complete call to a constructor,
 /// including handling of its default argument expressions.
 Sema::OwningExprResult
-Sema::BuildCXXConstructExpr(QualType DeclInitType, 
-                            CXXConstructorDecl *Constructor,
-                            bool Elidable,
-                            Expr **Exprs, 
-                            unsigned NumExprs) {
+Sema::BuildCXXConstructExpr(SourceLocation ConstructLoc, QualType DeclInitType,
+                            CXXConstructorDecl *Constructor, bool Elidable,
+                            Expr **Exprs, unsigned NumExprs) {
   ExprOwningPtr<CXXConstructExpr> Temp(this, 
                                        CXXConstructExpr::Create(Context, 
                                                                 DeclInitType, 
@@ -2856,8 +2854,7 @@ Sema::BuildCXXConstructExpr(QualType DeclInitType,
     ParmVarDecl *Param = FDecl->getParamDecl(j);
 
     OwningExprResult ArgExpr = 
-      BuildCXXDefaultArgExpr(/*FIXME:*/SourceLocation(),
-                             FDecl, Param);
+      BuildCXXDefaultArgExpr(ConstructLoc, FDecl, Param);
     if (ArgExpr.isInvalid())
       return ExprError();
 
@@ -2901,8 +2898,9 @@ bool Sema::InitializeVarWithConstructor(VarDecl *VD,
                                         CXXConstructorDecl *Constructor,
                                         QualType DeclInitType, 
                                         Expr **Exprs, unsigned NumExprs) {
-  OwningExprResult TempResult = BuildCXXConstructExpr(DeclInitType, Constructor, 
-                                                      Exprs, NumExprs);
+  OwningExprResult TempResult = 
+    BuildCXXConstructExpr(/*FIXME: ConstructLoc*/ SourceLocation(),
+                          DeclInitType, Constructor, Exprs, NumExprs);
   if (TempResult.isInvalid())
     return true;
   
index 99d80944baa96091b1cbe206b652c989688ccbfe..1963f2ad7ccaf67c72f560af71ed2c96006664d2 100644 (file)
@@ -941,7 +941,8 @@ Sema::PerformImplicitConversion(Expr *&From, QualType ToType,
         // FIXME. Do we need to check for isLValueReferenceType?
         DefaultFunctionArrayConversion(From);
         OwningExprResult InitResult = 
-          BuildCXXConstructExpr(ToType.getNonReferenceType(), 
+          BuildCXXConstructExpr(/*FIXME:ConstructLoc*/SourceLocation(),
+                                ToType.getNonReferenceType(), 
                                 CD, &From, 1);
         // Take ownership of this expression.
         From = InitResult.takeAs<Expr>();
@@ -986,7 +987,8 @@ Sema::PerformImplicitConversion(Expr *&From, QualType ToType,
     assert(!ToType->isReferenceType());
     
     OwningExprResult FromResult = 
-      BuildCXXConstructExpr(ToType, SCS.CopyConstructor, &From, 1);
+      BuildCXXConstructExpr(/*FIXME:ConstructLoc*/SourceLocation(), 
+                            ToType, SCS.CopyConstructor, &From, 1);
     
     if (FromResult.isInvalid())
       return true;
index fb75ff3cd6cc8f678bbad275e6b9865a7fbd6050..936d996ea49ca45014cafb77e41411cc3f9952a1 100644 (file)
@@ -181,7 +181,8 @@ bool Sema::CheckInitializerTypes(Expr *&Init, QualType &DeclType,
           return true;
         
         OwningExprResult InitResult = 
-          BuildCXXConstructExpr(DeclType, Constructor, &Init, 1);
+          BuildCXXConstructExpr(/*FIXME:ConstructLoc*/SourceLocation(),
+                                DeclType, Constructor, &Init, 1);
         if (InitResult.isInvalid())
           return true;
         
index b49ed5487bb9ab1f1d2386a02a6cbf0ffa3b7048..a0642f92cb7be47d613b278235f6f3848314411b 100644 (file)
@@ -1450,7 +1450,9 @@ public:
                                            MultiExprArg Args) {
     unsigned NumArgs = Args.size();
     Expr **ArgsExprs = (Expr **)Args.release();
-    return getSema().BuildCXXConstructExpr(T, Constructor, IsElidable,
+    return getSema().BuildCXXConstructExpr(/*FIXME:ConstructLoc*/
+                                           SourceLocation(),
+                                           T, Constructor, IsElidable,
                                            ArgsExprs, NumArgs);
   }