From bcc946c45abfa68cf255f6f8f795d07fbc65e756 Mon Sep 17 00:00:00 2001
From: Rye Mutt <rye@alchemyviewer.org>
Date: Tue, 17 Sep 2019 05:55:16 -0400
Subject: [PATCH] Cleanup cleanup kill me now.

---
 indra/newview/llcapabilityprovider.h          |  2 +-
 indra/newview/llpanelmaininventory.h          |  2 +-
 indra/newview/llpanelmarketplaceinbox.h       |  2 +-
 .../llpanelmarketplaceinboxinventory.h        |  4 +--
 indra/newview/llpanelme.h                     |  2 +-
 indra/newview/llpanelmediasettingsgeneral.h   |  2 +-
 .../newview/llpanelmediasettingspermissions.h |  2 +-
 indra/newview/llpanelmediasettingssecurity.h  |  2 +-
 indra/newview/llpanelnearbymedia.h            |  2 +-
 indra/newview/llpanelobjectinventory.cpp      | 28 +++++++++----------
 indra/newview/llpaneloutfitedit.cpp           |  4 +--
 indra/newview/llpanelpicks.cpp                |  4 +--
 indra/newview/llpanelplaces.cpp               | 10 +++----
 indra/newview/llpanelplaces.h                 |  2 +-
 indra/newview/llpanelprofile.cpp              |  4 +--
 indra/newview/llpanelvolume.cpp               |  2 +-
 indra/newview/llpanelwearing.cpp              |  4 +--
 indra/newview/llparcelselection.cpp           |  4 ---
 indra/newview/llparcelselection.h             |  4 +--
 indra/newview/llpathfindinglinkset.h          |  2 +-
 indra/newview/llpathfindinglinksetlist.h      |  2 +-
 indra/newview/llpathfindingmanager.cpp        |  4 +--
 .../newview/llpersistentnotificationstorage.h |  2 +-
 indra/newview/llphysicsshapebuilderutil.h     |  2 +-
 indra/newview/llpickitem.h                    |  2 +-
 indra/newview/llpipelinelistener.h            |  2 +-
 indra/newview/llplacesfolderview.h            |  2 +-
 indra/newview/llplacesinventorybridge.h       |  8 +++---
 indra/newview/llpostcard.h                    |  2 +-
 indra/newview/llpreviewgesture.cpp            |  4 +--
 indra/newview/llpreviewscript.cpp             |  2 +-
 indra/newview/llrootview.h                    |  4 +--
 indra/newview/llscriptfloater.h               |  2 +-
 indra/newview/llsearchhistory.h               |  2 +-
 indra/newview/llselectmgr.h                   |  2 +-
 indra/newview/llsidepanelappearance.cpp       |  8 ++----
 indra/newview/llsidepanelinventory.cpp        |  2 +-
 indra/newview/llsidepanelinventorysubpanel.h  |  2 +-
 indra/newview/llsidepaneliteminfo.cpp         |  4 +--
 indra/newview/llsidepaneliteminfo.h           |  2 +-
 indra/newview/llsidepaneltaskinfo.cpp         |  2 +-
 indra/newview/llsidetraypanelcontainer.h      |  2 +-
 indra/newview/llsnapshotlivepreview.h         |  2 +-
 indra/newview/llvieweroctree.h                |  2 +-
 indra/newview/llviewerparcelmedia.h           |  2 +-
 indra/newview/llviewerparceloverlay.h         |  2 +-
 indra/newview/llviewerpartsim.h               |  2 +-
 indra/newview/llviewerpartsource.h            |  8 +++---
 indra/newview/llviewerregion.cpp              |  4 +--
 indra/newview/llviewerregion.h                |  2 +-
 indra/newview/llviewershadermgr.h             |  2 +-
 indra/newview/llviewertexlayer.cpp            |  2 +-
 indra/newview/llviewertexture.h               |  4 +--
 indra/newview/llviewerwearable.cpp            |  5 ----
 indra/newview/llviewerwearable.h              |  4 +--
 indra/newview/llviewerwindow.cpp              |  4 +--
 indra/newview/llviewerwindow.h                |  2 +-
 indra/newview/llviewerwindowlistener.h        |  2 +-
 indra/newview/llvlcomposition.cpp             |  5 ----
 indra/newview/llvlcomposition.h               |  4 +--
 indra/newview/llvosurfacepatch.cpp            |  2 +-
 indra/newview/llvovolume.cpp                  |  2 +-
 indra/newview/llwatchdog.cpp                  |  4 +--
 indra/newview/llwearableitemslist.cpp         |  4 +--
 64 files changed, 102 insertions(+), 120 deletions(-)

diff --git a/indra/newview/llcapabilityprovider.h b/indra/newview/llcapabilityprovider.h
index b692d03848..47467d342c 100644
--- a/indra/newview/llcapabilityprovider.h
+++ b/indra/newview/llcapabilityprovider.h
@@ -36,7 +36,7 @@
 class LLCapabilityProvider
 {
 public:
-    virtual ~LLCapabilityProvider() {}
+	virtual ~LLCapabilityProvider() = default;
     /**
      * Get a capability URL, given a capability name. Returns empty string if
      * no such capability is defined on this provider.
diff --git a/indra/newview/llpanelmaininventory.h b/indra/newview/llpanelmaininventory.h
index 205528b27b..7aa0498e91 100644
--- a/indra/newview/llpanelmaininventory.h
+++ b/indra/newview/llpanelmaininventory.h
@@ -53,7 +53,7 @@ class LLFloater;
 // including all the fixin's (e.g. AllItems/RecentItems tabs, filter floaters).
 //
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-class LLPanelMainInventory : public LLPanel, LLInventoryObserver
+class LLPanelMainInventory final : public LLPanel, LLInventoryObserver
 {
 public:
 	friend class LLFloaterInventoryFinder;
diff --git a/indra/newview/llpanelmarketplaceinbox.h b/indra/newview/llpanelmarketplaceinbox.h
index e5c15fbd57..b365a0b5cb 100644
--- a/indra/newview/llpanelmarketplaceinbox.h
+++ b/indra/newview/llpanelmarketplaceinbox.h
@@ -33,7 +33,7 @@ class LLButton;
 class LLInventoryPanel;
 class LLUICtrl;
 
-class LLPanelMarketplaceInbox : public LLPanel
+class LLPanelMarketplaceInbox final : public LLPanel
 {
 public:
 
diff --git a/indra/newview/llpanelmarketplaceinboxinventory.h b/indra/newview/llpanelmarketplaceinboxinventory.h
index c8a1d7b9fe..98ed112d09 100644
--- a/indra/newview/llpanelmarketplaceinboxinventory.h
+++ b/indra/newview/llpanelmarketplaceinboxinventory.h
@@ -52,7 +52,7 @@ public:
 };
 
 
-class LLInboxFolderViewFolder : public LLFolderViewFolder, public LLBadgeOwner
+class LLInboxFolderViewFolder final : public LLFolderViewFolder, public LLBadgeOwner
 {
 public:
 	struct Params : public LLInitParam::Block<Params, LLFolderViewFolder::Params>
@@ -83,7 +83,7 @@ protected:
 };
 
 
-class LLInboxFolderViewItem : public LLFolderViewItem, public LLBadgeOwner
+class LLInboxFolderViewItem final : public LLFolderViewItem, public LLBadgeOwner
 {
 public:
 	struct Params : public LLInitParam::Block<Params, LLFolderViewItem::Params>
diff --git a/indra/newview/llpanelme.h b/indra/newview/llpanelme.h
index e08dfa8d97..d0870f4d41 100644
--- a/indra/newview/llpanelme.h
+++ b/indra/newview/llpanelme.h
@@ -34,7 +34,7 @@
 * Panel for displaying Agent's Picks and Classifieds panel.
 * LLPanelMe allows user to edit his picks and classifieds.
 */
-class LLPanelMe : public LLPanelProfile
+class LLPanelMe final : public LLPanelProfile
 {
 	LOG_CLASS(LLPanelMe);
 
diff --git a/indra/newview/llpanelmediasettingsgeneral.h b/indra/newview/llpanelmediasettingsgeneral.h
index d001396858..d50bd74221 100644
--- a/indra/newview/llpanelmediasettingsgeneral.h
+++ b/indra/newview/llpanelmediasettingsgeneral.h
@@ -38,7 +38,7 @@ class LLMediaCtrl;
 class LLTextBox;
 class LLFloaterMediaSettings;
 
-class LLPanelMediaSettingsGeneral : public LLPanel
+class LLPanelMediaSettingsGeneral final : public LLPanel
 {
 public:
 	LLPanelMediaSettingsGeneral();
diff --git a/indra/newview/llpanelmediasettingspermissions.h b/indra/newview/llpanelmediasettingspermissions.h
index de6ab88453..2706f86720 100644
--- a/indra/newview/llpanelmediasettingspermissions.h
+++ b/indra/newview/llpanelmediasettingspermissions.h
@@ -38,7 +38,7 @@ class LLComboBox;
 class LLCheckBoxCtrl;
 class LLNameBox;
 
-class LLPanelMediaSettingsPermissions : public LLPanel
+class LLPanelMediaSettingsPermissions final : public LLPanel
 {
 public:
 	LLPanelMediaSettingsPermissions();
diff --git a/indra/newview/llpanelmediasettingssecurity.h b/indra/newview/llpanelmediasettingssecurity.h
index d15bb5efc3..d3c3ff3851 100644
--- a/indra/newview/llpanelmediasettingssecurity.h
+++ b/indra/newview/llpanelmediasettingssecurity.h
@@ -34,7 +34,7 @@ class LLScrollListCtrl;
 class LLTextBox;
 class LLFloaterMediaSettings;
 
-class LLPanelMediaSettingsSecurity : public LLPanel
+class LLPanelMediaSettingsSecurity final : public LLPanel
 {
 public:
 	LLPanelMediaSettingsSecurity();
diff --git a/indra/newview/llpanelnearbymedia.h b/indra/newview/llpanelnearbymedia.h
index 4fe9dc9665..e85def8c6f 100644
--- a/indra/newview/llpanelnearbymedia.h
+++ b/indra/newview/llpanelnearbymedia.h
@@ -39,7 +39,7 @@ class LLTextBox;
 class LLComboBox;
 class LLViewerMediaImpl;
 
-class LLPanelNearByMedia : public LLPanel
+class LLPanelNearByMedia final : public LLPanel
 {
 public:
 	
diff --git a/indra/newview/llpanelobjectinventory.cpp b/indra/newview/llpanelobjectinventory.cpp
index 1457d2e30b..88b0fcdc7b 100644
--- a/indra/newview/llpanelobjectinventory.cpp
+++ b/indra/newview/llpanelobjectinventory.cpp
@@ -94,7 +94,7 @@ public:
 					  const LLUUID& uuid,
 					  const std::string& name,
 					  U32 flags=0);
-	virtual ~LLTaskInvFVBridge() {}
+	virtual ~LLTaskInvFVBridge() = default;
 
 	LLFontGL::StyleFlags getLabelStyle() const override { return LLFontGL::NORMAL; }
 	std::string getLabelSuffix() const override { return LLStringUtil::null; }
@@ -572,7 +572,7 @@ void LLTaskInvFVBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
 /// Class LLTaskFolderBridge
 ///----------------------------------------------------------------------------
 
-class LLTaskCategoryBridge : public LLTaskInvFVBridge
+class LLTaskCategoryBridge final : public LLTaskInvFVBridge
 {
 public:
 	LLTaskCategoryBridge(
@@ -747,7 +747,7 @@ BOOL LLTaskCategoryBridge::dragOrDrop(MASK mask, BOOL drop,
 /// Class LLTaskTextureBridge
 ///----------------------------------------------------------------------------
 
-class LLTaskTextureBridge : public LLTaskInvFVBridge
+class LLTaskTextureBridge final : public LLTaskInvFVBridge
 {
 public:
 	LLTaskTextureBridge(LLPanelObjectInventory* panel,
@@ -779,7 +779,7 @@ void LLTaskTextureBridge::openItem()
 /// Class LLTaskSoundBridge
 ///----------------------------------------------------------------------------
 
-class LLTaskSoundBridge : public LLTaskInvFVBridge
+class LLTaskSoundBridge final : public LLTaskInvFVBridge
 {
 public:
 	LLTaskSoundBridge(LLPanelObjectInventory* panel,
@@ -868,7 +868,7 @@ void LLTaskSoundBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
 /// Class LLTaskLandmarkBridge
 ///----------------------------------------------------------------------------
 
-class LLTaskLandmarkBridge : public LLTaskInvFVBridge
+class LLTaskLandmarkBridge final : public LLTaskInvFVBridge
 {
 public:
 	LLTaskLandmarkBridge(LLPanelObjectInventory* panel,
@@ -881,7 +881,7 @@ public:
 /// Class LLTaskCallingCardBridge
 ///----------------------------------------------------------------------------
 
-class LLTaskCallingCardBridge : public LLTaskInvFVBridge
+class LLTaskCallingCardBridge final : public LLTaskInvFVBridge
 {
 public:
 	LLTaskCallingCardBridge(LLPanelObjectInventory* panel,
@@ -908,7 +908,7 @@ BOOL LLTaskCallingCardBridge::renameItem(const std::string& new_name)
 /// Class LLTaskScriptBridge
 ///----------------------------------------------------------------------------
 
-class LLTaskScriptBridge : public LLTaskInvFVBridge
+class LLTaskScriptBridge  : public LLTaskInvFVBridge
 {
 public:
 	LLTaskScriptBridge(LLPanelObjectInventory* panel,
@@ -919,7 +919,7 @@ public:
 	//static BOOL enableIfCopyable( void* userdata );
 };
 
-class LLTaskLSLBridge : public LLTaskScriptBridge
+class LLTaskLSLBridge final : public LLTaskScriptBridge
 {
 public:
 	LLTaskLSLBridge(LLPanelObjectInventory* panel,
@@ -970,7 +970,7 @@ BOOL LLTaskLSLBridge::removeItem()
 /// Class LLTaskObjectBridge
 ///----------------------------------------------------------------------------
 
-class LLTaskObjectBridge : public LLTaskInvFVBridge
+class LLTaskObjectBridge final : public LLTaskInvFVBridge
 {
 public:
 	LLTaskObjectBridge(LLPanelObjectInventory* panel,
@@ -984,7 +984,7 @@ public:
 /// Class LLTaskNotecardBridge
 ///----------------------------------------------------------------------------
 
-class LLTaskNotecardBridge : public LLTaskInvFVBridge
+class LLTaskNotecardBridge final : public LLTaskInvFVBridge
 {
 public:
 	LLTaskNotecardBridge(LLPanelObjectInventory* panel,
@@ -1033,7 +1033,7 @@ BOOL LLTaskNotecardBridge::removeItem()
 /// Class LLTaskGestureBridge
 ///----------------------------------------------------------------------------
 
-class LLTaskGestureBridge : public LLTaskInvFVBridge
+class LLTaskGestureBridge final : public LLTaskInvFVBridge
 {
 public:
 	LLTaskGestureBridge(LLPanelObjectInventory* panel,
@@ -1067,7 +1067,7 @@ BOOL LLTaskGestureBridge::removeItem()
 /// Class LLTaskAnimationBridge
 ///----------------------------------------------------------------------------
 
-class LLTaskAnimationBridge : public LLTaskInvFVBridge
+class LLTaskAnimationBridge final : public LLTaskInvFVBridge
 {
 public:
 	LLTaskAnimationBridge(LLPanelObjectInventory* panel,
@@ -1105,7 +1105,7 @@ BOOL LLTaskAnimationBridge::removeItem()
 /// Class LLTaskWearableBridge
 ///----------------------------------------------------------------------------
 
-class LLTaskWearableBridge : public LLTaskInvFVBridge
+class LLTaskWearableBridge final : public LLTaskInvFVBridge
 {
 public:
 	LLTaskWearableBridge(LLPanelObjectInventory* panel,
@@ -1126,7 +1126,7 @@ LLUIImagePtr LLTaskWearableBridge::getIcon() const
 /// Class LLTaskMeshBridge
 ///----------------------------------------------------------------------------
 
-class LLTaskMeshBridge : public LLTaskInvFVBridge
+class LLTaskMeshBridge final : public LLTaskInvFVBridge
 {
 public:
 	LLTaskMeshBridge(
diff --git a/indra/newview/llpaneloutfitedit.cpp b/indra/newview/llpaneloutfitedit.cpp
index c3d1850eec..32e84a0bdd 100644
--- a/indra/newview/llpaneloutfitedit.cpp
+++ b/indra/newview/llpaneloutfitedit.cpp
@@ -209,7 +209,7 @@ private:
 // LLAddWearablesGearMenu
 ///////////////////////////////////////////////////////////////////////////////
 
-class LLAddWearablesGearMenu : public LLInitClass<LLAddWearablesGearMenu>
+class LLAddWearablesGearMenu final : public LLInitClass<LLAddWearablesGearMenu>
 {
 public:
 	static LLToggleableMenu* create(LLWearableItemsList* flat_list, LLInventoryPanel* inventory_panel)
@@ -347,7 +347,7 @@ private:
 // LLCOFDragAndDropObserver
 ///////////////////////////////////////////////////////////////////////////////
 
-class LLCOFDragAndDropObserver : public LLInventoryAddItemByAssetObserver
+class LLCOFDragAndDropObserver final : public LLInventoryAddItemByAssetObserver
 {
 public:
 	LLCOFDragAndDropObserver(LLInventoryModel* model);
diff --git a/indra/newview/llpanelpicks.cpp b/indra/newview/llpanelpicks.cpp
index 4bb6ee6a17..58de5bc848 100644
--- a/indra/newview/llpanelpicks.cpp
+++ b/indra/newview/llpanelpicks.cpp
@@ -60,7 +60,7 @@ static const std::string XML_BTN_SHOW_ON_MAP = "show_on_map_btn";
 static LLPanelInjector<LLPanelPicks> t_panel_picks("panel_picks");
 
 
-class LLPickHandler : public LLCommandHandler,
+class LLPickHandler final : public LLCommandHandler,
 					  public LLAvatarPropertiesObserver
 {
 public:
@@ -172,7 +172,7 @@ public:
 
 LLPickHandler gPickHandler;
 
-class LLClassifiedHandler :
+class LLClassifiedHandler final :
 	public LLCommandHandler,
 	public LLAvatarPropertiesObserver
 {
diff --git a/indra/newview/llpanelplaces.cpp b/indra/newview/llpanelplaces.cpp
index 72b999e290..834aff8255 100644
--- a/indra/newview/llpanelplaces.cpp
+++ b/indra/newview/llpanelplaces.cpp
@@ -80,7 +80,7 @@ static const std::string TELEPORT_HISTORY_INFO_TYPE	= "teleport_history";
 static const std::string LANDMARK_TAB_INFO_TYPE     = "open_landmark_tab";
 
 // Support for secondlife:///app/parcel/{UUID}/about SLapps
-class LLParcelHandler : public LLCommandHandler
+class LLParcelHandler final : public LLCommandHandler
 {
 public:
 	// requires trusted browser to trigger
@@ -125,7 +125,7 @@ static bool is_agent_in_selected_parcel(LLParcel* parcel);
 static void onSLURLBuilt(std::string& slurl);
 
 //Observer classes
-class LLPlacesParcelObserver : public LLParcelObserver
+class LLPlacesParcelObserver final : public LLParcelObserver
 {
 public:
 	LLPlacesParcelObserver(LLPanelPlaces* places_panel) :
@@ -143,7 +143,7 @@ private:
 	LLPanelPlaces*		mPlaces;
 };
 
-class LLPlacesInventoryObserver : public LLInventoryAddedObserver
+class LLPlacesInventoryObserver final : public LLInventoryAddedObserver
 {
 public:
 	LLPlacesInventoryObserver(LLPanelPlaces* places_panel) :
@@ -170,7 +170,7 @@ private:
 	LLPanelPlaces*		mPlaces;
 };
 
-class LLPlacesRemoteParcelInfoObserver : public LLRemoteParcelInfoObserver
+class LLPlacesRemoteParcelInfoObserver final : public LLRemoteParcelInfoObserver
 {
 public:
 	LLPlacesRemoteParcelInfoObserver(LLPanelPlaces* places_panel) :
@@ -716,7 +716,7 @@ void LLPanelPlaces::onEditButtonClicked()
 	updateVerbs();
 }
 
-class LLUpdateLandmarkParent : public LLInventoryCallback
+class LLUpdateLandmarkParent final : public LLInventoryCallback
 {
 public:
     LLUpdateLandmarkParent(LLPointer<LLViewerInventoryItem> item, LLUUID new_parent) :
diff --git a/indra/newview/llpanelplaces.h b/indra/newview/llpanelplaces.h
index 07fdc35306..4c61ace3a5 100644
--- a/indra/newview/llpanelplaces.h
+++ b/indra/newview/llpanelplaces.h
@@ -51,7 +51,7 @@ class LLMenuButton;
 
 typedef std::pair<LLUUID, std::string>	folder_pair_t;
 
-class LLPanelPlaces : public LLPanel
+class LLPanelPlaces final : public LLPanel
 {
 public:
 	LLPanelPlaces();
diff --git a/indra/newview/llpanelprofile.cpp b/indra/newview/llpanelprofile.cpp
index 2430b68c9b..2bf4e87b3d 100644
--- a/indra/newview/llpanelprofile.cpp
+++ b/indra/newview/llpanelprofile.cpp
@@ -54,7 +54,7 @@ std::string getProfileURL(const std::string& agent_name)
 	return url;
 }
 
-class LLProfileHandler : public LLCommandHandler
+class LLProfileHandler final : public LLCommandHandler
 {
 public:
 	// requires trusted browser to trigger
@@ -74,7 +74,7 @@ public:
 };
 LLProfileHandler gProfileHandler;
 
-class LLAgentHandler : public LLCommandHandler
+class LLAgentHandler final : public LLCommandHandler
 {
 public:
 	// requires trusted browser to trigger
diff --git a/indra/newview/llpanelvolume.cpp b/indra/newview/llpanelvolume.cpp
index 7921846960..32ca60ba28 100644
--- a/indra/newview/llpanelvolume.cpp
+++ b/indra/newview/llpanelvolume.cpp
@@ -477,7 +477,7 @@ void LLPanelVolume::getState( )
 	// Update material part
 	// slightly inefficient - materials are unique per object, not per TE
 	U8 material_code = 0;
-	struct f : public LLSelectedTEGetFunctor<U8>
+	struct f final : public LLSelectedTEGetFunctor<U8>
 	{
 		U8 get(LLViewerObject* object, S32 te) override
 		{
diff --git a/indra/newview/llpanelwearing.cpp b/indra/newview/llpanelwearing.cpp
index 2c0736d5a9..8791f7b0bc 100644
--- a/indra/newview/llpanelwearing.cpp
+++ b/indra/newview/llpanelwearing.cpp
@@ -85,7 +85,7 @@ private:
 
 //////////////////////////////////////////////////////////////////////////
 
-class LLWearingContextMenu : public LLListContextMenu
+class LLWearingContextMenu final : public LLListContextMenu
 {
 protected:
 	/* virtual */ LLContextMenu* createMenu() override
@@ -151,7 +151,7 @@ protected:
 
 //////////////////////////////////////////////////////////////////////////
 
-class LLTempAttachmentsContextMenu : public LLListContextMenu
+class LLTempAttachmentsContextMenu final : public LLListContextMenu
 {
 public:
 	LLTempAttachmentsContextMenu(LLPanelWearing* panel_wearing)
diff --git a/indra/newview/llparcelselection.cpp b/indra/newview/llparcelselection.cpp
index befecf493e..df9ffd9207 100644
--- a/indra/newview/llparcelselection.cpp
+++ b/indra/newview/llparcelselection.cpp
@@ -54,10 +54,6 @@ LLParcelSelection::LLParcelSelection(LLParcel* parcel)  :
 {
 }
 
-LLParcelSelection::~LLParcelSelection()
-{
-}
-
 BOOL LLParcelSelection::getMultipleOwners() const
 {
 	return mSelectedMultipleOwners;
diff --git a/indra/newview/llparcelselection.h b/indra/newview/llparcelselection.h
index 99efc55a5a..a0fd4b557c 100644
--- a/indra/newview/llparcelselection.h
+++ b/indra/newview/llparcelselection.h
@@ -32,13 +32,13 @@
 
 class LLParcel;
 
-class LLParcelSelection : public LLRefCount
+class LLParcelSelection final : public LLRefCount
 {
 	friend class LLViewerParcelMgr;
 	friend class LLSafeHandle<LLParcelSelection>;
 
 protected:
-	~LLParcelSelection();
+	~LLParcelSelection() = default;
 
 public:
 	LLParcelSelection(LLParcel* parcel);
diff --git a/indra/newview/llpathfindinglinkset.h b/indra/newview/llpathfindinglinkset.h
index c3adfc2136..dd1c73bbf5 100644
--- a/indra/newview/llpathfindinglinkset.h
+++ b/indra/newview/llpathfindinglinkset.h
@@ -31,7 +31,7 @@
 
 class LLSD;
 
-class LLPathfindingLinkset : public LLPathfindingObject
+class LLPathfindingLinkset final : public LLPathfindingObject
 {
 public:
 	typedef enum
diff --git a/indra/newview/llpathfindinglinksetlist.h b/indra/newview/llpathfindinglinksetlist.h
index 1d38e4c11a..7f7b001fd6 100644
--- a/indra/newview/llpathfindinglinksetlist.h
+++ b/indra/newview/llpathfindinglinksetlist.h
@@ -32,7 +32,7 @@
 
 class LLSD;
 
-class LLPathfindingLinksetList : public LLPathfindingObjectList
+class LLPathfindingLinksetList final : public LLPathfindingObjectList
 {
 public:
 	LLPathfindingLinksetList();
diff --git a/indra/newview/llpathfindingmanager.cpp b/indra/newview/llpathfindingmanager.cpp
index 7566cce9f3..5a53a12e7a 100644
--- a/indra/newview/llpathfindingmanager.cpp
+++ b/indra/newview/llpathfindingmanager.cpp
@@ -70,7 +70,7 @@
 // LLNavMeshSimStateChangeNode
 //---------------------------------------------------------------------------
 
-class LLNavMeshSimStateChangeNode : public LLHTTPNode
+class LLNavMeshSimStateChangeNode final : public LLHTTPNode
 {
 public:
 	void post(ResponsePtr pResponse, const LLSD &pContext, const LLSD &pInput) const override;
@@ -82,7 +82,7 @@ LLHTTPRegistration<LLNavMeshSimStateChangeNode> gHTTPRegistrationNavMeshSimState
 //---------------------------------------------------------------------------
 // LLAgentStateChangeNode
 //---------------------------------------------------------------------------
-class LLAgentStateChangeNode : public LLHTTPNode
+class LLAgentStateChangeNode final : public LLHTTPNode
 {
 public:
 	void post(ResponsePtr pResponse, const LLSD &pContext, const LLSD &pInput) const override;
diff --git a/indra/newview/llpersistentnotificationstorage.h b/indra/newview/llpersistentnotificationstorage.h
index b676e31be9..48ef937de9 100644
--- a/indra/newview/llpersistentnotificationstorage.h
+++ b/indra/newview/llpersistentnotificationstorage.h
@@ -42,7 +42,7 @@ class LLSD;
 // be a) serializable(implement LLNotificationResponderInterface),
 // b) registered with LLResponderRegistry (found in llpersistentnotificationstorage.cpp).
 
-class LLPersistentNotificationStorage : public LLSingleton<LLPersistentNotificationStorage>, public LLNotificationStorage
+class LLPersistentNotificationStorage final : public LLSingleton<LLPersistentNotificationStorage>, public LLNotificationStorage
 {
 	LLSINGLETON(LLPersistentNotificationStorage);
 	~LLPersistentNotificationStorage();
diff --git a/indra/newview/llphysicsshapebuilderutil.h b/indra/newview/llphysicsshapebuilderutil.h
index bd5b7d799c..1077f7c913 100644
--- a/indra/newview/llphysicsshapebuilderutil.h
+++ b/indra/newview/llphysicsshapebuilderutil.h
@@ -48,7 +48,7 @@ const F32 SHAPE_BUILDER_ENTRY_SNAP_PARAMETER_BIN_SIZE = 0.010f;
 const F32 SHAPE_BUILDER_CONVEXIFICATION_SIZE = 2.f * COLLISION_TOLERANCE;
 const F32 SHAPE_BUILDER_MIN_GEOMETRY_SIZE = 0.5f * COLLISION_TOLERANCE;
 
-class LLPhysicsVolumeParams : public LLVolumeParams
+class LLPhysicsVolumeParams final : public LLVolumeParams
 {
 public:
 
diff --git a/indra/newview/llpickitem.h b/indra/newview/llpickitem.h
index 4eac43e217..d5156e7e5d 100644
--- a/indra/newview/llpickitem.h
+++ b/indra/newview/llpickitem.h
@@ -36,7 +36,7 @@ static const std::string PICK_ID("pick_id");
 static const std::string PICK_CREATOR_ID("pick_creator_id");
 static const std::string PICK_NAME("pick_name");
 
-class LLPickItem : public LLPanel, public LLAvatarPropertiesObserver
+class LLPickItem final : public LLPanel, public LLAvatarPropertiesObserver
 {
 public:
 	LLPickItem();
diff --git a/indra/newview/llpipelinelistener.h b/indra/newview/llpipelinelistener.h
index da1898e57b..92ce7c248f 100644
--- a/indra/newview/llpipelinelistener.h
+++ b/indra/newview/llpipelinelistener.h
@@ -32,7 +32,7 @@
 #include "lleventapi.h"
 
 /// Listen on an LLEventPump with specified name for LLPipeline request events.
-class LLPipelineListener: public LLEventAPI
+class LLPipelineListener final : public LLEventAPI
 {
 public:
 	LLPipelineListener();
diff --git a/indra/newview/llplacesfolderview.h b/indra/newview/llplacesfolderview.h
index 9989af2b93..dac130d0fa 100644
--- a/indra/newview/llplacesfolderview.h
+++ b/indra/newview/llplacesfolderview.h
@@ -32,7 +32,7 @@
 
 class LLLandmarksPanel;
 
-class LLPlacesFolderView : public LLFolderView
+class LLPlacesFolderView final : public LLFolderView
 {
 public:
 
diff --git a/indra/newview/llplacesinventorybridge.h b/indra/newview/llplacesinventorybridge.h
index 30be230d17..143e53142d 100644
--- a/indra/newview/llplacesinventorybridge.h
+++ b/indra/newview/llplacesinventorybridge.h
@@ -34,7 +34,7 @@ class LLFolderViewFolder;
 /**
  * Overridden version of the Inventory-Folder-View-Bridge for Places Panel (Landmarks Tab)
  */
-class LLPlacesLandmarkBridge : public LLLandmarkBridge
+class LLPlacesLandmarkBridge final : public LLLandmarkBridge
 {
 	friend class LLPlacesInventoryBridgeBuilder;
 
@@ -56,7 +56,7 @@ protected:
 /**
  * Overridden version of the Inventory-Folder-View-Bridge for Folders
  */
-class LLPlacesFolderBridge : public LLFolderBridge
+class LLPlacesFolderBridge final : public LLFolderBridge
 {
 	friend class LLPlacesInventoryBridgeBuilder;
 
@@ -82,10 +82,10 @@ protected:
  *
  * It builds Bridges for Landmarks and Folders in Places Landmarks Panel
  */
-class LLPlacesInventoryBridgeBuilder : public LLInventoryFolderViewModelBuilder
+class LLPlacesInventoryBridgeBuilder final : public LLInventoryFolderViewModelBuilder
 {
 public:
-	LLPlacesInventoryBridgeBuilder() {}
+	LLPlacesInventoryBridgeBuilder() = default;
 
 	/*virtual*/ LLInvFVBridge* createBridge(LLAssetType::EType asset_type,
 											LLAssetType::EType actual_asset_type,
diff --git a/indra/newview/llpostcard.h b/indra/newview/llpostcard.h
index 34aeda4d42..1b6a70c4f2 100644
--- a/indra/newview/llpostcard.h
+++ b/indra/newview/llpostcard.h
@@ -50,7 +50,7 @@ private:
 };
 
 
-class LLPostcardUploadInfo : public LLBufferedAssetUploadInfo
+class LLPostcardUploadInfo final : public LLBufferedAssetUploadInfo
 {
 public:
     LLPostcardUploadInfo(std::string nameFrom, std::string emailTo,
diff --git a/indra/newview/llpreviewgesture.cpp b/indra/newview/llpreviewgesture.cpp
index 73599a0ab7..ee7ea5edde 100644
--- a/indra/newview/llpreviewgesture.cpp
+++ b/indra/newview/llpreviewgesture.cpp
@@ -61,10 +61,10 @@ void dialog_refresh_all();
 
 // used for getting
 
-class LLInventoryGestureAvailable : public LLInventoryCompletionObserver
+class LLInventoryGestureAvailable final : public LLInventoryCompletionObserver
 {
 public:
-	LLInventoryGestureAvailable() {}
+	LLInventoryGestureAvailable() = default;
 
 protected:
     void done() override;
diff --git a/indra/newview/llpreviewscript.cpp b/indra/newview/llpreviewscript.cpp
index 85ea2f32bd..fcab0bbb1a 100644
--- a/indra/newview/llpreviewscript.cpp
+++ b/indra/newview/llpreviewscript.cpp
@@ -119,7 +119,7 @@ static bool have_script_upload_cap(LLUUID& object_id)
 /// ---------------------------------------------------------------------------
 /// LLLiveLSLFile
 /// ---------------------------------------------------------------------------
-class LLLiveLSLFile : public LLLiveFile
+class LLLiveLSLFile final : public LLLiveFile
 {
 public:
 	typedef std::function<bool (const std::string& filename)> change_callback_t;
diff --git a/indra/newview/llrootview.h b/indra/newview/llrootview.h
index 3883e3794f..5877d3e173 100644
--- a/indra/newview/llrootview.h
+++ b/indra/newview/llrootview.h
@@ -30,12 +30,12 @@
 #include "llview.h"
 #include "lltooltip.h"
 
-class LLRootViewRegistry : public LLChildRegistry<LLRootViewRegistry>
+class LLRootViewRegistry final : public LLChildRegistry<LLRootViewRegistry>
 {
 	LLSINGLETON(LLRootViewRegistry);
 };
 
-class LLRootView : public LLView
+class LLRootView final : public LLView
 {
 public:
 	typedef LLRootViewRegistry child_registry_t;
diff --git a/indra/newview/llscriptfloater.h b/indra/newview/llscriptfloater.h
index c9c0325686..279c049305 100644
--- a/indra/newview/llscriptfloater.h
+++ b/indra/newview/llscriptfloater.h
@@ -36,7 +36,7 @@ class LLToastPanel;
  * Handles script notifications ("ScriptDialog" and "ScriptDialogGroup")
  * and manages Script Floaters.
  */
-class LLScriptFloaterManager : public LLSingleton<LLScriptFloaterManager>
+class LLScriptFloaterManager final : public LLSingleton<LLScriptFloaterManager>
 {
 	// *TODO
 	// LLScriptFloaterManager and LLScriptFloater will need some refactoring after we 
diff --git a/indra/newview/llsearchhistory.h b/indra/newview/llsearchhistory.h
index 4ae6122396..1c881add64 100644
--- a/indra/newview/llsearchhistory.h
+++ b/indra/newview/llsearchhistory.h
@@ -35,7 +35,7 @@
  * Search history container able to save and load history from file.
  * History is stored in chronological order, most recent at the beginning.
  */
-class LLSearchHistory : public LLSingleton<LLSearchHistory>, private LLDestroyClass<LLSearchHistory>
+class LLSearchHistory final : public LLSingleton<LLSearchHistory>, private LLDestroyClass<LLSearchHistory>
 {
 	LLSINGLETON(LLSearchHistory);
 	friend class LLDestroyClass<LLSearchHistory>;
diff --git a/indra/newview/llselectmgr.h b/indra/newview/llselectmgr.h
index b42dbd2213..438020114a 100644
--- a/indra/newview/llselectmgr.h
+++ b/indra/newview/llselectmgr.h
@@ -391,7 +391,7 @@ extern template class LLSelectMgr* LLSingleton<class LLSelectMgr>::getInstance()
 // For use with getFirstTest()
 struct LLSelectGetFirstTest;
 
-class LLSelectMgr : public LLEditMenuHandler, public LLSingleton<LLSelectMgr>
+class LLSelectMgr final : public LLEditMenuHandler, public LLSingleton<LLSelectMgr>
 {
 	LLSINGLETON(LLSelectMgr);
 	~LLSelectMgr();
diff --git a/indra/newview/llsidepanelappearance.cpp b/indra/newview/llsidepanelappearance.cpp
index 4f5c5d9602..8e83187606 100644
--- a/indra/newview/llsidepanelappearance.cpp
+++ b/indra/newview/llsidepanelappearance.cpp
@@ -51,7 +51,7 @@
 
 static LLPanelInjector<LLSidepanelAppearance> t_appearance("sidepanel_appearance");
 
-class LLCurrentlyWornFetchObserver : public LLInventoryFetchItemsObserver
+class LLCurrentlyWornFetchObserver final : public LLInventoryFetchItemsObserver
 {
 public:
 	LLCurrentlyWornFetchObserver(const uuid_vec_t &ids,
@@ -59,7 +59,7 @@ public:
 		LLInventoryFetchItemsObserver(ids),
 		mPanel(panel)
 	{}
-	~LLCurrentlyWornFetchObserver() {}
+	~LLCurrentlyWornFetchObserver() = default;
 
 	void done() override
 	{
@@ -90,10 +90,6 @@ LLSidepanelAppearance::LLSidepanelAppearance() :
 	gAgentWearables.addLoadedCallback(boost::bind(&LLSidepanelAppearance::setWearablesLoading, this, false));
 }
 
-LLSidepanelAppearance::~LLSidepanelAppearance()
-{
-}
-
 // virtual
 BOOL LLSidepanelAppearance::postBuild()
 {
diff --git a/indra/newview/llsidepanelinventory.cpp b/indra/newview/llsidepanelinventory.cpp
index e188d76f8d..51c3d7cb5b 100644
--- a/indra/newview/llsidepanelinventory.cpp
+++ b/indra/newview/llsidepanelinventory.cpp
@@ -70,7 +70,7 @@ static const char * const MARKETPLACE_INBOX_PANEL = "marketplace_inbox";
 //
 // Helpers
 //
-class LLInboxAddedObserver : public LLInventoryCategoryAddedObserver
+class LLInboxAddedObserver final : public LLInventoryCategoryAddedObserver
 {
 public:
 	LLInboxAddedObserver(LLSidepanelInventory * sidepanelInventory)
diff --git a/indra/newview/llsidepanelinventorysubpanel.h b/indra/newview/llsidepanelinventorysubpanel.h
index e936a9ddab..5a2f6d32d8 100644
--- a/indra/newview/llsidepanelinventorysubpanel.h
+++ b/indra/newview/llsidepanelinventorysubpanel.h
@@ -41,7 +41,7 @@ class LLSidepanelInventorySubpanel : public LLPanel
 {
 public:
 	LLSidepanelInventorySubpanel(const LLPanel::Params& p = getDefaultParams());
-	virtual ~LLSidepanelInventorySubpanel();
+	virtual ~LLSidepanelInventorySubpanel() = default;
 
 	void setVisible(BOOL visible) override;
 	BOOL postBuild() override;
diff --git a/indra/newview/llsidepaneliteminfo.cpp b/indra/newview/llsidepaneliteminfo.cpp
index 15fbd5c223..81a6990b10 100644
--- a/indra/newview/llsidepaneliteminfo.cpp
+++ b/indra/newview/llsidepaneliteminfo.cpp
@@ -102,7 +102,7 @@ static const std::array<std::string, 5> debug_items{{
 //
 // Helper class to watch for changes to the item.
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-class LLItemPropertiesObserver : public LLInventoryObserver
+class LLItemPropertiesObserver final : public LLInventoryObserver
 {
 public:
 	LLItemPropertiesObserver(LLSidepanelItemInfo* floater)
@@ -146,7 +146,7 @@ void LLItemPropertiesObserver::changed(U32 mask)
 // Helper class to watch for changes in an object inventory.
 // Used to update item properties in LLSidepanelItemInfo.
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-class LLObjectInventoryObserver : public LLVOInventoryListener
+class LLObjectInventoryObserver final : public LLVOInventoryListener
 {
 public:
 	LLObjectInventoryObserver(LLSidepanelItemInfo* floater, LLViewerObject* object)
diff --git a/indra/newview/llsidepaneliteminfo.h b/indra/newview/llsidepaneliteminfo.h
index f18ad96b05..dfbdc7be80 100644
--- a/indra/newview/llsidepaneliteminfo.h
+++ b/indra/newview/llsidepaneliteminfo.h
@@ -41,7 +41,7 @@ class LLObjectInventoryObserver;
 class LLViewerObject;
 class LLPermissions;
 
-class LLSidepanelItemInfo : public LLSidepanelInventorySubpanel
+class LLSidepanelItemInfo final : public LLSidepanelInventorySubpanel
 {
 public:
 	LLSidepanelItemInfo(const LLPanel::Params& p = getDefaultParams());
diff --git a/indra/newview/llsidepaneltaskinfo.cpp b/indra/newview/llsidepaneltaskinfo.cpp
index bbf1b58cf7..3e12285f7b 100644
--- a/indra/newview/llsidepaneltaskinfo.cpp
+++ b/indra/newview/llsidepaneltaskinfo.cpp
@@ -1125,7 +1125,7 @@ void LLSidepanelTaskInfo::setAllSaleInfo()
 	}
 }
 
-struct LLSelectionPayable : public LLSelectedObjectFunctor
+struct LLSelectionPayable final : public LLSelectedObjectFunctor
 {
 	bool apply(LLViewerObject* obj) override
 	{
diff --git a/indra/newview/llsidetraypanelcontainer.h b/indra/newview/llsidetraypanelcontainer.h
index 4f3b9933d9..08e4e4b6af 100644
--- a/indra/newview/llsidetraypanelcontainer.h
+++ b/indra/newview/llsidetraypanelcontainer.h
@@ -39,7 +39,7 @@
 * open previous or next panel if navigation history is available(after user 
 * has opened two or more panels). *NOTE - only back navigation is implemented so far.
 */
-class LLSideTrayPanelContainer : public LLTabContainer
+class LLSideTrayPanelContainer final : public LLTabContainer
 {
 public:
 
diff --git a/indra/newview/llsnapshotlivepreview.h b/indra/newview/llsnapshotlivepreview.h
index d025702691..483f7a564d 100644
--- a/indra/newview/llsnapshotlivepreview.h
+++ b/indra/newview/llsnapshotlivepreview.h
@@ -36,7 +36,7 @@ class LLImageJPEG;
 ///----------------------------------------------------------------------------
 /// Class LLSnapshotLivePreview 
 ///----------------------------------------------------------------------------
-class LLSnapshotLivePreview : public LLView
+class LLSnapshotLivePreview final : public LLView
 {
 	LOG_CLASS(LLSnapshotLivePreview);
 public:
diff --git a/indra/newview/llvieweroctree.h b/indra/newview/llvieweroctree.h
index 651063d89e..23775110c2 100644
--- a/indra/newview/llvieweroctree.h
+++ b/indra/newview/llvieweroctree.h
@@ -68,7 +68,7 @@ S32 AABBSphereIntersectR2(const LLVector3& min, const LLVector3& max, const LLVe
 
 //defines data needed for octree of an entry
 //LL_ALIGN_PREFIX(16)
-class LLViewerOctreeEntry : public LLRefCount, public LLTrace::MemTrackable<LLViewerOctreeEntry, 16>
+class LLViewerOctreeEntry final : public LLRefCount, public LLTrace::MemTrackable<LLViewerOctreeEntry, 16>
 {
 	friend class LLViewerOctreeEntryData;
 
diff --git a/indra/newview/llviewerparcelmedia.h b/indra/newview/llviewerparcelmedia.h
index 962c7c3f9d..edaedec224 100644
--- a/indra/newview/llviewerparcelmedia.h
+++ b/indra/newview/llviewerparcelmedia.h
@@ -37,7 +37,7 @@ class LLViewerParcelMediaNavigationObserver;
 // This class understands land parcels, network traffic, LSL media
 // transport commands, and talks to the LLViewerMedia class to actually
 // do playback.  It allows us to remove code from LLViewerParcelMgr.
-class LLViewerParcelMedia : public LLViewerMediaObserver
+class LLViewerParcelMedia final : public LLViewerMediaObserver
 {
 	LOG_CLASS(LLViewerParcelMedia);
 	public:
diff --git a/indra/newview/llviewerparceloverlay.h b/indra/newview/llviewerparceloverlay.h
index 02675cd27b..5f33b6e909 100644
--- a/indra/newview/llviewerparceloverlay.h
+++ b/indra/newview/llviewerparceloverlay.h
@@ -41,7 +41,7 @@ class LLVector3;
 class LLColor4U;
 class LLVector2;
 
-class LLViewerParcelOverlay : public LLGLUpdate
+class LLViewerParcelOverlay final : public LLGLUpdate
 {
 public:
 	LLViewerParcelOverlay(LLViewerRegion* region, F32 region_width_meters);
diff --git a/indra/newview/llviewerpartsim.h b/indra/newview/llviewerpartsim.h
index 93275599f3..969c3b616a 100644
--- a/indra/newview/llviewerpartsim.h
+++ b/indra/newview/llviewerpartsim.h
@@ -45,7 +45,7 @@ class LLVOPartGroup;
 //
 
 
-class LLViewerPart : public LLPartData
+class LLViewerPart final : public LLPartData
 {
 public:
 	typedef std::function<void(LLViewerPart&, const F32)>	vp_callback_t;
diff --git a/indra/newview/llviewerpartsource.h b/indra/newview/llviewerpartsource.h
index 78bcd4ba0a..53ed26931b 100644
--- a/indra/newview/llviewerpartsource.h
+++ b/indra/newview/llviewerpartsource.h
@@ -104,7 +104,7 @@ protected:
 //
 
 
-class LLViewerPartSourceScript : public LLViewerPartSource
+class LLViewerPartSourceScript final : public LLViewerPartSource
 {
 public:
 	LLViewerPartSourceScript(LLViewerObject *source_objp);
@@ -134,7 +134,7 @@ protected:
 // Particle source for spiral effect (customize avatar, mostly)
 //
 
-class LLViewerPartSourceSpiral : public LLViewerPartSource
+class LLViewerPartSourceSpiral final : public LLViewerPartSource
 {
 public:
 	LLViewerPartSourceSpiral(const LLVector3 &pos);
@@ -158,7 +158,7 @@ protected:
 // Particle source for tractor(editing) beam
 //
 
-class LLViewerPartSourceBeam : public LLViewerPartSource
+class LLViewerPartSourceBeam final : public LLViewerPartSource
 {
 public:
 	LLViewerPartSourceBeam();
@@ -188,7 +188,7 @@ protected:
 // Particle source for chat effect
 //
 
-class LLViewerPartSourceChat : public LLViewerPartSource
+class LLViewerPartSourceChat final : public LLViewerPartSource
 {
 public:
 	LLViewerPartSourceChat(const LLVector3 &pos);
diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp
index b1177900b0..b0e0fdaf2d 100644
--- a/indra/newview/llviewerregion.cpp
+++ b/indra/newview/llviewerregion.cpp
@@ -122,7 +122,7 @@ void newRegionEntry(LLViewerRegion& region)
 // spaces (and %20 chars) are illegal in the hostname of an http URL. Some
 // browsers let you get away with this, but some do not (such as Qt's Webkit).
 // Hence we introduced the newer secondlife:///app/region alternative.
-class LLRegionHandler : public LLCommandHandler
+class LLRegionHandler final : public LLCommandHandler
 {
 public:
     // requests will be throttled from a non-trusted browser
@@ -2025,7 +2025,7 @@ BOOL LLViewerRegion::isOwnedGroup(const LLVector3& pos)
 }
 
 // the new TCP coarse location handler node
-class CoarseLocationUpdate : public LLHTTPNode
+class CoarseLocationUpdate final : public LLHTTPNode
 {
 public:
 	void post(
diff --git a/indra/newview/llviewerregion.h b/indra/newview/llviewerregion.h
index 1b72ac2cba..2f64370fe0 100644
--- a/indra/newview/llviewerregion.h
+++ b/indra/newview/llviewerregion.h
@@ -69,7 +69,7 @@ class LLViewerRegionImpl;
 class LLViewerOctreeGroup;
 class LLVOCachePartition;
 
-class LLViewerRegion: public LLCapabilityProvider // implements this interface
+class LLViewerRegion final : public LLCapabilityProvider // implements this interface
 {
 public:
 	//MUST MATCH THE ORDER OF DECLARATION IN CONSTRUCTOR
diff --git a/indra/newview/llviewershadermgr.h b/indra/newview/llviewershadermgr.h
index f06ffa905c..6a6cd924a1 100644
--- a/indra/newview/llviewershadermgr.h
+++ b/indra/newview/llviewershadermgr.h
@@ -32,7 +32,7 @@
 
 #define LL_DEFERRED_MULTI_LIGHT_COUNT 16
 
-class LLViewerShaderMgr: public LLShaderMgr
+class LLViewerShaderMgr final : public LLShaderMgr
 {
 public:
 	static BOOL sInitialized;
diff --git a/indra/newview/llviewertexlayer.cpp b/indra/newview/llviewertexlayer.cpp
index f18efcf375..93fbf039b8 100644
--- a/indra/newview/llviewertexlayer.cpp
+++ b/indra/newview/llviewertexlayer.cpp
@@ -366,7 +366,7 @@ BOOL LLViewerTexLayerSetBuffer::requestUpdateImmediate()
 //-----------------------------------------------------------------------------
 // Support classes
 //-----------------------------------------------------------------------------
-class ALTexLayerUploader : public LLBufferedAssetUploadInfo
+class ALTexLayerUploader final : public LLBufferedAssetUploadInfo
 {
 public:
 	ALTexLayerUploader(LLUUID assetId, std::string texture, LLBakedUploadData* baked_upload_data);
diff --git a/indra/newview/llviewertexture.h b/indra/newview/llviewertexture.h
index 6d41db7faa..6076cd9bb8 100644
--- a/indra/newview/llviewertexture.h
+++ b/indra/newview/llviewertexture.h
@@ -698,7 +698,7 @@ public:
 //it tracks the activities of the texture pipeline
 //records them, and outputs them to log files
 //
-class LLTexturePipelineTester : public LLMetricPerformanceTesterWithSession
+class LLTexturePipelineTester final : public LLMetricPerformanceTesterWithSession
 {
 	enum
 	{
@@ -754,7 +754,7 @@ private:
 	//
 	//The following members are used for performance analyzing
 	//
-	class LLTextureTestSession : public LLTestSession
+	class LLTextureTestSession final : public LLTestSession
 	{
 	public:
 		LLTextureTestSession() ;
diff --git a/indra/newview/llviewerwearable.cpp b/indra/newview/llviewerwearable.cpp
index 84bf500f7b..9d5150a8c2 100644
--- a/indra/newview/llviewerwearable.cpp
+++ b/indra/newview/llviewerwearable.cpp
@@ -88,11 +88,6 @@ LLViewerWearable::LLViewerWearable(const LLAssetID& asset_id) :
 	mTransactionID.setNull();
 }
 
-// virtual
-LLViewerWearable::~LLViewerWearable()
-{
-}
-
 // virtual
 LLWearable::EImportResult LLViewerWearable::importStream( std::istream& input_stream, LLAvatarAppearance* avatarp )
 {
diff --git a/indra/newview/llviewerwearable.h b/indra/newview/llviewerwearable.h
index f9fe7dd9cf..0c70254355 100644
--- a/indra/newview/llviewerwearable.h
+++ b/indra/newview/llviewerwearable.h
@@ -33,7 +33,7 @@
 
 class LLVOAvatar;
 
-class LLViewerWearable : public LLWearable
+class LLViewerWearable final : public LLWearable
 {
 	friend class LLWearableList;
 
@@ -45,7 +45,7 @@ private:
 	LLViewerWearable(const LLTransactionID& transactionID);
 	LLViewerWearable(const LLAssetID& assetID);
 public:
-	virtual ~LLViewerWearable();
+	virtual ~LLViewerWearable() = default;;
 
 	//--------------------------------------------------------------------
 	// Accessors
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index ade68f810c..ab7da273c2 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -1841,7 +1841,7 @@ void LLViewerWindow::initGLDefaults()
 	gBox.prerender();
 }
 
-struct MainPanel : public LLPanel
+class MainPanel final : public LLPanel
 {
 };
 
@@ -3669,7 +3669,7 @@ void LLViewerWindow::renderSelections( BOOL for_gl_pick, BOOL pick_parcel_walls,
 				gGL.scalef(zoom, zoom, zoom);
 			}
 
-			struct f : public LLSelectedObjectFunctor
+			struct f final : public LLSelectedObjectFunctor
 			{
 				bool apply(LLViewerObject* object) override
 				{
diff --git a/indra/newview/llviewerwindow.h b/indra/newview/llviewerwindow.h
index 4884c2d375..0bc21674eb 100644
--- a/indra/newview/llviewerwindow.h
+++ b/indra/newview/llviewerwindow.h
@@ -137,7 +137,7 @@ private:
 
 static const U32 MAX_SNAPSHOT_IMAGE_SIZE = 6 * 1024; // max snapshot image size 6144 * 6144
 
-class LLViewerWindow : public LLWindowCallbacks
+class LLViewerWindow final : public LLWindowCallbacks
 {
 public:
 	//
diff --git a/indra/newview/llviewerwindowlistener.h b/indra/newview/llviewerwindowlistener.h
index d627aad266..7954185741 100644
--- a/indra/newview/llviewerwindowlistener.h
+++ b/indra/newview/llviewerwindowlistener.h
@@ -35,7 +35,7 @@ class LLViewerWindow;
 class LLSD;
 
 /// Listen on an LLEventPump with specified name for LLViewerWindow request events.
-class LLViewerWindowListener: public LLEventAPI
+class LLViewerWindowListener final : public LLEventAPI
 {
 public:
     /// Bind the LLViewerWindow instance to use (e.g. gViewerWindow).
diff --git a/indra/newview/llvlcomposition.cpp b/indra/newview/llvlcomposition.cpp
index 4108c14229..eb3623524a 100644
--- a/indra/newview/llvlcomposition.cpp
+++ b/indra/newview/llvlcomposition.cpp
@@ -82,11 +82,6 @@ LLVLComposition::LLVLComposition(LLSurface *surfacep, const U32 width, const F32
 }
 
 
-LLVLComposition::~LLVLComposition()
-{
-}
-
-
 void LLVLComposition::setSurface(LLSurface *surfacep)
 {
 	mSurfacep = surfacep;
diff --git a/indra/newview/llvlcomposition.h b/indra/newview/llvlcomposition.h
index 2dd04ac5a5..63bdbb3106 100644
--- a/indra/newview/llvlcomposition.h
+++ b/indra/newview/llvlcomposition.h
@@ -32,11 +32,11 @@
 
 class LLSurface;
 
-class LLVLComposition : public LLViewerLayer
+class LLVLComposition final : public LLViewerLayer
 {
 public:
 	LLVLComposition(LLSurface *surfacep, const U32 width, const F32 scale);
-	/*virtual*/ ~LLVLComposition();
+	/*virtual*/ ~LLVLComposition() = default;
 
 	void setSurface(LLSurface *surfacep);
 
diff --git a/indra/newview/llvosurfacepatch.cpp b/indra/newview/llvosurfacepatch.cpp
index e22066cdea..f0b19b6601 100644
--- a/indra/newview/llvosurfacepatch.cpp
+++ b/indra/newview/llvosurfacepatch.cpp
@@ -47,7 +47,7 @@ F32 LLVOSurfacePatch::sLODFactor = 1.f;
 
 //============================================================================
 
-class LLVertexBufferTerrain : public LLVertexBuffer
+class LLVertexBufferTerrain final : public LLVertexBuffer
 {
 public:
 	LLVertexBufferTerrain() :
diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp
index 6054675643..3d5e685ba5 100644
--- a/indra/newview/llvovolume.cpp
+++ b/indra/newview/llvovolume.cpp
@@ -111,7 +111,7 @@ static LLTrace::BlockTimerStatHandle FTM_VOLUME_TEXTURES("Volume Textures");
 extern BOOL gGLDebugLoggingEnabled;
 
 // Implementation class of LLMediaDataClientObject.  See llmediadataclient.h
-class LLMediaDataClientObjectImpl : public LLMediaDataClientObject
+class LLMediaDataClientObjectImpl final : public LLMediaDataClientObject
 {
 public:
 	LLMediaDataClientObjectImpl(LLVOVolume *obj, bool isNew) : mObject(obj), mNew(isNew) 
diff --git a/indra/newview/llwatchdog.cpp b/indra/newview/llwatchdog.cpp
index c3727000a7..caedf6572e 100644
--- a/indra/newview/llwatchdog.cpp
+++ b/indra/newview/llwatchdog.cpp
@@ -42,7 +42,7 @@ void default_killer_callback()
 }
 
 // This class runs the watchdog timing thread.
-class LLWatchdogTimerThread : public LLThread
+class LLWatchdogTimerThread final : public LLThread
 {
 public:
 	LLWatchdogTimerThread() : 
@@ -52,7 +52,7 @@ public:
 	{
 	}
             
-	~LLWatchdogTimerThread() {}
+	~LLWatchdogTimerThread() = default;
     
 	void setSleepTime(long ms) { mSleepMsecs = ms; }
 	void stop() 
diff --git a/indra/newview/llwearableitemslist.cpp b/indra/newview/llwearableitemslist.cpp
index 80392eeacc..834d95d778 100644
--- a/indra/newview/llwearableitemslist.cpp
+++ b/indra/newview/llwearableitemslist.cpp
@@ -44,11 +44,11 @@
 #include "llviewerattachmenu.h"
 #include "llvoavatarself.h"
 
-class LLFindOutfitItems : public LLInventoryCollectFunctor
+class LLFindOutfitItems final : public LLInventoryCollectFunctor
 {
 public:
 	LLFindOutfitItems() {}
-	virtual ~LLFindOutfitItems() {}
+	virtual ~LLFindOutfitItems() = default;
 	bool operator()(LLInventoryCategory* cat,
 							LLInventoryItem* item) override;
 };
-- 
GitLab