diff --git a/xfa/fxfa/fm2js/cxfa_fmexpression.cpp b/xfa/fxfa/fm2js/cxfa_fmexpression.cpp
index 30c0639..a4dee63 100644
--- a/xfa/fxfa/fm2js/cxfa_fmexpression.cpp
+++ b/xfa/fxfa/fm2js/cxfa_fmexpression.cpp
@@ -34,7 +34,7 @@
       m_pExpressions(std::move(expressions)),
       m_isGlobal(isGlobal) {}
 
-CXFA_FMFunctionDefinition::~CXFA_FMFunctionDefinition() {}
+CXFA_FMFunctionDefinition::~CXFA_FMFunctionDefinition() = default;
 
 bool CXFA_FMFunctionDefinition::ToJavaScript(CFX_WideTextBuf& js,
                                              ReturnType type) {
@@ -103,7 +103,7 @@
     std::unique_ptr<CXFA_FMSimpleExpression> pInit)
     : CXFA_FMExpression(), m_wsName(wsName), m_pInit(std::move(pInit)) {}
 
-CXFA_FMVarExpression::~CXFA_FMVarExpression() {}
+CXFA_FMVarExpression::~CXFA_FMVarExpression() = default;
 
 bool CXFA_FMVarExpression::ToJavaScript(CFX_WideTextBuf& js, ReturnType type) {
   CXFA_FMToJavaScriptDepth depthManager;
@@ -134,7 +134,7 @@
     std::unique_ptr<CXFA_FMSimpleExpression> pExpression)
     : CXFA_FMExpression(), m_pExpression(std::move(pExpression)) {}
 
-CXFA_FMExpExpression::~CXFA_FMExpExpression() {}
+CXFA_FMExpExpression::~CXFA_FMExpExpression() = default;
 
 bool CXFA_FMExpExpression::ToJavaScript(CFX_WideTextBuf& js, ReturnType type) {
   CXFA_FMToJavaScriptDepth depthManager;
@@ -177,7 +177,7 @@
     std::vector<std::unique_ptr<CXFA_FMExpression>>&& pExpressionList)
     : CXFA_FMExpression(), m_ExpressionList(std::move(pExpressionList)) {}
 
-CXFA_FMBlockExpression::~CXFA_FMBlockExpression() {}
+CXFA_FMBlockExpression::~CXFA_FMBlockExpression() = default;
 
 bool CXFA_FMBlockExpression::ToJavaScript(CFX_WideTextBuf& js,
                                           ReturnType type) {
@@ -207,7 +207,7 @@
     std::unique_ptr<CXFA_FMExpression> pList)
     : CXFA_FMExpression(), m_pList(std::move(pList)) {}
 
-CXFA_FMDoExpression::~CXFA_FMDoExpression() {}
+CXFA_FMDoExpression::~CXFA_FMDoExpression() = default;
 
 bool CXFA_FMDoExpression::ToJavaScript(CFX_WideTextBuf& js, ReturnType type) {
   CXFA_FMToJavaScriptDepth depthManager;
@@ -226,7 +226,7 @@
       m_pIfExpression(std::move(pIfExpression)),
       m_pElseExpression(std::move(pElseExpression)) {}
 
-CXFA_FMIfExpression::~CXFA_FMIfExpression() {}
+CXFA_FMIfExpression::~CXFA_FMIfExpression() = default;
 
 bool CXFA_FMIfExpression::ToJavaScript(CFX_WideTextBuf& js, ReturnType type) {
   CXFA_FMToJavaScriptDepth depthManager;
@@ -272,7 +272,7 @@
       m_pCondition(std::move(pCondition)),
       m_pExpression(std::move(pExpression)) {}
 
-CXFA_FMWhileExpression::~CXFA_FMWhileExpression() {}
+CXFA_FMWhileExpression::~CXFA_FMWhileExpression() = default;
 
 bool CXFA_FMWhileExpression::ToJavaScript(CFX_WideTextBuf& js,
                                           ReturnType type) {
@@ -299,7 +299,7 @@
 
 CXFA_FMBreakExpression::CXFA_FMBreakExpression() : CXFA_FMExpression() {}
 
-CXFA_FMBreakExpression::~CXFA_FMBreakExpression() {}
+CXFA_FMBreakExpression::~CXFA_FMBreakExpression() = default;
 
 bool CXFA_FMBreakExpression::ToJavaScript(CFX_WideTextBuf& js,
                                           ReturnType type) {
@@ -313,7 +313,7 @@
 
 CXFA_FMContinueExpression::CXFA_FMContinueExpression() : CXFA_FMExpression() {}
 
-CXFA_FMContinueExpression::~CXFA_FMContinueExpression() {}
+CXFA_FMContinueExpression::~CXFA_FMContinueExpression() = default;
 
 bool CXFA_FMContinueExpression::ToJavaScript(CFX_WideTextBuf& js,
                                              ReturnType type) {
@@ -340,7 +340,7 @@
       m_pStep(std::move(pStep)),
       m_pList(std::move(pList)) {}
 
-CXFA_FMForExpression::~CXFA_FMForExpression() {}
+CXFA_FMForExpression::~CXFA_FMForExpression() = default;
 
 bool CXFA_FMForExpression::ToJavaScript(CFX_WideTextBuf& js, ReturnType type) {
   CXFA_FMToJavaScriptDepth depthManager;
@@ -401,7 +401,7 @@
       m_pAccessors(std::move(pAccessors)),
       m_pList(std::move(pList)) {}
 
-CXFA_FMForeachExpression::~CXFA_FMForeachExpression() {}
+CXFA_FMForeachExpression::~CXFA_FMForeachExpression() = default;
 
 bool CXFA_FMForeachExpression::ToJavaScript(CFX_WideTextBuf& js,
                                             ReturnType type) {
diff --git a/xfa/fxfa/fm2js/cxfa_fmsimpleexpression.cpp b/xfa/fxfa/fm2js/cxfa_fmsimpleexpression.cpp
index e0af27e..82aada6 100644
--- a/xfa/fxfa/fm2js/cxfa_fmsimpleexpression.cpp
+++ b/xfa/fxfa/fm2js/cxfa_fmsimpleexpression.cpp
@@ -92,7 +92,7 @@
 CXFA_FMNumberExpression::CXFA_FMNumberExpression(WideStringView wsNumber)
     : CXFA_FMSimpleExpression(TOKnumber), m_wsNumber(wsNumber) {}
 
-CXFA_FMNumberExpression::~CXFA_FMNumberExpression() {}
+CXFA_FMNumberExpression::~CXFA_FMNumberExpression() = default;
 
 bool CXFA_FMNumberExpression::ToJavaScript(CFX_WideTextBuf& js,
                                            ReturnType type) {
@@ -107,7 +107,7 @@
 CXFA_FMStringExpression::CXFA_FMStringExpression(WideStringView wsString)
     : CXFA_FMSimpleExpression(TOKstring), m_wsString(wsString) {}
 
-CXFA_FMStringExpression::~CXFA_FMStringExpression() {}
+CXFA_FMStringExpression::~CXFA_FMStringExpression() = default;
 
 bool CXFA_FMStringExpression::ToJavaScript(CFX_WideTextBuf& js,
                                            ReturnType type) {
@@ -147,7 +147,7 @@
     WideStringView wsIdentifier)
     : CXFA_FMSimpleExpression(TOKidentifier), m_wsIdentifier(wsIdentifier) {}
 
-CXFA_FMIdentifierExpression::~CXFA_FMIdentifierExpression() {}
+CXFA_FMIdentifierExpression::~CXFA_FMIdentifierExpression() = default;
 
 bool CXFA_FMIdentifierExpression::ToJavaScript(CFX_WideTextBuf& js,
                                                ReturnType type) {
@@ -540,7 +540,7 @@
       m_pExp1(std::move(pAccessor)),
       m_pExp2(std::move(pIndexExp)) {}
 
-CXFA_FMDotAccessorExpression::~CXFA_FMDotAccessorExpression() {}
+CXFA_FMDotAccessorExpression::~CXFA_FMDotAccessorExpression() = default;
 
 bool CXFA_FMDotAccessorExpression::ToJavaScript(CFX_WideTextBuf& js,
                                                 ReturnType type) {
@@ -637,7 +637,7 @@
       m_pExp1(std::move(pAccessor)),
       m_pExp2(std::move(pIndexExp)) {}
 
-CXFA_FMDotDotAccessorExpression::~CXFA_FMDotDotAccessorExpression() {}
+CXFA_FMDotDotAccessorExpression::~CXFA_FMDotDotAccessorExpression() = default;
 
 bool CXFA_FMDotDotAccessorExpression::ToJavaScript(CFX_WideTextBuf& js,
                                                    ReturnType type) {
