]> granicus.if.org Git - clang/commitdiff
Wdeprecated: LambdaScopeInfos need to be copied, so make the ScopeInfo hierarchy...
authorDavid Blaikie <dblaikie@gmail.com>
Wed, 12 Aug 2015 23:59:02 +0000 (23:59 +0000)
committerDavid Blaikie <dblaikie@gmail.com>
Wed, 12 Aug 2015 23:59:02 +0000 (23:59 +0000)
Making the base class's copy ctor protected and the derived classes
final to avoid any slicing-prone APIs.

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

include/clang/Sema/ScopeInfo.h

index 15ee8a4ba7cd1c4072660c2d5383d7c4560f6867..472e294bd840d1e563c408ce6b7201314d5540d8 100644 (file)
@@ -291,6 +291,9 @@ private:
   /// Part of the implementation of -Wrepeated-use-of-weak.
   WeakObjectUseMap WeakObjectUses;
 
+protected:
+  FunctionScopeInfo(const FunctionScopeInfo&) = default;
+
 public:
   /// Record that a weak object was accessed.
   ///
@@ -364,6 +367,9 @@ public:
 };
 
 class CapturingScopeInfo : public FunctionScopeInfo {
+protected:
+  CapturingScopeInfo(const CapturingScopeInfo&) = default;
+
 public:
   enum ImplicitCaptureStyle {
     ImpCap_None, ImpCap_LambdaByval, ImpCap_LambdaByref, ImpCap_Block,
@@ -549,7 +555,7 @@ public:
 };
 
 /// \brief Retains information about a block that is currently being parsed.
-class BlockScopeInfo : public CapturingScopeInfo {
+class BlockScopeInfo final : public CapturingScopeInfo {
 public:
   BlockDecl *TheDecl;
   
@@ -576,7 +582,7 @@ public:
 };
 
 /// \brief Retains information about a captured region.
-class CapturedRegionScopeInfo: public CapturingScopeInfo {
+class CapturedRegionScopeInfo final : public CapturingScopeInfo {
 public:
   /// \brief The CapturedDecl for this statement.
   CapturedDecl *TheCapturedDecl;
@@ -617,7 +623,7 @@ public:
   }
 };
 
-class LambdaScopeInfo : public CapturingScopeInfo {
+class LambdaScopeInfo final : public CapturingScopeInfo {
 public:
   /// \brief The class that describes the lambda.
   CXXRecordDecl *Lambda;