From df2bc4c6440b932eb5d9090932efcb44729e5f33 Mon Sep 17 00:00:00 2001
From: Rye Mutt <rye@alchemyviewer.org>
Date: Sun, 5 Jul 2020 14:20:19 -0400
Subject: [PATCH] The Great Finalization

---
 indra/newview/alaoengine.h              |  4 ++--
 indra/newview/alaoset.h                 |  2 +-
 indra/newview/alfloaterparticleeditor.h |  2 +-
 indra/newview/llcontrolavatar.h         |  2 +-
 indra/newview/lldrawpoolalpha.h         |  9 +--------
 indra/newview/lldrawpoolavatar.h        |  2 +-
 indra/newview/lldrawpoolbump.h          |  2 +-
 indra/newview/lldrawpoolground.h        |  2 +-
 indra/newview/lldrawpoolmaterials.h     |  2 +-
 indra/newview/lldrawpoolsimple.h        | 12 ++++++------
 indra/newview/lldrawpoolsky.h           |  2 +-
 indra/newview/lldrawpoolterrain.h       |  2 +-
 indra/newview/lldrawpooltree.h          |  2 +-
 indra/newview/lldrawpoolwater.h         |  2 +-
 indra/newview/lldrawpoolwlsky.h         |  2 +-
 indra/newview/llenvironment.h           |  2 +-
 indra/newview/llflexibleobject.h        |  2 +-
 indra/newview/llhudeffectbeam.h         |  2 +-
 indra/newview/llhudeffectblob.h         |  2 +-
 indra/newview/llhudeffectpointat.h      |  2 +-
 indra/newview/llhudeffecttrail.h        |  2 +-
 indra/newview/llspatialpartition.h      |  4 ++--
 indra/newview/lluiavatar.h              |  2 +-
 indra/newview/llvieweraudio.h           |  2 +-
 indra/newview/llviewercamera.h          |  2 +-
 indra/newview/llviewerpartsim.h         |  4 ++--
 indra/newview/llviewerpartsource.h      |  8 ++++----
 indra/newview/llvoavatarself.h          |  2 +-
 indra/newview/llvocache.h               |  8 ++++----
 indra/newview/llvograss.h               |  2 +-
 indra/newview/llvoground.h              |  2 +-
 indra/newview/llvoicevisualizer.h       |  2 +-
 indra/newview/llvopartgroup.h           |  2 +-
 indra/newview/llvosky.h                 |  2 +-
 indra/newview/llvosurfacepatch.h        |  2 +-
 indra/newview/llvotree.h                |  2 +-
 indra/newview/llvovolume.h              |  4 ++--
 indra/newview/llvowater.h               | 20 ++++++++++----------
 indra/newview/llvowlsky.h               |  2 +-
 indra/newview/llworld.h                 |  2 +-
 40 files changed, 64 insertions(+), 71 deletions(-)

diff --git a/indra/newview/alaoengine.h b/indra/newview/alaoengine.h
index 5f1bea9d8d4..0c8f95b2cde 100644
--- a/indra/newview/alaoengine.h
+++ b/indra/newview/alaoengine.h
@@ -36,7 +36,7 @@
 #include "llextendedstatus.h"
 #include "llsingleton.h"
 
-class ALAOTimerCollection : public LLEventTimer
+class ALAOTimerCollection final : public LLEventTimer
 {
 public:
 	ALAOTimerCollection();
@@ -60,7 +60,7 @@ class ALAOTimerCollection : public LLEventTimer
 
 // ----------------------------------------------------
 
-class ALAOSitCancelTimer : public LLEventTimer
+class ALAOSitCancelTimer final : public LLEventTimer
 {
 public:
 	ALAOSitCancelTimer();
diff --git a/indra/newview/alaoset.h b/indra/newview/alaoset.h
index db84ee88e70..c88b2385f54 100644
--- a/indra/newview/alaoset.h
+++ b/indra/newview/alaoset.h
@@ -30,7 +30,7 @@
 #include <utility>
 #include "lleventtimer.h"
 
-class ALAOSet : public LLEventTimer
+class ALAOSet final : public LLEventTimer
 {
 public:
 	ALAOSet(const LLUUID& inventoryID);
diff --git a/indra/newview/alfloaterparticleeditor.h b/indra/newview/alfloaterparticleeditor.h
index 8c856959f55..05c4e3be266 100644
--- a/indra/newview/alfloaterparticleeditor.h
+++ b/indra/newview/alfloaterparticleeditor.h
@@ -134,7 +134,7 @@ class ALFloaterParticleEditor final : public LLFloater
 	
     static void finishUpload(LLUUID itemId, LLUUID taskId, LLUUID newAssetId, LLSD response, bool isRunning, LLUUID objectId);
     
-	class LLParticleScriptCreationCallback : public LLInventoryCallback
+	class LLParticleScriptCreationCallback final : public LLInventoryCallback
 	{
 	public:
 		LLParticleScriptCreationCallback(ALFloaterParticleEditor* editor);
diff --git a/indra/newview/llcontrolavatar.h b/indra/newview/llcontrolavatar.h
index 288d07cd48a..18b9ba4794d 100644
--- a/indra/newview/llcontrolavatar.h
+++ b/indra/newview/llcontrolavatar.h
@@ -30,7 +30,7 @@
 #include "llvoavatar.h"
 #include "llvovolume.h"
 
-class LLControlAvatar:
+class LLControlAvatar final :
     public LLVOAvatar
 {
     LOG_CLASS(LLControlAvatar);
diff --git a/indra/newview/lldrawpoolalpha.h b/indra/newview/lldrawpoolalpha.h
index a069f805e82..9f110ea68f8 100644
--- a/indra/newview/lldrawpoolalpha.h
+++ b/indra/newview/lldrawpoolalpha.h
@@ -35,7 +35,7 @@ class LLFace;
 class LLColor4;
 class LLGLSLShader;
 
-class LLDrawPoolAlpha: public LLRenderPass
+class LLDrawPoolAlpha final : public LLRenderPass
 {
 public:
 	enum
@@ -93,11 +93,4 @@ class LLDrawPoolAlpha: public LLRenderPass
 	LLRender::eBlendFactor mAlphaDFactor;
 };
 
-class LLDrawPoolAlphaPostWater : public LLDrawPoolAlpha
-{
-public:
-	LLDrawPoolAlphaPostWater();
-	virtual void render(S32 pass = 0);
-};
-
 #endif // LL_LLDRAWPOOLALPHA_H
diff --git a/indra/newview/lldrawpoolavatar.h b/indra/newview/lldrawpoolavatar.h
index cb09eb18e21..13643501618 100644
--- a/indra/newview/lldrawpoolavatar.h
+++ b/indra/newview/lldrawpoolavatar.h
@@ -37,7 +37,7 @@ class LLVolume;
 class LLVolumeFace;
 
 
-class LLDrawPoolAvatar : public LLFacePool
+class LLDrawPoolAvatar final : public LLFacePool
 {
 public:
 	enum
diff --git a/indra/newview/lldrawpoolbump.h b/indra/newview/lldrawpoolbump.h
index 476b1d41b7d..dd458ed4047 100644
--- a/indra/newview/lldrawpoolbump.h
+++ b/indra/newview/lldrawpoolbump.h
@@ -168,7 +168,7 @@ class LLBumpImageList
 
 extern LLBumpImageList gBumpImageList;
 
-class LLDrawPoolInvisible : public LLDrawPoolBump
+class LLDrawPoolInvisible final : public LLDrawPoolBump
 {
 public:
 	LLDrawPoolInvisible() : LLDrawPoolBump(LLDrawPool::POOL_INVISIBLE) { }
diff --git a/indra/newview/lldrawpoolground.h b/indra/newview/lldrawpoolground.h
index a4f8a3fcf50..105aeee6d39 100644
--- a/indra/newview/lldrawpoolground.h
+++ b/indra/newview/lldrawpoolground.h
@@ -30,7 +30,7 @@
 #include "lldrawpool.h"
 
 
-class LLDrawPoolGround : public LLFacePool
+class LLDrawPoolGround final : public LLFacePool
 {
 public:
 	enum
diff --git a/indra/newview/lldrawpoolmaterials.h b/indra/newview/lldrawpoolmaterials.h
index eae1aba87cd..b25919c434f 100644
--- a/indra/newview/lldrawpoolmaterials.h
+++ b/indra/newview/lldrawpoolmaterials.h
@@ -38,7 +38,7 @@ class LLViewerTexture;
 class LLDrawInfo;
 class LLGLSLShader;
 
-class LLDrawPoolMaterials : public LLRenderPass
+class LLDrawPoolMaterials final : public LLRenderPass
 {
 	LLGLSLShader *mShader;
 public:
diff --git a/indra/newview/lldrawpoolsimple.h b/indra/newview/lldrawpoolsimple.h
index 608ad9e1eb0..f7b6bdb7a5f 100644
--- a/indra/newview/lldrawpoolsimple.h
+++ b/indra/newview/lldrawpoolsimple.h
@@ -29,7 +29,7 @@
 
 #include "lldrawpool.h"
 
-class LLDrawPoolSimple : public LLRenderPass
+class LLDrawPoolSimple final : public LLRenderPass
 {
 public:
 	enum
@@ -57,7 +57,7 @@ class LLDrawPoolSimple : public LLRenderPass
 
 };
 
-class LLDrawPoolGrass : public LLRenderPass
+class LLDrawPoolGrass final : public LLRenderPass
 {
 public:
 	enum
@@ -84,7 +84,7 @@ class LLDrawPoolGrass : public LLRenderPass
 	/*virtual*/ void prerender();
 };
 
-class LLDrawPoolAlphaMask : public LLRenderPass
+class LLDrawPoolAlphaMask final : public LLRenderPass
 {
 public:
 	enum
@@ -111,7 +111,7 @@ class LLDrawPoolAlphaMask : public LLRenderPass
 
 };
 
-class LLDrawPoolFullbrightAlphaMask : public LLRenderPass
+class LLDrawPoolFullbrightAlphaMask final : public LLRenderPass
 {
 public:
 	enum
@@ -137,7 +137,7 @@ class LLDrawPoolFullbrightAlphaMask : public LLRenderPass
 };
 
 
-class LLDrawPoolFullbright : public LLRenderPass
+class LLDrawPoolFullbright final : public LLRenderPass
 {
 public:
 	enum
@@ -163,7 +163,7 @@ class LLDrawPoolFullbright : public LLRenderPass
 
 };
 
-class LLDrawPoolGlow : public LLRenderPass
+class LLDrawPoolGlow final : public LLRenderPass
 {
 public:
 	LLDrawPoolGlow(): LLRenderPass(LLDrawPool::POOL_GLOW) { }
diff --git a/indra/newview/lldrawpoolsky.h b/indra/newview/lldrawpoolsky.h
index 916d8c1cbe7..34a52c60496 100644
--- a/indra/newview/lldrawpoolsky.h
+++ b/indra/newview/lldrawpoolsky.h
@@ -32,7 +32,7 @@
 class LLSkyTex;
 class LLGLSLShader;
 
-class LLDrawPoolSky : public LLFacePool
+class LLDrawPoolSky final : public LLFacePool
 {
 private:
 	LLSkyTex			*mSkyTex;
diff --git a/indra/newview/lldrawpoolterrain.h b/indra/newview/lldrawpoolterrain.h
index 04e27d9370e..c0506e46449 100644
--- a/indra/newview/lldrawpoolterrain.h
+++ b/indra/newview/lldrawpoolterrain.h
@@ -29,7 +29,7 @@
 
 #include "lldrawpool.h"
 
-class LLDrawPoolTerrain : public LLFacePool
+class LLDrawPoolTerrain final : public LLFacePool
 {
 	LLPointer<LLViewerTexture> mTexturep;
 public:
diff --git a/indra/newview/lldrawpooltree.h b/indra/newview/lldrawpooltree.h
index 9c1e60f5ebb..f1b5f59f32d 100644
--- a/indra/newview/lldrawpooltree.h
+++ b/indra/newview/lldrawpooltree.h
@@ -29,7 +29,7 @@
 
 #include "lldrawpool.h"
 
-class LLDrawPoolTree : public LLFacePool
+class LLDrawPoolTree final : public LLFacePool
 {
 	LLPointer<LLViewerTexture> mTexturep;
 public:
diff --git a/indra/newview/lldrawpoolwater.h b/indra/newview/lldrawpoolwater.h
index d436557e1cb..44ed579b8b3 100644
--- a/indra/newview/lldrawpoolwater.h
+++ b/indra/newview/lldrawpoolwater.h
@@ -35,7 +35,7 @@ class LLHeavenBody;
 class LLWaterSurface;
 class LLGLSLShader;
 
-class LLDrawPoolWater: public LLFacePool
+class LLDrawPoolWater final : public LLFacePool
 {
 protected:
 	LLPointer<LLViewerTexture> mWaterImagep[2];	
diff --git a/indra/newview/lldrawpoolwlsky.h b/indra/newview/lldrawpoolwlsky.h
index 3acfda4eee5..905c7eebdce 100644
--- a/indra/newview/lldrawpoolwlsky.h
+++ b/indra/newview/lldrawpoolwlsky.h
@@ -31,7 +31,7 @@
 
 class LLGLSLShader;
 
-class LLDrawPoolWLSky : public LLDrawPool {
+class LLDrawPoolWLSky final : public LLDrawPool {
 public:
 
 	static const U32 SKY_VERTEX_DATA_MASK =	LLVertexBuffer::MAP_VERTEX |
diff --git a/indra/newview/llenvironment.h b/indra/newview/llenvironment.h
index 91c4b851352..feb2dc7fad2 100644
--- a/indra/newview/llenvironment.h
+++ b/indra/newview/llenvironment.h
@@ -46,7 +46,7 @@ class LLGLSLShader;
 class LLParcel;
 
 //-------------------------------------------------------------------------
-class LLEnvironment : public LLSingleton<LLEnvironment>
+class LLEnvironment final : public LLSingleton<LLEnvironment>
 {
     LLSINGLETON_C11(LLEnvironment);
     LOG_CLASS(LLEnvironment);
diff --git a/indra/newview/llflexibleobject.h b/indra/newview/llflexibleobject.h
index 9383ab03ae7..787c65ea48a 100644
--- a/indra/newview/llflexibleobject.h
+++ b/indra/newview/llflexibleobject.h
@@ -68,7 +68,7 @@ struct LLFlexibleObjectSection
 //---------------------------------------------------------
 // The LLVolumeImplFlexible class 
 //---------------------------------------------------------
-class LLVolumeImplFlexible : public LLVolumeInterface
+class LLVolumeImplFlexible final : public LLVolumeInterface
 {
 private:
 	static std::vector<LLVolumeImplFlexible*> sInstanceList;
diff --git a/indra/newview/llhudeffectbeam.h b/indra/newview/llhudeffectbeam.h
index fdee5178af2..4d8d6e1d863 100644
--- a/indra/newview/llhudeffectbeam.h
+++ b/indra/newview/llhudeffectbeam.h
@@ -37,7 +37,7 @@ class LLViewerObject;
 
 const S32 NUM_POINTS = 5;
 
-class LLHUDEffectBeam : public LLHUDEffect
+class LLHUDEffectBeam final : public LLHUDEffect
 {
 public:
 	/*virtual*/ void setSourceObject(LLViewerObject *objp);
diff --git a/indra/newview/llhudeffectblob.h b/indra/newview/llhudeffectblob.h
index ce3e8500fc1..b906d07bb5c 100644
--- a/indra/newview/llhudeffectblob.h
+++ b/indra/newview/llhudeffectblob.h
@@ -30,7 +30,7 @@
 #include "llhudeffect.h"
 #include "lluiimage.h"
 
-class LLHUDEffectBlob : public LLHUDEffect
+class LLHUDEffectBlob final : public LLHUDEffect
 {
 public:
 	friend class LLHUDObject;
diff --git a/indra/newview/llhudeffectpointat.h b/indra/newview/llhudeffectpointat.h
index 6200b68cbc4..a2c85d7a14a 100644
--- a/indra/newview/llhudeffectpointat.h
+++ b/indra/newview/llhudeffectpointat.h
@@ -42,7 +42,7 @@ typedef enum e_pointat_type
 	POINTAT_NUM_TARGETS
 } EPointAtType;
 
-class LLHUDEffectPointAt : public LLHUDEffect
+class LLHUDEffectPointAt final : public LLHUDEffect
 {
 public:
 	friend class LLHUDObject;
diff --git a/indra/newview/llhudeffecttrail.h b/indra/newview/llhudeffecttrail.h
index 6f5a328c636..0879cdb5796 100644
--- a/indra/newview/llhudeffecttrail.h
+++ b/indra/newview/llhudeffecttrail.h
@@ -39,7 +39,7 @@ class LLViewerObject;
 const U32 NUM_TRAIL_POINTS = 40;
 
 
-class LLHUDEffectSpiral : public LLHUDEffect
+class LLHUDEffectSpiral final : public LLHUDEffect
 {
 public:
 	/*virtual*/ void markDead();
diff --git a/indra/newview/llspatialpartition.h b/indra/newview/llspatialpartition.h
index 7e65da42f7e..3dec14270ca 100644
--- a/indra/newview/llspatialpartition.h
+++ b/indra/newview/llspatialpartition.h
@@ -664,7 +664,7 @@ class LLVolumeGeometryManager: public LLGeometryManager
 };
 
 //spatial partition that uses volume geometry manager (implemented in LLVOVolume.cpp)
-class LLVolumePartition : public LLSpatialPartition, public LLVolumeGeometryManager
+class LLVolumePartition final : public LLSpatialPartition, public LLVolumeGeometryManager
 {
 public:
 	LLVolumePartition(LLViewerRegion* regionp);
@@ -685,7 +685,7 @@ class LLVolumeBridge : public LLSpatialBridge, public LLVolumeGeometryManager
 	virtual void addGeometryCount(LLSpatialGroup* group, U32 &vertex_count, U32& index_count) { LLVolumeGeometryManager::addGeometryCount(group, vertex_count, index_count); }
 };
 
-class LLHUDBridge : public LLVolumeBridge
+class LLHUDBridge final : public LLVolumeBridge
 {
 public:
 	LLHUDBridge(LLDrawable* drawablep, LLViewerRegion* regionp);
diff --git a/indra/newview/lluiavatar.h b/indra/newview/lluiavatar.h
index bcdffedef2a..3389aee0bf8 100644
--- a/indra/newview/lluiavatar.h
+++ b/indra/newview/lluiavatar.h
@@ -30,7 +30,7 @@
 #include "llvoavatar.h"
 #include "llvovolume.h"
 
-class LLUIAvatar:
+class LLUIAvatar final :
     public LLVOAvatar
 {
     LOG_CLASS(LLUIAvatar);
diff --git a/indra/newview/llvieweraudio.h b/indra/newview/llvieweraudio.h
index 16f9b63113d..b379e281b18 100644
--- a/indra/newview/llvieweraudio.h
+++ b/indra/newview/llvieweraudio.h
@@ -41,7 +41,7 @@ void audio_update_volume(bool force_update = true);
 void audio_update_listener();
 void audio_update_wind(bool force_update = true);
 
-class LLViewerAudio : public LLSingleton<LLViewerAudio>
+class LLViewerAudio final : public LLSingleton<LLViewerAudio>
 {
 	LLSINGLETON(LLViewerAudio);
 	virtual ~LLViewerAudio();
diff --git a/indra/newview/llviewercamera.h b/indra/newview/llviewercamera.h
index fb07a3fb2df..103fa0c02b8 100644
--- a/indra/newview/llviewercamera.h
+++ b/indra/newview/llviewercamera.h
@@ -44,7 +44,7 @@ extern template class LLViewerCamera* LLSingleton<class LLViewerCamera>::getInst
 #endif
 
 LL_ALIGN_PREFIX(16)
-class LLViewerCamera : public LLCamera, public LLSingleton<LLViewerCamera>
+class LLViewerCamera final : public LLCamera, public LLSingleton<LLViewerCamera>
 {
 	LLSINGLETON(LLViewerCamera);
 public:
diff --git a/indra/newview/llviewerpartsim.h b/indra/newview/llviewerpartsim.h
index ab1cd715ab2..072ed9ab54d 100644
--- a/indra/newview/llviewerpartsim.h
+++ b/indra/newview/llviewerpartsim.h
@@ -47,7 +47,7 @@ typedef void (*LLVPCallback)(LLViewerPart &part, const F32 dt);
 //
 
 
-class LLViewerPart : public LLPartData
+class LLViewerPart final : public LLPartData
 {
 public:
 	~LLViewerPart();
@@ -133,7 +133,7 @@ class LLViewerPartGroup
 	LLViewerRegion *mRegionp;
 };
 
-class LLViewerPartSim : public LLSingleton<LLViewerPartSim>
+class LLViewerPartSim final : public LLSingleton<LLViewerPartSim>
 {
 	LLSINGLETON(LLViewerPartSim);
 public:
diff --git a/indra/newview/llviewerpartsource.h b/indra/newview/llviewerpartsource.h
index 504229e81f1..475cc7feb2c 100644
--- a/indra/newview/llviewerpartsource.h
+++ b/indra/newview/llviewerpartsource.h
@@ -104,7 +104,7 @@ class LLViewerPartSource : public LLRefCount
 //
 
 
-class LLViewerPartSourceScript : public LLViewerPartSource
+class LLViewerPartSourceScript final : public LLViewerPartSource
 {
 public:
 	LLViewerPartSourceScript(LLViewerObject *source_objp);
@@ -136,7 +136,7 @@ class LLViewerPartSourceScript : public LLViewerPartSource
 // Particle source for spiral effect (customize avatar, mostly)
 //
 
-class LLViewerPartSourceSpiral : public LLViewerPartSource
+class LLViewerPartSourceSpiral final : public LLViewerPartSource
 {
 public:
 	LLViewerPartSourceSpiral(const LLVector3 &pos);
@@ -160,7 +160,7 @@ class LLViewerPartSourceSpiral : public LLViewerPartSource
 // Particle source for tractor(editing) beam
 //
 
-class LLViewerPartSourceBeam : public LLViewerPartSource
+class LLViewerPartSourceBeam final : public LLViewerPartSource
 {
 public:
 	LLViewerPartSourceBeam();
@@ -190,7 +190,7 @@ class LLViewerPartSourceBeam : public LLViewerPartSource
 // Particle source for chat effect
 //
 
-class LLViewerPartSourceChat : public LLViewerPartSource
+class LLViewerPartSourceChat final : public LLViewerPartSource
 {
 public:
 	LLViewerPartSourceChat(const LLVector3 &pos);
diff --git a/indra/newview/llvoavatarself.h b/indra/newview/llvoavatarself.h
index 8da24cbcfa8..4d01a685dcc 100644
--- a/indra/newview/llvoavatarself.h
+++ b/indra/newview/llvoavatarself.h
@@ -42,7 +42,7 @@ class LLInventoryCallback;
 // LLVOAvatarSelf
 //
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-class LLVOAvatarSelf :
+class LLVOAvatarSelf final :
 	public LLVOAvatar
 {
 	LOG_CLASS(LLVOAvatarSelf);
diff --git a/indra/newview/llvocache.h b/indra/newview/llvocache.h
index 6c95541c116..8fb72df2a1e 100644
--- a/indra/newview/llvocache.h
+++ b/indra/newview/llvocache.h
@@ -37,7 +37,7 @@
 // Cache entries
 class LLCamera;
 
-class LLVOCacheEntry 
+class LLVOCacheEntry final
 :	public LLViewerOctreeEntryData,
 	public LLTrace::MemTrackable<LLVOCacheEntry, 16>
 {
@@ -173,7 +173,7 @@ class LLVOCacheEntry
 	static F32					sRearPixelThreshold;
 };
 
-class LLVOCacheGroup : public LLOcclusionCullingGroup
+class LLVOCacheGroup final : public LLOcclusionCullingGroup
 {
 public:
 	LLVOCacheGroup(OctreeNode* node, LLViewerOctreePartition* part) : LLOcclusionCullingGroup(node, part){}	
@@ -185,7 +185,7 @@ class LLVOCacheGroup : public LLOcclusionCullingGroup
 	virtual ~LLVOCacheGroup();
 };
 
-class LLVOCachePartition : public LLViewerOctreePartition, public LLTrace::MemTrackable<LLVOCachePartition>
+class LLVOCachePartition final : public LLViewerOctreePartition, public LLTrace::MemTrackable<LLVOCachePartition>
 {
 public:
 	LLVOCachePartition(LLViewerRegion* regionp);
@@ -221,7 +221,7 @@ class LLVOCachePartition : public LLViewerOctreePartition, public LLTrace::MemTr
 //
 //Note: LLVOCache is not thread-safe
 //
-class LLVOCache : public LLParamSingleton<LLVOCache>
+class LLVOCache final : public LLParamSingleton<LLVOCache>
 {
 	LLSINGLETON(LLVOCache, bool read_only);
 	~LLVOCache() ;
diff --git a/indra/newview/llvograss.h b/indra/newview/llvograss.h
index 5634e048eb3..66b70d936b7 100644
--- a/indra/newview/llvograss.h
+++ b/indra/newview/llvograss.h
@@ -34,7 +34,7 @@ class LLSurfacePatch;
 class LLViewerTexture;
 
 
-class LLVOGrass : public LLAlphaObject
+class LLVOGrass final : public LLAlphaObject
 {
 public:
 	LLVOGrass(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp);
diff --git a/indra/newview/llvoground.h b/indra/newview/llvoground.h
index a53f309e468..21edc261c9f 100644
--- a/indra/newview/llvoground.h
+++ b/indra/newview/llvoground.h
@@ -33,7 +33,7 @@
 #include "llviewertexture.h"
 #include "llviewerobject.h"
 
-class LLVOGround : public LLStaticViewerObject
+class LLVOGround final : public LLStaticViewerObject
 {
 protected:
 	~LLVOGround();
diff --git a/indra/newview/llvoicevisualizer.h b/indra/newview/llvoicevisualizer.h
index 36c78252d13..87ba1dbc3ea 100644
--- a/indra/newview/llvoicevisualizer.h
+++ b/indra/newview/llvoicevisualizer.h
@@ -65,7 +65,7 @@ const static int NUM_VOICE_SYMBOL_WAVES = 7;
 //----------------------------------------------------
 // LLVoiceVisualizer class 
 //----------------------------------------------------
-class LLVoiceVisualizer : public LLHUDEffect
+class LLVoiceVisualizer final : public LLHUDEffect
 {
 	//---------------------------------------------------
 	// public methods 
diff --git a/indra/newview/llvopartgroup.h b/indra/newview/llvopartgroup.h
index 4e4d6e609db..9e1b9c0bee2 100644
--- a/indra/newview/llvopartgroup.h
+++ b/indra/newview/llvopartgroup.h
@@ -115,7 +115,7 @@ class LLVOPartGroup : public LLAlphaObject
 };
 
 
-class LLVOHUDPartGroup : public LLVOPartGroup
+class LLVOHUDPartGroup final : public LLVOPartGroup
 {
 public:
 	LLVOHUDPartGroup(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp) : 
diff --git a/indra/newview/llvosky.h b/indra/newview/llvosky.h
index 39e42bbb242..93212075930 100644
--- a/indra/newview/llvosky.h
+++ b/indra/newview/llvosky.h
@@ -191,7 +191,7 @@ class LLHeavenBody
 
 class LLCubeMap;
 
-class LLVOSky : public LLStaticViewerObject
+class LLVOSky final : public LLStaticViewerObject
 {
 public:	
 	enum
diff --git a/indra/newview/llvosurfacepatch.h b/indra/newview/llvosurfacepatch.h
index 884dbb3be39..1b78c4e6553 100644
--- a/indra/newview/llvosurfacepatch.h
+++ b/indra/newview/llvosurfacepatch.h
@@ -36,7 +36,7 @@ class LLVector2;
 class LLFacePool;
 class LLFace;
 
-class LLVOSurfacePatch : public LLStaticViewerObject
+class LLVOSurfacePatch final : public LLStaticViewerObject
 {
 public:
 	static F32 sLODFactor;
diff --git a/indra/newview/llvotree.h b/indra/newview/llvotree.h
index 93c22d2da31..22f014ce8d6 100644
--- a/indra/newview/llvotree.h
+++ b/indra/newview/llvotree.h
@@ -34,7 +34,7 @@ class LLFace;
 class LLDrawPool;
 class LLViewerFetchedTexture;
 
-class LLVOTree : public LLViewerObject
+class LLVOTree final : public LLViewerObject
 {
 protected:
 	~LLVOTree();
diff --git a/indra/newview/llvovolume.h b/indra/newview/llvovolume.h
index 4c412605b1f..9d609526191 100644
--- a/indra/newview/llvovolume.h
+++ b/indra/newview/llvovolume.h
@@ -57,7 +57,7 @@ enum LLVolumeInterfaceType
 const F32 MAX_LOD_FACTOR = 4.0f;
 
 
-class LLRiggedVolume : public LLVolume
+class LLRiggedVolume final : public LLVolume
 {
 public:
 	LLRiggedVolume(const LLVolumeParams& params)
@@ -93,7 +93,7 @@ class LLVolumeInterface
 };
 
 // Class which embodies all Volume objects (with pcode LL_PCODE_VOLUME)
-class LLVOVolume : public LLViewerObject
+class LLVOVolume final : public LLViewerObject
 {
 	LOG_CLASS(LLVOVolume);
 protected:
diff --git a/indra/newview/llvowater.h b/indra/newview/llvowater.h
index 7a8d8192153..3a6550e5d71 100644
--- a/indra/newview/llvowater.h
+++ b/indra/newview/llvowater.h
@@ -52,23 +52,23 @@ class LLVOWater : public LLStaticViewerObject
 
 	LLVOWater(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp);
 
-	/*virtual*/ void markDead();
+	/*virtual*/ void markDead() final;
 
 	// Initialize data that's only inited once per class.
 	static void initClass();
 	static void cleanupClass();
 
-	/*virtual*/ void idleUpdate(LLAgent &agent, const F64 &time);
-	/*virtual*/ LLDrawable* createDrawable(LLPipeline *pipeline);
-	/*virtual*/ BOOL        updateGeometry(LLDrawable *drawable);
-	/*virtual*/ void		updateSpatialExtents(LLVector4a& newMin, LLVector4a& newMax);
+	/*virtual*/ void idleUpdate(LLAgent &agent, const F64 &time) final;
+	/*virtual*/ LLDrawable* createDrawable(LLPipeline *pipeline) final;
+	/*virtual*/ BOOL        updateGeometry(LLDrawable *drawable) final;
+	/*virtual*/ void		updateSpatialExtents(LLVector4a& newMin, LLVector4a& newMax) final;
 
-	/*virtual*/ void updateTextures();
-	/*virtual*/ void setPixelAreaAndAngle(LLAgent &agent); // generate accurate apparent angle and area
+	/*virtual*/ void updateTextures() final;
+	/*virtual*/ void setPixelAreaAndAngle(LLAgent &agent) final; // generate accurate apparent angle and area
 
-	virtual U32 getPartitionType() const;
+	/*virtual*/ U32 getPartitionType() const override;
 
-	/*virtual*/ BOOL isActive() const; // Whether this object needs to do an idleUpdate.
+	/*virtual*/ BOOL isActive() const final; // Whether this object needs to do an idleUpdate.
 
 	void setUseTexture(const BOOL use_texture);
 	void setIsEdgePatch(const BOOL edge_patch);
@@ -81,7 +81,7 @@ class LLVOWater : public LLStaticViewerObject
 	S32  mRenderType; 
 };
 
-class LLVOVoidWater : public LLVOWater
+class LLVOVoidWater final : public LLVOWater
 {
 public:
 	LLVOVoidWater(LLUUID const& id, LLPCode pcode, LLViewerRegion* regionp) : LLVOWater(id, pcode, regionp)
diff --git a/indra/newview/llvowlsky.h b/indra/newview/llvowlsky.h
index 2b7ebe75dd7..d4ac32dacc0 100644
--- a/indra/newview/llvowlsky.h
+++ b/indra/newview/llvowlsky.h
@@ -29,7 +29,7 @@
 
 #include "llviewerobject.h"
 
-class LLVOWLSky : public LLStaticViewerObject {
+class LLVOWLSky final : public LLStaticViewerObject {
 private:
 	inline static U32 getNumStacks(void);
 	inline static U32 getNumSlices(void);
diff --git a/indra/newview/llworld.h b/indra/newview/llworld.h
index 6fee03dc724..d9c35a58492 100644
--- a/indra/newview/llworld.h
+++ b/indra/newview/llworld.h
@@ -59,7 +59,7 @@ class LLVOAvatar;
 // as simulators are connected to, viewer_regions are popped off the stack and connected as required
 // as simulators are removed, they are pushed back onto the stack
 
-class LLWorld : public LLSingleton<LLWorld>
+class LLWorld final : public LLSingleton<LLWorld>
 {
 	LLSINGLETON(LLWorld);
 public:
-- 
GitLab