tint/ast: Remove move-constructors for AST nodes

These are not used, as the nodes are constructed with a block allocator and always passed by pointer.

Reduces the Tint binary a bit:
7,759,776 -> 7,758,800
Makes some files have 100% code coverage which didn't before.

Bug: tint:1833
Change-Id: Iff4652deba92663677cc53e9506a829d0a4c12bf
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/124180
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
Commit-Queue: Ben Clayton <bclayton@google.com>
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`