Cleanup sem

Remove unused methods, helpers, includes, and classes.

Change-Id: I41187ec595f970ed6b806aae201bbd12b77066f5
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/260494
Reviewed-by: James Price <jrprice@google.com>
Commit-Queue: dan sinclair <dsinclair@chromium.org>
diff --git a/src/tint/lang/core/enums.cc b/src/tint/lang/core/enums.cc
index f52db45..fe2f146 100644
--- a/src/tint/lang/core/enums.cc
+++ b/src/tint/lang/core/enums.cc
@@ -2073,22 +2073,6 @@
     return "<unknown>";
 }
 
-bool IsCoarseDerivative(BuiltinFn f) {
-    return f == BuiltinFn::kDpdxCoarse || f == BuiltinFn::kDpdyCoarse ||
-           f == BuiltinFn::kFwidthCoarse;
-}
-
-bool IsFineDerivative(BuiltinFn f) {
-    return f == BuiltinFn::kDpdxFine || f == BuiltinFn::kDpdyFine ||
-           f == BuiltinFn::kFwidthFine;
-}
-
-bool IsDerivative(BuiltinFn f) {
-    return f == BuiltinFn::kDpdx || f == BuiltinFn::kDpdy ||
-           f == BuiltinFn::kFwidth || IsCoarseDerivative(f) ||
-           IsFineDerivative(f);
-}
-
 bool IsTexture(BuiltinFn f) {
     return IsImageQuery(f) ||                                //
            f == BuiltinFn::kTextureGather ||                 //
@@ -2110,23 +2094,6 @@
            f == BuiltinFn::kTextureNumSamples;
 }
 
-bool IsDataPacking(BuiltinFn f) {
-    return f == BuiltinFn::kPack4X8Snorm || f == BuiltinFn::kPack4X8Unorm ||
-           f == BuiltinFn::kPack2X16Snorm || f == BuiltinFn::kPack2X16Unorm ||
-           f == BuiltinFn::kPack2X16Float;
-}
-
-bool IsDataUnpacking(BuiltinFn f) {
-    return f == BuiltinFn::kUnpack4X8Snorm || f == BuiltinFn::kUnpack4X8Unorm ||
-           f == BuiltinFn::kUnpack2X16Snorm || f == BuiltinFn::kUnpack2X16Unorm ||
-           f == BuiltinFn::kUnpack2X16Float;
-}
-
-bool IsBarrier(BuiltinFn f) {
-    return f == BuiltinFn::kWorkgroupBarrier || f == BuiltinFn::kStorageBarrier ||
-           f == BuiltinFn::kTextureBarrier;
-}
-
 bool IsAtomic(BuiltinFn f) {
     return f == BuiltinFn::kAtomicLoad || f == BuiltinFn::kAtomicStore ||
            f == BuiltinFn::kAtomicAdd || f == BuiltinFn::kAtomicSub ||
@@ -2136,13 +2103,6 @@
            f == BuiltinFn::kAtomicCompareExchangeWeak;
 }
 
-bool IsPacked4x8IntegerDotProductBuiltin(BuiltinFn f) {
-    return f == BuiltinFn::kDot4I8Packed || f == BuiltinFn::kDot4U8Packed ||
-           f == BuiltinFn::kPack4XI8 || f == BuiltinFn::kPack4XU8 ||
-           f == BuiltinFn::kPack4XI8Clamp || f == BuiltinFn::kPack4XU8Clamp ||
-           f == BuiltinFn::kUnpack4XI8 || f == BuiltinFn::kUnpack4XU8;
-}
-
 bool IsSubgroup(BuiltinFn f) {
     switch (f) {
         case BuiltinFn::kSubgroupBallot:
diff --git a/src/tint/lang/core/enums.cc.tmpl b/src/tint/lang/core/enums.cc.tmpl
index edb8ec9..2aea4e4 100644
--- a/src/tint/lang/core/enums.cc.tmpl
+++ b/src/tint/lang/core/enums.cc.tmpl
@@ -91,22 +91,6 @@
     return "<unknown>";
 }
 
-bool IsCoarseDerivative(BuiltinFn f) {
-    return f == BuiltinFn::kDpdxCoarse || f == BuiltinFn::kDpdyCoarse ||
-           f == BuiltinFn::kFwidthCoarse;
-}
-
-bool IsFineDerivative(BuiltinFn f) {
-    return f == BuiltinFn::kDpdxFine || f == BuiltinFn::kDpdyFine ||
-           f == BuiltinFn::kFwidthFine;
-}
-
-bool IsDerivative(BuiltinFn f) {
-    return f == BuiltinFn::kDpdx || f == BuiltinFn::kDpdy ||
-           f == BuiltinFn::kFwidth || IsCoarseDerivative(f) ||
-           IsFineDerivative(f);
-}
-
 bool IsTexture(BuiltinFn f) {
     return IsImageQuery(f) ||                                //
            f == BuiltinFn::kTextureGather ||                 //
@@ -128,23 +112,6 @@
            f == BuiltinFn::kTextureNumSamples;
 }
 
-bool IsDataPacking(BuiltinFn f) {
-    return f == BuiltinFn::kPack4X8Snorm || f == BuiltinFn::kPack4X8Unorm ||
-           f == BuiltinFn::kPack2X16Snorm || f == BuiltinFn::kPack2X16Unorm ||
-           f == BuiltinFn::kPack2X16Float;
-}
-
-bool IsDataUnpacking(BuiltinFn f) {
-    return f == BuiltinFn::kUnpack4X8Snorm || f == BuiltinFn::kUnpack4X8Unorm ||
-           f == BuiltinFn::kUnpack2X16Snorm || f == BuiltinFn::kUnpack2X16Unorm ||
-           f == BuiltinFn::kUnpack2X16Float;
-}
-
-bool IsBarrier(BuiltinFn f) {
-    return f == BuiltinFn::kWorkgroupBarrier || f == BuiltinFn::kStorageBarrier ||
-           f == BuiltinFn::kTextureBarrier;
-}
-
 bool IsAtomic(BuiltinFn f) {
     return f == BuiltinFn::kAtomicLoad || f == BuiltinFn::kAtomicStore ||
            f == BuiltinFn::kAtomicAdd || f == BuiltinFn::kAtomicSub ||
@@ -154,13 +121,6 @@
            f == BuiltinFn::kAtomicCompareExchangeWeak;
 }
 
-bool IsPacked4x8IntegerDotProductBuiltin(BuiltinFn f) {
-    return f == BuiltinFn::kDot4I8Packed || f == BuiltinFn::kDot4U8Packed ||
-           f == BuiltinFn::kPack4XI8 || f == BuiltinFn::kPack4XU8 ||
-           f == BuiltinFn::kPack4XI8Clamp || f == BuiltinFn::kPack4XU8Clamp ||
-           f == BuiltinFn::kUnpack4XI8 || f == BuiltinFn::kUnpack4XU8;
-}
-
 bool IsSubgroup(BuiltinFn f) {
     switch (f) {
         case BuiltinFn::kSubgroupBallot:
diff --git a/src/tint/lang/wgsl/enums.cc b/src/tint/lang/wgsl/enums.cc
index 3fc5b61..0acde78 100644
--- a/src/tint/lang/wgsl/enums.cc
+++ b/src/tint/lang/wgsl/enums.cc
@@ -1085,24 +1085,19 @@
     return "<unknown>";
 }
 
-bool IsCoarseDerivative(BuiltinFn f) {
-    return f == BuiltinFn::kDpdxCoarse || f == BuiltinFn::kDpdyCoarse ||
-           f == BuiltinFn::kFwidthCoarse;
-}
-
-bool IsFineDerivative(BuiltinFn f) {
-    return f == BuiltinFn::kDpdxFine || f == BuiltinFn::kDpdyFine ||
+bool IsDerivative(BuiltinFn f) {
+    return f == BuiltinFn::kDpdx || f == BuiltinFn::kDpdy ||
+           f == BuiltinFn::kFwidth || f == BuiltinFn::kDpdxCoarse || f == BuiltinFn::kDpdyCoarse ||
+           f == BuiltinFn::kFwidthCoarse ||
+           f == BuiltinFn::kDpdxFine || f == BuiltinFn::kDpdyFine ||
            f == BuiltinFn::kFwidthFine;
 }
 
-bool IsDerivative(BuiltinFn f) {
-    return f == BuiltinFn::kDpdx || f == BuiltinFn::kDpdy ||
-           f == BuiltinFn::kFwidth || IsCoarseDerivative(f) ||
-           IsFineDerivative(f);
-}
-
 bool IsTexture(BuiltinFn f) {
-    return IsImageQuery(f) ||                                //
+    return f == BuiltinFn::kTextureDimensions ||             //
+           f == BuiltinFn::kTextureNumLayers ||              //
+           f == BuiltinFn::kTextureNumLevels ||              //
+           f == BuiltinFn::kTextureNumSamples ||             //
            f == BuiltinFn::kTextureGather ||                 //
            f == BuiltinFn::kTextureGatherCompare ||          //
            f == BuiltinFn::kTextureLoad ||                   //
@@ -1116,24 +1111,6 @@
            f == BuiltinFn::kTextureStore || f == BuiltinFn::kInputAttachmentLoad;
 }
 
-bool IsImageQuery(BuiltinFn f) {
-    return f == BuiltinFn::kTextureDimensions ||
-           f == BuiltinFn::kTextureNumLayers || f == BuiltinFn::kTextureNumLevels ||
-           f == BuiltinFn::kTextureNumSamples;
-}
-
-bool IsDataPacking(BuiltinFn f) {
-    return f == BuiltinFn::kPack4X8Snorm || f == BuiltinFn::kPack4X8Unorm ||
-           f == BuiltinFn::kPack2X16Snorm || f == BuiltinFn::kPack2X16Unorm ||
-           f == BuiltinFn::kPack2X16Float;
-}
-
-bool IsDataUnpacking(BuiltinFn f) {
-    return f == BuiltinFn::kUnpack4X8Snorm || f == BuiltinFn::kUnpack4X8Unorm ||
-           f == BuiltinFn::kUnpack2X16Snorm || f == BuiltinFn::kUnpack2X16Unorm ||
-           f == BuiltinFn::kUnpack2X16Float;
-}
-
 bool IsBarrier(BuiltinFn f) {
     return f == BuiltinFn::kWorkgroupBarrier || f == BuiltinFn::kStorageBarrier ||
            f == BuiltinFn::kTextureBarrier;
@@ -1200,17 +1177,6 @@
     }
 }
 
-bool IsQuadSwap(BuiltinFn f) {
-    switch (f) {
-        case BuiltinFn::kQuadSwapX:
-        case BuiltinFn::kQuadSwapY:
-        case BuiltinFn::kQuadSwapDiagonal:
-            return true;
-        default:
-            return false;
-    }
-}
-
 }  // namespace tint::wgsl
 
 // clang-format on
diff --git a/src/tint/lang/wgsl/enums.cc.tmpl b/src/tint/lang/wgsl/enums.cc.tmpl
index bb02765..b8a4b14 100644
--- a/src/tint/lang/wgsl/enums.cc.tmpl
+++ b/src/tint/lang/wgsl/enums.cc.tmpl
@@ -71,24 +71,19 @@
     return "<unknown>";
 }
 
-bool IsCoarseDerivative(BuiltinFn f) {
-    return f == BuiltinFn::kDpdxCoarse || f == BuiltinFn::kDpdyCoarse ||
-           f == BuiltinFn::kFwidthCoarse;
-}
-
-bool IsFineDerivative(BuiltinFn f) {
-    return f == BuiltinFn::kDpdxFine || f == BuiltinFn::kDpdyFine ||
+bool IsDerivative(BuiltinFn f) {
+    return f == BuiltinFn::kDpdx || f == BuiltinFn::kDpdy ||
+           f == BuiltinFn::kFwidth || f == BuiltinFn::kDpdxCoarse || f == BuiltinFn::kDpdyCoarse ||
+           f == BuiltinFn::kFwidthCoarse ||
+           f == BuiltinFn::kDpdxFine || f == BuiltinFn::kDpdyFine ||
            f == BuiltinFn::kFwidthFine;
 }
 
-bool IsDerivative(BuiltinFn f) {
-    return f == BuiltinFn::kDpdx || f == BuiltinFn::kDpdy ||
-           f == BuiltinFn::kFwidth || IsCoarseDerivative(f) ||
-           IsFineDerivative(f);
-}
-
 bool IsTexture(BuiltinFn f) {
-    return IsImageQuery(f) ||                                //
+    return f == BuiltinFn::kTextureDimensions ||             //
+           f == BuiltinFn::kTextureNumLayers ||              //
+           f == BuiltinFn::kTextureNumLevels ||              //
+           f == BuiltinFn::kTextureNumSamples ||             //
            f == BuiltinFn::kTextureGather ||                 //
            f == BuiltinFn::kTextureGatherCompare ||          //
            f == BuiltinFn::kTextureLoad ||                   //
@@ -102,24 +97,6 @@
            f == BuiltinFn::kTextureStore || f == BuiltinFn::kInputAttachmentLoad;
 }
 
-bool IsImageQuery(BuiltinFn f) {
-    return f == BuiltinFn::kTextureDimensions ||
-           f == BuiltinFn::kTextureNumLayers || f == BuiltinFn::kTextureNumLevels ||
-           f == BuiltinFn::kTextureNumSamples;
-}
-
-bool IsDataPacking(BuiltinFn f) {
-    return f == BuiltinFn::kPack4X8Snorm || f == BuiltinFn::kPack4X8Unorm ||
-           f == BuiltinFn::kPack2X16Snorm || f == BuiltinFn::kPack2X16Unorm ||
-           f == BuiltinFn::kPack2X16Float;
-}
-
-bool IsDataUnpacking(BuiltinFn f) {
-    return f == BuiltinFn::kUnpack4X8Snorm || f == BuiltinFn::kUnpack4X8Unorm ||
-           f == BuiltinFn::kUnpack2X16Snorm || f == BuiltinFn::kUnpack2X16Unorm ||
-           f == BuiltinFn::kUnpack2X16Float;
-}
-
 bool IsBarrier(BuiltinFn f) {
     return f == BuiltinFn::kWorkgroupBarrier || f == BuiltinFn::kStorageBarrier ||
            f == BuiltinFn::kTextureBarrier;
@@ -186,17 +163,6 @@
     }
 }
 
-bool IsQuadSwap(BuiltinFn f) {
-    switch (f) {
-        case BuiltinFn::kQuadSwapX:
-        case BuiltinFn::kQuadSwapY:
-        case BuiltinFn::kQuadSwapDiagonal:
-            return true;
-        default:
-            return false;
-    }
-}
-
 }  // namespace tint::wgsl
 
 // clang-format on
diff --git a/src/tint/lang/wgsl/inspector/inspector.cc b/src/tint/lang/wgsl/inspector/inspector.cc
index 8876dcd..745d859 100644
--- a/src/tint/lang/wgsl/inspector/inspector.cc
+++ b/src/tint/lang/wgsl/inspector/inspector.cc
@@ -34,7 +34,6 @@
 #include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/core/type/array.h"
 #include "src/tint/lang/core/type/binding_array.h"
-#include "src/tint/lang/core/type/bool.h"
 #include "src/tint/lang/core/type/depth_multisampled_texture.h"
 #include "src/tint/lang/core/type/depth_texture.h"
 #include "src/tint/lang/core/type/external_texture.h"
@@ -54,13 +53,13 @@
 #include "src/tint/lang/wgsl/ast/id_attribute.h"
 #include "src/tint/lang/wgsl/ast/identifier.h"
 #include "src/tint/lang/wgsl/ast/identifier_expression.h"
-#include "src/tint/lang/wgsl/ast/input_attachment_index_attribute.h"
 #include "src/tint/lang/wgsl/ast/interpolate_attribute.h"
 #include "src/tint/lang/wgsl/ast/module.h"
 #include "src/tint/lang/wgsl/ast/override.h"
 #include "src/tint/lang/wgsl/ast/templated_identifier.h"
 #include "src/tint/lang/wgsl/sem/accessor_expression.h"
 #include "src/tint/lang/wgsl/sem/builtin_enum_expression.h"
+#include "src/tint/lang/wgsl/sem/builtin_fn.h"
 #include "src/tint/lang/wgsl/sem/call.h"
 #include "src/tint/lang/wgsl/sem/function.h"
 #include "src/tint/lang/wgsl/sem/module.h"
diff --git a/src/tint/lang/wgsl/resolver/resolver.cc b/src/tint/lang/wgsl/resolver/resolver.cc
index db4b87c..43ddbda 100644
--- a/src/tint/lang/wgsl/resolver/resolver.cc
+++ b/src/tint/lang/wgsl/resolver/resolver.cc
@@ -37,7 +37,6 @@
 #include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/core/type/abstract_float.h"
 #include "src/tint/lang/core/type/abstract_int.h"
-#include "src/tint/lang/core/type/array.h"
 #include "src/tint/lang/core/type/atomic.h"
 #include "src/tint/lang/core/type/binding_array.h"
 #include "src/tint/lang/core/type/builtin_structs.h"
@@ -76,13 +75,13 @@
 #include "src/tint/lang/wgsl/ast/while_statement.h"
 #include "src/tint/lang/wgsl/ast/workgroup_attribute.h"
 #include "src/tint/lang/wgsl/intrinsic/ctor_conv.h"
-#include "src/tint/lang/wgsl/intrinsic/dialect.h"
 #include "src/tint/lang/wgsl/resolver/incomplete_type.h"
 #include "src/tint/lang/wgsl/resolver/uniformity.h"
 #include "src/tint/lang/wgsl/resolver/unresolved_identifier.h"
 #include "src/tint/lang/wgsl/sem/array.h"
 #include "src/tint/lang/wgsl/sem/break_if_statement.h"
 #include "src/tint/lang/wgsl/sem/builtin_enum_expression.h"
+#include "src/tint/lang/wgsl/sem/builtin_fn.h"
 #include "src/tint/lang/wgsl/sem/call.h"
 #include "src/tint/lang/wgsl/sem/for_loop_statement.h"
 #include "src/tint/lang/wgsl/sem/function.h"
@@ -94,6 +93,7 @@
 #include "src/tint/lang/wgsl/sem/materialize.h"
 #include "src/tint/lang/wgsl/sem/member_accessor_expression.h"
 #include "src/tint/lang/wgsl/sem/module.h"
+#include "src/tint/lang/wgsl/sem/pipeline_stage_set.h"
 #include "src/tint/lang/wgsl/sem/statement.h"
 #include "src/tint/lang/wgsl/sem/struct.h"
 #include "src/tint/lang/wgsl/sem/switch_statement.h"
@@ -111,7 +111,6 @@
 #include "src/tint/utils/macros/scoped_assignment.h"
 #include "src/tint/utils/math/math.h"
 #include "src/tint/utils/text/string.h"
-#include "src/tint/utils/text/string_stream.h"
 #include "src/tint/utils/text/styled_text.h"
 #include "src/tint/utils/text/text_style.h"
 
diff --git a/src/tint/lang/wgsl/resolver/subgroup_matrix_test.cc b/src/tint/lang/wgsl/resolver/subgroup_matrix_test.cc
index 1e30b70..caa327e 100644
--- a/src/tint/lang/wgsl/resolver/subgroup_matrix_test.cc
+++ b/src/tint/lang/wgsl/resolver/subgroup_matrix_test.cc
@@ -27,6 +27,7 @@
 
 #include "src/tint/lang/wgsl/resolver/resolver.h"
 #include "src/tint/lang/wgsl/resolver/resolver_helper_test.h"
+#include "src/tint/lang/wgsl/sem/builtin_fn.h"
 #include "src/tint/lang/wgsl/sem/value_constructor.h"
 
 #include "gmock/gmock.h"
diff --git a/src/tint/lang/wgsl/resolver/uniformity.cc b/src/tint/lang/wgsl/resolver/uniformity.cc
index 199d881..202ba4c 100644
--- a/src/tint/lang/wgsl/resolver/uniformity.cc
+++ b/src/tint/lang/wgsl/resolver/uniformity.cc
@@ -27,12 +27,11 @@
 
 #include "src/tint/lang/wgsl/resolver/uniformity.h"
 
-#include <limits>
 #include <string>
 #include <utility>
-#include <vector>
 
 #include "src/tint/lang/core/enums.h"
+#include "src/tint/lang/core/type/reference.h"
 #include "src/tint/lang/wgsl/program/program_builder.h"
 #include "src/tint/lang/wgsl/resolver/dependency_graph.h"
 #include "src/tint/lang/wgsl/sem/block_statement.h"
@@ -49,7 +48,6 @@
 #include "src/tint/lang/wgsl/sem/value_conversion.h"
 #include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/lang/wgsl/sem/while_statement.h"
-#include "src/tint/utils/containers/map.h"
 #include "src/tint/utils/containers/scope_stack.h"
 #include "src/tint/utils/containers/unique_vector.h"
 #include "src/tint/utils/macros/defer.h"
diff --git a/src/tint/lang/wgsl/resolver/validator.cc b/src/tint/lang/wgsl/resolver/validator.cc
index b929bb2..a88fb2b2 100644
--- a/src/tint/lang/wgsl/resolver/validator.cc
+++ b/src/tint/lang/wgsl/resolver/validator.cc
@@ -29,7 +29,6 @@
 
 #include <algorithm>
 #include <bitset>
-#include <limits>
 #include <string_view>
 #include <tuple>
 #include <utility>
@@ -38,8 +37,6 @@
 #include "src/tint/lang/core/type/abstract_numeric.h"
 #include "src/tint/lang/core/type/atomic.h"
 #include "src/tint/lang/core/type/binding_array.h"
-#include "src/tint/lang/core/type/depth_multisampled_texture.h"
-#include "src/tint/lang/core/type/depth_texture.h"
 #include "src/tint/lang/core/type/i8.h"
 #include "src/tint/lang/core/type/input_attachment.h"
 #include "src/tint/lang/core/type/multisampled_texture.h"
@@ -54,29 +51,23 @@
 #include "src/tint/lang/wgsl/ast/alias.h"
 #include "src/tint/lang/wgsl/ast/assignment_statement.h"
 #include "src/tint/lang/wgsl/ast/blend_src_attribute.h"
-#include "src/tint/lang/wgsl/ast/break_statement.h"
 #include "src/tint/lang/wgsl/ast/call_statement.h"
-#include "src/tint/lang/wgsl/ast/continue_statement.h"
-#include "src/tint/lang/wgsl/ast/discard_statement.h"
 #include "src/tint/lang/wgsl/ast/for_loop_statement.h"
 #include "src/tint/lang/wgsl/ast/id_attribute.h"
-#include "src/tint/lang/wgsl/ast/if_statement.h"
 #include "src/tint/lang/wgsl/ast/interpolate_attribute.h"
-#include "src/tint/lang/wgsl/ast/loop_statement.h"
 #include "src/tint/lang/wgsl/ast/return_statement.h"
 #include "src/tint/lang/wgsl/ast/switch_statement.h"
 #include "src/tint/lang/wgsl/ast/traverse_expressions.h"
-#include "src/tint/lang/wgsl/ast/unary_op_expression.h"
 #include "src/tint/lang/wgsl/ast/variable_decl_statement.h"
 #include "src/tint/lang/wgsl/ast/workgroup_attribute.h"
 #include "src/tint/lang/wgsl/sem/array.h"
 #include "src/tint/lang/wgsl/sem/break_if_statement.h"
+#include "src/tint/lang/wgsl/sem/builtin_fn.h"
 #include "src/tint/lang/wgsl/sem/call.h"
 #include "src/tint/lang/wgsl/sem/for_loop_statement.h"
 #include "src/tint/lang/wgsl/sem/function.h"
 #include "src/tint/lang/wgsl/sem/if_statement.h"
 #include "src/tint/lang/wgsl/sem/loop_statement.h"
-#include "src/tint/lang/wgsl/sem/materialize.h"
 #include "src/tint/lang/wgsl/sem/member_accessor_expression.h"
 #include "src/tint/lang/wgsl/sem/statement.h"
 #include "src/tint/lang/wgsl/sem/struct.h"
@@ -85,15 +76,9 @@
 #include "src/tint/lang/wgsl/sem/value_conversion.h"
 #include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/lang/wgsl/sem/while_statement.h"
-#include "src/tint/utils/containers/map.h"
-#include "src/tint/utils/containers/reverse.h"
-#include "src/tint/utils/containers/transform.h"
 #include "src/tint/utils/internal_limits.h"
-#include "src/tint/utils/macros/defer.h"
-#include "src/tint/utils/macros/scoped_assignment.h"
 #include "src/tint/utils/math/math.h"
 #include "src/tint/utils/text/string.h"
-#include "src/tint/utils/text/string_stream.h"
 #include "src/tint/utils/text/styled_text.h"
 #include "src/tint/utils/text/text_style.h"
 
diff --git a/src/tint/lang/wgsl/sem/accessor_expression.cc b/src/tint/lang/wgsl/sem/accessor_expression.cc
index 0947837..e22ec48 100644
--- a/src/tint/lang/wgsl/sem/accessor_expression.cc
+++ b/src/tint/lang/wgsl/sem/accessor_expression.cc
@@ -27,10 +27,6 @@
 
 #include "src/tint/lang/wgsl/sem/accessor_expression.h"
 
-#include <utility>
-
-#include "src/tint/lang/wgsl/ast/index_accessor_expression.h"
-
 TINT_INSTANTIATE_TYPEINFO(tint::sem::AccessorExpression);
 
 namespace tint::sem {
diff --git a/src/tint/lang/wgsl/sem/accessor_expression.h b/src/tint/lang/wgsl/sem/accessor_expression.h
index 128451f..58e1436 100644
--- a/src/tint/lang/wgsl/sem/accessor_expression.h
+++ b/src/tint/lang/wgsl/sem/accessor_expression.h
@@ -28,9 +28,7 @@
 #ifndef SRC_TINT_LANG_WGSL_SEM_ACCESSOR_EXPRESSION_H_
 #define SRC_TINT_LANG_WGSL_SEM_ACCESSOR_EXPRESSION_H_
 
-#include <vector>
-
-#include "src/tint/lang/wgsl/ast/index_accessor_expression.h"
+#include "src/tint/lang/wgsl/ast/accessor_expression.h"
 #include "src/tint/lang/wgsl/sem/value_expression.h"
 
 namespace tint::sem {
@@ -42,11 +40,6 @@
     /// Destructor
     ~AccessorExpression() override;
 
-    /// @returns the AST node
-    const ast::AccessorExpression* Declaration() const {
-        return static_cast<const ast::AccessorExpression*>(declaration_);
-    }
-
     /// @returns the object expression that is being indexed
     ValueExpression const* Object() const { return object_; }
 
diff --git a/src/tint/lang/wgsl/sem/behavior.h b/src/tint/lang/wgsl/sem/behavior.h
index 987c851..854e867 100644
--- a/src/tint/lang/wgsl/sem/behavior.h
+++ b/src/tint/lang/wgsl/sem/behavior.h
@@ -29,7 +29,6 @@
 #define SRC_TINT_LANG_WGSL_SEM_BEHAVIOR_H_
 
 #include "src/tint/utils/containers/enum_set.h"
-#include "src/tint/utils/rtti/traits.h"
 
 namespace tint::sem {
 
diff --git a/src/tint/lang/wgsl/sem/block_statement.h b/src/tint/lang/wgsl/sem/block_statement.h
index 714810e..e0dc851 100644
--- a/src/tint/lang/wgsl/sem/block_statement.h
+++ b/src/tint/lang/wgsl/sem/block_statement.h
@@ -29,7 +29,6 @@
 #define SRC_TINT_LANG_WGSL_SEM_BLOCK_STATEMENT_H_
 
 #include <cstddef>
-#include <vector>
 
 #include "src/tint/lang/wgsl/sem/statement.h"
 
diff --git a/src/tint/lang/wgsl/sem/builtin_fn.cc b/src/tint/lang/wgsl/sem/builtin_fn.cc
index e56e540..c972efa 100644
--- a/src/tint/lang/wgsl/sem/builtin_fn.cc
+++ b/src/tint/lang/wgsl/sem/builtin_fn.cc
@@ -31,11 +31,9 @@
 #include "src/tint/lang/wgsl/sem/builtin_fn.h"
 
 #include <utility>
-#include <vector>
 
 #include "src/tint/lang/core/intrinsic/table.h"
 #include "src/tint/lang/core/type/texel_buffer.h"
-#include "src/tint/utils/containers/transform.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::sem::BuiltinFn);
 
@@ -65,34 +63,10 @@
     return overload_.flags.Contains(core::intrinsic::OverloadFlag::kIsDeprecated);
 }
 
-bool BuiltinFn::IsCoarseDerivative() const {
-    return wgsl::IsCoarseDerivative(fn_);
-}
-
-bool BuiltinFn::IsFineDerivative() const {
-    return wgsl::IsFineDerivative(fn_);
-}
-
 bool BuiltinFn::IsDerivative() const {
     return wgsl::IsDerivative(fn_);
 }
 
-bool BuiltinFn::IsTexture() const {
-    return wgsl::IsTexture(fn_);
-}
-
-bool BuiltinFn::IsImageQuery() const {
-    return wgsl::IsImageQuery(fn_);
-}
-
-bool BuiltinFn::IsDataPacking() const {
-    return wgsl::IsDataPacking(fn_);
-}
-
-bool BuiltinFn::IsDataUnpacking() const {
-    return wgsl::IsDataUnpacking(fn_);
-}
-
 bool BuiltinFn::IsBarrier() const {
     return wgsl::IsBarrier(fn_);
 }
@@ -113,10 +87,6 @@
     return wgsl::IsSubgroupMatrix(fn_);
 }
 
-bool BuiltinFn::IsQuadSwap() const {
-    return wgsl::IsQuadSwap(fn_);
-}
-
 bool BuiltinFn::IsTexelBuffer() const {
     for (auto* param : Parameters()) {
         if (param->Type()->UnwrapRef()->Is<core::type::TexelBuffer>()) {
diff --git a/src/tint/lang/wgsl/sem/builtin_fn.h b/src/tint/lang/wgsl/sem/builtin_fn.h
index d41ea53..83175a9 100644
--- a/src/tint/lang/wgsl/sem/builtin_fn.h
+++ b/src/tint/lang/wgsl/sem/builtin_fn.h
@@ -76,27 +76,9 @@
     /// case, matches the name in the WGSL spec.
     const char* str() const;
 
-    /// @returns true if builtin is a coarse derivative builtin
-    bool IsCoarseDerivative() const;
-
-    /// @returns true if builtin is a fine a derivative builtin
-    bool IsFineDerivative() const;
-
     /// @returns true if builtin is a derivative builtin
     bool IsDerivative() const;
 
-    /// @returns true if builtin is a texture operation builtin
-    bool IsTexture() const;
-
-    /// @returns true if builtin is a image query builtin
-    bool IsImageQuery() const;
-
-    /// @returns true if builtin is a data packing builtin
-    bool IsDataPacking() const;
-
-    /// @returns true if builtin is a data unpacking builtin
-    bool IsDataUnpacking() const;
-
     /// @returns true if builtin is a barrier builtin
     bool IsBarrier() const;
 
@@ -114,9 +96,6 @@
     /// `subgroup_matrix`).
     bool IsSubgroupMatrix() const;
 
-    /// @returns true if builtin is a quadSwap builtin
-    bool IsQuadSwap() const;
-
     /// @returns true if builtin is a texel buffer builtin
     bool IsTexelBuffer() const;
 
@@ -138,12 +117,6 @@
     const core::intrinsic::OverloadInfo& overload_;
 };
 
-/// Constant value used by the degrees() builtin
-static constexpr double kRadToDeg = 57.295779513082322865;
-
-/// Constant value used by the radians() builtin
-static constexpr double kDegToRad = 0.017453292519943295474;
-
 }  // namespace tint::sem
 
 #endif  // SRC_TINT_LANG_WGSL_SEM_BUILTIN_FN_H_
diff --git a/src/tint/lang/wgsl/sem/call.cc b/src/tint/lang/wgsl/sem/call.cc
index 91e70a8..829b0c7 100644
--- a/src/tint/lang/wgsl/sem/call.cc
+++ b/src/tint/lang/wgsl/sem/call.cc
@@ -28,7 +28,6 @@
 #include "src/tint/lang/wgsl/sem/call.h"
 
 #include <utility>
-#include <vector>
 
 TINT_INSTANTIATE_TYPEINFO(tint::sem::Call);
 
diff --git a/src/tint/lang/wgsl/sem/call.h b/src/tint/lang/wgsl/sem/call.h
index a08c95b..d6972a9 100644
--- a/src/tint/lang/wgsl/sem/call.h
+++ b/src/tint/lang/wgsl/sem/call.h
@@ -28,10 +28,8 @@
 #ifndef SRC_TINT_LANG_WGSL_SEM_CALL_H_
 #define SRC_TINT_LANG_WGSL_SEM_CALL_H_
 
-#include <vector>
-
 #include "src/tint/lang/wgsl/ast/call_expression.h"
-#include "src/tint/lang/wgsl/sem/builtin_fn.h"
+#include "src/tint/lang/wgsl/sem/call_target.h"
 #include "src/tint/lang/wgsl/sem/value_expression.h"
 #include "src/tint/utils/containers/vector.h"
 
diff --git a/src/tint/lang/wgsl/sem/call_target.cc b/src/tint/lang/wgsl/sem/call_target.cc
index 1298301..fe416db 100644
--- a/src/tint/lang/wgsl/sem/call_target.cc
+++ b/src/tint/lang/wgsl/sem/call_target.cc
@@ -30,7 +30,6 @@
 #include <utility>
 
 #include "src/tint/utils/math/hash.h"
-#include "src/tint/utils/symbol/symbol_table.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::sem::CallTarget);
 
diff --git a/src/tint/lang/wgsl/sem/call_target.h b/src/tint/lang/wgsl/sem/call_target.h
index f64d153..d7f10ec 100644
--- a/src/tint/lang/wgsl/sem/call_target.h
+++ b/src/tint/lang/wgsl/sem/call_target.h
@@ -28,9 +28,6 @@
 #ifndef SRC_TINT_LANG_WGSL_SEM_CALL_TARGET_H_
 #define SRC_TINT_LANG_WGSL_SEM_CALL_TARGET_H_
 
-#include <vector>
-
-#include "src/tint/lang/core/type/sampler.h"
 #include "src/tint/lang/wgsl/sem/node.h"
 #include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/utils/containers/vector.h"
diff --git a/src/tint/lang/wgsl/sem/function_expression.cc b/src/tint/lang/wgsl/sem/function_expression.cc
index d033140..f2a528c 100644
--- a/src/tint/lang/wgsl/sem/function_expression.cc
+++ b/src/tint/lang/wgsl/sem/function_expression.cc
@@ -39,8 +39,4 @@
 
 FunctionExpression::~FunctionExpression() = default;
 
-const ast::IdentifierExpression* FunctionExpression::Declaration() const {
-    return static_cast<const ast::IdentifierExpression*>(Base::Declaration());
-}
-
 }  // namespace tint::sem
diff --git a/src/tint/lang/wgsl/sem/function_expression.h b/src/tint/lang/wgsl/sem/function_expression.h
index 8e2c4de..dd56290 100644
--- a/src/tint/lang/wgsl/sem/function_expression.h
+++ b/src/tint/lang/wgsl/sem/function_expression.h
@@ -55,9 +55,6 @@
     /// Destructor
     ~FunctionExpression() override;
 
-    /// @returns the AST node
-    const ast::IdentifierExpression* Declaration() const;
-
     /// @return the function that the expression resolved to
     const sem::Function* Function() const { return function_; }
 
diff --git a/src/tint/lang/wgsl/sem/if_statement.cc b/src/tint/lang/wgsl/sem/if_statement.cc
index 2c4051b..3262445 100644
--- a/src/tint/lang/wgsl/sem/if_statement.cc
+++ b/src/tint/lang/wgsl/sem/if_statement.cc
@@ -40,8 +40,4 @@
 
 IfStatement::~IfStatement() = default;
 
-const ast::IfStatement* IfStatement::Declaration() const {
-    return static_cast<const ast::IfStatement*>(Base::Declaration());
-}
-
 }  // namespace tint::sem
diff --git a/src/tint/lang/wgsl/sem/if_statement.h b/src/tint/lang/wgsl/sem/if_statement.h
index 242883e..0a19b4b 100644
--- a/src/tint/lang/wgsl/sem/if_statement.h
+++ b/src/tint/lang/wgsl/sem/if_statement.h
@@ -54,9 +54,6 @@
     /// Destructor
     ~IfStatement() override;
 
-    /// @returns the AST node
-    const ast::IfStatement* Declaration() const;
-
     /// @returns the if-statement condition expression
     const ValueExpression* Condition() const { return condition_; }
 
diff --git a/src/tint/lang/wgsl/sem/index_accessor_expression.cc b/src/tint/lang/wgsl/sem/index_accessor_expression.cc
index 09ef244..445ad48 100644
--- a/src/tint/lang/wgsl/sem/index_accessor_expression.cc
+++ b/src/tint/lang/wgsl/sem/index_accessor_expression.cc
@@ -29,8 +29,6 @@
 
 #include "src/tint/lang/wgsl/ast/index_accessor_expression.h"
 
-#include <utility>
-
 TINT_INSTANTIATE_TYPEINFO(tint::sem::IndexAccessorExpression);
 
 namespace tint::sem {
diff --git a/src/tint/lang/wgsl/sem/index_accessor_expression.h b/src/tint/lang/wgsl/sem/index_accessor_expression.h
index 686748e..a194e9f 100644
--- a/src/tint/lang/wgsl/sem/index_accessor_expression.h
+++ b/src/tint/lang/wgsl/sem/index_accessor_expression.h
@@ -28,8 +28,6 @@
 #ifndef SRC_TINT_LANG_WGSL_SEM_INDEX_ACCESSOR_EXPRESSION_H_
 #define SRC_TINT_LANG_WGSL_SEM_INDEX_ACCESSOR_EXPRESSION_H_
 
-#include <vector>
-
 #include "src/tint/lang/wgsl/ast/index_accessor_expression.h"
 #include "src/tint/lang/wgsl/sem/accessor_expression.h"
 
@@ -59,11 +57,6 @@
     /// Destructor
     ~IndexAccessorExpression() override;
 
-    /// @returns the AST node
-    const ast::IndexAccessorExpression* Declaration() const {
-        return static_cast<const ast::IndexAccessorExpression*>(declaration_);
-    }
-
     /// @returns the index expression
     ValueExpression const* Index() const { return index_; }
 
diff --git a/src/tint/lang/wgsl/sem/info.h b/src/tint/lang/wgsl/sem/info.h
index d028695..527b2c7 100644
--- a/src/tint/lang/wgsl/sem/info.h
+++ b/src/tint/lang/wgsl/sem/info.h
@@ -30,14 +30,11 @@
 
 #include <algorithm>
 #include <type_traits>
-#include <unordered_map>
-#include <vector>
 
-#include "src/tint/lang/wgsl/ast/diagnostic_control.h"
 #include "src/tint/lang/wgsl/ast/node.h"
+#include "src/tint/lang/wgsl/enums.h"
 #include "src/tint/lang/wgsl/sem/node.h"
 #include "src/tint/lang/wgsl/sem/type_mappings.h"
-#include "src/tint/utils/containers/unique_vector.h"
 #include "src/tint/utils/ice/ice.h"
 
 // Forward declarations
diff --git a/src/tint/lang/wgsl/sem/load.cc b/src/tint/lang/wgsl/sem/load.cc
index 42890f4..7ea267d 100644
--- a/src/tint/lang/wgsl/sem/load.cc
+++ b/src/tint/lang/wgsl/sem/load.cc
@@ -27,7 +27,7 @@
 
 #include "src/tint/lang/wgsl/sem/load.h"
 
-#include "src/tint/lang/core/type/reference.h"
+#include "src/tint/lang/core/type/memory_view.h"
 #include "src/tint/utils/ice/ice.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::sem::Load);
diff --git a/src/tint/lang/wgsl/sem/load.h b/src/tint/lang/wgsl/sem/load.h
index f8a41e2..a635df6 100644
--- a/src/tint/lang/wgsl/sem/load.h
+++ b/src/tint/lang/wgsl/sem/load.h
@@ -28,7 +28,6 @@
 #ifndef SRC_TINT_LANG_WGSL_SEM_LOAD_H_
 #define SRC_TINT_LANG_WGSL_SEM_LOAD_H_
 
-#include "src/tint/lang/core/type/reference.h"
 #include "src/tint/lang/wgsl/sem/value_expression.h"
 
 namespace tint::sem {
@@ -50,11 +49,6 @@
     /// @return the source object being loaded
     const ValueExpression* Source() const { return source_; }
 
-    /// @returns the type of the memory view being loaded from.
-    const core::type::MemoryView* MemoryView() const {
-        return static_cast<const core::type::MemoryView*>(source_->Type());
-    }
-
   private:
     ValueExpression const* const source_;
 };
diff --git a/src/tint/lang/wgsl/sem/member_accessor_expression.cc b/src/tint/lang/wgsl/sem/member_accessor_expression.cc
index 5a98a8b..b019b92 100644
--- a/src/tint/lang/wgsl/sem/member_accessor_expression.cc
+++ b/src/tint/lang/wgsl/sem/member_accessor_expression.cc
@@ -30,27 +30,11 @@
 
 #include <utility>
 
-TINT_INSTANTIATE_TYPEINFO(tint::sem::MemberAccessorExpression);
 TINT_INSTANTIATE_TYPEINFO(tint::sem::StructMemberAccess);
 TINT_INSTANTIATE_TYPEINFO(tint::sem::Swizzle);
 
 namespace tint::sem {
 
-MemberAccessorExpression::MemberAccessorExpression(const ast::MemberAccessorExpression* declaration,
-                                                   const core::type::Type* type,
-                                                   core::EvaluationStage stage,
-                                                   const Statement* statement,
-                                                   const core::constant::Value* constant,
-                                                   const ValueExpression* object,
-                                                   const Variable* root_ident /* = nullptr */)
-    : Base(declaration, type, stage, object, statement, constant, root_ident) {}
-
-MemberAccessorExpression::~MemberAccessorExpression() = default;
-
-const ast::MemberAccessorExpression* MemberAccessorExpression::Declaration() const {
-    return static_cast<const ast::MemberAccessorExpression*>(declaration_);
-}
-
 StructMemberAccess::StructMemberAccess(const ast::MemberAccessorExpression* declaration,
                                        const core::type::Type* type,
                                        const Statement* statement,
@@ -58,7 +42,7 @@
                                        const ValueExpression* object,
                                        const core::type::StructMember* member,
                                        const Variable* root_ident /* = nullptr */)
-    : Base(declaration, type, object->Stage(), statement, constant, object, root_ident),
+    : Base(declaration, type, object->Stage(), object, statement, constant, root_ident),
       member_(member) {}
 
 StructMemberAccess::~StructMemberAccess() = default;
@@ -70,7 +54,7 @@
                  const ValueExpression* object,
                  VectorRef<uint32_t> indices,
                  const Variable* root_ident /* = nullptr */)
-    : Base(declaration, type, object->Stage(), statement, constant, object, root_ident),
+    : Base(declaration, type, object->Stage(), object, statement, constant, root_ident),
       indices_(std::move(indices)) {}
 
 Swizzle::~Swizzle() = default;
diff --git a/src/tint/lang/wgsl/sem/member_accessor_expression.h b/src/tint/lang/wgsl/sem/member_accessor_expression.h
index d487c60..bb6c423 100644
--- a/src/tint/lang/wgsl/sem/member_accessor_expression.h
+++ b/src/tint/lang/wgsl/sem/member_accessor_expression.h
@@ -41,38 +41,10 @@
 
 namespace tint::sem {
 
-/// MemberAccessorExpression is the base class for all semantic information for a
-/// ast::MemberAccessorExpression node.
-class MemberAccessorExpression : public Castable<MemberAccessorExpression, AccessorExpression> {
-  public:
-    /// Destructor
-    ~MemberAccessorExpression() override;
-
-    /// @returns the AST node
-    const ast::MemberAccessorExpression* Declaration() const;
-
-  protected:
-    /// Constructor
-    /// @param declaration the AST node
-    /// @param type the resolved type of the expression
-    /// @param stage the earliest evaluation stage for the expression
-    /// @param statement the statement that owns this expression
-    /// @param constant the constant value of the expression. May be null.
-    /// @param object the object that holds the member being accessed
-    /// @param root_ident the (optional) root identifier for this expression
-    MemberAccessorExpression(const ast::MemberAccessorExpression* declaration,
-                             const core::type::Type* type,
-                             core::EvaluationStage stage,
-                             const Statement* statement,
-                             const core::constant::Value* constant,
-                             const ValueExpression* object,
-                             const Variable* root_ident = nullptr);
-};
-
 /// StructMemberAccess holds the semantic information for a
 /// ast::MemberAccessorExpression node that represents an access to a structure
 /// member.
-class StructMemberAccess final : public Castable<StructMemberAccess, MemberAccessorExpression> {
+class StructMemberAccess final : public Castable<StructMemberAccess, AccessorExpression> {
   public:
     /// Constructor
     /// @param declaration the AST node
@@ -102,7 +74,7 @@
 
 /// Swizzle holds the semantic information for a ast::MemberAccessorExpression
 /// node that represents a vector swizzle.
-class Swizzle final : public Castable<Swizzle, MemberAccessorExpression> {
+class Swizzle final : public Castable<Swizzle, AccessorExpression> {
   public:
     /// Constructor
     /// @param declaration the AST node
diff --git a/src/tint/lang/wgsl/sem/module.cc b/src/tint/lang/wgsl/sem/module.cc
index 178d662..d38de39 100644
--- a/src/tint/lang/wgsl/sem/module.cc
+++ b/src/tint/lang/wgsl/sem/module.cc
@@ -28,7 +28,6 @@
 #include "src/tint/lang/wgsl/sem/module.h"
 
 #include <utility>
-#include <vector>
 
 TINT_INSTANTIATE_TYPEINFO(tint::sem::Module);
 
diff --git a/src/tint/lang/wgsl/sem/module.h b/src/tint/lang/wgsl/sem/module.h
index c32236a..db6ff32 100644
--- a/src/tint/lang/wgsl/sem/module.h
+++ b/src/tint/lang/wgsl/sem/module.h
@@ -28,7 +28,6 @@
 #ifndef SRC_TINT_LANG_WGSL_SEM_MODULE_H_
 #define SRC_TINT_LANG_WGSL_SEM_MODULE_H_
 
-#include "src/tint/lang/wgsl/ast/diagnostic_control.h"
 #include "src/tint/lang/wgsl/enums.h"
 #include "src/tint/lang/wgsl/sem/node.h"
 #include "src/tint/utils/containers/vector.h"
diff --git a/src/tint/lang/wgsl/sem/sampler_texture_pair.h b/src/tint/lang/wgsl/sem/sampler_texture_pair.h
index 5ab5433..beee4f0 100644
--- a/src/tint/lang/wgsl/sem/sampler_texture_pair.h
+++ b/src/tint/lang/wgsl/sem/sampler_texture_pair.h
@@ -28,12 +28,10 @@
 #ifndef SRC_TINT_LANG_WGSL_SEM_SAMPLER_TEXTURE_PAIR_H_
 #define SRC_TINT_LANG_WGSL_SEM_SAMPLER_TEXTURE_PAIR_H_
 
-#include <cstdint>
 #include <functional>
 
 #include "src/tint/api/common/binding_point.h"
 #include "src/tint/utils/reflection.h"
-#include "src/tint/utils/text/string_stream.h"
 
 namespace tint::sem {
 
diff --git a/src/tint/lang/wgsl/sem/statement.cc b/src/tint/lang/wgsl/sem/statement.cc
index 0e1a8c7..012f13d 100644
--- a/src/tint/lang/wgsl/sem/statement.cc
+++ b/src/tint/lang/wgsl/sem/statement.cc
@@ -25,12 +25,8 @@
 // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-#include <algorithm>
-
-#include "src/tint/lang/wgsl/ast/block_statement.h"
-#include "src/tint/lang/wgsl/ast/identifier.h"
-#include "src/tint/lang/wgsl/ast/loop_statement.h"
 #include "src/tint/lang/wgsl/ast/statement.h"
+#include "src/tint/lang/wgsl/ast/identifier.h"
 #include "src/tint/lang/wgsl/ast/variable.h"
 #include "src/tint/lang/wgsl/sem/block_statement.h"
 #include "src/tint/lang/wgsl/sem/statement.h"
diff --git a/src/tint/lang/wgsl/sem/statement.h b/src/tint/lang/wgsl/sem/statement.h
index 2e023fc..655da21 100644
--- a/src/tint/lang/wgsl/sem/statement.h
+++ b/src/tint/lang/wgsl/sem/statement.h
@@ -28,7 +28,7 @@
 #ifndef SRC_TINT_LANG_WGSL_SEM_STATEMENT_H_
 #define SRC_TINT_LANG_WGSL_SEM_STATEMENT_H_
 
-#include "src/tint/lang/wgsl/ast/diagnostic_control.h"
+#include "src/tint/lang/wgsl/enums.h"
 #include "src/tint/lang/wgsl/sem/behavior.h"
 #include "src/tint/lang/wgsl/sem/node.h"
 #include "src/tint/utils/containers/hashmap.h"
diff --git a/src/tint/lang/wgsl/sem/struct.h b/src/tint/lang/wgsl/sem/struct.h
index bd19d1a..a3d5775 100644
--- a/src/tint/lang/wgsl/sem/struct.h
+++ b/src/tint/lang/wgsl/sem/struct.h
@@ -28,9 +28,6 @@
 #ifndef SRC_TINT_LANG_WGSL_SEM_STRUCT_H_
 #define SRC_TINT_LANG_WGSL_SEM_STRUCT_H_
 
-#include <optional>
-
-#include "src/tint/lang/core/enums.h"
 #include "src/tint/lang/core/type/struct.h"
 #include "src/tint/lang/core/type/type.h"
 #include "src/tint/lang/wgsl/ast/struct.h"
diff --git a/src/tint/lang/wgsl/sem/switch_statement.cc b/src/tint/lang/wgsl/sem/switch_statement.cc
index 0ae34e8..2f625b6 100644
--- a/src/tint/lang/wgsl/sem/switch_statement.cc
+++ b/src/tint/lang/wgsl/sem/switch_statement.cc
@@ -46,10 +46,6 @@
 
 SwitchStatement::~SwitchStatement() = default;
 
-const ast::SwitchStatement* SwitchStatement::Declaration() const {
-    return static_cast<const ast::SwitchStatement*>(Base::Declaration());
-}
-
 CaseStatement::CaseStatement(const ast::CaseStatement* declaration,
                              const CompoundStatement* parent,
                              const sem::Function* function)
diff --git a/src/tint/lang/wgsl/sem/switch_statement.h b/src/tint/lang/wgsl/sem/switch_statement.h
index f435330..6cbf1cd 100644
--- a/src/tint/lang/wgsl/sem/switch_statement.h
+++ b/src/tint/lang/wgsl/sem/switch_statement.h
@@ -63,9 +63,6 @@
     /// Destructor
     ~SwitchStatement() override;
 
-    /// @return the AST node for this statement
-    const ast::SwitchStatement* Declaration() const;
-
     /// @returns the case statements for this switch
     std::vector<const CaseStatement*>& Cases() { return cases_; }
 
diff --git a/src/tint/lang/wgsl/sem/type_mappings.h b/src/tint/lang/wgsl/sem/type_mappings.h
index ff9d579..ab1c7ce 100644
--- a/src/tint/lang/wgsl/sem/type_mappings.h
+++ b/src/tint/lang/wgsl/sem/type_mappings.h
@@ -37,9 +37,7 @@
 namespace tint::ast {
 class AccessorExpression;
 class BinaryExpression;
-class BitcastExpression;
 class BlockStatement;
-class BuiltinAttribute;
 class CallExpression;
 class Expression;
 class ForLoopStatement;
@@ -59,9 +57,6 @@
 class Variable;
 class WhileStatement;
 }  // namespace tint::ast
-namespace tint::core {
-enum class BuiltinValue : uint8_t;
-}
 namespace tint::sem {
 class BlockStatement;
 class Expression;
@@ -79,7 +74,6 @@
 class WhileStatement;
 }  // namespace tint::sem
 namespace tint::core::type {
-class Array;
 class Type;
 }  // namespace tint::core::type
 
diff --git a/src/tint/lang/wgsl/sem/value_conversion.h b/src/tint/lang/wgsl/sem/value_conversion.h
index 20165eb..0fcefb1 100644
--- a/src/tint/lang/wgsl/sem/value_conversion.h
+++ b/src/tint/lang/wgsl/sem/value_conversion.h
@@ -45,12 +45,6 @@
 
     /// Destructor
     ~ValueConversion() override;
-
-    /// @returns the cast source type
-    const core::type::Type* Source() const { return Parameters()[0]->Type(); }
-
-    /// @returns the cast target type
-    const core::type::Type* Target() const { return ReturnType(); }
 };
 
 }  // namespace tint::sem
diff --git a/src/tint/lang/wgsl/sem/variable.h b/src/tint/lang/wgsl/sem/variable.h
index 0c7199e..9c51c56 100644
--- a/src/tint/lang/wgsl/sem/variable.h
+++ b/src/tint/lang/wgsl/sem/variable.h
@@ -29,8 +29,6 @@
 #define SRC_TINT_LANG_WGSL_SEM_VARIABLE_H_
 
 #include <optional>
-#include <utility>
-#include <vector>
 
 #include "src/tint/api/common/override_id.h"