diff --git a/src/tint/ast/accessor_expression.cc b/src/tint/ast/accessor_expression.cc
index 55cdabf..6d0a751 100644
--- a/src/tint/ast/accessor_expression.cc
+++ b/src/tint/ast/accessor_expression.cc
@@ -29,8 +29,6 @@
     TINT_ASSERT_PROGRAM_IDS_EQUAL_IF_VALID(AST, object, program_id);
 }
 
-AccessorExpression::AccessorExpression(AccessorExpression&&) = default;
-
 AccessorExpression::~AccessorExpression() = default;
 
 }  // namespace tint::ast
diff --git a/src/tint/ast/accessor_expression.h b/src/tint/ast/accessor_expression.h
index 653eccb..d668f1f 100644
--- a/src/tint/ast/accessor_expression.h
+++ b/src/tint/ast/accessor_expression.h
@@ -28,8 +28,8 @@
     /// @param source the member accessor expression source
     /// @param object the object
     AccessorExpression(ProgramID pid, NodeID nid, const Source& source, const Expression* object);
-    /// Move constructor
-    AccessorExpression(AccessorExpression&&);
+
+    /// Destructor
     ~AccessorExpression() override;
 
     /// The object being accessed
diff --git a/src/tint/ast/alias.cc b/src/tint/ast/alias.cc
index ec5cf43..c878793 100644
--- a/src/tint/ast/alias.cc
+++ b/src/tint/ast/alias.cc
@@ -25,8 +25,6 @@
     TINT_ASSERT(AST, type);
 }
 
-Alias::Alias(Alias&&) = default;
-
 Alias::~Alias() = default;
 
 const Alias* Alias::Clone(CloneContext* ctx) const {
diff --git a/src/tint/ast/alias.h b/src/tint/ast/alias.h
index 267a313..c30d387 100644
--- a/src/tint/ast/alias.h
+++ b/src/tint/ast/alias.h
@@ -32,8 +32,7 @@
     /// @param name the symbol for the alias
     /// @param subtype the alias'd type
     Alias(ProgramID pid, NodeID nid, const Source& src, const Identifier* name, Type subtype);
-    /// Move constructor
-    Alias(Alias&&);
+
     /// Destructor
     ~Alias() override;
 
diff --git a/src/tint/ast/assignment_statement.cc b/src/tint/ast/assignment_statement.cc
index 6a835b8..0441665 100644
--- a/src/tint/ast/assignment_statement.cc
+++ b/src/tint/ast/assignment_statement.cc
@@ -32,8 +32,6 @@
     TINT_ASSERT_PROGRAM_IDS_EQUAL_IF_VALID(AST, rhs, program_id);
 }
 
-AssignmentStatement::AssignmentStatement(AssignmentStatement&&) = default;
-
 AssignmentStatement::~AssignmentStatement() = default;
 
 const AssignmentStatement* AssignmentStatement::Clone(CloneContext* ctx) const {
diff --git a/src/tint/ast/assignment_statement.h b/src/tint/ast/assignment_statement.h
index 6b8c412..01a1a75 100644
--- a/src/tint/ast/assignment_statement.h
+++ b/src/tint/ast/assignment_statement.h
@@ -34,8 +34,8 @@
                         const Source& source,
                         const Expression* lhs,
                         const Expression* rhs);
-    /// Move constructor
-    AssignmentStatement(AssignmentStatement&&);
+
+    /// Destructor
     ~AssignmentStatement() override;
 
     /// Clones this node and all transitive child nodes using the `CloneContext`
diff --git a/src/tint/ast/binary_expression.cc b/src/tint/ast/binary_expression.cc
index ebf704e..6e50f57 100644
--- a/src/tint/ast/binary_expression.cc
+++ b/src/tint/ast/binary_expression.cc
@@ -34,8 +34,6 @@
     TINT_ASSERT(AST, op != BinaryOp::kNone);
 }
 
-BinaryExpression::BinaryExpression(BinaryExpression&&) = default;
-
 BinaryExpression::~BinaryExpression() = default;
 
 const BinaryExpression* BinaryExpression::Clone(CloneContext* ctx) const {
diff --git a/src/tint/ast/bitcast_expression.cc b/src/tint/ast/bitcast_expression.cc
index 4091d73..089c659 100644
--- a/src/tint/ast/bitcast_expression.cc
+++ b/src/tint/ast/bitcast_expression.cc
@@ -31,7 +31,6 @@
     TINT_ASSERT_PROGRAM_IDS_EQUAL_IF_VALID(AST, expr, program_id);
 }
 
-BitcastExpression::BitcastExpression(BitcastExpression&&) = default;
 BitcastExpression::~BitcastExpression() = default;
 
 const BitcastExpression* BitcastExpression::Clone(CloneContext* ctx) const {
diff --git a/src/tint/ast/bitcast_expression.h b/src/tint/ast/bitcast_expression.h
index 82d3bd2..7737721 100644
--- a/src/tint/ast/bitcast_expression.h
+++ b/src/tint/ast/bitcast_expression.h
@@ -34,8 +34,8 @@
                       const Source& source,
                       Type type,
                       const Expression* expr);
-    /// Move constructor
-    BitcastExpression(BitcastExpression&&);
+
+    /// Destructor
     ~BitcastExpression() override;
 
     /// Clones this node and all transitive child nodes using the `CloneContext`
diff --git a/src/tint/ast/block_statement.cc b/src/tint/ast/block_statement.cc
index 5d75d27..7c76319 100644
--- a/src/tint/ast/block_statement.cc
+++ b/src/tint/ast/block_statement.cc
@@ -36,8 +36,6 @@
     }
 }
 
-BlockStatement::BlockStatement(BlockStatement&&) = default;
-
 BlockStatement::~BlockStatement() = default;
 
 const BlockStatement* BlockStatement::Clone(CloneContext* ctx) const {
diff --git a/src/tint/ast/block_statement.h b/src/tint/ast/block_statement.h
index 87989d8..2044b5b 100644
--- a/src/tint/ast/block_statement.h
+++ b/src/tint/ast/block_statement.h
@@ -40,8 +40,8 @@
                    const Source& source,
                    utils::VectorRef<const Statement*> statements,
                    utils::VectorRef<const Attribute*> attributes);
-    /// Move constructor
-    BlockStatement(BlockStatement&&);
+
+    /// Destructor
     ~BlockStatement() override;
 
     /// @returns true if the block has no statements
diff --git a/src/tint/ast/break_if_statement.cc b/src/tint/ast/break_if_statement.cc
index a931541..dad7beb 100644
--- a/src/tint/ast/break_if_statement.cc
+++ b/src/tint/ast/break_if_statement.cc
@@ -29,8 +29,6 @@
     TINT_ASSERT_PROGRAM_IDS_EQUAL_IF_VALID(AST, condition, program_id);
 }
 
-BreakIfStatement::BreakIfStatement(BreakIfStatement&&) = default;
-
 BreakIfStatement::~BreakIfStatement() = default;
 
 const BreakIfStatement* BreakIfStatement::Clone(CloneContext* ctx) const {
diff --git a/src/tint/ast/break_if_statement.h b/src/tint/ast/break_if_statement.h
index 1437797..a366240 100644
--- a/src/tint/ast/break_if_statement.h
+++ b/src/tint/ast/break_if_statement.h
@@ -32,8 +32,7 @@
     /// @param condition the if condition
     BreakIfStatement(ProgramID pid, NodeID nid, const Source& src, const Expression* condition);
 
-    /// Move constructor
-    BreakIfStatement(BreakIfStatement&&);
+    /// Destructor
     ~BreakIfStatement() override;
 
     /// Clones this node and all transitive child nodes using the `CloneContext` `ctx`.
diff --git a/src/tint/ast/break_statement.cc b/src/tint/ast/break_statement.cc
index ecd5f06..e898d8c 100644
--- a/src/tint/ast/break_statement.cc
+++ b/src/tint/ast/break_statement.cc
@@ -23,8 +23,6 @@
 BreakStatement::BreakStatement(ProgramID pid, NodeID nid, const Source& src)
     : Base(pid, nid, src) {}
 
-BreakStatement::BreakStatement(BreakStatement&&) = default;
-
 BreakStatement::~BreakStatement() = default;
 
 const BreakStatement* BreakStatement::Clone(CloneContext* ctx) const {
diff --git a/src/tint/ast/break_statement.h b/src/tint/ast/break_statement.h
index 92f67b7..d9676bb 100644
--- a/src/tint/ast/break_statement.h
+++ b/src/tint/ast/break_statement.h
@@ -27,8 +27,8 @@
     /// @param nid the unique node identifier
     /// @param src the source of this node
     BreakStatement(ProgramID pid, NodeID nid, const Source& src);
-    /// Move constructor
-    BreakStatement(BreakStatement&&);
+
+    /// Destructor
     ~BreakStatement() override;
 
     /// Clones this node and all transitive child nodes using the `CloneContext`
diff --git a/src/tint/ast/builtin_texture_helper_test.h b/src/tint/ast/builtin_texture_helper_test.h
index 738db0c..2f941bb 100644
--- a/src/tint/ast/builtin_texture_helper_test.h
+++ b/src/tint/ast/builtin_texture_helper_test.h
@@ -219,6 +219,7 @@
                         bool /* returns_value */);
     /// Copy constructor
     TextureOverloadCase(const TextureOverloadCase&);
+
     /// Destructor
     ~TextureOverloadCase();
 
diff --git a/src/tint/ast/call_expression.cc b/src/tint/ast/call_expression.cc
index 9da7106..2e49c5f 100644
--- a/src/tint/ast/call_expression.cc
+++ b/src/tint/ast/call_expression.cc
@@ -36,8 +36,6 @@
     }
 }
 
-CallExpression::CallExpression(CallExpression&&) = default;
-
 CallExpression::~CallExpression() = default;
 
 const CallExpression* CallExpression::Clone(CloneContext* ctx) const {
diff --git a/src/tint/ast/call_expression.h b/src/tint/ast/call_expression.h
index 5085818..6660494 100644
--- a/src/tint/ast/call_expression.h
+++ b/src/tint/ast/call_expression.h
@@ -43,8 +43,7 @@
                    const IdentifierExpression* target,
                    utils::VectorRef<const Expression*> args);
 
-    /// Move constructor
-    CallExpression(CallExpression&&);
+    /// Destructor
     ~CallExpression() override;
 
     /// Clones this node and all transitive child nodes using the `CloneContext`
diff --git a/src/tint/ast/call_statement.cc b/src/tint/ast/call_statement.cc
index 597e30f..89772dc 100644
--- a/src/tint/ast/call_statement.cc
+++ b/src/tint/ast/call_statement.cc
@@ -29,8 +29,6 @@
     TINT_ASSERT_PROGRAM_IDS_EQUAL_IF_VALID(AST, expr, program_id);
 }
 
-CallStatement::CallStatement(CallStatement&&) = default;
-
 CallStatement::~CallStatement() = default;
 
 const CallStatement* CallStatement::Clone(CloneContext* ctx) const {
diff --git a/src/tint/ast/call_statement.h b/src/tint/ast/call_statement.h
index daf0b3f..9af47a1 100644
--- a/src/tint/ast/call_statement.h
+++ b/src/tint/ast/call_statement.h
@@ -29,8 +29,8 @@
     /// @param src the source of this node for the statement
     /// @param call the function
     CallStatement(ProgramID pid, NodeID nid, const Source& src, const CallExpression* call);
-    /// Move constructor
-    CallStatement(CallStatement&&);
+
+    /// Destructor
     ~CallStatement() override;
 
     /// Clones this node and all transitive child nodes using the `CloneContext`
diff --git a/src/tint/ast/case_selector.cc b/src/tint/ast/case_selector.cc
index 7419fe5..a7f1446 100644
--- a/src/tint/ast/case_selector.cc
+++ b/src/tint/ast/case_selector.cc
@@ -25,8 +25,6 @@
 CaseSelector::CaseSelector(ProgramID pid, NodeID nid, const Source& src, const Expression* e)
     : Base(pid, nid, src), expr(e) {}
 
-CaseSelector::CaseSelector(CaseSelector&&) = default;
-
 CaseSelector::~CaseSelector() = default;
 
 const CaseSelector* CaseSelector::Clone(CloneContext* ctx) const {
diff --git a/src/tint/ast/case_selector.h b/src/tint/ast/case_selector.h
index b4c3ca7..f2bc1b3 100644
--- a/src/tint/ast/case_selector.h
+++ b/src/tint/ast/case_selector.h
@@ -31,8 +31,8 @@
     /// @param src the source of this node
     /// @param expr the selector expression, |nullptr| for a `default` selector
     CaseSelector(ProgramID pid, NodeID nid, const Source& src, const Expression* expr = nullptr);
-    /// Move constructor
-    CaseSelector(CaseSelector&&);
+
+    /// Destructor
     ~CaseSelector() override;
 
     /// @returns true if this is a default statement
diff --git a/src/tint/ast/case_statement.cc b/src/tint/ast/case_statement.cc
index 7b2e798..b7e6970 100644
--- a/src/tint/ast/case_statement.cc
+++ b/src/tint/ast/case_statement.cc
@@ -37,8 +37,6 @@
     }
 }
 
-CaseStatement::CaseStatement(CaseStatement&&) = default;
-
 CaseStatement::~CaseStatement() = default;
 
 bool CaseStatement::ContainsDefault() const {
diff --git a/src/tint/ast/case_statement.h b/src/tint/ast/case_statement.h
index acd502a..a06c720 100644
--- a/src/tint/ast/case_statement.h
+++ b/src/tint/ast/case_statement.h
@@ -36,8 +36,8 @@
                   const Source& src,
                   utils::VectorRef<const CaseSelector*> selectors,
                   const BlockStatement* body);
-    /// Move constructor
-    CaseStatement(CaseStatement&&);
+
+    /// Destructor
     ~CaseStatement() override;
 
     /// Clones this node and all transitive child nodes using the `CloneContext`
diff --git a/src/tint/ast/compound_assignment_statement.cc b/src/tint/ast/compound_assignment_statement.cc
index f752862..fc9d300 100644
--- a/src/tint/ast/compound_assignment_statement.cc
+++ b/src/tint/ast/compound_assignment_statement.cc
@@ -33,8 +33,6 @@
     TINT_ASSERT_PROGRAM_IDS_EQUAL_IF_VALID(AST, rhs, program_id);
 }
 
-CompoundAssignmentStatement::CompoundAssignmentStatement(CompoundAssignmentStatement&&) = default;
-
 CompoundAssignmentStatement::~CompoundAssignmentStatement() = default;
 
 const CompoundAssignmentStatement* CompoundAssignmentStatement::Clone(CloneContext* ctx) const {
diff --git a/src/tint/ast/compound_assignment_statement.h b/src/tint/ast/compound_assignment_statement.h
index 9fbd22c..bb1f34f 100644
--- a/src/tint/ast/compound_assignment_statement.h
+++ b/src/tint/ast/compound_assignment_statement.h
@@ -37,8 +37,8 @@
                                 const Expression* lhs,
                                 const Expression* rhs,
                                 BinaryOp op);
-    /// Move constructor
-    CompoundAssignmentStatement(CompoundAssignmentStatement&&);
+
+    /// Destructor
     ~CompoundAssignmentStatement() override;
 
     /// Clones this node and all transitive child nodes using the `CloneContext`
diff --git a/src/tint/ast/const.cc b/src/tint/ast/const.cc
index 60f9bef..967f5f1 100644
--- a/src/tint/ast/const.cc
+++ b/src/tint/ast/const.cc
@@ -33,8 +33,6 @@
     TINT_ASSERT(AST, init != nullptr);
 }
 
-Const::Const(Const&&) = default;
-
 Const::~Const() = default;
 
 const char* Const::Kind() const {
diff --git a/src/tint/ast/const.h b/src/tint/ast/const.h
index 75dc767..95727ce 100644
--- a/src/tint/ast/const.h
+++ b/src/tint/ast/const.h
@@ -48,9 +48,6 @@
           const Expression* initializer,
           utils::VectorRef<const Attribute*> attributes);
 
-    /// Move constructor
-    Const(Const&&);
-
     /// Destructor
     ~Const() override;
 
diff --git a/src/tint/ast/const_assert.cc b/src/tint/ast/const_assert.cc
index 5f9978d..0dcdc16 100644
--- a/src/tint/ast/const_assert.cc
+++ b/src/tint/ast/const_assert.cc
@@ -26,8 +26,6 @@
     TINT_ASSERT_PROGRAM_IDS_EQUAL_IF_VALID(AST, cond, program_id);
 }
 
-ConstAssert::ConstAssert(ConstAssert&&) = default;
-
 ConstAssert::~ConstAssert() = default;
 
 const ConstAssert* ConstAssert::Clone(CloneContext* ctx) const {
diff --git a/src/tint/ast/const_assert.h b/src/tint/ast/const_assert.h
index 8f0aae5..6774f5e 100644
--- a/src/tint/ast/const_assert.h
+++ b/src/tint/ast/const_assert.h
@@ -30,9 +30,6 @@
     /// @param condition the assertion condition
     ConstAssert(ProgramID pid, NodeID nid, const Source& source, const Expression* condition);
 
-    /// Move constructor
-    ConstAssert(ConstAssert&&);
-
     /// Destructor
     ~ConstAssert() override;
 
diff --git a/src/tint/ast/continue_statement.cc b/src/tint/ast/continue_statement.cc
index 53bd6a9..a7868e8 100644
--- a/src/tint/ast/continue_statement.cc
+++ b/src/tint/ast/continue_statement.cc
@@ -23,8 +23,6 @@
 ContinueStatement::ContinueStatement(ProgramID pid, NodeID nid, const Source& src)
     : Base(pid, nid, src) {}
 
-ContinueStatement::ContinueStatement(ContinueStatement&&) = default;
-
 ContinueStatement::~ContinueStatement() = default;
 
 const ContinueStatement* ContinueStatement::Clone(CloneContext* ctx) const {
diff --git a/src/tint/ast/continue_statement.h b/src/tint/ast/continue_statement.h
index 09b8254..10af08b 100644
--- a/src/tint/ast/continue_statement.h
+++ b/src/tint/ast/continue_statement.h
@@ -27,8 +27,8 @@
     /// @param nid the unique node identifier
     /// @param src the source of this node
     ContinueStatement(ProgramID pid, NodeID nid, const Source& src);
-    /// Move constructor
-    ContinueStatement(ContinueStatement&&);
+
+    /// Destructor
     ~ContinueStatement() override;
 
     /// Clones this node and all transitive child nodes using the `CloneContext`
diff --git a/src/tint/ast/diagnostic_control.cc b/src/tint/ast/diagnostic_control.cc
index e269446..a2bdd46 100644
--- a/src/tint/ast/diagnostic_control.cc
+++ b/src/tint/ast/diagnostic_control.cc
@@ -22,6 +22,8 @@
 
 namespace tint::ast {
 
+DiagnosticControl::DiagnosticControl() = default;
+
 DiagnosticControl::DiagnosticControl(builtin::DiagnosticSeverity sev, const Identifier* rule)
     : severity(sev), rule_name(rule) {
     TINT_ASSERT(AST, rule != nullptr);
@@ -31,4 +33,6 @@
     }
 }
 
+DiagnosticControl::DiagnosticControl(DiagnosticControl&&) = default;
+
 }  // namespace tint::ast
diff --git a/src/tint/ast/diagnostic_control.h b/src/tint/ast/diagnostic_control.h
index a0f5a9d..f99d002 100644
--- a/src/tint/ast/diagnostic_control.h
+++ b/src/tint/ast/diagnostic_control.h
@@ -32,13 +32,16 @@
 struct DiagnosticControl {
   public:
     /// Default constructor.
-    DiagnosticControl() {}
+    DiagnosticControl();
 
     /// Constructor
     /// @param sev the diagnostic severity
     /// @param rule the diagnostic rule name
     DiagnosticControl(builtin::DiagnosticSeverity sev, const Identifier* rule);
 
+    /// Move constructor
+    DiagnosticControl(DiagnosticControl&&);
+
     /// The diagnostic severity control.
     builtin::DiagnosticSeverity severity;
 
diff --git a/src/tint/ast/diagnostic_directive.cc b/src/tint/ast/diagnostic_directive.cc
index 42e1169..f0ef041 100644
--- a/src/tint/ast/diagnostic_directive.cc
+++ b/src/tint/ast/diagnostic_directive.cc
@@ -26,8 +26,6 @@
                                          DiagnosticControl&& dc)
     : Base(pid, nid, src), control(std::move(dc)) {}
 
-DiagnosticDirective::DiagnosticDirective(DiagnosticDirective&&) = default;
-
 DiagnosticDirective::~DiagnosticDirective() = default;
 
 const DiagnosticDirective* DiagnosticDirective::Clone(CloneContext* ctx) const {
diff --git a/src/tint/ast/diagnostic_directive.h b/src/tint/ast/diagnostic_directive.h
index ee84381..979f32c 100644
--- a/src/tint/ast/diagnostic_directive.h
+++ b/src/tint/ast/diagnostic_directive.h
@@ -38,9 +38,6 @@
     /// @param dc the diagnostic control
     DiagnosticDirective(ProgramID pid, NodeID nid, const Source& src, DiagnosticControl&& dc);
 
-    /// Move constructor
-    DiagnosticDirective(DiagnosticDirective&&);
-
     /// Destructor
     ~DiagnosticDirective() override;
 
diff --git a/src/tint/ast/discard_statement.cc b/src/tint/ast/discard_statement.cc
index fc9e75b..e76d01e 100644
--- a/src/tint/ast/discard_statement.cc
+++ b/src/tint/ast/discard_statement.cc
@@ -23,8 +23,6 @@
 DiscardStatement::DiscardStatement(ProgramID pid, NodeID nid, const Source& src)
     : Base(pid, nid, src) {}
 
-DiscardStatement::DiscardStatement(DiscardStatement&&) = default;
-
 DiscardStatement::~DiscardStatement() = default;
 
 const DiscardStatement* DiscardStatement::Clone(CloneContext* ctx) const {
diff --git a/src/tint/ast/discard_statement.h b/src/tint/ast/discard_statement.h
index 272cc2d..a764683 100644
--- a/src/tint/ast/discard_statement.h
+++ b/src/tint/ast/discard_statement.h
@@ -27,8 +27,8 @@
     /// @param nid the unique node identifier
     /// @param src the source of this node
     DiscardStatement(ProgramID pid, NodeID nid, const Source& src);
-    /// Move constructor
-    DiscardStatement(DiscardStatement&&);
+
+    /// Destructor
     ~DiscardStatement() override;
 
     /// Clones this node and all transitive child nodes using the `CloneContext`
diff --git a/src/tint/ast/enable.cc b/src/tint/ast/enable.cc
index bb2b3b6..b449444 100644
--- a/src/tint/ast/enable.cc
+++ b/src/tint/ast/enable.cc
@@ -26,8 +26,6 @@
                utils::VectorRef<const Extension*> exts)
     : Base(pid, nid, src), extensions(std::move(exts)) {}
 
-Enable::Enable(Enable&&) = default;
-
 Enable::~Enable() = default;
 
 bool Enable::HasExtension(builtin::Extension ext) const {
diff --git a/src/tint/ast/enable.h b/src/tint/ast/enable.h
index d87d12f..53f0218 100644
--- a/src/tint/ast/enable.h
+++ b/src/tint/ast/enable.h
@@ -36,9 +36,8 @@
     /// @param src the source of this node
     /// @param exts the extensions being enabled by this directive
     Enable(ProgramID pid, NodeID nid, const Source& src, utils::VectorRef<const Extension*> exts);
-    /// Move constructor
-    Enable(Enable&&);
 
+    /// Destructor
     ~Enable() override;
 
     /// @param ext the extension to search for
diff --git a/src/tint/ast/expression.cc b/src/tint/ast/expression.cc
index b9482fa..21989d0 100644
--- a/src/tint/ast/expression.cc
+++ b/src/tint/ast/expression.cc
@@ -20,8 +20,6 @@
 
 Expression::Expression(ProgramID pid, NodeID nid, const Source& src) : Base(pid, nid, src) {}
 
-Expression::Expression(Expression&&) = default;
-
 Expression::~Expression() = default;
 
 }  // namespace tint::ast
diff --git a/src/tint/ast/expression.h b/src/tint/ast/expression.h
index d851cb1..e4a94cb 100644
--- a/src/tint/ast/expression.h
+++ b/src/tint/ast/expression.h
@@ -33,8 +33,6 @@
     /// @param nid the unique node identifier
     /// @param src the source of this node
     Expression(ProgramID pid, NodeID nid, const Source& src);
-    /// Move constructor
-    Expression(Expression&&);
 };
 
 }  // namespace tint::ast
diff --git a/src/tint/ast/extension.cc b/src/tint/ast/extension.cc
index a45c704..bfb8ffd 100644
--- a/src/tint/ast/extension.cc
+++ b/src/tint/ast/extension.cc
@@ -26,8 +26,6 @@
 Extension::Extension(ProgramID pid, NodeID nid, const Source& src, builtin::Extension ext)
     : Base(pid, nid, src), name(ext) {}
 
-Extension::Extension(Extension&&) = default;
-
 Extension::~Extension() = default;
 
 const Extension* Extension::Clone(CloneContext* ctx) const {
diff --git a/src/tint/ast/extension.h b/src/tint/ast/extension.h
index 93f3baa..4988edb 100644
--- a/src/tint/ast/extension.h
+++ b/src/tint/ast/extension.h
@@ -32,9 +32,8 @@
     /// @param src the source of this node
     /// @param ext the extension
     Extension(ProgramID pid, NodeID nid, const Source& src, builtin::Extension ext);
-    /// Move constructor
-    Extension(Extension&&);
 
+    /// Destructor
     ~Extension() override;
 
     /// Clones this node and all transitive child nodes using the `CloneContext`
diff --git a/src/tint/ast/for_loop_statement.cc b/src/tint/ast/for_loop_statement.cc
index b2a5470..faec878 100644
--- a/src/tint/ast/for_loop_statement.cc
+++ b/src/tint/ast/for_loop_statement.cc
@@ -48,8 +48,6 @@
     }
 }
 
-ForLoopStatement::ForLoopStatement(ForLoopStatement&&) = default;
-
 ForLoopStatement::~ForLoopStatement() = default;
 
 const ForLoopStatement* ForLoopStatement::Clone(CloneContext* ctx) const {
diff --git a/src/tint/ast/for_loop_statement.h b/src/tint/ast/for_loop_statement.h
index 6063dda..00fcf1d 100644
--- a/src/tint/ast/for_loop_statement.h
+++ b/src/tint/ast/for_loop_statement.h
@@ -41,8 +41,8 @@
                      const Statement* continuing,
                      const BlockStatement* body,
                      utils::VectorRef<const ast::Attribute*> attributes);
-    /// Move constructor
-    ForLoopStatement(ForLoopStatement&&);
+
+    /// Destructor
     ~ForLoopStatement() override;
 
     /// Clones this node and all transitive child nodes using the `CloneContext`
diff --git a/src/tint/ast/function.cc b/src/tint/ast/function.cc
index 3c5446c..59a4571 100644
--- a/src/tint/ast/function.cc
+++ b/src/tint/ast/function.cc
@@ -57,8 +57,6 @@
     }
 }
 
-Function::Function(Function&&) = default;
-
 Function::~Function() = default;
 
 PipelineStage Function::PipelineStage() const {
diff --git a/src/tint/ast/function.h b/src/tint/ast/function.h
index dc8cc70..8fa009f 100644
--- a/src/tint/ast/function.h
+++ b/src/tint/ast/function.h
@@ -59,9 +59,8 @@
              const BlockStatement* body,
              utils::VectorRef<const Attribute*> attributes,
              utils::VectorRef<const Attribute*> return_type_attributes);
-    /// Move constructor
-    Function(Function&&);
 
+    /// Destructor
     ~Function() override;
 
     /// @returns the functions pipeline stage or None if not set
diff --git a/src/tint/ast/identifier.cc b/src/tint/ast/identifier.cc
index 8b8c3f5..49b9c86 100644
--- a/src/tint/ast/identifier.cc
+++ b/src/tint/ast/identifier.cc
@@ -26,8 +26,6 @@
     TINT_ASSERT(AST, symbol.IsValid());
 }
 
-Identifier::Identifier(Identifier&&) = default;
-
 Identifier::~Identifier() = default;
 
 const Identifier* Identifier::Clone(CloneContext* ctx) const {
diff --git a/src/tint/ast/identifier.h b/src/tint/ast/identifier.h
index 7160173..df138e9 100644
--- a/src/tint/ast/identifier.h
+++ b/src/tint/ast/identifier.h
@@ -28,8 +28,8 @@
     /// @param src the source of this node
     /// @param sym the symbol for the identifier
     Identifier(ProgramID pid, NodeID nid, const Source& src, Symbol sym);
-    /// Move constructor
-    Identifier(Identifier&&);
+
+    /// Destructor
     ~Identifier() override;
 
     /// Clones this node and all transitive child nodes using the `CloneContext`
diff --git a/src/tint/ast/identifier_expression.cc b/src/tint/ast/identifier_expression.cc
index ca4e0cb..d3ee29b 100644
--- a/src/tint/ast/identifier_expression.cc
+++ b/src/tint/ast/identifier_expression.cc
@@ -29,8 +29,6 @@
     TINT_ASSERT_PROGRAM_IDS_EQUAL(AST, identifier, program_id);
 }
 
-IdentifierExpression::IdentifierExpression(IdentifierExpression&&) = default;
-
 IdentifierExpression::~IdentifierExpression() = default;
 
 const IdentifierExpression* IdentifierExpression::Clone(CloneContext* ctx) const {
diff --git a/src/tint/ast/identifier_expression.h b/src/tint/ast/identifier_expression.h
index 475249c..c2200bd 100644
--- a/src/tint/ast/identifier_expression.h
+++ b/src/tint/ast/identifier_expression.h
@@ -36,8 +36,8 @@
                          NodeID nid,
                          const Source& src,
                          const Identifier* identifier);
-    /// Move constructor
-    IdentifierExpression(IdentifierExpression&&);
+
+    /// Destructor
     ~IdentifierExpression() override;
 
     /// Clones this node and all transitive child nodes using the `CloneContext`
diff --git a/src/tint/ast/if_statement.cc b/src/tint/ast/if_statement.cc
index 6878c9f..40748c5 100644
--- a/src/tint/ast/if_statement.cc
+++ b/src/tint/ast/if_statement.cc
@@ -46,8 +46,6 @@
     }
 }
 
-IfStatement::IfStatement(IfStatement&&) = default;
-
 IfStatement::~IfStatement() = default;
 
 const IfStatement* IfStatement::Clone(CloneContext* ctx) const {
diff --git a/src/tint/ast/if_statement.h b/src/tint/ast/if_statement.h
index 8f291a8..255ce2f 100644
--- a/src/tint/ast/if_statement.h
+++ b/src/tint/ast/if_statement.h
@@ -40,8 +40,8 @@
                 const BlockStatement* body,
                 const Statement* else_stmt,
                 utils::VectorRef<const Attribute*> attributes);
-    /// Move constructor
-    IfStatement(IfStatement&&);
+
+    /// Destructor
     ~IfStatement() override;
 
     /// Clones this node and all transitive child nodes using the `CloneContext`
diff --git a/src/tint/ast/increment_decrement_statement.cc b/src/tint/ast/increment_decrement_statement.cc
index 5b10e5f..f37242e 100644
--- a/src/tint/ast/increment_decrement_statement.cc
+++ b/src/tint/ast/increment_decrement_statement.cc
@@ -29,8 +29,6 @@
     TINT_ASSERT_PROGRAM_IDS_EQUAL_IF_VALID(AST, lhs, program_id);
 }
 
-IncrementDecrementStatement::IncrementDecrementStatement(IncrementDecrementStatement&&) = default;
-
 IncrementDecrementStatement::~IncrementDecrementStatement() = default;
 
 const IncrementDecrementStatement* IncrementDecrementStatement::Clone(CloneContext* ctx) const {
diff --git a/src/tint/ast/increment_decrement_statement.h b/src/tint/ast/increment_decrement_statement.h
index ec9923a..9046e46 100644
--- a/src/tint/ast/increment_decrement_statement.h
+++ b/src/tint/ast/increment_decrement_statement.h
@@ -34,8 +34,8 @@
                                 const Source& src,
                                 const Expression* lhs,
                                 bool inc);
-    /// Move constructor
-    IncrementDecrementStatement(IncrementDecrementStatement&&);
+
+    /// Destructor
     ~IncrementDecrementStatement() override;
 
     /// Clones this node and all transitive child nodes using the `CloneContext`
diff --git a/src/tint/ast/index_accessor_expression.cc b/src/tint/ast/index_accessor_expression.cc
index e96c562..5462c6e 100644
--- a/src/tint/ast/index_accessor_expression.cc
+++ b/src/tint/ast/index_accessor_expression.cc
@@ -30,8 +30,6 @@
     TINT_ASSERT_PROGRAM_IDS_EQUAL_IF_VALID(AST, idx, program_id);
 }
 
-IndexAccessorExpression::IndexAccessorExpression(IndexAccessorExpression&&) = default;
-
 IndexAccessorExpression::~IndexAccessorExpression() = default;
 
 const IndexAccessorExpression* IndexAccessorExpression::Clone(CloneContext* ctx) const {
diff --git a/src/tint/ast/index_accessor_expression.h b/src/tint/ast/index_accessor_expression.h
index 99db4db..09dc975 100644
--- a/src/tint/ast/index_accessor_expression.h
+++ b/src/tint/ast/index_accessor_expression.h
@@ -33,8 +33,8 @@
                             const Source& source,
                             const Expression* obj,
                             const Expression* idx);
-    /// Move constructor
-    IndexAccessorExpression(IndexAccessorExpression&&);
+
+    /// Destructor
     ~IndexAccessorExpression() override;
 
     /// Clones this node and all transitive child nodes using the `CloneContext`
diff --git a/src/tint/ast/let.cc b/src/tint/ast/let.cc
index e899f56..6f63ceb 100644
--- a/src/tint/ast/let.cc
+++ b/src/tint/ast/let.cc
@@ -33,8 +33,6 @@
     TINT_ASSERT(AST, init != nullptr);
 }
 
-Let::Let(Let&&) = default;
-
 Let::~Let() = default;
 
 const char* Let::Kind() const {
diff --git a/src/tint/ast/let.h b/src/tint/ast/let.h
index 7ff84b2..127c3d4 100644
--- a/src/tint/ast/let.h
+++ b/src/tint/ast/let.h
@@ -45,9 +45,6 @@
         const Expression* initializer,
         utils::VectorRef<const Attribute*> attributes);
 
-    /// Move constructor
-    Let(Let&&);
-
     /// Destructor
     ~Let() override;
 
diff --git a/src/tint/ast/loop_statement.cc b/src/tint/ast/loop_statement.cc
index b7e7a1b..731dee7 100644
--- a/src/tint/ast/loop_statement.cc
+++ b/src/tint/ast/loop_statement.cc
@@ -31,8 +31,6 @@
     TINT_ASSERT_PROGRAM_IDS_EQUAL_IF_VALID(AST, continuing, program_id);
 }
 
-LoopStatement::LoopStatement(LoopStatement&&) = default;
-
 LoopStatement::~LoopStatement() = default;
 
 const LoopStatement* LoopStatement::Clone(CloneContext* ctx) const {
diff --git a/src/tint/ast/loop_statement.h b/src/tint/ast/loop_statement.h
index d4b24cf..c1e5cc0 100644
--- a/src/tint/ast/loop_statement.h
+++ b/src/tint/ast/loop_statement.h
@@ -33,8 +33,8 @@
                   const Source& source,
                   const BlockStatement* body,
                   const BlockStatement* continuing);
-    /// Move constructor
-    LoopStatement(LoopStatement&&);
+
+    /// Destructor
     ~LoopStatement() override;
 
     /// Clones this node and all transitive child nodes using the `CloneContext`
diff --git a/src/tint/ast/member_accessor_expression.cc b/src/tint/ast/member_accessor_expression.cc
index 3886502..4b062fb 100644
--- a/src/tint/ast/member_accessor_expression.cc
+++ b/src/tint/ast/member_accessor_expression.cc
@@ -35,8 +35,6 @@
     }
 }
 
-MemberAccessorExpression::MemberAccessorExpression(MemberAccessorExpression&&) = default;
-
 MemberAccessorExpression::~MemberAccessorExpression() = default;
 
 const MemberAccessorExpression* MemberAccessorExpression::Clone(CloneContext* ctx) const {
diff --git a/src/tint/ast/member_accessor_expression.h b/src/tint/ast/member_accessor_expression.h
index 6833f93d..95fbbd2 100644
--- a/src/tint/ast/member_accessor_expression.h
+++ b/src/tint/ast/member_accessor_expression.h
@@ -35,8 +35,8 @@
                              const Source& source,
                              const Expression* object,
                              const Identifier* member);
-    /// Move constructor
-    MemberAccessorExpression(MemberAccessorExpression&&);
+
+    /// Destructor
     ~MemberAccessorExpression() override;
 
     /// Clones this node and all transitive child nodes using the `CloneContext`
diff --git a/src/tint/ast/node.cc b/src/tint/ast/node.cc
index ce3a71d..772c788 100644
--- a/src/tint/ast/node.cc
+++ b/src/tint/ast/node.cc
@@ -21,8 +21,6 @@
 Node::Node(ProgramID pid, NodeID nid, const Source& src)
     : program_id(pid), node_id(nid), source(src) {}
 
-Node::Node(Node&&) = default;
-
 Node::~Node() = default;
 
 }  // namespace tint::ast
diff --git a/src/tint/ast/node.h b/src/tint/ast/node.h
index 6eaa1e9..afea2e8 100644
--- a/src/tint/ast/node.h
+++ b/src/tint/ast/node.h
@@ -42,11 +42,10 @@
     /// @param nid the unique node identifier
     /// @param src the input source for the node
     Node(ProgramID pid, NodeID nid, const Source& src);
-    /// Move constructor
-    Node(Node&&);
 
   private:
     Node(const Node&) = delete;
+    Node(Node&&) = delete;
 };
 
 }  // namespace tint::ast
diff --git a/src/tint/ast/override.cc b/src/tint/ast/override.cc
index 79f0772..ff1836e 100644
--- a/src/tint/ast/override.cc
+++ b/src/tint/ast/override.cc
@@ -31,8 +31,6 @@
                    utils::VectorRef<const Attribute*> attrs)
     : Base(pid, nid, src, n, ty, init, std::move(attrs)) {}
 
-Override::Override(Override&&) = default;
-
 Override::~Override() = default;
 
 const char* Override::Kind() const {
diff --git a/src/tint/ast/override.h b/src/tint/ast/override.h
index 531d147..b824ed3 100644
--- a/src/tint/ast/override.h
+++ b/src/tint/ast/override.h
@@ -48,9 +48,6 @@
              const Expression* initializer,
              utils::VectorRef<const Attribute*> attributes);
 
-    /// Move constructor
-    Override(Override&&);
-
     /// Destructor
     ~Override() override;
 
diff --git a/src/tint/ast/parameter.cc b/src/tint/ast/parameter.cc
index a2c6e5b..4a76e55 100644
--- a/src/tint/ast/parameter.cc
+++ b/src/tint/ast/parameter.cc
@@ -30,8 +30,6 @@
                      utils::VectorRef<const Attribute*> attrs)
     : Base(pid, nid, src, n, ty, nullptr, std::move(attrs)) {}
 
-Parameter::Parameter(Parameter&&) = default;
-
 Parameter::~Parameter() = default;
 
 const char* Parameter::Kind() const {
diff --git a/src/tint/ast/parameter.h b/src/tint/ast/parameter.h
index 7ea49ae..b056afa 100644
--- a/src/tint/ast/parameter.h
+++ b/src/tint/ast/parameter.h
@@ -47,9 +47,6 @@
               Type type,
               utils::VectorRef<const Attribute*> attributes);
 
-    /// Move constructor
-    Parameter(Parameter&&);
-
     /// Destructor
     ~Parameter() override;
 
diff --git a/src/tint/ast/phony_expression.cc b/src/tint/ast/phony_expression.cc
index 6bce1bf..f2fca96 100644
--- a/src/tint/ast/phony_expression.cc
+++ b/src/tint/ast/phony_expression.cc
@@ -23,8 +23,6 @@
 PhonyExpression::PhonyExpression(ProgramID pid, NodeID nid, const Source& src)
     : Base(pid, nid, src) {}
 
-PhonyExpression::PhonyExpression(PhonyExpression&&) = default;
-
 PhonyExpression::~PhonyExpression() = default;
 
 const PhonyExpression* PhonyExpression::Clone(CloneContext* ctx) const {
diff --git a/src/tint/ast/phony_expression.h b/src/tint/ast/phony_expression.h
index d429a51..7f59c37 100644
--- a/src/tint/ast/phony_expression.h
+++ b/src/tint/ast/phony_expression.h
@@ -28,8 +28,8 @@
     /// @param nid the unique node identifier
     /// @param src the source of this node
     PhonyExpression(ProgramID pid, NodeID nid, const Source& src);
-    /// Move constructor
-    PhonyExpression(PhonyExpression&&);
+
+    /// Destructor
     ~PhonyExpression() override;
 
     /// Clones this node and all transitive child nodes using the `CloneContext`
diff --git a/src/tint/ast/return_statement.cc b/src/tint/ast/return_statement.cc
index 459bb72..4ac7313 100644
--- a/src/tint/ast/return_statement.cc
+++ b/src/tint/ast/return_statement.cc
@@ -31,8 +31,6 @@
     TINT_ASSERT_PROGRAM_IDS_EQUAL_IF_VALID(AST, value, program_id);
 }
 
-ReturnStatement::ReturnStatement(ReturnStatement&&) = default;
-
 ReturnStatement::~ReturnStatement() = default;
 
 const ReturnStatement* ReturnStatement::Clone(CloneContext* ctx) const {
diff --git a/src/tint/ast/return_statement.h b/src/tint/ast/return_statement.h
index 571a738..7eae780 100644
--- a/src/tint/ast/return_statement.h
+++ b/src/tint/ast/return_statement.h
@@ -35,8 +35,8 @@
     /// @param src the source of this node
     /// @param value the return value
     ReturnStatement(ProgramID pid, NodeID nid, const Source& src, const Expression* value);
-    /// Move constructor
-    ReturnStatement(ReturnStatement&&);
+
+    /// Destructor
     ~ReturnStatement() override;
 
     /// Clones this node and all transitive child nodes using the `CloneContext`
diff --git a/src/tint/ast/statement.cc b/src/tint/ast/statement.cc
index 7b9ca5d..42f01c4 100644
--- a/src/tint/ast/statement.cc
+++ b/src/tint/ast/statement.cc
@@ -31,8 +31,6 @@
 
 Statement::Statement(ProgramID pid, NodeID nid, const Source& src) : Base(pid, nid, src) {}
 
-Statement::Statement(Statement&&) = default;
-
 Statement::~Statement() = default;
 
 const char* Statement::Name() const {
diff --git a/src/tint/ast/statement.h b/src/tint/ast/statement.h
index 616e348..fa434cc 100644
--- a/src/tint/ast/statement.h
+++ b/src/tint/ast/statement.h
@@ -35,8 +35,6 @@
     /// @param nid the unique node identifier
     /// @param src the source of the expression
     Statement(ProgramID pid, NodeID nid, const Source& src);
-    /// Move constructor
-    Statement(Statement&&);
 };
 
 }  // namespace tint::ast
diff --git a/src/tint/ast/struct.cc b/src/tint/ast/struct.cc
index 96daeff..ebd33e2 100644
--- a/src/tint/ast/struct.cc
+++ b/src/tint/ast/struct.cc
@@ -39,8 +39,6 @@
     }
 }
 
-Struct::Struct(Struct&&) = default;
-
 Struct::~Struct() = default;
 
 const Struct* Struct::Clone(CloneContext* ctx) const {
diff --git a/src/tint/ast/struct.h b/src/tint/ast/struct.h
index 36ad080..d7c2281 100644
--- a/src/tint/ast/struct.h
+++ b/src/tint/ast/struct.h
@@ -41,9 +41,8 @@
            const Identifier* name,
            utils::VectorRef<const StructMember*> members,
            utils::VectorRef<const Attribute*> attributes);
-    /// Move constructor
-    Struct(Struct&&);
 
+    /// Destructor
     ~Struct() override;
 
     /// Clones this node and all transitive child nodes using the `CloneContext`
diff --git a/src/tint/ast/struct_member.cc b/src/tint/ast/struct_member.cc
index 10f278d..acc20e5 100644
--- a/src/tint/ast/struct_member.cc
+++ b/src/tint/ast/struct_member.cc
@@ -39,8 +39,6 @@
     }
 }
 
-StructMember::StructMember(StructMember&&) = default;
-
 StructMember::~StructMember() = default;
 
 const StructMember* StructMember::Clone(CloneContext* ctx) const {
diff --git a/src/tint/ast/struct_member.h b/src/tint/ast/struct_member.h
index fba504a..27e5b0c 100644
--- a/src/tint/ast/struct_member.h
+++ b/src/tint/ast/struct_member.h
@@ -43,9 +43,8 @@
                  const Identifier* name,
                  Type type,
                  utils::VectorRef<const Attribute*> attributes);
-    /// Move constructor
-    StructMember(StructMember&&);
 
+    /// Destructor
     ~StructMember() override;
 
     /// Clones this node and all transitive child nodes using the `CloneContext`
diff --git a/src/tint/ast/switch_statement.cc b/src/tint/ast/switch_statement.cc
index 0445e48..4e5d95d 100644
--- a/src/tint/ast/switch_statement.cc
+++ b/src/tint/ast/switch_statement.cc
@@ -41,8 +41,6 @@
     }
 }
 
-SwitchStatement::SwitchStatement(SwitchStatement&&) = default;
-
 SwitchStatement::~SwitchStatement() = default;
 
 const SwitchStatement* SwitchStatement::Clone(CloneContext* ctx) const {
diff --git a/src/tint/ast/switch_statement.h b/src/tint/ast/switch_statement.h
index e918535..354b6ad 100644
--- a/src/tint/ast/switch_statement.h
+++ b/src/tint/ast/switch_statement.h
@@ -36,8 +36,8 @@
                     const Expression* condition,
                     utils::VectorRef<const CaseStatement*> body,
                     utils::VectorRef<const Attribute*> attributes);
-    /// Move constructor
-    SwitchStatement(SwitchStatement&&);
+
+    /// Destructor
     ~SwitchStatement() override;
 
     /// Clones this node and all transitive child nodes using the `CloneContext`
diff --git a/src/tint/ast/templated_identifier.cc b/src/tint/ast/templated_identifier.cc
index 3a8b545..98274b6 100644
--- a/src/tint/ast/templated_identifier.cc
+++ b/src/tint/ast/templated_identifier.cc
@@ -38,8 +38,6 @@
     }
 }
 
-TemplatedIdentifier::TemplatedIdentifier(TemplatedIdentifier&&) = default;
-
 TemplatedIdentifier::~TemplatedIdentifier() = default;
 
 const TemplatedIdentifier* TemplatedIdentifier::Clone(CloneContext* ctx) const {
diff --git a/src/tint/ast/templated_identifier.h b/src/tint/ast/templated_identifier.h
index 9f4b17b..74ddb43 100644
--- a/src/tint/ast/templated_identifier.h
+++ b/src/tint/ast/templated_identifier.h
@@ -41,8 +41,8 @@
                         const Symbol& sym,
                         utils::VectorRef<const Expression*> args,
                         utils::VectorRef<const Attribute*> attrs);
-    /// Move constructor
-    TemplatedIdentifier(TemplatedIdentifier&&);
+
+    /// Destructor
     ~TemplatedIdentifier() override;
 
     /// Clones this node and all transitive child nodes using the `CloneContext` `ctx`.
diff --git a/src/tint/ast/type_decl.cc b/src/tint/ast/type_decl.cc
index 2319b19..206bf45 100644
--- a/src/tint/ast/type_decl.cc
+++ b/src/tint/ast/type_decl.cc
@@ -28,8 +28,6 @@
     }
 }
 
-TypeDecl::TypeDecl(TypeDecl&&) = default;
-
 TypeDecl::~TypeDecl() = default;
 
 }  // namespace tint::ast
diff --git a/src/tint/ast/type_decl.h b/src/tint/ast/type_decl.h
index fb8958f..8ec0fe4 100644
--- a/src/tint/ast/type_decl.h
+++ b/src/tint/ast/type_decl.h
@@ -33,9 +33,8 @@
     /// @param src the source of this node for the import statement
     /// @param name The name of the type
     TypeDecl(ProgramID pid, NodeID nid, const Source& src, const Identifier* name);
-    /// Move constructor
-    TypeDecl(TypeDecl&&);
 
+    /// Destructor
     ~TypeDecl() override;
 
     /// The name of the type declaration
diff --git a/src/tint/ast/unary_op_expression.cc b/src/tint/ast/unary_op_expression.cc
index eec69a0..104d74a 100644
--- a/src/tint/ast/unary_op_expression.cc
+++ b/src/tint/ast/unary_op_expression.cc
@@ -30,8 +30,6 @@
     TINT_ASSERT_PROGRAM_IDS_EQUAL_IF_VALID(AST, expr, program_id);
 }
 
-UnaryOpExpression::UnaryOpExpression(UnaryOpExpression&&) = default;
-
 UnaryOpExpression::~UnaryOpExpression() = default;
 
 const UnaryOpExpression* UnaryOpExpression::Clone(CloneContext* ctx) const {
diff --git a/src/tint/ast/unary_op_expression.h b/src/tint/ast/unary_op_expression.h
index a5c2be9..3639447 100644
--- a/src/tint/ast/unary_op_expression.h
+++ b/src/tint/ast/unary_op_expression.h
@@ -34,8 +34,8 @@
                       const Source& source,
                       UnaryOp op,
                       const Expression* expr);
-    /// Move constructor
-    UnaryOpExpression(UnaryOpExpression&&);
+
+    /// Destructor
     ~UnaryOpExpression() override;
 
     /// Clones this node and all transitive child nodes using the `CloneContext`
diff --git a/src/tint/ast/var.cc b/src/tint/ast/var.cc
index bccdbcc..fdd700a 100644
--- a/src/tint/ast/var.cc
+++ b/src/tint/ast/var.cc
@@ -33,8 +33,6 @@
       declared_address_space(address_space),
       declared_access(access) {}
 
-Var::Var(Var&&) = default;
-
 Var::~Var() = default;
 
 const char* Var::Kind() const {
diff --git a/src/tint/ast/var.h b/src/tint/ast/var.h
index 006d8de..6f08a6f 100644
--- a/src/tint/ast/var.h
+++ b/src/tint/ast/var.h
@@ -61,9 +61,6 @@
         const Expression* initializer,
         utils::VectorRef<const Attribute*> attributes);
 
-    /// Move constructor
-    Var(Var&&);
-
     /// Destructor
     ~Var() override;
 
diff --git a/src/tint/ast/variable.cc b/src/tint/ast/variable.cc
index 2aa60bf..4a4f756 100644
--- a/src/tint/ast/variable.cc
+++ b/src/tint/ast/variable.cc
@@ -36,8 +36,6 @@
     TINT_ASSERT_PROGRAM_IDS_EQUAL_IF_VALID(AST, initializer, program_id);
 }
 
-Variable::Variable(Variable&&) = default;
-
 Variable::~Variable() = default;
 
 }  // namespace tint::ast
diff --git a/src/tint/ast/variable.h b/src/tint/ast/variable.h
index 70e5116..2230ac3 100644
--- a/src/tint/ast/variable.h
+++ b/src/tint/ast/variable.h
@@ -58,9 +58,6 @@
              const Expression* initializer,
              utils::VectorRef<const Attribute*> attributes);
 
-    /// Move constructor
-    Variable(Variable&&);
-
     /// Destructor
     ~Variable() override;
 
diff --git a/src/tint/ast/variable_decl_statement.cc b/src/tint/ast/variable_decl_statement.cc
index 79ee926..62c5797 100644
--- a/src/tint/ast/variable_decl_statement.cc
+++ b/src/tint/ast/variable_decl_statement.cc
@@ -29,8 +29,6 @@
     TINT_ASSERT_PROGRAM_IDS_EQUAL_IF_VALID(AST, variable, program_id);
 }
 
-VariableDeclStatement::VariableDeclStatement(VariableDeclStatement&&) = default;
-
 VariableDeclStatement::~VariableDeclStatement() = default;
 
 const VariableDeclStatement* VariableDeclStatement::Clone(CloneContext* ctx) const {
diff --git a/src/tint/ast/variable_decl_statement.h b/src/tint/ast/variable_decl_statement.h
index b71d0b2..99a9a5d 100644
--- a/src/tint/ast/variable_decl_statement.h
+++ b/src/tint/ast/variable_decl_statement.h
@@ -32,8 +32,8 @@
                           NodeID nid,
                           const Source& source,
                           const Variable* variable);
-    /// Move constructor
-    VariableDeclStatement(VariableDeclStatement&&);
+
+    /// Destructor
     ~VariableDeclStatement() override;
 
     /// Clones this node and all transitive child nodes using the `CloneContext`
diff --git a/src/tint/ast/while_statement.cc b/src/tint/ast/while_statement.cc
index 47cf2bb..713a0f6 100644
--- a/src/tint/ast/while_statement.cc
+++ b/src/tint/ast/while_statement.cc
@@ -40,8 +40,6 @@
     }
 }
 
-WhileStatement::WhileStatement(WhileStatement&&) = default;
-
 WhileStatement::~WhileStatement() = default;
 
 const WhileStatement* WhileStatement::Clone(CloneContext* ctx) const {
diff --git a/src/tint/ast/while_statement.h b/src/tint/ast/while_statement.h
index b2b91dc..360610a 100644
--- a/src/tint/ast/while_statement.h
+++ b/src/tint/ast/while_statement.h
@@ -37,8 +37,8 @@
                    const Expression* condition,
                    const BlockStatement* body,
                    utils::VectorRef<const ast::Attribute*> attributes);
-    /// Move constructor
-    WhileStatement(WhileStatement&&);
+
+    /// Destructor
     ~WhileStatement() override;
 
     /// Clones this node and all transitive child nodes using the `CloneContext`
