[shuffle] Move type to new structure.

This CL moves the type folder into the `lang/base/type` folder
and updates the includes. The namespaces and build groups are not updated
in this CL, just the code move.

Bug: tint:1988
Change-Id: Ia8f1d8b0599b67175727fcfed61437b2ab2a4b45
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/142164
Reviewed-by: Ben Clayton <bclayton@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
diff --git a/include/tint/tint.h b/include/tint/tint.h
index 8709664..ae157f3 100644
--- a/include/tint/tint.h
+++ b/include/tint/tint.h
@@ -24,6 +24,7 @@
 #include "src/tint/core/diagnostic/printer.h"
 #include "src/tint/core/unicode.h"
 #include "src/tint/inspector/inspector.h"
+#include "src/tint/lang/base/type/manager.h"
 #include "src/tint/lang/wgsl/ast/transform/first_index_offset.h"
 #include "src/tint/lang/wgsl/ast/transform/renamer.h"
 #include "src/tint/lang/wgsl/ast/transform/single_entry_point.h"
@@ -31,7 +32,6 @@
 #include "src/tint/lang/wgsl/ast/transform/vertex_pulling.h"
 #include "src/tint/reader/reader.h"
 #include "src/tint/transform/manager.h"
-#include "src/tint/type/manager.h"
 #include "src/tint/writer/array_length_from_uniform_options.h"
 #include "src/tint/writer/binding_point.h"
 #include "src/tint/writer/binding_remapper_options.h"
diff --git a/src/tint/BUILD.gn b/src/tint/BUILD.gn
index 67aa0d6..b9d54d7 100644
--- a/src/tint/BUILD.gn
+++ b/src/tint/BUILD.gn
@@ -848,75 +848,75 @@
 
 libtint_source_set("libtint_type_src") {
   sources = [
-    "type/abstract_float.cc",
-    "type/abstract_float.h",
-    "type/abstract_int.cc",
-    "type/abstract_int.h",
-    "type/abstract_numeric.cc",
-    "type/abstract_numeric.h",
-    "type/array.cc",
-    "type/array.h",
-    "type/array_count.cc",
-    "type/array_count.h",
-    "type/atomic.cc",
-    "type/atomic.h",
-    "type/bool.cc",
-    "type/bool.h",
-    "type/builtin_structs.cc",
-    "type/builtin_structs.h",
-    "type/clone_context.h",
-    "type/depth_multisampled_texture.cc",
-    "type/depth_multisampled_texture.h",
-    "type/depth_texture.cc",
-    "type/depth_texture.h",
-    "type/external_texture.cc",
-    "type/external_texture.h",
-    "type/f16.cc",
-    "type/f16.h",
-    "type/f32.cc",
-    "type/f32.h",
-    "type/i32.cc",
-    "type/i32.h",
-    "type/manager.cc",
-    "type/manager.h",
-    "type/matrix.cc",
-    "type/matrix.h",
-    "type/multisampled_texture.cc",
-    "type/multisampled_texture.h",
-    "type/node.cc",
-    "type/node.h",
-    "type/numeric_scalar.cc",
-    "type/numeric_scalar.h",
-    "type/pointer.cc",
-    "type/pointer.h",
-    "type/reference.cc",
-    "type/reference.h",
-    "type/sampled_texture.cc",
-    "type/sampled_texture.h",
-    "type/sampler.cc",
-    "type/sampler.h",
-    "type/sampler_kind.cc",
-    "type/sampler_kind.h",
-    "type/scalar.cc",
-    "type/scalar.h",
-    "type/storage_texture.cc",
-    "type/storage_texture.h",
-    "type/struct.cc",
-    "type/struct.h",
-    "type/texture.cc",
-    "type/texture.h",
-    "type/texture_dimension.cc",
-    "type/texture_dimension.h",
-    "type/type.cc",
-    "type/type.h",
-    "type/u32.cc",
-    "type/u32.h",
-    "type/unique_node.cc",
-    "type/unique_node.h",
-    "type/vector.cc",
-    "type/vector.h",
-    "type/void.cc",
-    "type/void.h",
+    "lang/base/type/abstract_float.cc",
+    "lang/base/type/abstract_float.h",
+    "lang/base/type/abstract_int.cc",
+    "lang/base/type/abstract_int.h",
+    "lang/base/type/abstract_numeric.cc",
+    "lang/base/type/abstract_numeric.h",
+    "lang/base/type/array.cc",
+    "lang/base/type/array.h",
+    "lang/base/type/array_count.cc",
+    "lang/base/type/array_count.h",
+    "lang/base/type/atomic.cc",
+    "lang/base/type/atomic.h",
+    "lang/base/type/bool.cc",
+    "lang/base/type/bool.h",
+    "lang/base/type/builtin_structs.cc",
+    "lang/base/type/builtin_structs.h",
+    "lang/base/type/clone_context.h",
+    "lang/base/type/depth_multisampled_texture.cc",
+    "lang/base/type/depth_multisampled_texture.h",
+    "lang/base/type/depth_texture.cc",
+    "lang/base/type/depth_texture.h",
+    "lang/base/type/external_texture.cc",
+    "lang/base/type/external_texture.h",
+    "lang/base/type/f16.cc",
+    "lang/base/type/f16.h",
+    "lang/base/type/f32.cc",
+    "lang/base/type/f32.h",
+    "lang/base/type/i32.cc",
+    "lang/base/type/i32.h",
+    "lang/base/type/manager.cc",
+    "lang/base/type/manager.h",
+    "lang/base/type/matrix.cc",
+    "lang/base/type/matrix.h",
+    "lang/base/type/multisampled_texture.cc",
+    "lang/base/type/multisampled_texture.h",
+    "lang/base/type/node.cc",
+    "lang/base/type/node.h",
+    "lang/base/type/numeric_scalar.cc",
+    "lang/base/type/numeric_scalar.h",
+    "lang/base/type/pointer.cc",
+    "lang/base/type/pointer.h",
+    "lang/base/type/reference.cc",
+    "lang/base/type/reference.h",
+    "lang/base/type/sampled_texture.cc",
+    "lang/base/type/sampled_texture.h",
+    "lang/base/type/sampler.cc",
+    "lang/base/type/sampler.h",
+    "lang/base/type/sampler_kind.cc",
+    "lang/base/type/sampler_kind.h",
+    "lang/base/type/scalar.cc",
+    "lang/base/type/scalar.h",
+    "lang/base/type/storage_texture.cc",
+    "lang/base/type/storage_texture.h",
+    "lang/base/type/struct.cc",
+    "lang/base/type/struct.h",
+    "lang/base/type/texture.cc",
+    "lang/base/type/texture.h",
+    "lang/base/type/texture_dimension.cc",
+    "lang/base/type/texture_dimension.h",
+    "lang/base/type/type.cc",
+    "lang/base/type/type.h",
+    "lang/base/type/u32.cc",
+    "lang/base/type/u32.h",
+    "lang/base/type/unique_node.cc",
+    "lang/base/type/unique_node.h",
+    "lang/base/type/vector.cc",
+    "lang/base/type/vector.h",
+    "lang/base/type/void.cc",
+    "lang/base/type/void.h",
   ]
 
   deps = [
@@ -1796,28 +1796,28 @@
 
   tint_unittests_source_set("tint_unittests_type_src") {
     sources = [
-      "type/atomic_test.cc",
-      "type/bool_test.cc",
-      "type/builtin_structs_test.cc",
-      "type/depth_multisampled_texture_test.cc",
-      "type/depth_texture_test.cc",
-      "type/external_texture_test.cc",
-      "type/f16_test.cc",
-      "type/f32_test.cc",
-      "type/i32_test.cc",
-      "type/manager_test.cc",
-      "type/matrix_test.cc",
-      "type/multisampled_texture_test.cc",
-      "type/pointer_test.cc",
-      "type/reference_test.cc",
-      "type/sampled_texture_test.cc",
-      "type/sampler_test.cc",
-      "type/storage_texture_test.cc",
-      "type/struct_test.cc",
-      "type/texture_test.cc",
-      "type/type_test.cc",
-      "type/u32_test.cc",
-      "type/vector_test.cc",
+      "lang/base/type/atomic_test.cc",
+      "lang/base/type/bool_test.cc",
+      "lang/base/type/builtin_structs_test.cc",
+      "lang/base/type/depth_multisampled_texture_test.cc",
+      "lang/base/type/depth_texture_test.cc",
+      "lang/base/type/external_texture_test.cc",
+      "lang/base/type/f16_test.cc",
+      "lang/base/type/f32_test.cc",
+      "lang/base/type/i32_test.cc",
+      "lang/base/type/manager_test.cc",
+      "lang/base/type/matrix_test.cc",
+      "lang/base/type/multisampled_texture_test.cc",
+      "lang/base/type/pointer_test.cc",
+      "lang/base/type/reference_test.cc",
+      "lang/base/type/sampled_texture_test.cc",
+      "lang/base/type/sampler_test.cc",
+      "lang/base/type/storage_texture_test.cc",
+      "lang/base/type/struct_test.cc",
+      "lang/base/type/texture_test.cc",
+      "lang/base/type/type_test.cc",
+      "lang/base/type/u32_test.cc",
+      "lang/base/type/vector_test.cc",
     ]
     deps = [ ":libtint_builtins_src" ]
   }
diff --git a/src/tint/CMakeLists.txt b/src/tint/CMakeLists.txt
index d1e9eac..4de9c9a 100644
--- a/src/tint/CMakeLists.txt
+++ b/src/tint/CMakeLists.txt
@@ -461,75 +461,75 @@
   transform/manager.h
   transform/transform.cc
   transform/transform.h
-  type/abstract_float.cc
-  type/abstract_float.h
-  type/abstract_int.cc
-  type/abstract_int.h
-  type/abstract_numeric.cc
-  type/abstract_numeric.h
-  type/array.cc
-  type/array.h
-  type/array_count.cc
-  type/array_count.h
-  type/atomic.cc
-  type/atomic.h
-  type/bool.cc
-  type/bool.h
-  type/builtin_structs.cc
-  type/builtin_structs.h
-  type/clone_context.h
-  type/depth_multisampled_texture.cc
-  type/depth_multisampled_texture.h
-  type/depth_texture.cc
-  type/depth_texture.h
-  type/external_texture.cc
-  type/external_texture.h
-  type/f16.cc
-  type/f16.h
-  type/f32.cc
-  type/f32.h
-  type/i32.cc
-  type/i32.h
-  type/manager.cc
-  type/manager.h
-  type/matrix.cc
-  type/matrix.h
-  type/multisampled_texture.cc
-  type/multisampled_texture.h
-  type/node.cc
-  type/node.h
-  type/numeric_scalar.cc
-  type/numeric_scalar.h
-  type/pointer.cc
-  type/pointer.h
-  type/reference.cc
-  type/reference.h
-  type/sampled_texture.cc
-  type/sampled_texture.h
-  type/sampler.cc
-  type/sampler.h
-  type/sampler_kind.cc
-  type/sampler_kind.h
-  type/scalar.cc
-  type/scalar.h
-  type/storage_texture.cc
-  type/storage_texture.h
-  type/struct.cc
-  type/struct.h
-  type/texture.cc
-  type/texture.h
-  type/texture_dimension.cc
-  type/texture_dimension.h
-  type/type.cc
-  type/type.h
-  type/u32.cc
-  type/u32.h
-  type/unique_node.cc
-  type/unique_node.h
-  type/vector.cc
-  type/vector.h
-  type/void.cc
-  type/void.h
+  lang/base/type/abstract_float.cc
+  lang/base/type/abstract_float.h
+  lang/base/type/abstract_int.cc
+  lang/base/type/abstract_int.h
+  lang/base/type/abstract_numeric.cc
+  lang/base/type/abstract_numeric.h
+  lang/base/type/array.cc
+  lang/base/type/array.h
+  lang/base/type/array_count.cc
+  lang/base/type/array_count.h
+  lang/base/type/atomic.cc
+  lang/base/type/atomic.h
+  lang/base/type/bool.cc
+  lang/base/type/bool.h
+  lang/base/type/builtin_structs.cc
+  lang/base/type/builtin_structs.h
+  lang/base/type/clone_context.h
+  lang/base/type/depth_multisampled_texture.cc
+  lang/base/type/depth_multisampled_texture.h
+  lang/base/type/depth_texture.cc
+  lang/base/type/depth_texture.h
+  lang/base/type/external_texture.cc
+  lang/base/type/external_texture.h
+  lang/base/type/f16.cc
+  lang/base/type/f16.h
+  lang/base/type/f32.cc
+  lang/base/type/f32.h
+  lang/base/type/i32.cc
+  lang/base/type/i32.h
+  lang/base/type/manager.cc
+  lang/base/type/manager.h
+  lang/base/type/matrix.cc
+  lang/base/type/matrix.h
+  lang/base/type/multisampled_texture.cc
+  lang/base/type/multisampled_texture.h
+  lang/base/type/node.cc
+  lang/base/type/node.h
+  lang/base/type/numeric_scalar.cc
+  lang/base/type/numeric_scalar.h
+  lang/base/type/pointer.cc
+  lang/base/type/pointer.h
+  lang/base/type/reference.cc
+  lang/base/type/reference.h
+  lang/base/type/sampled_texture.cc
+  lang/base/type/sampled_texture.h
+  lang/base/type/sampler.cc
+  lang/base/type/sampler.h
+  lang/base/type/sampler_kind.cc
+  lang/base/type/sampler_kind.h
+  lang/base/type/scalar.cc
+  lang/base/type/scalar.h
+  lang/base/type/storage_texture.cc
+  lang/base/type/storage_texture.h
+  lang/base/type/struct.cc
+  lang/base/type/struct.h
+  lang/base/type/texture.cc
+  lang/base/type/texture.h
+  lang/base/type/texture_dimension.cc
+  lang/base/type/texture_dimension.h
+  lang/base/type/type.cc
+  lang/base/type/type.h
+  lang/base/type/u32.cc
+  lang/base/type/u32.h
+  lang/base/type/unique_node.cc
+  lang/base/type/unique_node.h
+  lang/base/type/vector.cc
+  lang/base/type/vector.h
+  lang/base/type/void.cc
+  lang/base/type/void.h
   core/bitcast.h
   core/bitset.h
   core/block_allocator.h
@@ -1099,29 +1099,29 @@
     test_main.cc
     lang/wgsl/ast/transform/transform_test.cc
     transform/manager_test.cc
-    type/array_test.cc
-    type/atomic_test.cc
-    type/bool_test.cc
-    type/builtin_structs_test.cc
-    type/depth_multisampled_texture_test.cc
-    type/depth_texture_test.cc
-    type/external_texture_test.cc
-    type/f16_test.cc
-    type/f32_test.cc
-    type/i32_test.cc
-    type/manager_test.cc
-    type/matrix_test.cc
-    type/multisampled_texture_test.cc
-    type/pointer_test.cc
-    type/reference_test.cc
-    type/sampled_texture_test.cc
-    type/sampler_test.cc
-    type/storage_texture_test.cc
-    type/struct_test.cc
-    type/texture_test.cc
-    type/type_test.cc
-    type/u32_test.cc
-    type/vector_test.cc
+    lang/base/type/array_test.cc
+    lang/base/type/atomic_test.cc
+    lang/base/type/bool_test.cc
+    lang/base/type/builtin_structs_test.cc
+    lang/base/type/depth_multisampled_texture_test.cc
+    lang/base/type/depth_texture_test.cc
+    lang/base/type/external_texture_test.cc
+    lang/base/type/f16_test.cc
+    lang/base/type/f32_test.cc
+    lang/base/type/i32_test.cc
+    lang/base/type/manager_test.cc
+    lang/base/type/matrix_test.cc
+    lang/base/type/multisampled_texture_test.cc
+    lang/base/type/pointer_test.cc
+    lang/base/type/reference_test.cc
+    lang/base/type/sampled_texture_test.cc
+    lang/base/type/sampler_test.cc
+    lang/base/type/storage_texture_test.cc
+    lang/base/type/struct_test.cc
+    lang/base/type/texture_test.cc
+    lang/base/type/type_test.cc
+    lang/base/type/u32_test.cc
+    lang/base/type/vector_test.cc
     core/bitcast_test.cc
     core/bitset_test.cc
     core/block_allocator_test.cc
diff --git a/src/tint/cmd/generate_external_texture_bindings.cc b/src/tint/cmd/generate_external_texture_bindings.cc
index 3c8656f..e79d617 100644
--- a/src/tint/cmd/generate_external_texture_bindings.cc
+++ b/src/tint/cmd/generate_external_texture_bindings.cc
@@ -18,11 +18,11 @@
 #include <unordered_map>
 #include <vector>
 
+#include "src/tint/lang/base/type/external_texture.h"
 #include "src/tint/lang/wgsl/ast/module.h"
 #include "src/tint/lang/wgsl/sem/binding_point.h"
 #include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/program.h"
-#include "src/tint/type/external_texture.h"
 
 namespace tint::cmd {
 
diff --git a/src/tint/cmd/info.cc b/src/tint/cmd/info.cc
index 688bd43..fdaf49e 100644
--- a/src/tint/cmd/info.cc
+++ b/src/tint/cmd/info.cc
@@ -23,8 +23,8 @@
 #include "src/tint/core/io/command.h"
 #include "src/tint/core/string.h"
 #include "src/tint/core/transform.h"
+#include "src/tint/lang/base/type/struct.h"
 #include "src/tint/lang/wgsl/ast/module.h"
-#include "src/tint/type/struct.h"
 #include "src/tint/val/val.h"
 #include "tint/tint.h"
 
diff --git a/src/tint/fuzzers/tint_ast_fuzzer/mutation_finders/change_unary_operators.cc b/src/tint/fuzzers/tint_ast_fuzzer/mutation_finders/change_unary_operators.cc
index 12be86a..91fc922 100644
--- a/src/tint/fuzzers/tint_ast_fuzzer/mutation_finders/change_unary_operators.cc
+++ b/src/tint/fuzzers/tint_ast_fuzzer/mutation_finders/change_unary_operators.cc
@@ -18,8 +18,8 @@
 
 #include "src/tint/fuzzers/tint_ast_fuzzer/mutations/change_unary_operator.h"
 #include "src/tint/fuzzers/tint_ast_fuzzer/util.h"
+#include "src/tint/lang/base/type/reference.h"
 #include "src/tint/lang/wgsl/ast/unary_op_expression.h"
-#include "src/tint/type/reference.h"
 
 namespace tint::fuzzers::ast_fuzzer {
 
diff --git a/src/tint/fuzzers/tint_ast_fuzzer/mutations/change_binary_operator.cc b/src/tint/fuzzers/tint_ast_fuzzer/mutations/change_binary_operator.cc
index 29cfbcf..0e2a7f9 100644
--- a/src/tint/fuzzers/tint_ast_fuzzer/mutations/change_binary_operator.cc
+++ b/src/tint/fuzzers/tint_ast_fuzzer/mutations/change_binary_operator.cc
@@ -16,9 +16,9 @@
 
 #include <utility>
 
+#include "src/tint/lang/base/type/bool.h"
+#include "src/tint/lang/base/type/reference.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/type/bool.h"
-#include "src/tint/type/reference.h"
 
 namespace tint::fuzzers::ast_fuzzer {
 
diff --git a/src/tint/fuzzers/tint_ast_fuzzer/mutations/change_unary_operator.cc b/src/tint/fuzzers/tint_ast_fuzzer/mutations/change_unary_operator.cc
index f42ec92..df7945d 100644
--- a/src/tint/fuzzers/tint_ast_fuzzer/mutations/change_unary_operator.cc
+++ b/src/tint/fuzzers/tint_ast_fuzzer/mutations/change_unary_operator.cc
@@ -17,8 +17,8 @@
 #include <utility>
 
 #include "src/tint/fuzzers/tint_ast_fuzzer/util.h"
+#include "src/tint/lang/base/type/reference.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/type/reference.h"
 
 namespace tint::fuzzers::ast_fuzzer {
 
diff --git a/src/tint/fuzzers/tint_ast_fuzzer/mutations/wrap_unary_operator.cc b/src/tint/fuzzers/tint_ast_fuzzer/mutations/wrap_unary_operator.cc
index c1cad51..8b3b624 100644
--- a/src/tint/fuzzers/tint_ast_fuzzer/mutations/wrap_unary_operator.cc
+++ b/src/tint/fuzzers/tint_ast_fuzzer/mutations/wrap_unary_operator.cc
@@ -17,11 +17,11 @@
 #include <utility>
 #include <vector>
 
+#include "src/tint/lang/base/type/abstract_float.h"
+#include "src/tint/lang/base/type/abstract_int.h"
 #include "src/tint/lang/wgsl/sem/call.h"
 #include "src/tint/lang/wgsl/sem/statement.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/type/abstract_float.h"
-#include "src/tint/type/abstract_int.h"
 
 namespace tint::fuzzers::ast_fuzzer {
 
diff --git a/src/tint/fuzzers/tint_common_fuzzer.cc b/src/tint/fuzzers/tint_common_fuzzer.cc
index 4f547a2..043684d 100644
--- a/src/tint/fuzzers/tint_common_fuzzer.cc
+++ b/src/tint/fuzzers/tint_common_fuzzer.cc
@@ -33,11 +33,11 @@
 #include "src/tint/core/diagnostic/formatter.h"
 #include "src/tint/core/hash.h"
 #include "src/tint/fuzzers/apply_substitute_overrides.h"
+#include "src/tint/lang/base/type/external_texture.h"
 #include "src/tint/lang/wgsl/ast/module.h"
 #include "src/tint/lang/wgsl/sem/binding_point.h"
 #include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/program.h"
-#include "src/tint/type/external_texture.h"
 #include "src/tint/writer/flatten_bindings.h"
 
 namespace tint::fuzzers {
diff --git a/src/tint/inspector/inspector.cc b/src/tint/inspector/inspector.cc
index 2dcdb14..fd141b6 100644
--- a/src/tint/inspector/inspector.cc
+++ b/src/tint/inspector/inspector.cc
@@ -24,6 +24,21 @@
 #include "src/tint/lang/base/builtin/extension.h"
 #include "src/tint/lang/base/builtin/interpolation_sampling.h"
 #include "src/tint/lang/base/builtin/interpolation_type.h"
+#include "src/tint/lang/base/type/array.h"
+#include "src/tint/lang/base/type/bool.h"
+#include "src/tint/lang/base/type/depth_multisampled_texture.h"
+#include "src/tint/lang/base/type/depth_texture.h"
+#include "src/tint/lang/base/type/external_texture.h"
+#include "src/tint/lang/base/type/f16.h"
+#include "src/tint/lang/base/type/f32.h"
+#include "src/tint/lang/base/type/i32.h"
+#include "src/tint/lang/base/type/matrix.h"
+#include "src/tint/lang/base/type/multisampled_texture.h"
+#include "src/tint/lang/base/type/sampled_texture.h"
+#include "src/tint/lang/base/type/storage_texture.h"
+#include "src/tint/lang/base/type/u32.h"
+#include "src/tint/lang/base/type/vector.h"
+#include "src/tint/lang/base/type/void.h"
 #include "src/tint/lang/wgsl/ast/bool_literal_expression.h"
 #include "src/tint/lang/wgsl/ast/call_expression.h"
 #include "src/tint/lang/wgsl/ast/float_literal_expression.h"
@@ -43,21 +58,6 @@
 #include "src/tint/lang/wgsl/sem/struct.h"
 #include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/switch.h"
-#include "src/tint/type/array.h"
-#include "src/tint/type/bool.h"
-#include "src/tint/type/depth_multisampled_texture.h"
-#include "src/tint/type/depth_texture.h"
-#include "src/tint/type/external_texture.h"
-#include "src/tint/type/f16.h"
-#include "src/tint/type/f32.h"
-#include "src/tint/type/i32.h"
-#include "src/tint/type/matrix.h"
-#include "src/tint/type/multisampled_texture.h"
-#include "src/tint/type/sampled_texture.h"
-#include "src/tint/type/storage_texture.h"
-#include "src/tint/type/u32.h"
-#include "src/tint/type/vector.h"
-#include "src/tint/type/void.h"
 
 namespace tint::inspector {
 
diff --git a/src/tint/inspector/inspector_test.cc b/src/tint/inspector/inspector_test.cc
index e24ca98..4a29596 100644
--- a/src/tint/inspector/inspector_test.cc
+++ b/src/tint/inspector/inspector_test.cc
@@ -16,6 +16,11 @@
 
 #include "src/tint/inspector/test_inspector_builder.h"
 #include "src/tint/inspector/test_inspector_runner.h"
+#include "src/tint/lang/base/type/depth_texture.h"
+#include "src/tint/lang/base/type/external_texture.h"
+#include "src/tint/lang/base/type/multisampled_texture.h"
+#include "src/tint/lang/base/type/sampled_texture.h"
+#include "src/tint/lang/base/type/texture_dimension.h"
 #include "src/tint/lang/wgsl/ast/call_statement.h"
 #include "src/tint/lang/wgsl/ast/disable_validation_attribute.h"
 #include "src/tint/lang/wgsl/ast/id_attribute.h"
@@ -23,11 +28,6 @@
 #include "src/tint/lang/wgsl/ast/workgroup_attribute.h"
 #include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/type/depth_texture.h"
-#include "src/tint/type/external_texture.h"
-#include "src/tint/type/multisampled_texture.h"
-#include "src/tint/type/sampled_texture.h"
-#include "src/tint/type/texture_dimension.h"
 #include "tint/tint.h"
 
 using namespace tint::number_suffixes;  // NOLINT
diff --git a/src/tint/inspector/resource_binding.cc b/src/tint/inspector/resource_binding.cc
index 9b0dc83..ba0846e 100644
--- a/src/tint/inspector/resource_binding.cc
+++ b/src/tint/inspector/resource_binding.cc
@@ -14,14 +14,14 @@
 
 #include "src/tint/inspector/resource_binding.h"
 
-#include "src/tint/type/array.h"
-#include "src/tint/type/f32.h"
-#include "src/tint/type/i32.h"
-#include "src/tint/type/matrix.h"
-#include "src/tint/type/texture_dimension.h"
-#include "src/tint/type/type.h"
-#include "src/tint/type/u32.h"
-#include "src/tint/type/vector.h"
+#include "src/tint/lang/base/type/array.h"
+#include "src/tint/lang/base/type/f32.h"
+#include "src/tint/lang/base/type/i32.h"
+#include "src/tint/lang/base/type/matrix.h"
+#include "src/tint/lang/base/type/texture_dimension.h"
+#include "src/tint/lang/base/type/type.h"
+#include "src/tint/lang/base/type/u32.h"
+#include "src/tint/lang/base/type/vector.h"
 
 namespace tint::inspector {
 
diff --git a/src/tint/inspector/resource_binding.h b/src/tint/inspector/resource_binding.h
index 07b906b..b6682d8 100644
--- a/src/tint/inspector/resource_binding.h
+++ b/src/tint/inspector/resource_binding.h
@@ -18,8 +18,8 @@
 #include <cstdint>
 
 #include "src/tint/lang/base/builtin/texel_format.h"
-#include "src/tint/type/texture_dimension.h"
-#include "src/tint/type/type.h"
+#include "src/tint/lang/base/type/texture_dimension.h"
+#include "src/tint/lang/base/type/type.h"
 
 namespace tint::inspector {
 
diff --git a/src/tint/inspector/test_inspector_builder.h b/src/tint/inspector/test_inspector_builder.h
index 45b5e0b..52fcba5 100644
--- a/src/tint/inspector/test_inspector_builder.h
+++ b/src/tint/inspector/test_inspector_builder.h
@@ -20,6 +20,11 @@
 #include <tuple>
 #include <vector>
 
+#include "src/tint/lang/base/type/depth_texture.h"
+#include "src/tint/lang/base/type/external_texture.h"
+#include "src/tint/lang/base/type/multisampled_texture.h"
+#include "src/tint/lang/base/type/sampled_texture.h"
+#include "src/tint/lang/base/type/texture_dimension.h"
 #include "src/tint/lang/wgsl/ast/call_statement.h"
 #include "src/tint/lang/wgsl/ast/disable_validation_attribute.h"
 #include "src/tint/lang/wgsl/ast/id_attribute.h"
@@ -27,11 +32,6 @@
 #include "src/tint/lang/wgsl/ast/workgroup_attribute.h"
 #include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/type/depth_texture.h"
-#include "src/tint/type/external_texture.h"
-#include "src/tint/type/multisampled_texture.h"
-#include "src/tint/type/sampled_texture.h"
-#include "src/tint/type/texture_dimension.h"
 #include "tint/tint.h"
 
 namespace tint::inspector {
diff --git a/src/tint/ir/builder.cc b/src/tint/ir/builder.cc
index 4a5b239..577d284 100644
--- a/src/tint/ir/builder.cc
+++ b/src/tint/ir/builder.cc
@@ -17,8 +17,8 @@
 #include <utility>
 
 #include "src/tint/lang/base/constant/scalar.h"
-#include "src/tint/type/pointer.h"
-#include "src/tint/type/reference.h"
+#include "src/tint/lang/base/type/pointer.h"
+#include "src/tint/lang/base/type/reference.h"
 
 namespace tint::ir {
 
diff --git a/src/tint/ir/builder.h b/src/tint/ir/builder.h
index b71e462..94046c6 100644
--- a/src/tint/ir/builder.h
+++ b/src/tint/ir/builder.h
@@ -58,15 +58,15 @@
 #include "src/tint/lang/base/constant/composite.h"
 #include "src/tint/lang/base/constant/scalar.h"
 #include "src/tint/lang/base/constant/splat.h"
+#include "src/tint/lang/base/type/bool.h"
+#include "src/tint/lang/base/type/f16.h"
+#include "src/tint/lang/base/type/f32.h"
+#include "src/tint/lang/base/type/i32.h"
+#include "src/tint/lang/base/type/pointer.h"
+#include "src/tint/lang/base/type/u32.h"
+#include "src/tint/lang/base/type/vector.h"
+#include "src/tint/lang/base/type/void.h"
 #include "src/tint/switch.h"
-#include "src/tint/type/bool.h"
-#include "src/tint/type/f16.h"
-#include "src/tint/type/f32.h"
-#include "src/tint/type/i32.h"
-#include "src/tint/type/pointer.h"
-#include "src/tint/type/u32.h"
-#include "src/tint/type/vector.h"
-#include "src/tint/type/void.h"
 
 namespace tint::ir {
 
diff --git a/src/tint/ir/convert.h b/src/tint/ir/convert.h
index a15e061..06ddb58 100644
--- a/src/tint/ir/convert.h
+++ b/src/tint/ir/convert.h
@@ -17,7 +17,7 @@
 
 #include "src/tint/core/castable.h"
 #include "src/tint/ir/call.h"
-#include "src/tint/type/type.h"
+#include "src/tint/lang/base/type/type.h"
 
 namespace tint::ir {
 
diff --git a/src/tint/ir/disassembler.cc b/src/tint/ir/disassembler.cc
index cd14b4e..01f6d6b 100644
--- a/src/tint/ir/disassembler.cc
+++ b/src/tint/ir/disassembler.cc
@@ -52,9 +52,9 @@
 #include "src/tint/lang/base/constant/composite.h"
 #include "src/tint/lang/base/constant/scalar.h"
 #include "src/tint/lang/base/constant/splat.h"
+#include "src/tint/lang/base/type/struct.h"
+#include "src/tint/lang/base/type/type.h"
 #include "src/tint/switch.h"
-#include "src/tint/type/struct.h"
-#include "src/tint/type/type.h"
 
 namespace tint::ir {
 namespace {
diff --git a/src/tint/ir/discard.cc b/src/tint/ir/discard.cc
index f5c53a3..4e52967 100644
--- a/src/tint/ir/discard.cc
+++ b/src/tint/ir/discard.cc
@@ -14,7 +14,7 @@
 
 #include "src/tint/ir/discard.h"
 #include "src/tint/debug.h"
-#include "src/tint/type/void.h"
+#include "src/tint/lang/base/type/void.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::ir::Discard);
 
diff --git a/src/tint/ir/from_program.cc b/src/tint/ir/from_program.cc
index ec300cf..d30e73a 100644
--- a/src/tint/ir/from_program.cc
+++ b/src/tint/ir/from_program.cc
@@ -36,6 +36,10 @@
 #include "src/tint/ir/store.h"
 #include "src/tint/ir/switch.h"
 #include "src/tint/ir/value.h"
+#include "src/tint/lang/base/type/pointer.h"
+#include "src/tint/lang/base/type/reference.h"
+#include "src/tint/lang/base/type/struct.h"
+#include "src/tint/lang/base/type/void.h"
 #include "src/tint/lang/wgsl/ast/accessor_expression.h"
 #include "src/tint/lang/wgsl/ast/alias.h"
 #include "src/tint/lang/wgsl/ast/assignment_statement.h"
@@ -100,10 +104,6 @@
 #include "src/tint/program.h"
 #include "src/tint/scope_stack.h"
 #include "src/tint/switch.h"
-#include "src/tint/type/pointer.h"
-#include "src/tint/type/reference.h"
-#include "src/tint/type/struct.h"
-#include "src/tint/type/void.h"
 
 using namespace tint::number_suffixes;  // NOLINT
 
diff --git a/src/tint/ir/function.h b/src/tint/ir/function.h
index 4310bc6..e9cf09e 100644
--- a/src/tint/ir/function.h
+++ b/src/tint/ir/function.h
@@ -22,7 +22,7 @@
 #include "src/tint/ir/function_param.h"
 #include "src/tint/ir/location.h"
 #include "src/tint/ir/value.h"
-#include "src/tint/type/type.h"
+#include "src/tint/lang/base/type/type.h"
 
 // Forward declarations
 namespace tint::ir {
diff --git a/src/tint/ir/load.cc b/src/tint/ir/load.cc
index ac62f46..f871d1b 100644
--- a/src/tint/ir/load.cc
+++ b/src/tint/ir/load.cc
@@ -15,7 +15,7 @@
 #include "src/tint/ir/load.h"
 
 #include "src/tint/debug.h"
-#include "src/tint/type/pointer.h"
+#include "src/tint/lang/base/type/pointer.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::ir::Load);
 
diff --git a/src/tint/ir/module.h b/src/tint/ir/module.h
index 90bcd88..7477117 100644
--- a/src/tint/ir/module.h
+++ b/src/tint/ir/module.h
@@ -27,9 +27,9 @@
 #include "src/tint/ir/instruction.h"
 #include "src/tint/ir/value.h"
 #include "src/tint/lang/base/constant/manager.h"
+#include "src/tint/lang/base/type/manager.h"
 #include "src/tint/program_id.h"
 #include "src/tint/symbol_table.h"
-#include "src/tint/type/manager.h"
 
 namespace tint::ir {
 
diff --git a/src/tint/ir/to_program.cc b/src/tint/ir/to_program.cc
index 45817cb..8da34f6 100644
--- a/src/tint/ir/to_program.cc
+++ b/src/tint/ir/to_program.cc
@@ -61,16 +61,16 @@
 #include "src/tint/ir/var.h"
 #include "src/tint/lang/base/builtin/builtin.h"
 #include "src/tint/lang/base/constant/splat.h"
+#include "src/tint/lang/base/type/atomic.h"
+#include "src/tint/lang/base/type/depth_multisampled_texture.h"
+#include "src/tint/lang/base/type/depth_texture.h"
+#include "src/tint/lang/base/type/multisampled_texture.h"
+#include "src/tint/lang/base/type/pointer.h"
+#include "src/tint/lang/base/type/reference.h"
+#include "src/tint/lang/base/type/sampler.h"
+#include "src/tint/lang/base/type/texture.h"
 #include "src/tint/program_builder.h"
 #include "src/tint/switch.h"
-#include "src/tint/type/atomic.h"
-#include "src/tint/type/depth_multisampled_texture.h"
-#include "src/tint/type/depth_texture.h"
-#include "src/tint/type/multisampled_texture.h"
-#include "src/tint/type/pointer.h"
-#include "src/tint/type/reference.h"
-#include "src/tint/type/sampler.h"
-#include "src/tint/type/texture.h"
 
 // Helper for calling TINT_UNIMPLEMENTED() from a Switch(object_ptr) default case.
 #define UNHANDLED_CASE(object_ptr)          \
diff --git a/src/tint/ir/to_program_inlining_test.cc b/src/tint/ir/to_program_inlining_test.cc
index df2db9e..bb5ef1e 100644
--- a/src/tint/ir/to_program_inlining_test.cc
+++ b/src/tint/ir/to_program_inlining_test.cc
@@ -18,9 +18,9 @@
 #include "src/tint/ir/disassembler.h"
 #include "src/tint/ir/to_program.h"
 #include "src/tint/ir/to_program_test.h"
+#include "src/tint/lang/base/type/array.h"
+#include "src/tint/lang/base/type/matrix.h"
 #include "src/tint/lang/wgsl/ast_writer/generator.h"
-#include "src/tint/type/array.h"
-#include "src/tint/type/matrix.h"
 
 namespace tint::ir::test {
 namespace {
diff --git a/src/tint/ir/transform/block_decorated_structs.cc b/src/tint/ir/transform/block_decorated_structs.cc
index 40805b5..37ad0c5 100644
--- a/src/tint/ir/transform/block_decorated_structs.cc
+++ b/src/tint/ir/transform/block_decorated_structs.cc
@@ -18,8 +18,8 @@
 
 #include "src/tint/ir/builder.h"
 #include "src/tint/ir/module.h"
-#include "src/tint/type/pointer.h"
-#include "src/tint/type/struct.h"
+#include "src/tint/lang/base/type/pointer.h"
+#include "src/tint/lang/base/type/struct.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::ir::transform::BlockDecoratedStructs);
 
diff --git a/src/tint/ir/transform/block_decorated_structs.h b/src/tint/ir/transform/block_decorated_structs.h
index 654f818..7e2e202 100644
--- a/src/tint/ir/transform/block_decorated_structs.h
+++ b/src/tint/ir/transform/block_decorated_structs.h
@@ -17,7 +17,7 @@
 
 #include "src/tint/ir/transform/transform.h"
 
-#include "src/tint/type/struct.h"
+#include "src/tint/lang/base/type/struct.h"
 
 namespace tint::ir::transform {
 
diff --git a/src/tint/ir/transform/block_decorated_structs_test.cc b/src/tint/ir/transform/block_decorated_structs_test.cc
index 2d93a2d..aeef627 100644
--- a/src/tint/ir/transform/block_decorated_structs_test.cc
+++ b/src/tint/ir/transform/block_decorated_structs_test.cc
@@ -17,9 +17,9 @@
 #include <utility>
 
 #include "src/tint/ir/transform/test_helper.h"
-#include "src/tint/type/array.h"
-#include "src/tint/type/pointer.h"
-#include "src/tint/type/struct.h"
+#include "src/tint/lang/base/type/array.h"
+#include "src/tint/lang/base/type/pointer.h"
+#include "src/tint/lang/base/type/struct.h"
 
 namespace tint::ir::transform {
 namespace {
diff --git a/src/tint/ir/transform/builtin_polyfill_spirv.cc b/src/tint/ir/transform/builtin_polyfill_spirv.cc
index 1a12495..4f81639 100644
--- a/src/tint/ir/transform/builtin_polyfill_spirv.cc
+++ b/src/tint/ir/transform/builtin_polyfill_spirv.cc
@@ -19,13 +19,13 @@
 #include "spirv/unified1/spirv.h"
 #include "src/tint/ir/builder.h"
 #include "src/tint/ir/module.h"
-#include "src/tint/type/builtin_structs.h"
-#include "src/tint/type/depth_multisampled_texture.h"
-#include "src/tint/type/depth_texture.h"
-#include "src/tint/type/multisampled_texture.h"
-#include "src/tint/type/sampled_texture.h"
-#include "src/tint/type/storage_texture.h"
-#include "src/tint/type/texture.h"
+#include "src/tint/lang/base/type/builtin_structs.h"
+#include "src/tint/lang/base/type/depth_multisampled_texture.h"
+#include "src/tint/lang/base/type/depth_texture.h"
+#include "src/tint/lang/base/type/multisampled_texture.h"
+#include "src/tint/lang/base/type/sampled_texture.h"
+#include "src/tint/lang/base/type/storage_texture.h"
+#include "src/tint/lang/base/type/texture.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::ir::transform::BuiltinPolyfillSpirv);
 TINT_INSTANTIATE_TYPEINFO(tint::ir::transform::BuiltinPolyfillSpirv::LiteralOperand);
diff --git a/src/tint/ir/transform/builtin_polyfill_spirv.h b/src/tint/ir/transform/builtin_polyfill_spirv.h
index d323f68..0209a7f 100644
--- a/src/tint/ir/transform/builtin_polyfill_spirv.h
+++ b/src/tint/ir/transform/builtin_polyfill_spirv.h
@@ -19,7 +19,7 @@
 
 #include "src/tint/ir/constant.h"
 #include "src/tint/ir/transform/transform.h"
-#include "src/tint/type/type.h"
+#include "src/tint/lang/base/type/type.h"
 
 // Forward declarations
 namespace tint::type {
diff --git a/src/tint/ir/transform/builtin_polyfill_spirv_test.cc b/src/tint/ir/transform/builtin_polyfill_spirv_test.cc
index 8f26e9d..bc99648 100644
--- a/src/tint/ir/transform/builtin_polyfill_spirv_test.cc
+++ b/src/tint/ir/transform/builtin_polyfill_spirv_test.cc
@@ -17,12 +17,12 @@
 #include <utility>
 
 #include "src/tint/ir/transform/test_helper.h"
-#include "src/tint/type/atomic.h"
-#include "src/tint/type/builtin_structs.h"
-#include "src/tint/type/depth_texture.h"
-#include "src/tint/type/multisampled_texture.h"
-#include "src/tint/type/sampled_texture.h"
-#include "src/tint/type/storage_texture.h"
+#include "src/tint/lang/base/type/atomic.h"
+#include "src/tint/lang/base/type/builtin_structs.h"
+#include "src/tint/lang/base/type/depth_texture.h"
+#include "src/tint/lang/base/type/multisampled_texture.h"
+#include "src/tint/lang/base/type/sampled_texture.h"
+#include "src/tint/lang/base/type/storage_texture.h"
 
 namespace tint::ir::transform {
 namespace {
diff --git a/src/tint/ir/transform/demote_to_helper_test.cc b/src/tint/ir/transform/demote_to_helper_test.cc
index fe75df1..687be92 100644
--- a/src/tint/ir/transform/demote_to_helper_test.cc
+++ b/src/tint/ir/transform/demote_to_helper_test.cc
@@ -17,9 +17,9 @@
 #include <utility>
 
 #include "src/tint/ir/transform/test_helper.h"
-#include "src/tint/type/builtin_structs.h"
-#include "src/tint/type/f32.h"
-#include "src/tint/type/storage_texture.h"
+#include "src/tint/lang/base/type/builtin_structs.h"
+#include "src/tint/lang/base/type/f32.h"
+#include "src/tint/lang/base/type/storage_texture.h"
 
 namespace tint::ir::transform {
 namespace {
diff --git a/src/tint/ir/transform/handle_matrix_arithmetic.cc b/src/tint/ir/transform/handle_matrix_arithmetic.cc
index 6e91153..e822d59 100644
--- a/src/tint/ir/transform/handle_matrix_arithmetic.cc
+++ b/src/tint/ir/transform/handle_matrix_arithmetic.cc
@@ -18,7 +18,7 @@
 
 #include "src/tint/ir/builder.h"
 #include "src/tint/ir/module.h"
-#include "src/tint/type/matrix.h"
+#include "src/tint/lang/base/type/matrix.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::ir::transform::HandleMatrixArithmetic);
 
diff --git a/src/tint/ir/transform/handle_matrix_arithmetic_test.cc b/src/tint/ir/transform/handle_matrix_arithmetic_test.cc
index 759fdab..8127a86 100644
--- a/src/tint/ir/transform/handle_matrix_arithmetic_test.cc
+++ b/src/tint/ir/transform/handle_matrix_arithmetic_test.cc
@@ -17,7 +17,7 @@
 #include <utility>
 
 #include "src/tint/ir/transform/test_helper.h"
-#include "src/tint/type/matrix.h"
+#include "src/tint/lang/base/type/matrix.h"
 
 namespace tint::ir::transform {
 namespace {
diff --git a/src/tint/ir/transform/shader_io.cc b/src/tint/ir/transform/shader_io.cc
index 6456710..8e1af0f 100644
--- a/src/tint/ir/transform/shader_io.cc
+++ b/src/tint/ir/transform/shader_io.cc
@@ -19,7 +19,7 @@
 
 #include "src/tint/ir/builder.h"
 #include "src/tint/ir/module.h"
-#include "src/tint/type/struct.h"
+#include "src/tint/lang/base/type/struct.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::ir::transform::ShaderIO);
 TINT_INSTANTIATE_TYPEINFO(tint::ir::transform::ShaderIO::Config);
diff --git a/src/tint/ir/transform/shader_io.h b/src/tint/ir/transform/shader_io.h
index 1f80811..080b1f6 100644
--- a/src/tint/ir/transform/shader_io.h
+++ b/src/tint/ir/transform/shader_io.h
@@ -20,7 +20,7 @@
 
 #include "src/tint/ir/builder.h"
 #include "src/tint/ir/transform/transform.h"
-#include "src/tint/type/manager.h"
+#include "src/tint/lang/base/type/manager.h"
 
 namespace tint::ir::transform {
 
diff --git a/src/tint/ir/transform/shader_io_spirv.cc b/src/tint/ir/transform/shader_io_spirv.cc
index 4a2400e..614eade 100644
--- a/src/tint/ir/transform/shader_io_spirv.cc
+++ b/src/tint/ir/transform/shader_io_spirv.cc
@@ -19,8 +19,8 @@
 
 #include "src/tint/ir/builder.h"
 #include "src/tint/ir/module.h"
-#include "src/tint/type/array.h"
-#include "src/tint/type/struct.h"
+#include "src/tint/lang/base/type/array.h"
+#include "src/tint/lang/base/type/struct.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::ir::transform::ShaderIOSpirv);
 
diff --git a/src/tint/ir/transform/shader_io_spirv_test.cc b/src/tint/ir/transform/shader_io_spirv_test.cc
index 1717e5c..8fec02e 100644
--- a/src/tint/ir/transform/shader_io_spirv_test.cc
+++ b/src/tint/ir/transform/shader_io_spirv_test.cc
@@ -16,7 +16,7 @@
 
 #include "src/tint/ir/transform/shader_io_spirv.h"
 #include "src/tint/ir/transform/test_helper.h"
-#include "src/tint/type/struct.h"
+#include "src/tint/lang/base/type/struct.h"
 
 namespace tint::ir::transform {
 namespace {
diff --git a/src/tint/ir/transform/var_for_dynamic_index.cc b/src/tint/ir/transform/var_for_dynamic_index.cc
index 7ee659c..6efff61 100644
--- a/src/tint/ir/transform/var_for_dynamic_index.cc
+++ b/src/tint/ir/transform/var_for_dynamic_index.cc
@@ -19,10 +19,10 @@
 #include "src/tint/core/hashmap.h"
 #include "src/tint/ir/builder.h"
 #include "src/tint/ir/module.h"
-#include "src/tint/type/array.h"
-#include "src/tint/type/matrix.h"
-#include "src/tint/type/pointer.h"
-#include "src/tint/type/vector.h"
+#include "src/tint/lang/base/type/array.h"
+#include "src/tint/lang/base/type/matrix.h"
+#include "src/tint/lang/base/type/pointer.h"
+#include "src/tint/lang/base/type/vector.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::ir::transform::VarForDynamicIndex);
 
diff --git a/src/tint/ir/transform/var_for_dynamic_index_test.cc b/src/tint/ir/transform/var_for_dynamic_index_test.cc
index 66e7591..4696e89 100644
--- a/src/tint/ir/transform/var_for_dynamic_index_test.cc
+++ b/src/tint/ir/transform/var_for_dynamic_index_test.cc
@@ -17,9 +17,9 @@
 #include <utility>
 
 #include "src/tint/ir/transform/test_helper.h"
-#include "src/tint/type/array.h"
-#include "src/tint/type/matrix.h"
-#include "src/tint/type/struct.h"
+#include "src/tint/lang/base/type/array.h"
+#include "src/tint/lang/base/type/matrix.h"
+#include "src/tint/lang/base/type/struct.h"
 
 namespace tint::ir::transform {
 namespace {
diff --git a/src/tint/ir/validator.cc b/src/tint/ir/validator.cc
index 958e9dd..0b1d25c 100644
--- a/src/tint/ir/validator.cc
+++ b/src/tint/ir/validator.cc
@@ -52,10 +52,10 @@
 #include "src/tint/ir/unreachable.h"
 #include "src/tint/ir/user_call.h"
 #include "src/tint/ir/var.h"
+#include "src/tint/lang/base/type/bool.h"
+#include "src/tint/lang/base/type/pointer.h"
+#include "src/tint/lang/base/type/vector.h"
 #include "src/tint/switch.h"
-#include "src/tint/type/bool.h"
-#include "src/tint/type/pointer.h"
-#include "src/tint/type/vector.h"
 
 namespace tint::ir {
 
diff --git a/src/tint/ir/validator_test.cc b/src/tint/ir/validator_test.cc
index 8618859..d2d9f5f 100644
--- a/src/tint/ir/validator_test.cc
+++ b/src/tint/ir/validator_test.cc
@@ -20,10 +20,10 @@
 #include "src/tint/ir/builder.h"
 #include "src/tint/ir/ir_test_helper.h"
 #include "src/tint/ir/validator.h"
-#include "src/tint/type/array.h"
-#include "src/tint/type/matrix.h"
-#include "src/tint/type/pointer.h"
-#include "src/tint/type/struct.h"
+#include "src/tint/lang/base/type/array.h"
+#include "src/tint/lang/base/type/matrix.h"
+#include "src/tint/lang/base/type/pointer.h"
+#include "src/tint/lang/base/type/struct.h"
 
 namespace tint::ir {
 namespace {
diff --git a/src/tint/ir/value.h b/src/tint/ir/value.h
index 2bfc369..a4ecabe 100644
--- a/src/tint/ir/value.h
+++ b/src/tint/ir/value.h
@@ -17,7 +17,7 @@
 
 #include "src/tint/core/castable.h"
 #include "src/tint/core/hashset.h"
-#include "src/tint/type/type.h"
+#include "src/tint/lang/base/type/type.h"
 
 // Forward declarations
 namespace tint::ir {
diff --git a/src/tint/ir/var.h b/src/tint/ir/var.h
index 20e760b..92266a9 100644
--- a/src/tint/ir/var.h
+++ b/src/tint/ir/var.h
@@ -21,7 +21,7 @@
 #include "src/tint/ir/operand_instruction.h"
 #include "src/tint/lang/base/builtin/access.h"
 #include "src/tint/lang/base/builtin/address_space.h"
-#include "src/tint/type/pointer.h"
+#include "src/tint/lang/base/type/pointer.h"
 
 namespace tint::ir {
 
diff --git a/src/tint/lang/base/constant/clone_context.h b/src/tint/lang/base/constant/clone_context.h
index feea4f4..b3676b7 100644
--- a/src/tint/lang/base/constant/clone_context.h
+++ b/src/tint/lang/base/constant/clone_context.h
@@ -15,7 +15,7 @@
 #ifndef SRC_TINT_LANG_BASE_CONSTANT_CLONE_CONTEXT_H_
 #define SRC_TINT_LANG_BASE_CONSTANT_CLONE_CONTEXT_H_
 
-#include "src/tint/type/clone_context.h"
+#include "src/tint/lang/base/type/clone_context.h"
 
 // Forward declarations
 namespace tint::constant {
diff --git a/src/tint/lang/base/constant/composite.h b/src/tint/lang/base/constant/composite.h
index 2c29b99..7006a02 100644
--- a/src/tint/lang/base/constant/composite.h
+++ b/src/tint/lang/base/constant/composite.h
@@ -20,7 +20,7 @@
 #include "src/tint/core/vector.h"
 #include "src/tint/lang/base/builtin/number.h"
 #include "src/tint/lang/base/constant/value.h"
-#include "src/tint/type/type.h"
+#include "src/tint/lang/base/type/type.h"
 
 namespace tint::constant {
 
diff --git a/src/tint/lang/base/constant/manager.cc b/src/tint/lang/base/constant/manager.cc
index 6ad824f..b3f7230 100644
--- a/src/tint/lang/base/constant/manager.cc
+++ b/src/tint/lang/base/constant/manager.cc
@@ -18,14 +18,14 @@
 #include "src/tint/lang/base/constant/composite.h"
 #include "src/tint/lang/base/constant/scalar.h"
 #include "src/tint/lang/base/constant/splat.h"
-#include "src/tint/type/abstract_float.h"
-#include "src/tint/type/abstract_int.h"
-#include "src/tint/type/bool.h"
-#include "src/tint/type/f16.h"
-#include "src/tint/type/f32.h"
-#include "src/tint/type/i32.h"
-#include "src/tint/type/manager.h"
-#include "src/tint/type/u32.h"
+#include "src/tint/lang/base/type/abstract_float.h"
+#include "src/tint/lang/base/type/abstract_int.h"
+#include "src/tint/lang/base/type/bool.h"
+#include "src/tint/lang/base/type/f16.h"
+#include "src/tint/lang/base/type/f32.h"
+#include "src/tint/lang/base/type/i32.h"
+#include "src/tint/lang/base/type/manager.h"
+#include "src/tint/lang/base/type/u32.h"
 
 namespace tint::constant {
 
diff --git a/src/tint/lang/base/constant/manager.h b/src/tint/lang/base/constant/manager.h
index 7cb9055..acbf15d 100644
--- a/src/tint/lang/base/constant/manager.h
+++ b/src/tint/lang/base/constant/manager.h
@@ -21,7 +21,7 @@
 #include "src/tint/core/unique_allocator.h"
 #include "src/tint/lang/base/builtin/number.h"
 #include "src/tint/lang/base/constant/value.h"
-#include "src/tint/type/manager.h"
+#include "src/tint/lang/base/type/manager.h"
 
 namespace tint::constant {
 class Splat;
diff --git a/src/tint/lang/base/constant/manager_test.cc b/src/tint/lang/base/constant/manager_test.cc
index d24232f..db1d540 100644
--- a/src/tint/lang/base/constant/manager_test.cc
+++ b/src/tint/lang/base/constant/manager_test.cc
@@ -16,14 +16,14 @@
 
 #include "gtest/gtest.h"
 #include "src/tint/lang/base/constant/scalar.h"
-#include "src/tint/type/abstract_float.h"
-#include "src/tint/type/abstract_int.h"
-#include "src/tint/type/bool.h"
-#include "src/tint/type/f16.h"
-#include "src/tint/type/f32.h"
-#include "src/tint/type/i32.h"
-#include "src/tint/type/manager.h"
-#include "src/tint/type/u32.h"
+#include "src/tint/lang/base/type/abstract_float.h"
+#include "src/tint/lang/base/type/abstract_int.h"
+#include "src/tint/lang/base/type/bool.h"
+#include "src/tint/lang/base/type/f16.h"
+#include "src/tint/lang/base/type/f32.h"
+#include "src/tint/lang/base/type/i32.h"
+#include "src/tint/lang/base/type/manager.h"
+#include "src/tint/lang/base/type/u32.h"
 
 namespace tint::constant {
 namespace {
diff --git a/src/tint/lang/base/constant/scalar.h b/src/tint/lang/base/constant/scalar.h
index 24639fb..6959cc0 100644
--- a/src/tint/lang/base/constant/scalar.h
+++ b/src/tint/lang/base/constant/scalar.h
@@ -20,7 +20,7 @@
 #include "src/tint/lang/base/builtin/number.h"
 #include "src/tint/lang/base/constant/manager.h"
 #include "src/tint/lang/base/constant/value.h"
-#include "src/tint/type/type.h"
+#include "src/tint/lang/base/type/type.h"
 
 namespace tint::constant {
 
diff --git a/src/tint/lang/base/constant/splat.h b/src/tint/lang/base/constant/splat.h
index 5c0ca99..6a638a0 100644
--- a/src/tint/lang/base/constant/splat.h
+++ b/src/tint/lang/base/constant/splat.h
@@ -18,7 +18,7 @@
 #include "src/tint/core/castable.h"
 #include "src/tint/core/vector.h"
 #include "src/tint/lang/base/constant/composite.h"
-#include "src/tint/type/type.h"
+#include "src/tint/lang/base/type/type.h"
 
 namespace tint::constant {
 
diff --git a/src/tint/lang/base/constant/value.cc b/src/tint/lang/base/constant/value.cc
index 3880720..6b957fd 100644
--- a/src/tint/lang/base/constant/value.cc
+++ b/src/tint/lang/base/constant/value.cc
@@ -15,11 +15,11 @@
 #include "src/tint/lang/base/constant/value.h"
 
 #include "src/tint/lang/base/constant/splat.h"
+#include "src/tint/lang/base/type/array.h"
+#include "src/tint/lang/base/type/matrix.h"
+#include "src/tint/lang/base/type/struct.h"
+#include "src/tint/lang/base/type/vector.h"
 #include "src/tint/switch.h"
-#include "src/tint/type/array.h"
-#include "src/tint/type/matrix.h"
-#include "src/tint/type/struct.h"
-#include "src/tint/type/vector.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::constant::Value);
 
diff --git a/src/tint/lang/base/constant/value.h b/src/tint/lang/base/constant/value.h
index 12fe265..7851e28 100644
--- a/src/tint/lang/base/constant/value.h
+++ b/src/tint/lang/base/constant/value.h
@@ -21,7 +21,7 @@
 #include "src/tint/lang/base/builtin/number.h"
 #include "src/tint/lang/base/constant/clone_context.h"
 #include "src/tint/lang/base/constant/node.h"
-#include "src/tint/type/type.h"
+#include "src/tint/lang/base/type/type.h"
 
 namespace tint::constant {
 
diff --git a/src/tint/type/abstract_float.cc b/src/tint/lang/base/type/abstract_float.cc
similarity index 91%
rename from src/tint/type/abstract_float.cc
rename to src/tint/lang/base/type/abstract_float.cc
index 3766d63..5332d7f 100644
--- a/src/tint/type/abstract_float.cc
+++ b/src/tint/lang/base/type/abstract_float.cc
@@ -12,10 +12,10 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/type/abstract_float.h"
+#include "src/tint/lang/base/type/abstract_float.h"
 
 #include "src/tint/core/hash.h"
-#include "src/tint/type/manager.h"
+#include "src/tint/lang/base/type/manager.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::type::AbstractFloat);
 
diff --git a/src/tint/type/abstract_float.h b/src/tint/lang/base/type/abstract_float.h
similarity index 84%
rename from src/tint/type/abstract_float.h
rename to src/tint/lang/base/type/abstract_float.h
index d3a9f2b..2258d88 100644
--- a/src/tint/type/abstract_float.h
+++ b/src/tint/lang/base/type/abstract_float.h
@@ -12,12 +12,12 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_TYPE_ABSTRACT_FLOAT_H_
-#define SRC_TINT_TYPE_ABSTRACT_FLOAT_H_
+#ifndef SRC_TINT_LANG_BASE_TYPE_ABSTRACT_FLOAT_H_
+#define SRC_TINT_LANG_BASE_TYPE_ABSTRACT_FLOAT_H_
 
 #include <string>
 
-#include "src/tint/type/abstract_numeric.h"
+#include "src/tint/lang/base/type/abstract_numeric.h"
 
 namespace tint::type {
 
@@ -41,4 +41,4 @@
 
 }  // namespace tint::type
 
-#endif  // SRC_TINT_TYPE_ABSTRACT_FLOAT_H_
+#endif  // SRC_TINT_LANG_BASE_TYPE_ABSTRACT_FLOAT_H_
diff --git a/src/tint/type/abstract_int.cc b/src/tint/lang/base/type/abstract_int.cc
similarity index 91%
rename from src/tint/type/abstract_int.cc
rename to src/tint/lang/base/type/abstract_int.cc
index bc1c775..b1ce0ec 100644
--- a/src/tint/type/abstract_int.cc
+++ b/src/tint/lang/base/type/abstract_int.cc
@@ -12,10 +12,10 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/type/abstract_int.h"
+#include "src/tint/lang/base/type/abstract_int.h"
 
 #include "src/tint/core/hash.h"
-#include "src/tint/type/manager.h"
+#include "src/tint/lang/base/type/manager.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::type::AbstractInt);
 
diff --git a/src/tint/type/abstract_int.h b/src/tint/lang/base/type/abstract_int.h
similarity index 85%
rename from src/tint/type/abstract_int.h
rename to src/tint/lang/base/type/abstract_int.h
index 35430d1..8936ad3 100644
--- a/src/tint/type/abstract_int.h
+++ b/src/tint/lang/base/type/abstract_int.h
@@ -12,12 +12,12 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_TYPE_ABSTRACT_INT_H_
-#define SRC_TINT_TYPE_ABSTRACT_INT_H_
+#ifndef SRC_TINT_LANG_BASE_TYPE_ABSTRACT_INT_H_
+#define SRC_TINT_LANG_BASE_TYPE_ABSTRACT_INT_H_
 
 #include <string>
 
-#include "src/tint/type/abstract_numeric.h"
+#include "src/tint/lang/base/type/abstract_numeric.h"
 
 namespace tint::type {
 
@@ -41,4 +41,4 @@
 
 }  // namespace tint::type
 
-#endif  // SRC_TINT_TYPE_ABSTRACT_INT_H_
+#endif  // SRC_TINT_LANG_BASE_TYPE_ABSTRACT_INT_H_
diff --git a/src/tint/type/abstract_numeric.cc b/src/tint/lang/base/type/abstract_numeric.cc
similarity index 94%
rename from src/tint/type/abstract_numeric.cc
rename to src/tint/lang/base/type/abstract_numeric.cc
index 838aa61..3ca4bec 100644
--- a/src/tint/type/abstract_numeric.cc
+++ b/src/tint/lang/base/type/abstract_numeric.cc
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/type/abstract_numeric.h"
+#include "src/tint/lang/base/type/abstract_numeric.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::type::AbstractNumeric);
 
diff --git a/src/tint/type/abstract_numeric.h b/src/tint/lang/base/type/abstract_numeric.h
similarity index 85%
rename from src/tint/type/abstract_numeric.h
rename to src/tint/lang/base/type/abstract_numeric.h
index 128bc34..2381d2e 100644
--- a/src/tint/type/abstract_numeric.h
+++ b/src/tint/lang/base/type/abstract_numeric.h
@@ -12,12 +12,12 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_TYPE_ABSTRACT_NUMERIC_H_
-#define SRC_TINT_TYPE_ABSTRACT_NUMERIC_H_
+#ifndef SRC_TINT_LANG_BASE_TYPE_ABSTRACT_NUMERIC_H_
+#define SRC_TINT_LANG_BASE_TYPE_ABSTRACT_NUMERIC_H_
 
 #include <string>
 
-#include "src/tint/type/numeric_scalar.h"
+#include "src/tint/lang/base/type/numeric_scalar.h"
 
 namespace tint::type {
 
@@ -41,4 +41,4 @@
 
 }  // namespace tint::type
 
-#endif  // SRC_TINT_TYPE_ABSTRACT_NUMERIC_H_
+#endif  // SRC_TINT_LANG_BASE_TYPE_ABSTRACT_NUMERIC_H_
diff --git a/src/tint/type/array.cc b/src/tint/lang/base/type/array.cc
similarity index 96%
rename from src/tint/type/array.cc
rename to src/tint/lang/base/type/array.cc
index 7a613d2..7f11ec7 100644
--- a/src/tint/type/array.cc
+++ b/src/tint/lang/base/type/array.cc
@@ -12,16 +12,16 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/type/array.h"
+#include "src/tint/lang/base/type/array.h"
 
 #include <string>
 
 #include "src/tint/core/hash.h"
 #include "src/tint/core/string_stream.h"
 #include "src/tint/debug.h"
+#include "src/tint/lang/base/type/manager.h"
+#include "src/tint/lang/base/type/texture_dimension.h"
 #include "src/tint/symbol_table.h"
-#include "src/tint/type/manager.h"
-#include "src/tint/type/texture_dimension.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::type::Array);
 
diff --git a/src/tint/type/array.h b/src/tint/lang/base/type/array.h
similarity index 95%
rename from src/tint/type/array.h
rename to src/tint/lang/base/type/array.h
index dd2a1f5..be68a59 100644
--- a/src/tint/type/array.h
+++ b/src/tint/lang/base/type/array.h
@@ -12,8 +12,8 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_TYPE_ARRAY_H_
-#define SRC_TINT_TYPE_ARRAY_H_
+#ifndef SRC_TINT_LANG_BASE_TYPE_ARRAY_H_
+#define SRC_TINT_LANG_BASE_TYPE_ARRAY_H_
 
 #include <stdint.h>
 #include <optional>
@@ -22,8 +22,8 @@
 
 #include "src/tint/core/compiler_macros.h"
 #include "src/tint/core/unique_vector.h"
-#include "src/tint/type/array_count.h"
-#include "src/tint/type/type.h"
+#include "src/tint/lang/base/type/array_count.h"
+#include "src/tint/lang/base/type/type.h"
 
 namespace tint::type {
 
@@ -119,4 +119,4 @@
 
 }  // namespace tint::type
 
-#endif  // SRC_TINT_TYPE_ARRAY_H_
+#endif  // SRC_TINT_LANG_BASE_TYPE_ARRAY_H_
diff --git a/src/tint/type/array_count.cc b/src/tint/lang/base/type/array_count.cc
similarity index 95%
rename from src/tint/type/array_count.cc
rename to src/tint/lang/base/type/array_count.cc
index 7b47300..9e3d50d 100644
--- a/src/tint/type/array_count.cc
+++ b/src/tint/lang/base/type/array_count.cc
@@ -12,9 +12,9 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/type/array_count.h"
+#include "src/tint/lang/base/type/array_count.h"
 
-#include "src/tint/type/manager.h"
+#include "src/tint/lang/base/type/manager.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::type::ArrayCount);
 TINT_INSTANTIATE_TYPEINFO(tint::type::ConstantArrayCount);
diff --git a/src/tint/type/array_count.h b/src/tint/lang/base/type/array_count.h
similarity index 91%
rename from src/tint/type/array_count.h
rename to src/tint/lang/base/type/array_count.h
index 172d2d3..8fc1704 100644
--- a/src/tint/type/array_count.h
+++ b/src/tint/lang/base/type/array_count.h
@@ -12,15 +12,15 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_TYPE_ARRAY_COUNT_H_
-#define SRC_TINT_TYPE_ARRAY_COUNT_H_
+#ifndef SRC_TINT_LANG_BASE_TYPE_ARRAY_COUNT_H_
+#define SRC_TINT_LANG_BASE_TYPE_ARRAY_COUNT_H_
 
 #include <functional>
 #include <string>
 
+#include "src/tint/lang/base/type/clone_context.h"
+#include "src/tint/lang/base/type/unique_node.h"
 #include "src/tint/symbol_table.h"
-#include "src/tint/type/clone_context.h"
-#include "src/tint/type/unique_node.h"
 
 namespace tint::type {
 
@@ -95,4 +95,4 @@
 
 }  // namespace tint::type
 
-#endif  // SRC_TINT_TYPE_ARRAY_COUNT_H_
+#endif  // SRC_TINT_LANG_BASE_TYPE_ARRAY_COUNT_H_
diff --git a/src/tint/type/array_test.cc b/src/tint/lang/base/type/array_test.cc
similarity index 98%
rename from src/tint/type/array_test.cc
rename to src/tint/lang/base/type/array_test.cc
index 6d047c2..3975ae7 100644
--- a/src/tint/type/array_test.cc
+++ b/src/tint/lang/base/type/array_test.cc
@@ -12,9 +12,9 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
+#include "src/tint/lang/base/type/test_helper.h"
+#include "src/tint/lang/base/type/texture.h"
 #include "src/tint/lang/wgsl/sem/array_count.h"
-#include "src/tint/type/test_helper.h"
-#include "src/tint/type/texture.h"
 
 namespace tint::type {
 namespace {
diff --git a/src/tint/type/atomic.cc b/src/tint/lang/base/type/atomic.cc
similarity index 92%
rename from src/tint/type/atomic.cc
rename to src/tint/lang/base/type/atomic.cc
index 9ce2270..25c42af 100644
--- a/src/tint/type/atomic.cc
+++ b/src/tint/lang/base/type/atomic.cc
@@ -12,14 +12,14 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/type/atomic.h"
+#include "src/tint/lang/base/type/atomic.h"
 
 #include "src/tint/core/diagnostic/diagnostic.h"
 #include "src/tint/core/hash.h"
 #include "src/tint/core/string_stream.h"
 #include "src/tint/debug.h"
-#include "src/tint/type/manager.h"
-#include "src/tint/type/reference.h"
+#include "src/tint/lang/base/type/manager.h"
+#include "src/tint/lang/base/type/reference.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::type::Atomic);
 
diff --git a/src/tint/type/atomic.h b/src/tint/lang/base/type/atomic.h
similarity index 90%
rename from src/tint/type/atomic.h
rename to src/tint/lang/base/type/atomic.h
index a19239b..5b199c3 100644
--- a/src/tint/type/atomic.h
+++ b/src/tint/lang/base/type/atomic.h
@@ -12,12 +12,12 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_TYPE_ATOMIC_H_
-#define SRC_TINT_TYPE_ATOMIC_H_
+#ifndef SRC_TINT_LANG_BASE_TYPE_ATOMIC_H_
+#define SRC_TINT_LANG_BASE_TYPE_ATOMIC_H_
 
 #include <string>
 
-#include "src/tint/type/type.h"
+#include "src/tint/lang/base/type/type.h"
 
 namespace tint::type {
 
@@ -58,4 +58,4 @@
 
 }  // namespace tint::type
 
-#endif  // SRC_TINT_TYPE_ATOMIC_H_
+#endif  // SRC_TINT_LANG_BASE_TYPE_ATOMIC_H_
diff --git a/src/tint/type/atomic_test.cc b/src/tint/lang/base/type/atomic_test.cc
similarity index 94%
rename from src/tint/type/atomic_test.cc
rename to src/tint/lang/base/type/atomic_test.cc
index 261d4ae..828b955 100644
--- a/src/tint/type/atomic_test.cc
+++ b/src/tint/lang/base/type/atomic_test.cc
@@ -12,9 +12,9 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/type/atomic.h"
+#include "src/tint/lang/base/type/atomic.h"
 
-#include "src/tint/type/test_helper.h"
+#include "src/tint/lang/base/type/test_helper.h"
 
 namespace tint::type {
 namespace {
diff --git a/src/tint/type/bool.cc b/src/tint/lang/base/type/bool.cc
similarity index 93%
rename from src/tint/type/bool.cc
rename to src/tint/lang/base/type/bool.cc
index 382f894..0e033be 100644
--- a/src/tint/type/bool.cc
+++ b/src/tint/lang/base/type/bool.cc
@@ -12,9 +12,9 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/type/bool.h"
+#include "src/tint/lang/base/type/bool.h"
 
-#include "src/tint/type/manager.h"
+#include "src/tint/lang/base/type/manager.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::type::Bool);
 
diff --git a/src/tint/type/bool.h b/src/tint/lang/base/type/bool.h
similarity index 90%
rename from src/tint/type/bool.h
rename to src/tint/lang/base/type/bool.h
index 19c6bf8..af94830 100644
--- a/src/tint/type/bool.h
+++ b/src/tint/lang/base/type/bool.h
@@ -12,12 +12,12 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_TYPE_BOOL_H_
-#define SRC_TINT_TYPE_BOOL_H_
+#ifndef SRC_TINT_LANG_BASE_TYPE_BOOL_H_
+#define SRC_TINT_LANG_BASE_TYPE_BOOL_H_
 
 #include <string>
 
-#include "src/tint/type/scalar.h"
+#include "src/tint/lang/base/type/scalar.h"
 
 // X11 likes to #define Bool leading to confusing error messages.
 // If its defined, undefine it.
@@ -57,4 +57,4 @@
 
 }  // namespace tint::type
 
-#endif  // SRC_TINT_TYPE_BOOL_H_
+#endif  // SRC_TINT_LANG_BASE_TYPE_BOOL_H_
diff --git a/src/tint/type/bool_test.cc b/src/tint/lang/base/type/bool_test.cc
similarity index 93%
rename from src/tint/type/bool_test.cc
rename to src/tint/lang/base/type/bool_test.cc
index 347ccd6..504b8c7 100644
--- a/src/tint/type/bool_test.cc
+++ b/src/tint/lang/base/type/bool_test.cc
@@ -12,8 +12,8 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/type/test_helper.h"
-#include "src/tint/type/texture.h"
+#include "src/tint/lang/base/type/test_helper.h"
+#include "src/tint/lang/base/type/texture.h"
 
 namespace tint::type {
 namespace {
diff --git a/src/tint/type/builtin_structs.cc b/src/tint/lang/base/type/builtin_structs.cc
similarity index 93%
rename from src/tint/type/builtin_structs.cc
rename to src/tint/lang/base/type/builtin_structs.cc
index c1a68a0b..036aa7b 100644
--- a/src/tint/type/builtin_structs.cc
+++ b/src/tint/lang/base/type/builtin_structs.cc
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/type/builtin_structs.h"
+#include "src/tint/lang/base/type/builtin_structs.h"
 
 #include <algorithm>
 #include <string>
@@ -20,17 +20,17 @@
 
 #include "src/tint/core/string.h"
 #include "src/tint/lang/base/builtin/builtin.h"
+#include "src/tint/lang/base/type/abstract_float.h"
+#include "src/tint/lang/base/type/abstract_int.h"
+#include "src/tint/lang/base/type/bool.h"
+#include "src/tint/lang/base/type/f16.h"
+#include "src/tint/lang/base/type/f32.h"
+#include "src/tint/lang/base/type/i32.h"
+#include "src/tint/lang/base/type/manager.h"
+#include "src/tint/lang/base/type/u32.h"
+#include "src/tint/lang/base/type/vector.h"
 #include "src/tint/switch.h"
 #include "src/tint/symbol_table.h"
-#include "src/tint/type/abstract_float.h"
-#include "src/tint/type/abstract_int.h"
-#include "src/tint/type/bool.h"
-#include "src/tint/type/f16.h"
-#include "src/tint/type/f32.h"
-#include "src/tint/type/i32.h"
-#include "src/tint/type/manager.h"
-#include "src/tint/type/u32.h"
-#include "src/tint/type/vector.h"
 
 namespace tint::type {
 
diff --git a/src/tint/type/builtin_structs.h b/src/tint/lang/base/type/builtin_structs.h
similarity index 91%
rename from src/tint/type/builtin_structs.h
rename to src/tint/lang/base/type/builtin_structs.h
index 3e376b4..e0a2e12 100644
--- a/src/tint/type/builtin_structs.h
+++ b/src/tint/lang/base/type/builtin_structs.h
@@ -12,8 +12,8 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_TYPE_BUILTIN_STRUCTS_H_
-#define SRC_TINT_TYPE_BUILTIN_STRUCTS_H_
+#ifndef SRC_TINT_LANG_BASE_TYPE_BUILTIN_STRUCTS_H_
+#define SRC_TINT_LANG_BASE_TYPE_BUILTIN_STRUCTS_H_
 
 // Forward declarations
 namespace tint {
@@ -47,4 +47,4 @@
 
 }  // namespace tint::type
 
-#endif  // SRC_TINT_TYPE_BUILTIN_STRUCTS_H_
+#endif  // SRC_TINT_LANG_BASE_TYPE_BUILTIN_STRUCTS_H_
diff --git a/src/tint/type/builtin_structs_test.cc b/src/tint/lang/base/type/builtin_structs_test.cc
similarity index 91%
rename from src/tint/type/builtin_structs_test.cc
rename to src/tint/lang/base/type/builtin_structs_test.cc
index 84eaa4b..8b96a0f 100644
--- a/src/tint/type/builtin_structs_test.cc
+++ b/src/tint/lang/base/type/builtin_structs_test.cc
@@ -12,20 +12,20 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/type/builtin_structs.h"
+#include "src/tint/lang/base/type/builtin_structs.h"
 
 #include "gmock/gmock.h"
+#include "src/tint/lang/base/type/abstract_float.h"
+#include "src/tint/lang/base/type/abstract_int.h"
+#include "src/tint/lang/base/type/bool.h"
+#include "src/tint/lang/base/type/f16.h"
+#include "src/tint/lang/base/type/f32.h"
+#include "src/tint/lang/base/type/i32.h"
+#include "src/tint/lang/base/type/manager.h"
+#include "src/tint/lang/base/type/u32.h"
+#include "src/tint/lang/base/type/vector.h"
 #include "src/tint/program_id.h"
 #include "src/tint/symbol_table.h"
-#include "src/tint/type/abstract_float.h"
-#include "src/tint/type/abstract_int.h"
-#include "src/tint/type/bool.h"
-#include "src/tint/type/f16.h"
-#include "src/tint/type/f32.h"
-#include "src/tint/type/i32.h"
-#include "src/tint/type/manager.h"
-#include "src/tint/type/u32.h"
-#include "src/tint/type/vector.h"
 
 using namespace tint::number_suffixes;  // NOLINT
 
diff --git a/src/tint/type/clone_context.h b/src/tint/lang/base/type/clone_context.h
similarity index 88%
rename from src/tint/type/clone_context.h
rename to src/tint/lang/base/type/clone_context.h
index 55ed44d..5ae0674 100644
--- a/src/tint/type/clone_context.h
+++ b/src/tint/lang/base/type/clone_context.h
@@ -12,8 +12,8 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_TYPE_CLONE_CONTEXT_H_
-#define SRC_TINT_TYPE_CLONE_CONTEXT_H_
+#ifndef SRC_TINT_LANG_BASE_TYPE_CLONE_CONTEXT_H_
+#define SRC_TINT_LANG_BASE_TYPE_CLONE_CONTEXT_H_
 
 // Forward Declarations
 namespace tint {
@@ -44,4 +44,4 @@
 
 }  // namespace tint::type
 
-#endif  // SRC_TINT_TYPE_CLONE_CONTEXT_H_
+#endif  // SRC_TINT_LANG_BASE_TYPE_CLONE_CONTEXT_H_
diff --git a/src/tint/type/depth_multisampled_texture.cc b/src/tint/lang/base/type/depth_multisampled_texture.cc
similarity index 91%
rename from src/tint/type/depth_multisampled_texture.cc
rename to src/tint/lang/base/type/depth_multisampled_texture.cc
index 75e7942..3f2491e 100644
--- a/src/tint/type/depth_multisampled_texture.cc
+++ b/src/tint/lang/base/type/depth_multisampled_texture.cc
@@ -12,14 +12,14 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/type/depth_multisampled_texture.h"
+#include "src/tint/lang/base/type/depth_multisampled_texture.h"
 
 #include "src/tint/core/diagnostic/diagnostic.h"
 #include "src/tint/core/hash.h"
 #include "src/tint/core/string_stream.h"
 #include "src/tint/debug.h"
-#include "src/tint/type/manager.h"
-#include "src/tint/type/texture_dimension.h"
+#include "src/tint/lang/base/type/manager.h"
+#include "src/tint/lang/base/type/texture_dimension.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::type::DepthMultisampledTexture);
 
diff --git a/src/tint/type/depth_multisampled_texture.h b/src/tint/lang/base/type/depth_multisampled_texture.h
similarity index 83%
rename from src/tint/type/depth_multisampled_texture.h
rename to src/tint/lang/base/type/depth_multisampled_texture.h
index 9a72d61..230d367 100644
--- a/src/tint/type/depth_multisampled_texture.h
+++ b/src/tint/lang/base/type/depth_multisampled_texture.h
@@ -12,13 +12,13 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_TYPE_DEPTH_MULTISAMPLED_TEXTURE_H_
-#define SRC_TINT_TYPE_DEPTH_MULTISAMPLED_TEXTURE_H_
+#ifndef SRC_TINT_LANG_BASE_TYPE_DEPTH_MULTISAMPLED_TEXTURE_H_
+#define SRC_TINT_LANG_BASE_TYPE_DEPTH_MULTISAMPLED_TEXTURE_H_
 
 #include <string>
 
-#include "src/tint/type/texture.h"
-#include "src/tint/type/texture_dimension.h"
+#include "src/tint/lang/base/type/texture.h"
+#include "src/tint/lang/base/type/texture_dimension.h"
 
 namespace tint::type {
 
@@ -47,4 +47,4 @@
 
 }  // namespace tint::type
 
-#endif  // SRC_TINT_TYPE_DEPTH_MULTISAMPLED_TEXTURE_H_
+#endif  // SRC_TINT_LANG_BASE_TYPE_DEPTH_MULTISAMPLED_TEXTURE_H_
diff --git a/src/tint/type/depth_multisampled_texture_test.cc b/src/tint/lang/base/type/depth_multisampled_texture_test.cc
similarity index 86%
rename from src/tint/type/depth_multisampled_texture_test.cc
rename to src/tint/lang/base/type/depth_multisampled_texture_test.cc
index 8f718f5..7be6f87 100644
--- a/src/tint/type/depth_multisampled_texture_test.cc
+++ b/src/tint/lang/base/type/depth_multisampled_texture_test.cc
@@ -12,13 +12,13 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/type/depth_multisampled_texture.h"
+#include "src/tint/lang/base/type/depth_multisampled_texture.h"
 
-#include "src/tint/type/external_texture.h"
-#include "src/tint/type/sampled_texture.h"
-#include "src/tint/type/storage_texture.h"
-#include "src/tint/type/test_helper.h"
-#include "src/tint/type/texture_dimension.h"
+#include "src/tint/lang/base/type/external_texture.h"
+#include "src/tint/lang/base/type/sampled_texture.h"
+#include "src/tint/lang/base/type/storage_texture.h"
+#include "src/tint/lang/base/type/test_helper.h"
+#include "src/tint/lang/base/type/texture_dimension.h"
 
 namespace tint::type {
 namespace {
diff --git a/src/tint/type/depth_texture.cc b/src/tint/lang/base/type/depth_texture.cc
similarity index 91%
rename from src/tint/type/depth_texture.cc
rename to src/tint/lang/base/type/depth_texture.cc
index 2fe2006..afdf8cd 100644
--- a/src/tint/type/depth_texture.cc
+++ b/src/tint/lang/base/type/depth_texture.cc
@@ -12,14 +12,14 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/type/depth_texture.h"
+#include "src/tint/lang/base/type/depth_texture.h"
 
 #include "src/tint/core/diagnostic/diagnostic.h"
 #include "src/tint/core/hash.h"
 #include "src/tint/core/string_stream.h"
 #include "src/tint/debug.h"
-#include "src/tint/type/manager.h"
-#include "src/tint/type/texture_dimension.h"
+#include "src/tint/lang/base/type/manager.h"
+#include "src/tint/lang/base/type/texture_dimension.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::type::DepthTexture);
 
diff --git a/src/tint/type/depth_texture.h b/src/tint/lang/base/type/depth_texture.h
similarity index 84%
rename from src/tint/type/depth_texture.h
rename to src/tint/lang/base/type/depth_texture.h
index 8e8c47d..8ed5448 100644
--- a/src/tint/type/depth_texture.h
+++ b/src/tint/lang/base/type/depth_texture.h
@@ -12,13 +12,13 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_TYPE_DEPTH_TEXTURE_H_
-#define SRC_TINT_TYPE_DEPTH_TEXTURE_H_
+#ifndef SRC_TINT_LANG_BASE_TYPE_DEPTH_TEXTURE_H_
+#define SRC_TINT_LANG_BASE_TYPE_DEPTH_TEXTURE_H_
 
 #include <string>
 
-#include "src/tint/type/texture.h"
-#include "src/tint/type/texture_dimension.h"
+#include "src/tint/lang/base/type/texture.h"
+#include "src/tint/lang/base/type/texture_dimension.h"
 
 namespace tint::type {
 
@@ -47,4 +47,4 @@
 
 }  // namespace tint::type
 
-#endif  // SRC_TINT_TYPE_DEPTH_TEXTURE_H_
+#endif  // SRC_TINT_LANG_BASE_TYPE_DEPTH_TEXTURE_H_
diff --git a/src/tint/type/depth_texture_test.cc b/src/tint/lang/base/type/depth_texture_test.cc
similarity index 87%
rename from src/tint/type/depth_texture_test.cc
rename to src/tint/lang/base/type/depth_texture_test.cc
index 14ec2e4..f0af723 100644
--- a/src/tint/type/depth_texture_test.cc
+++ b/src/tint/lang/base/type/depth_texture_test.cc
@@ -12,13 +12,13 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/type/depth_texture.h"
+#include "src/tint/lang/base/type/depth_texture.h"
 
-#include "src/tint/type/external_texture.h"
-#include "src/tint/type/sampled_texture.h"
-#include "src/tint/type/storage_texture.h"
-#include "src/tint/type/test_helper.h"
-#include "src/tint/type/texture_dimension.h"
+#include "src/tint/lang/base/type/external_texture.h"
+#include "src/tint/lang/base/type/sampled_texture.h"
+#include "src/tint/lang/base/type/storage_texture.h"
+#include "src/tint/lang/base/type/test_helper.h"
+#include "src/tint/lang/base/type/texture_dimension.h"
 
 namespace tint::type {
 namespace {
diff --git a/src/tint/type/external_texture.cc b/src/tint/lang/base/type/external_texture.cc
similarity index 88%
rename from src/tint/type/external_texture.cc
rename to src/tint/lang/base/type/external_texture.cc
index 924d06a..021355f 100644
--- a/src/tint/type/external_texture.cc
+++ b/src/tint/lang/base/type/external_texture.cc
@@ -12,10 +12,10 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/type/external_texture.h"
+#include "src/tint/lang/base/type/external_texture.h"
 
-#include "src/tint/type/manager.h"
-#include "src/tint/type/texture_dimension.h"
+#include "src/tint/lang/base/type/manager.h"
+#include "src/tint/lang/base/type/texture_dimension.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::type::ExternalTexture);
 
diff --git a/src/tint/type/external_texture.h b/src/tint/lang/base/type/external_texture.h
similarity index 86%
rename from src/tint/type/external_texture.h
rename to src/tint/lang/base/type/external_texture.h
index 219e7b8..0c9e87f 100644
--- a/src/tint/type/external_texture.h
+++ b/src/tint/lang/base/type/external_texture.h
@@ -12,12 +12,12 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_TYPE_EXTERNAL_TEXTURE_H_
-#define SRC_TINT_TYPE_EXTERNAL_TEXTURE_H_
+#ifndef SRC_TINT_LANG_BASE_TYPE_EXTERNAL_TEXTURE_H_
+#define SRC_TINT_LANG_BASE_TYPE_EXTERNAL_TEXTURE_H_
 
 #include <string>
 
-#include "src/tint/type/texture.h"
+#include "src/tint/lang/base/type/texture.h"
 
 namespace tint::type {
 
@@ -45,4 +45,4 @@
 
 }  // namespace tint::type
 
-#endif  // SRC_TINT_TYPE_EXTERNAL_TEXTURE_H_
+#endif  // SRC_TINT_LANG_BASE_TYPE_EXTERNAL_TEXTURE_H_
diff --git a/src/tint/type/external_texture_test.cc b/src/tint/lang/base/type/external_texture_test.cc
similarity index 84%
rename from src/tint/type/external_texture_test.cc
rename to src/tint/lang/base/type/external_texture_test.cc
index 5610ae5..cfd57ca 100644
--- a/src/tint/type/external_texture_test.cc
+++ b/src/tint/lang/base/type/external_texture_test.cc
@@ -12,14 +12,14 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/type/external_texture.h"
+#include "src/tint/lang/base/type/external_texture.h"
 
-#include "src/tint/type/depth_texture.h"
-#include "src/tint/type/multisampled_texture.h"
-#include "src/tint/type/sampled_texture.h"
-#include "src/tint/type/storage_texture.h"
-#include "src/tint/type/test_helper.h"
-#include "src/tint/type/texture_dimension.h"
+#include "src/tint/lang/base/type/depth_texture.h"
+#include "src/tint/lang/base/type/multisampled_texture.h"
+#include "src/tint/lang/base/type/sampled_texture.h"
+#include "src/tint/lang/base/type/storage_texture.h"
+#include "src/tint/lang/base/type/test_helper.h"
+#include "src/tint/lang/base/type/texture_dimension.h"
 
 namespace tint::type {
 namespace {
diff --git a/src/tint/type/f16.cc b/src/tint/lang/base/type/f16.cc
similarity index 93%
rename from src/tint/type/f16.cc
rename to src/tint/lang/base/type/f16.cc
index 485666f..5baa2ca 100644
--- a/src/tint/type/f16.cc
+++ b/src/tint/lang/base/type/f16.cc
@@ -12,9 +12,9 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/type/f16.h"
+#include "src/tint/lang/base/type/f16.h"
 
-#include "src/tint/type/manager.h"
+#include "src/tint/lang/base/type/manager.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::type::F16);
 
diff --git a/src/tint/type/f16.h b/src/tint/lang/base/type/f16.h
similarity index 88%
rename from src/tint/type/f16.h
rename to src/tint/lang/base/type/f16.h
index 31fe336..c563de1 100644
--- a/src/tint/type/f16.h
+++ b/src/tint/lang/base/type/f16.h
@@ -12,12 +12,12 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_TYPE_F16_H_
-#define SRC_TINT_TYPE_F16_H_
+#ifndef SRC_TINT_LANG_BASE_TYPE_F16_H_
+#define SRC_TINT_LANG_BASE_TYPE_F16_H_
 
 #include <string>
 
-#include "src/tint/type/numeric_scalar.h"
+#include "src/tint/lang/base/type/numeric_scalar.h"
 
 namespace tint::type {
 
@@ -47,4 +47,4 @@
 
 }  // namespace tint::type
 
-#endif  // SRC_TINT_TYPE_F16_H_
+#endif  // SRC_TINT_LANG_BASE_TYPE_F16_H_
diff --git a/src/tint/type/f16_test.cc b/src/tint/lang/base/type/f16_test.cc
similarity index 93%
rename from src/tint/type/f16_test.cc
rename to src/tint/lang/base/type/f16_test.cc
index a477f70..5aa1d62 100644
--- a/src/tint/type/f16_test.cc
+++ b/src/tint/lang/base/type/f16_test.cc
@@ -12,8 +12,8 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/type/test_helper.h"
-#include "src/tint/type/texture.h"
+#include "src/tint/lang/base/type/test_helper.h"
+#include "src/tint/lang/base/type/texture.h"
 
 namespace tint::type {
 namespace {
diff --git a/src/tint/type/f32.cc b/src/tint/lang/base/type/f32.cc
similarity index 93%
rename from src/tint/type/f32.cc
rename to src/tint/lang/base/type/f32.cc
index 0b34816..a1b1238 100644
--- a/src/tint/type/f32.cc
+++ b/src/tint/lang/base/type/f32.cc
@@ -12,9 +12,9 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/type/f32.h"
+#include "src/tint/lang/base/type/f32.h"
 
-#include "src/tint/type/manager.h"
+#include "src/tint/lang/base/type/manager.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::type::F32);
 
diff --git a/src/tint/type/f32.h b/src/tint/lang/base/type/f32.h
similarity index 88%
rename from src/tint/type/f32.h
rename to src/tint/lang/base/type/f32.h
index c22da37..0aeaf63 100644
--- a/src/tint/type/f32.h
+++ b/src/tint/lang/base/type/f32.h
@@ -12,12 +12,12 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_TYPE_F32_H_
-#define SRC_TINT_TYPE_F32_H_
+#ifndef SRC_TINT_LANG_BASE_TYPE_F32_H_
+#define SRC_TINT_LANG_BASE_TYPE_F32_H_
 
 #include <string>
 
-#include "src/tint/type/numeric_scalar.h"
+#include "src/tint/lang/base/type/numeric_scalar.h"
 
 namespace tint::type {
 
@@ -47,4 +47,4 @@
 
 }  // namespace tint::type
 
-#endif  // SRC_TINT_TYPE_F32_H_
+#endif  // SRC_TINT_LANG_BASE_TYPE_F32_H_
diff --git a/src/tint/type/f32_test.cc b/src/tint/lang/base/type/f32_test.cc
similarity index 93%
rename from src/tint/type/f32_test.cc
rename to src/tint/lang/base/type/f32_test.cc
index ae9e6d4..7fe258e 100644
--- a/src/tint/type/f32_test.cc
+++ b/src/tint/lang/base/type/f32_test.cc
@@ -12,8 +12,8 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/type/test_helper.h"
-#include "src/tint/type/texture.h"
+#include "src/tint/lang/base/type/test_helper.h"
+#include "src/tint/lang/base/type/texture.h"
 
 namespace tint::type {
 namespace {
diff --git a/src/tint/type/i32.cc b/src/tint/lang/base/type/i32.cc
similarity index 93%
rename from src/tint/type/i32.cc
rename to src/tint/lang/base/type/i32.cc
index f509b00..3e4991c 100644
--- a/src/tint/type/i32.cc
+++ b/src/tint/lang/base/type/i32.cc
@@ -12,9 +12,9 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/type/i32.h"
+#include "src/tint/lang/base/type/i32.h"
 
-#include "src/tint/type/manager.h"
+#include "src/tint/lang/base/type/manager.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::type::I32);
 
diff --git a/src/tint/type/i32.h b/src/tint/lang/base/type/i32.h
similarity index 88%
rename from src/tint/type/i32.h
rename to src/tint/lang/base/type/i32.h
index 9563349..15bfa0e 100644
--- a/src/tint/type/i32.h
+++ b/src/tint/lang/base/type/i32.h
@@ -12,12 +12,12 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_TYPE_I32_H_
-#define SRC_TINT_TYPE_I32_H_
+#ifndef SRC_TINT_LANG_BASE_TYPE_I32_H_
+#define SRC_TINT_LANG_BASE_TYPE_I32_H_
 
 #include <string>
 
-#include "src/tint/type/numeric_scalar.h"
+#include "src/tint/lang/base/type/numeric_scalar.h"
 
 namespace tint::type {
 
@@ -47,4 +47,4 @@
 
 }  // namespace tint::type
 
-#endif  // SRC_TINT_TYPE_I32_H_
+#endif  // SRC_TINT_LANG_BASE_TYPE_I32_H_
diff --git a/src/tint/type/i32_test.cc b/src/tint/lang/base/type/i32_test.cc
similarity index 93%
rename from src/tint/type/i32_test.cc
rename to src/tint/lang/base/type/i32_test.cc
index 6535667..d934bdc 100644
--- a/src/tint/type/i32_test.cc
+++ b/src/tint/lang/base/type/i32_test.cc
@@ -12,8 +12,8 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/type/test_helper.h"
-#include "src/tint/type/texture.h"
+#include "src/tint/lang/base/type/test_helper.h"
+#include "src/tint/lang/base/type/texture.h"
 
 namespace tint::type {
 namespace {
diff --git a/src/tint/type/manager.cc b/src/tint/lang/base/type/manager.cc
similarity index 89%
rename from src/tint/type/manager.cc
rename to src/tint/lang/base/type/manager.cc
index 63dbc6f..a156f5d 100644
--- a/src/tint/type/manager.cc
+++ b/src/tint/lang/base/type/manager.cc
@@ -12,23 +12,23 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/type/manager.h"
+#include "src/tint/lang/base/type/manager.h"
 
 #include <algorithm>
 
-#include "src/tint/type/abstract_float.h"
-#include "src/tint/type/abstract_int.h"
-#include "src/tint/type/array.h"
-#include "src/tint/type/bool.h"
-#include "src/tint/type/f16.h"
-#include "src/tint/type/f32.h"
-#include "src/tint/type/i32.h"
-#include "src/tint/type/matrix.h"
-#include "src/tint/type/pointer.h"
-#include "src/tint/type/type.h"
-#include "src/tint/type/u32.h"
-#include "src/tint/type/vector.h"
-#include "src/tint/type/void.h"
+#include "src/tint/lang/base/type/abstract_float.h"
+#include "src/tint/lang/base/type/abstract_int.h"
+#include "src/tint/lang/base/type/array.h"
+#include "src/tint/lang/base/type/bool.h"
+#include "src/tint/lang/base/type/f16.h"
+#include "src/tint/lang/base/type/f32.h"
+#include "src/tint/lang/base/type/i32.h"
+#include "src/tint/lang/base/type/matrix.h"
+#include "src/tint/lang/base/type/pointer.h"
+#include "src/tint/lang/base/type/type.h"
+#include "src/tint/lang/base/type/u32.h"
+#include "src/tint/lang/base/type/vector.h"
+#include "src/tint/lang/base/type/void.h"
 
 namespace tint::type {
 
diff --git a/src/tint/type/manager.h b/src/tint/lang/base/type/manager.h
similarity index 97%
rename from src/tint/type/manager.h
rename to src/tint/lang/base/type/manager.h
index b3fa287..98c85da 100644
--- a/src/tint/type/manager.h
+++ b/src/tint/lang/base/type/manager.h
@@ -12,8 +12,8 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_TYPE_MANAGER_H_
-#define SRC_TINT_TYPE_MANAGER_H_
+#ifndef SRC_TINT_LANG_BASE_TYPE_MANAGER_H_
+#define SRC_TINT_LANG_BASE_TYPE_MANAGER_H_
 
 #include <utility>
 
@@ -23,12 +23,12 @@
 #include "src/tint/lang/base/builtin/address_space.h"
 #include "src/tint/lang/base/builtin/fluent_types.h"
 #include "src/tint/lang/base/builtin/number.h"
+#include "src/tint/lang/base/type/atomic.h"
+#include "src/tint/lang/base/type/sampler.h"
+#include "src/tint/lang/base/type/struct.h"
+#include "src/tint/lang/base/type/type.h"
+#include "src/tint/lang/base/type/unique_node.h"
 #include "src/tint/symbol.h"
-#include "src/tint/type/atomic.h"
-#include "src/tint/type/sampler.h"
-#include "src/tint/type/struct.h"
-#include "src/tint/type/type.h"
-#include "src/tint/type/unique_node.h"
 
 // Forward declarations
 namespace tint::type {
@@ -465,4 +465,4 @@
 
 }  // namespace tint::type
 
-#endif  // SRC_TINT_TYPE_MANAGER_H_
+#endif  // SRC_TINT_LANG_BASE_TYPE_MANAGER_H_
diff --git a/src/tint/type/manager_test.cc b/src/tint/lang/base/type/manager_test.cc
similarity index 90%
rename from src/tint/type/manager_test.cc
rename to src/tint/lang/base/type/manager_test.cc
index 62d3044..83f9fdf 100644
--- a/src/tint/type/manager_test.cc
+++ b/src/tint/lang/base/type/manager_test.cc
@@ -12,14 +12,14 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/type/manager.h"
+#include "src/tint/lang/base/type/manager.h"
 
 #include "gtest/gtest.h"
-#include "src/tint/type/bool.h"
-#include "src/tint/type/f16.h"
-#include "src/tint/type/f32.h"
-#include "src/tint/type/i32.h"
-#include "src/tint/type/u32.h"
+#include "src/tint/lang/base/type/bool.h"
+#include "src/tint/lang/base/type/f16.h"
+#include "src/tint/lang/base/type/f32.h"
+#include "src/tint/lang/base/type/i32.h"
+#include "src/tint/lang/base/type/u32.h"
 
 namespace tint::type {
 namespace {
diff --git a/src/tint/type/matrix.cc b/src/tint/lang/base/type/matrix.cc
similarity index 94%
rename from src/tint/type/matrix.cc
rename to src/tint/lang/base/type/matrix.cc
index 8d91137..d2dd498 100644
--- a/src/tint/type/matrix.cc
+++ b/src/tint/lang/base/type/matrix.cc
@@ -12,14 +12,14 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/type/matrix.h"
+#include "src/tint/lang/base/type/matrix.h"
 
 #include "src/tint/core/diagnostic/diagnostic.h"
 #include "src/tint/core/hash.h"
 #include "src/tint/core/string_stream.h"
 #include "src/tint/debug.h"
-#include "src/tint/type/manager.h"
-#include "src/tint/type/vector.h"
+#include "src/tint/lang/base/type/manager.h"
+#include "src/tint/lang/base/type/vector.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::type::Matrix);
 
diff --git a/src/tint/type/matrix.h b/src/tint/lang/base/type/matrix.h
similarity index 93%
rename from src/tint/type/matrix.h
rename to src/tint/lang/base/type/matrix.h
index bce61ef..075a020 100644
--- a/src/tint/type/matrix.h
+++ b/src/tint/lang/base/type/matrix.h
@@ -12,12 +12,12 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_TYPE_MATRIX_H_
-#define SRC_TINT_TYPE_MATRIX_H_
+#ifndef SRC_TINT_LANG_BASE_TYPE_MATRIX_H_
+#define SRC_TINT_LANG_BASE_TYPE_MATRIX_H_
 
 #include <string>
 
-#include "src/tint/type/vector.h"
+#include "src/tint/lang/base/type/vector.h"
 
 // Forward declarations
 namespace tint::type {
@@ -85,4 +85,4 @@
 
 }  // namespace tint::type
 
-#endif  // SRC_TINT_TYPE_MATRIX_H_
+#endif  // SRC_TINT_LANG_BASE_TYPE_MATRIX_H_
diff --git a/src/tint/type/matrix_test.cc b/src/tint/lang/base/type/matrix_test.cc
similarity index 96%
rename from src/tint/type/matrix_test.cc
rename to src/tint/lang/base/type/matrix_test.cc
index e9c81a7..9ba3877 100644
--- a/src/tint/type/matrix_test.cc
+++ b/src/tint/lang/base/type/matrix_test.cc
@@ -12,8 +12,8 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/type/test_helper.h"
-#include "src/tint/type/texture.h"
+#include "src/tint/lang/base/type/test_helper.h"
+#include "src/tint/lang/base/type/texture.h"
 
 namespace tint::type {
 namespace {
diff --git a/src/tint/type/multisampled_texture.cc b/src/tint/lang/base/type/multisampled_texture.cc
similarity index 91%
rename from src/tint/type/multisampled_texture.cc
rename to src/tint/lang/base/type/multisampled_texture.cc
index 7860855..e80f44e 100644
--- a/src/tint/type/multisampled_texture.cc
+++ b/src/tint/lang/base/type/multisampled_texture.cc
@@ -12,14 +12,14 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/type/multisampled_texture.h"
+#include "src/tint/lang/base/type/multisampled_texture.h"
 
 #include "src/tint/core/diagnostic/diagnostic.h"
 #include "src/tint/core/hash.h"
 #include "src/tint/core/string_stream.h"
 #include "src/tint/debug.h"
-#include "src/tint/type/manager.h"
-#include "src/tint/type/texture_dimension.h"
+#include "src/tint/lang/base/type/manager.h"
+#include "src/tint/lang/base/type/texture_dimension.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::type::MultisampledTexture);
 
diff --git a/src/tint/type/multisampled_texture.h b/src/tint/lang/base/type/multisampled_texture.h
similarity index 85%
rename from src/tint/type/multisampled_texture.h
rename to src/tint/lang/base/type/multisampled_texture.h
index 89575ee..0d3dfed 100644
--- a/src/tint/type/multisampled_texture.h
+++ b/src/tint/lang/base/type/multisampled_texture.h
@@ -12,13 +12,13 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_TYPE_MULTISAMPLED_TEXTURE_H_
-#define SRC_TINT_TYPE_MULTISAMPLED_TEXTURE_H_
+#ifndef SRC_TINT_LANG_BASE_TYPE_MULTISAMPLED_TEXTURE_H_
+#define SRC_TINT_LANG_BASE_TYPE_MULTISAMPLED_TEXTURE_H_
 
 #include <string>
 
-#include "src/tint/type/texture.h"
-#include "src/tint/type/texture_dimension.h"
+#include "src/tint/lang/base/type/texture.h"
+#include "src/tint/lang/base/type/texture_dimension.h"
 
 namespace tint::type {
 
@@ -54,4 +54,4 @@
 
 }  // namespace tint::type
 
-#endif  // SRC_TINT_TYPE_MULTISAMPLED_TEXTURE_H_
+#endif  // SRC_TINT_LANG_BASE_TYPE_MULTISAMPLED_TEXTURE_H_
diff --git a/src/tint/type/multisampled_texture_test.cc b/src/tint/lang/base/type/multisampled_texture_test.cc
similarity index 88%
rename from src/tint/type/multisampled_texture_test.cc
rename to src/tint/lang/base/type/multisampled_texture_test.cc
index e02a109..0303c98 100644
--- a/src/tint/type/multisampled_texture_test.cc
+++ b/src/tint/lang/base/type/multisampled_texture_test.cc
@@ -12,14 +12,14 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/type/multisampled_texture.h"
+#include "src/tint/lang/base/type/multisampled_texture.h"
 
-#include "src/tint/type/depth_texture.h"
-#include "src/tint/type/external_texture.h"
-#include "src/tint/type/sampled_texture.h"
-#include "src/tint/type/storage_texture.h"
-#include "src/tint/type/test_helper.h"
-#include "src/tint/type/texture_dimension.h"
+#include "src/tint/lang/base/type/depth_texture.h"
+#include "src/tint/lang/base/type/external_texture.h"
+#include "src/tint/lang/base/type/sampled_texture.h"
+#include "src/tint/lang/base/type/storage_texture.h"
+#include "src/tint/lang/base/type/test_helper.h"
+#include "src/tint/lang/base/type/texture_dimension.h"
 
 namespace tint::type {
 namespace {
diff --git a/src/tint/type/node.cc b/src/tint/lang/base/type/node.cc
similarity index 94%
rename from src/tint/type/node.cc
rename to src/tint/lang/base/type/node.cc
index cb7e4ad..0b95469 100644
--- a/src/tint/type/node.cc
+++ b/src/tint/lang/base/type/node.cc
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/type/node.h"
+#include "src/tint/lang/base/type/node.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::type::Node);
 
diff --git a/src/tint/type/node.h b/src/tint/lang/base/type/node.h
similarity index 87%
rename from src/tint/type/node.h
rename to src/tint/lang/base/type/node.h
index 22faa73..8981852 100644
--- a/src/tint/type/node.h
+++ b/src/tint/lang/base/type/node.h
@@ -12,8 +12,8 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_TYPE_NODE_H_
-#define SRC_TINT_TYPE_NODE_H_
+#ifndef SRC_TINT_LANG_BASE_TYPE_NODE_H_
+#define SRC_TINT_LANG_BASE_TYPE_NODE_H_
 
 #include "src/tint/core/castable.h"
 
@@ -34,4 +34,4 @@
 
 }  // namespace tint::type
 
-#endif  // SRC_TINT_TYPE_NODE_H_
+#endif  // SRC_TINT_LANG_BASE_TYPE_NODE_H_
diff --git a/src/tint/type/numeric_scalar.cc b/src/tint/lang/base/type/numeric_scalar.cc
similarity index 93%
rename from src/tint/type/numeric_scalar.cc
rename to src/tint/lang/base/type/numeric_scalar.cc
index 40f1e14..d81ac13 100644
--- a/src/tint/type/numeric_scalar.cc
+++ b/src/tint/lang/base/type/numeric_scalar.cc
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/type/numeric_scalar.h"
+#include "src/tint/lang/base/type/numeric_scalar.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::type::NumericScalar);
 
diff --git a/src/tint/type/numeric_scalar.h b/src/tint/lang/base/type/numeric_scalar.h
similarity index 84%
rename from src/tint/type/numeric_scalar.h
rename to src/tint/lang/base/type/numeric_scalar.h
index 4772cdc..f27ba70 100644
--- a/src/tint/type/numeric_scalar.h
+++ b/src/tint/lang/base/type/numeric_scalar.h
@@ -12,10 +12,10 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_TYPE_NUMERIC_SCALAR_H_
-#define SRC_TINT_TYPE_NUMERIC_SCALAR_H_
+#ifndef SRC_TINT_LANG_BASE_TYPE_NUMERIC_SCALAR_H_
+#define SRC_TINT_LANG_BASE_TYPE_NUMERIC_SCALAR_H_
 
-#include "src/tint/type/scalar.h"
+#include "src/tint/lang/base/type/scalar.h"
 
 namespace tint::type {
 
@@ -35,4 +35,4 @@
 
 }  // namespace tint::type
 
-#endif  // SRC_TINT_TYPE_NUMERIC_SCALAR_H_
+#endif  // SRC_TINT_LANG_BASE_TYPE_NUMERIC_SCALAR_H_
diff --git a/src/tint/type/pointer.cc b/src/tint/lang/base/type/pointer.cc
similarity index 93%
rename from src/tint/type/pointer.cc
rename to src/tint/lang/base/type/pointer.cc
index f9388ba..61fb11c 100644
--- a/src/tint/type/pointer.cc
+++ b/src/tint/lang/base/type/pointer.cc
@@ -12,14 +12,14 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/type/pointer.h"
+#include "src/tint/lang/base/type/pointer.h"
 
 #include "src/tint/core/diagnostic/diagnostic.h"
 #include "src/tint/core/hash.h"
 #include "src/tint/core/string_stream.h"
 #include "src/tint/debug.h"
-#include "src/tint/type/manager.h"
-#include "src/tint/type/reference.h"
+#include "src/tint/lang/base/type/manager.h"
+#include "src/tint/lang/base/type/reference.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::type::Pointer);
 
diff --git a/src/tint/type/pointer.h b/src/tint/lang/base/type/pointer.h
similarity index 92%
rename from src/tint/type/pointer.h
rename to src/tint/lang/base/type/pointer.h
index 83c2e85..0fc781c 100644
--- a/src/tint/type/pointer.h
+++ b/src/tint/lang/base/type/pointer.h
@@ -12,14 +12,14 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_TYPE_POINTER_H_
-#define SRC_TINT_TYPE_POINTER_H_
+#ifndef SRC_TINT_LANG_BASE_TYPE_POINTER_H_
+#define SRC_TINT_LANG_BASE_TYPE_POINTER_H_
 
 #include <string>
 
 #include "src/tint/lang/base/builtin/access.h"
 #include "src/tint/lang/base/builtin/address_space.h"
-#include "src/tint/type/type.h"
+#include "src/tint/lang/base/type/type.h"
 
 namespace tint::type {
 
@@ -64,4 +64,4 @@
 
 }  // namespace tint::type
 
-#endif  // SRC_TINT_TYPE_POINTER_H_
+#endif  // SRC_TINT_LANG_BASE_TYPE_POINTER_H_
diff --git a/src/tint/type/pointer_test.cc b/src/tint/lang/base/type/pointer_test.cc
similarity index 97%
rename from src/tint/type/pointer_test.cc
rename to src/tint/lang/base/type/pointer_test.cc
index 73c7cb3..8a82007 100644
--- a/src/tint/type/pointer_test.cc
+++ b/src/tint/lang/base/type/pointer_test.cc
@@ -13,8 +13,8 @@
 // limitations under the License.
 
 #include "src/tint/lang/base/builtin/address_space.h"
-#include "src/tint/type/test_helper.h"
-#include "src/tint/type/texture.h"
+#include "src/tint/lang/base/type/test_helper.h"
+#include "src/tint/lang/base/type/texture.h"
 
 namespace tint::type {
 namespace {
diff --git a/src/tint/type/reference.cc b/src/tint/lang/base/type/reference.cc
similarity index 95%
rename from src/tint/type/reference.cc
rename to src/tint/lang/base/type/reference.cc
index c279788..3a60265 100644
--- a/src/tint/type/reference.cc
+++ b/src/tint/lang/base/type/reference.cc
@@ -12,13 +12,13 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/type/reference.h"
+#include "src/tint/lang/base/type/reference.h"
 
 #include "src/tint/core/diagnostic/diagnostic.h"
 #include "src/tint/core/hash.h"
 #include "src/tint/core/string_stream.h"
 #include "src/tint/debug.h"
-#include "src/tint/type/manager.h"
+#include "src/tint/lang/base/type/manager.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::type::Reference);
 
diff --git a/src/tint/type/reference.h b/src/tint/lang/base/type/reference.h
similarity index 91%
rename from src/tint/type/reference.h
rename to src/tint/lang/base/type/reference.h
index 59c0d0d..7fac3bf 100644
--- a/src/tint/type/reference.h
+++ b/src/tint/lang/base/type/reference.h
@@ -12,14 +12,14 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_TYPE_REFERENCE_H_
-#define SRC_TINT_TYPE_REFERENCE_H_
+#ifndef SRC_TINT_LANG_BASE_TYPE_REFERENCE_H_
+#define SRC_TINT_LANG_BASE_TYPE_REFERENCE_H_
 
 #include <string>
 
 #include "src/tint/lang/base/builtin/access.h"
 #include "src/tint/lang/base/builtin/address_space.h"
-#include "src/tint/type/type.h"
+#include "src/tint/lang/base/type/type.h"
 
 namespace tint::type {
 
@@ -64,4 +64,4 @@
 
 }  // namespace tint::type
 
-#endif  // SRC_TINT_TYPE_REFERENCE_H_
+#endif  // SRC_TINT_LANG_BASE_TYPE_REFERENCE_H_
diff --git a/src/tint/type/reference_test.cc b/src/tint/lang/base/type/reference_test.cc
similarity index 97%
rename from src/tint/type/reference_test.cc
rename to src/tint/lang/base/type/reference_test.cc
index b08008a..89947d7 100644
--- a/src/tint/type/reference_test.cc
+++ b/src/tint/lang/base/type/reference_test.cc
@@ -12,9 +12,9 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/type/reference.h"
+#include "src/tint/lang/base/type/reference.h"
 #include "src/tint/lang/base/builtin/address_space.h"
-#include "src/tint/type/test_helper.h"
+#include "src/tint/lang/base/type/test_helper.h"
 
 namespace tint::type {
 namespace {
diff --git a/src/tint/type/sampled_texture.cc b/src/tint/lang/base/type/sampled_texture.cc
similarity index 91%
rename from src/tint/type/sampled_texture.cc
rename to src/tint/lang/base/type/sampled_texture.cc
index a3de836..a872224 100644
--- a/src/tint/type/sampled_texture.cc
+++ b/src/tint/lang/base/type/sampled_texture.cc
@@ -12,14 +12,14 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/type/sampled_texture.h"
+#include "src/tint/lang/base/type/sampled_texture.h"
 
 #include "src/tint/core/diagnostic/diagnostic.h"
 #include "src/tint/core/hash.h"
 #include "src/tint/core/string_stream.h"
 #include "src/tint/debug.h"
-#include "src/tint/type/manager.h"
-#include "src/tint/type/texture_dimension.h"
+#include "src/tint/lang/base/type/manager.h"
+#include "src/tint/lang/base/type/texture_dimension.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::type::SampledTexture);
 
diff --git a/src/tint/type/sampled_texture.h b/src/tint/lang/base/type/sampled_texture.h
similarity index 86%
rename from src/tint/type/sampled_texture.h
rename to src/tint/lang/base/type/sampled_texture.h
index 346741f..c5f478a 100644
--- a/src/tint/type/sampled_texture.h
+++ b/src/tint/lang/base/type/sampled_texture.h
@@ -12,13 +12,13 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_TYPE_SAMPLED_TEXTURE_H_
-#define SRC_TINT_TYPE_SAMPLED_TEXTURE_H_
+#ifndef SRC_TINT_LANG_BASE_TYPE_SAMPLED_TEXTURE_H_
+#define SRC_TINT_LANG_BASE_TYPE_SAMPLED_TEXTURE_H_
 
 #include <string>
 
-#include "src/tint/type/texture.h"
-#include "src/tint/type/texture_dimension.h"
+#include "src/tint/lang/base/type/texture.h"
+#include "src/tint/lang/base/type/texture_dimension.h"
 
 namespace tint::type {
 
@@ -54,4 +54,4 @@
 
 }  // namespace tint::type
 
-#endif  // SRC_TINT_TYPE_SAMPLED_TEXTURE_H_
+#endif  // SRC_TINT_LANG_BASE_TYPE_SAMPLED_TEXTURE_H_
diff --git a/src/tint/type/sampled_texture_test.cc b/src/tint/lang/base/type/sampled_texture_test.cc
similarity index 90%
rename from src/tint/type/sampled_texture_test.cc
rename to src/tint/lang/base/type/sampled_texture_test.cc
index bfe2354..880b50e 100644
--- a/src/tint/type/sampled_texture_test.cc
+++ b/src/tint/lang/base/type/sampled_texture_test.cc
@@ -12,13 +12,13 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/type/sampled_texture.h"
+#include "src/tint/lang/base/type/sampled_texture.h"
 
-#include "src/tint/type/depth_texture.h"
-#include "src/tint/type/external_texture.h"
-#include "src/tint/type/storage_texture.h"
-#include "src/tint/type/test_helper.h"
-#include "src/tint/type/texture_dimension.h"
+#include "src/tint/lang/base/type/depth_texture.h"
+#include "src/tint/lang/base/type/external_texture.h"
+#include "src/tint/lang/base/type/storage_texture.h"
+#include "src/tint/lang/base/type/test_helper.h"
+#include "src/tint/lang/base/type/texture_dimension.h"
 
 namespace tint::type {
 namespace {
diff --git a/src/tint/type/sampler.cc b/src/tint/lang/base/type/sampler.cc
similarity index 93%
rename from src/tint/type/sampler.cc
rename to src/tint/lang/base/type/sampler.cc
index 6fde539..361ff0a 100644
--- a/src/tint/type/sampler.cc
+++ b/src/tint/lang/base/type/sampler.cc
@@ -12,10 +12,10 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/type/sampler.h"
+#include "src/tint/lang/base/type/sampler.h"
 
 #include "src/tint/core/hash.h"
-#include "src/tint/type/manager.h"
+#include "src/tint/lang/base/type/manager.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::type::Sampler);
 
diff --git a/src/tint/type/sampler.h b/src/tint/lang/base/type/sampler.h
similarity index 87%
rename from src/tint/type/sampler.h
rename to src/tint/lang/base/type/sampler.h
index d9f7286..41118b0 100644
--- a/src/tint/type/sampler.h
+++ b/src/tint/lang/base/type/sampler.h
@@ -12,13 +12,13 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_TYPE_SAMPLER_H_
-#define SRC_TINT_TYPE_SAMPLER_H_
+#ifndef SRC_TINT_LANG_BASE_TYPE_SAMPLER_H_
+#define SRC_TINT_LANG_BASE_TYPE_SAMPLER_H_
 
 #include <string>
 
-#include "src/tint/type/sampler_kind.h"
-#include "src/tint/type/type.h"
+#include "src/tint/lang/base/type/sampler_kind.h"
+#include "src/tint/lang/base/type/type.h"
 
 namespace tint::type {
 
@@ -56,4 +56,4 @@
 
 }  // namespace tint::type
 
-#endif  // SRC_TINT_TYPE_SAMPLER_H_
+#endif  // SRC_TINT_LANG_BASE_TYPE_SAMPLER_H_
diff --git a/src/tint/type/sampler_kind.cc b/src/tint/lang/base/type/sampler_kind.cc
similarity index 94%
rename from src/tint/type/sampler_kind.cc
rename to src/tint/lang/base/type/sampler_kind.cc
index 0076287..65ddb40 100644
--- a/src/tint/type/sampler_kind.cc
+++ b/src/tint/lang/base/type/sampler_kind.cc
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/type/sampler_kind.h"
+#include "src/tint/lang/base/type/sampler_kind.h"
 
 namespace tint::type {
 
diff --git a/src/tint/type/sampler_kind.h b/src/tint/lang/base/type/sampler_kind.h
similarity index 87%
rename from src/tint/type/sampler_kind.h
rename to src/tint/lang/base/type/sampler_kind.h
index 413cffd..7025509 100644
--- a/src/tint/type/sampler_kind.h
+++ b/src/tint/lang/base/type/sampler_kind.h
@@ -12,8 +12,8 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_TYPE_SAMPLER_KIND_H_
-#define SRC_TINT_TYPE_SAMPLER_KIND_H_
+#ifndef SRC_TINT_LANG_BASE_TYPE_SAMPLER_KIND_H_
+#define SRC_TINT_LANG_BASE_TYPE_SAMPLER_KIND_H_
 
 #include "src/tint/core/string_stream.h"
 
@@ -34,4 +34,4 @@
 
 }  // namespace tint::type
 
-#endif  // SRC_TINT_TYPE_SAMPLER_KIND_H_
+#endif  // SRC_TINT_LANG_BASE_TYPE_SAMPLER_KIND_H_
diff --git a/src/tint/type/sampler_test.cc b/src/tint/lang/base/type/sampler_test.cc
similarity index 93%
rename from src/tint/type/sampler_test.cc
rename to src/tint/lang/base/type/sampler_test.cc
index fd0b1d4..0896734 100644
--- a/src/tint/type/sampler_test.cc
+++ b/src/tint/lang/base/type/sampler_test.cc
@@ -12,9 +12,9 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/type/sampler.h"
-#include "src/tint/type/test_helper.h"
-#include "src/tint/type/texture.h"
+#include "src/tint/lang/base/type/sampler.h"
+#include "src/tint/lang/base/type/test_helper.h"
+#include "src/tint/lang/base/type/texture.h"
 
 namespace tint::type {
 namespace {
diff --git a/src/tint/type/scalar.cc b/src/tint/lang/base/type/scalar.cc
similarity index 95%
rename from src/tint/type/scalar.cc
rename to src/tint/lang/base/type/scalar.cc
index 8e8d4b3..88458b7 100644
--- a/src/tint/type/scalar.cc
+++ b/src/tint/lang/base/type/scalar.cc
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/type/scalar.h"
+#include "src/tint/lang/base/type/scalar.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::type::Scalar);
 
diff --git a/src/tint/type/scalar.h b/src/tint/lang/base/type/scalar.h
similarity index 87%
rename from src/tint/type/scalar.h
rename to src/tint/lang/base/type/scalar.h
index 5c1a1fc..019803d 100644
--- a/src/tint/type/scalar.h
+++ b/src/tint/lang/base/type/scalar.h
@@ -12,10 +12,10 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_TYPE_SCALAR_H_
-#define SRC_TINT_TYPE_SCALAR_H_
+#ifndef SRC_TINT_LANG_BASE_TYPE_SCALAR_H_
+#define SRC_TINT_LANG_BASE_TYPE_SCALAR_H_
 
-#include "src/tint/type/type.h"
+#include "src/tint/lang/base/type/type.h"
 
 namespace tint::type {
 
@@ -39,4 +39,4 @@
 
 }  // namespace tint::type
 
-#endif  // SRC_TINT_TYPE_SCALAR_H_
+#endif  // SRC_TINT_LANG_BASE_TYPE_SCALAR_H_
diff --git a/src/tint/type/storage_texture.cc b/src/tint/lang/base/type/storage_texture.cc
similarity index 92%
rename from src/tint/type/storage_texture.cc
rename to src/tint/lang/base/type/storage_texture.cc
index 968c2d3..96db0fd 100644
--- a/src/tint/type/storage_texture.cc
+++ b/src/tint/lang/base/type/storage_texture.cc
@@ -12,14 +12,14 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/type/storage_texture.h"
+#include "src/tint/lang/base/type/storage_texture.h"
 
 #include "src/tint/core/hash.h"
 #include "src/tint/core/string_stream.h"
-#include "src/tint/type/f32.h"
-#include "src/tint/type/i32.h"
-#include "src/tint/type/manager.h"
-#include "src/tint/type/u32.h"
+#include "src/tint/lang/base/type/f32.h"
+#include "src/tint/lang/base/type/i32.h"
+#include "src/tint/lang/base/type/manager.h"
+#include "src/tint/lang/base/type/u32.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::type::StorageTexture);
 
diff --git a/src/tint/type/storage_texture.h b/src/tint/lang/base/type/storage_texture.h
similarity index 90%
rename from src/tint/type/storage_texture.h
rename to src/tint/lang/base/type/storage_texture.h
index ac88b6e..ead02fa 100644
--- a/src/tint/type/storage_texture.h
+++ b/src/tint/lang/base/type/storage_texture.h
@@ -12,15 +12,15 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_TYPE_STORAGE_TEXTURE_H_
-#define SRC_TINT_TYPE_STORAGE_TEXTURE_H_
+#ifndef SRC_TINT_LANG_BASE_TYPE_STORAGE_TEXTURE_H_
+#define SRC_TINT_LANG_BASE_TYPE_STORAGE_TEXTURE_H_
 
 #include <string>
 
 #include "src/tint/lang/base/builtin/access.h"
 #include "src/tint/lang/base/builtin/texel_format.h"
-#include "src/tint/type/texture.h"
-#include "src/tint/type/texture_dimension.h"
+#include "src/tint/lang/base/type/texture.h"
+#include "src/tint/lang/base/type/texture_dimension.h"
 
 // Forward declarations
 namespace tint::type {
@@ -79,4 +79,4 @@
 
 }  // namespace tint::type
 
-#endif  // SRC_TINT_TYPE_STORAGE_TEXTURE_H_
+#endif  // SRC_TINT_LANG_BASE_TYPE_STORAGE_TEXTURE_H_
diff --git a/src/tint/type/storage_texture_test.cc b/src/tint/lang/base/type/storage_texture_test.cc
similarity index 94%
rename from src/tint/type/storage_texture_test.cc
rename to src/tint/lang/base/type/storage_texture_test.cc
index 1779a9f..f956be5 100644
--- a/src/tint/type/storage_texture_test.cc
+++ b/src/tint/lang/base/type/storage_texture_test.cc
@@ -12,13 +12,13 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/type/storage_texture.h"
+#include "src/tint/lang/base/type/storage_texture.h"
 
-#include "src/tint/type/depth_texture.h"
-#include "src/tint/type/external_texture.h"
-#include "src/tint/type/sampled_texture.h"
-#include "src/tint/type/test_helper.h"
-#include "src/tint/type/texture_dimension.h"
+#include "src/tint/lang/base/type/depth_texture.h"
+#include "src/tint/lang/base/type/external_texture.h"
+#include "src/tint/lang/base/type/sampled_texture.h"
+#include "src/tint/lang/base/type/test_helper.h"
+#include "src/tint/lang/base/type/texture_dimension.h"
 
 namespace tint::type {
 namespace {
diff --git a/src/tint/type/struct.cc b/src/tint/lang/base/type/struct.cc
similarity index 98%
rename from src/tint/type/struct.cc
rename to src/tint/lang/base/type/struct.cc
index ebd5279..bf72e4d 100644
--- a/src/tint/type/struct.cc
+++ b/src/tint/lang/base/type/struct.cc
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/type/struct.h"
+#include "src/tint/lang/base/type/struct.h"
 
 #include <cmath>
 #include <iomanip>
@@ -21,8 +21,8 @@
 
 #include "src/tint/core/hash.h"
 #include "src/tint/core/string_stream.h"
+#include "src/tint/lang/base/type/manager.h"
 #include "src/tint/symbol_table.h"
-#include "src/tint/type/manager.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::type::Struct);
 TINT_INSTANTIATE_TYPEINFO(tint::type::StructMember);
diff --git a/src/tint/type/struct.h b/src/tint/lang/base/type/struct.h
similarity index 97%
rename from src/tint/type/struct.h
rename to src/tint/lang/base/type/struct.h
index 628f9db..966ef24 100644
--- a/src/tint/type/struct.h
+++ b/src/tint/lang/base/type/struct.h
@@ -12,8 +12,8 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_TYPE_STRUCT_H_
-#define SRC_TINT_TYPE_STRUCT_H_
+#ifndef SRC_TINT_LANG_BASE_TYPE_STRUCT_H_
+#define SRC_TINT_LANG_BASE_TYPE_STRUCT_H_
 
 #include <cstdint>
 #include <optional>
@@ -25,9 +25,9 @@
 #include "src/tint/lang/base/builtin/address_space.h"
 #include "src/tint/lang/base/builtin/builtin_value.h"
 #include "src/tint/lang/base/builtin/interpolation.h"
+#include "src/tint/lang/base/type/node.h"
+#include "src/tint/lang/base/type/type.h"
 #include "src/tint/symbol.h"
-#include "src/tint/type/node.h"
-#include "src/tint/type/type.h"
 
 // Forward declarations
 namespace tint::type {
@@ -267,4 +267,4 @@
 
 }  // namespace tint::type
 
-#endif  // SRC_TINT_TYPE_STRUCT_H_
+#endif  // SRC_TINT_LANG_BASE_TYPE_STRUCT_H_
diff --git a/src/tint/type/struct_test.cc b/src/tint/lang/base/type/struct_test.cc
similarity index 98%
rename from src/tint/type/struct_test.cc
rename to src/tint/lang/base/type/struct_test.cc
index bb88740..7f3b95d 100644
--- a/src/tint/type/struct_test.cc
+++ b/src/tint/lang/base/type/struct_test.cc
@@ -12,9 +12,9 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/type/struct.h"
-#include "src/tint/type/test_helper.h"
-#include "src/tint/type/texture.h"
+#include "src/tint/lang/base/type/struct.h"
+#include "src/tint/lang/base/type/test_helper.h"
+#include "src/tint/lang/base/type/texture.h"
 
 namespace tint::type {
 namespace {
diff --git a/src/tint/type/test_helper.h b/src/tint/lang/base/type/test_helper.h
similarity index 93%
rename from src/tint/type/test_helper.h
rename to src/tint/lang/base/type/test_helper.h
index c494024..19bb8bf 100644
--- a/src/tint/type/test_helper.h
+++ b/src/tint/lang/base/type/test_helper.h
@@ -12,8 +12,8 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_TYPE_TEST_HELPER_H_
-#define SRC_TINT_TYPE_TEST_HELPER_H_
+#ifndef SRC_TINT_LANG_BASE_TYPE_TEST_HELPER_H_
+#define SRC_TINT_LANG_BASE_TYPE_TEST_HELPER_H_
 
 #include <utility>
 
@@ -56,4 +56,4 @@
         }                                                                                       \
     } while (false)
 
-#endif  // SRC_TINT_TYPE_TEST_HELPER_H_
+#endif  // SRC_TINT_LANG_BASE_TYPE_TEST_HELPER_H_
diff --git a/src/tint/type/texture.cc b/src/tint/lang/base/type/texture.cc
similarity index 97%
rename from src/tint/type/texture.cc
rename to src/tint/lang/base/type/texture.cc
index 357af56..170f93e 100644
--- a/src/tint/type/texture.cc
+++ b/src/tint/lang/base/type/texture.cc
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/type/texture.h"
+#include "src/tint/lang/base/type/texture.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::type::Texture);
 
diff --git a/src/tint/type/texture.h b/src/tint/lang/base/type/texture.h
similarity index 88%
rename from src/tint/type/texture.h
rename to src/tint/lang/base/type/texture.h
index db99ae5..a721b44 100644
--- a/src/tint/type/texture.h
+++ b/src/tint/lang/base/type/texture.h
@@ -12,11 +12,11 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_TYPE_TEXTURE_H_
-#define SRC_TINT_TYPE_TEXTURE_H_
+#ifndef SRC_TINT_LANG_BASE_TYPE_TEXTURE_H_
+#define SRC_TINT_LANG_BASE_TYPE_TEXTURE_H_
 
-#include "src/tint/type/texture_dimension.h"
-#include "src/tint/type/type.h"
+#include "src/tint/lang/base/type/texture_dimension.h"
+#include "src/tint/lang/base/type/type.h"
 
 namespace tint::type {
 
@@ -57,4 +57,4 @@
 
 }  // namespace tint::type
 
-#endif  // SRC_TINT_TYPE_TEXTURE_H_
+#endif  // SRC_TINT_LANG_BASE_TYPE_TEXTURE_H_
diff --git a/src/tint/type/texture_dimension.cc b/src/tint/lang/base/type/texture_dimension.cc
similarity index 95%
rename from src/tint/type/texture_dimension.cc
rename to src/tint/lang/base/type/texture_dimension.cc
index c450516..8d5687a 100644
--- a/src/tint/type/texture_dimension.cc
+++ b/src/tint/lang/base/type/texture_dimension.cc
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/type/texture_dimension.h"
+#include "src/tint/lang/base/type/texture_dimension.h"
 
 namespace tint::type {
 
diff --git a/src/tint/type/texture_dimension.h b/src/tint/lang/base/type/texture_dimension.h
similarity index 88%
rename from src/tint/type/texture_dimension.h
rename to src/tint/lang/base/type/texture_dimension.h
index 5b41f54..c49f23f 100644
--- a/src/tint/type/texture_dimension.h
+++ b/src/tint/lang/base/type/texture_dimension.h
@@ -12,8 +12,8 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_TYPE_TEXTURE_DIMENSION_H_
-#define SRC_TINT_TYPE_TEXTURE_DIMENSION_H_
+#ifndef SRC_TINT_LANG_BASE_TYPE_TEXTURE_DIMENSION_H_
+#define SRC_TINT_LANG_BASE_TYPE_TEXTURE_DIMENSION_H_
 
 #include "src/tint/core/string_stream.h"
 
@@ -44,4 +44,4 @@
 
 }  // namespace tint::type
 
-#endif  // SRC_TINT_TYPE_TEXTURE_DIMENSION_H_
+#endif  // SRC_TINT_LANG_BASE_TYPE_TEXTURE_DIMENSION_H_
diff --git a/src/tint/type/texture_test.cc b/src/tint/lang/base/type/texture_test.cc
similarity index 91%
rename from src/tint/type/texture_test.cc
rename to src/tint/lang/base/type/texture_test.cc
index 607fd4a..1de30be 100644
--- a/src/tint/type/texture_test.cc
+++ b/src/tint/lang/base/type/texture_test.cc
@@ -12,10 +12,10 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/type/texture.h"
+#include "src/tint/lang/base/type/texture.h"
 
-#include "src/tint/type/sampled_texture.h"
-#include "src/tint/type/test_helper.h"
+#include "src/tint/lang/base/type/sampled_texture.h"
+#include "src/tint/lang/base/type/test_helper.h"
 
 namespace tint::type {
 namespace {
diff --git a/src/tint/type/type.cc b/src/tint/lang/base/type/type.cc
similarity index 91%
rename from src/tint/type/type.cc
rename to src/tint/lang/base/type/type.cc
index 47f8bb4..f58c523 100644
--- a/src/tint/type/type.cc
+++ b/src/tint/lang/base/type/type.cc
@@ -12,24 +12,24 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/type/type.h"
+#include "src/tint/lang/base/type/type.h"
 
+#include "src/tint/lang/base/type/abstract_float.h"
+#include "src/tint/lang/base/type/abstract_int.h"
+#include "src/tint/lang/base/type/array.h"
+#include "src/tint/lang/base/type/bool.h"
+#include "src/tint/lang/base/type/f16.h"
+#include "src/tint/lang/base/type/f32.h"
+#include "src/tint/lang/base/type/i32.h"
+#include "src/tint/lang/base/type/matrix.h"
+#include "src/tint/lang/base/type/pointer.h"
+#include "src/tint/lang/base/type/reference.h"
+#include "src/tint/lang/base/type/sampler.h"
+#include "src/tint/lang/base/type/struct.h"
+#include "src/tint/lang/base/type/texture.h"
+#include "src/tint/lang/base/type/u32.h"
+#include "src/tint/lang/base/type/vector.h"
 #include "src/tint/switch.h"
-#include "src/tint/type/abstract_float.h"
-#include "src/tint/type/abstract_int.h"
-#include "src/tint/type/array.h"
-#include "src/tint/type/bool.h"
-#include "src/tint/type/f16.h"
-#include "src/tint/type/f32.h"
-#include "src/tint/type/i32.h"
-#include "src/tint/type/matrix.h"
-#include "src/tint/type/pointer.h"
-#include "src/tint/type/reference.h"
-#include "src/tint/type/sampler.h"
-#include "src/tint/type/struct.h"
-#include "src/tint/type/texture.h"
-#include "src/tint/type/u32.h"
-#include "src/tint/type/vector.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::type::Type);
 
diff --git a/src/tint/type/type.h b/src/tint/lang/base/type/type.h
similarity index 97%
rename from src/tint/type/type.h
rename to src/tint/lang/base/type/type.h
index ef79def..00ed870 100644
--- a/src/tint/type/type.h
+++ b/src/tint/lang/base/type/type.h
@@ -12,16 +12,16 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_TYPE_TYPE_H_
-#define SRC_TINT_TYPE_TYPE_H_
+#ifndef SRC_TINT_LANG_BASE_TYPE_TYPE_H_
+#define SRC_TINT_LANG_BASE_TYPE_TYPE_H_
 
 #include <functional>
 #include <string>
 
 #include "src/tint/core/enum_set.h"
 #include "src/tint/core/vector.h"
-#include "src/tint/type/clone_context.h"
-#include "src/tint/type/unique_node.h"
+#include "src/tint/lang/base/type/clone_context.h"
+#include "src/tint/lang/base/type/unique_node.h"
 
 // Forward declarations
 namespace tint {
@@ -258,4 +258,4 @@
 
 }  // namespace std
 
-#endif  // SRC_TINT_TYPE_TYPE_H_
+#endif  // SRC_TINT_LANG_BASE_TYPE_TYPE_H_
diff --git a/src/tint/type/type_test.cc b/src/tint/lang/base/type/type_test.cc
similarity index 98%
rename from src/tint/type/type_test.cc
rename to src/tint/lang/base/type/type_test.cc
index f260675..c142583 100644
--- a/src/tint/type/type_test.cc
+++ b/src/tint/lang/base/type/type_test.cc
@@ -12,12 +12,12 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/type/abstract_float.h"
-#include "src/tint/type/abstract_int.h"
-#include "src/tint/type/array_count.h"
-#include "src/tint/type/f16.h"
-#include "src/tint/type/reference.h"
-#include "src/tint/type/test_helper.h"
+#include "src/tint/lang/base/type/abstract_float.h"
+#include "src/tint/lang/base/type/abstract_int.h"
+#include "src/tint/lang/base/type/array_count.h"
+#include "src/tint/lang/base/type/f16.h"
+#include "src/tint/lang/base/type/reference.h"
+#include "src/tint/lang/base/type/test_helper.h"
 
 namespace tint::type {
 namespace {
diff --git a/src/tint/type/u32.cc b/src/tint/lang/base/type/u32.cc
similarity index 93%
rename from src/tint/type/u32.cc
rename to src/tint/lang/base/type/u32.cc
index 79cd0d4..a0f379d 100644
--- a/src/tint/type/u32.cc
+++ b/src/tint/lang/base/type/u32.cc
@@ -12,9 +12,9 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/type/u32.h"
+#include "src/tint/lang/base/type/u32.h"
 
-#include "src/tint/type/manager.h"
+#include "src/tint/lang/base/type/manager.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::type::U32);
 
diff --git a/src/tint/type/u32.h b/src/tint/lang/base/type/u32.h
similarity index 88%
rename from src/tint/type/u32.h
rename to src/tint/lang/base/type/u32.h
index 67ab20e..c090295 100644
--- a/src/tint/type/u32.h
+++ b/src/tint/lang/base/type/u32.h
@@ -12,12 +12,12 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_TYPE_U32_H_
-#define SRC_TINT_TYPE_U32_H_
+#ifndef SRC_TINT_LANG_BASE_TYPE_U32_H_
+#define SRC_TINT_LANG_BASE_TYPE_U32_H_
 
 #include <string>
 
-#include "src/tint/type/numeric_scalar.h"
+#include "src/tint/lang/base/type/numeric_scalar.h"
 
 namespace tint::type {
 
@@ -47,4 +47,4 @@
 
 }  // namespace tint::type
 
-#endif  // SRC_TINT_TYPE_U32_H_
+#endif  // SRC_TINT_LANG_BASE_TYPE_U32_H_
diff --git a/src/tint/type/u32_test.cc b/src/tint/lang/base/type/u32_test.cc
similarity index 93%
rename from src/tint/type/u32_test.cc
rename to src/tint/lang/base/type/u32_test.cc
index 9c64dcb..094cdbe 100644
--- a/src/tint/type/u32_test.cc
+++ b/src/tint/lang/base/type/u32_test.cc
@@ -12,8 +12,8 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/type/test_helper.h"
-#include "src/tint/type/texture.h"
+#include "src/tint/lang/base/type/test_helper.h"
+#include "src/tint/lang/base/type/texture.h"
 
 namespace tint::type {
 namespace {
diff --git a/src/tint/type/unique_node.cc b/src/tint/lang/base/type/unique_node.cc
similarity index 93%
rename from src/tint/type/unique_node.cc
rename to src/tint/lang/base/type/unique_node.cc
index 280c98b..2ac8f6e 100644
--- a/src/tint/type/unique_node.cc
+++ b/src/tint/lang/base/type/unique_node.cc
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/type/unique_node.h"
+#include "src/tint/lang/base/type/unique_node.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::type::UniqueNode);
 
diff --git a/src/tint/type/unique_node.h b/src/tint/lang/base/type/unique_node.h
similarity index 92%
rename from src/tint/type/unique_node.h
rename to src/tint/lang/base/type/unique_node.h
index 0e642df..a58c37e 100644
--- a/src/tint/type/unique_node.h
+++ b/src/tint/lang/base/type/unique_node.h
@@ -12,12 +12,12 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_TYPE_UNIQUE_NODE_H_
-#define SRC_TINT_TYPE_UNIQUE_NODE_H_
+#ifndef SRC_TINT_LANG_BASE_TYPE_UNIQUE_NODE_H_
+#define SRC_TINT_LANG_BASE_TYPE_UNIQUE_NODE_H_
 
 #include <functional>
 
-#include "src/tint/type/node.h"
+#include "src/tint/lang/base/type/node.h"
 
 namespace tint::type {
 
@@ -67,4 +67,4 @@
 
 }  // namespace std
 
-#endif  // SRC_TINT_TYPE_UNIQUE_NODE_H_
+#endif  // SRC_TINT_LANG_BASE_TYPE_UNIQUE_NODE_H_
diff --git a/src/tint/type/vector.cc b/src/tint/lang/base/type/vector.cc
similarity index 96%
rename from src/tint/type/vector.cc
rename to src/tint/lang/base/type/vector.cc
index 1fd19b1..0f24a1e 100644
--- a/src/tint/type/vector.cc
+++ b/src/tint/lang/base/type/vector.cc
@@ -12,13 +12,13 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/type/vector.h"
+#include "src/tint/lang/base/type/vector.h"
 
 #include "src/tint/core/diagnostic/diagnostic.h"
 #include "src/tint/core/hash.h"
 #include "src/tint/core/string_stream.h"
 #include "src/tint/debug.h"
-#include "src/tint/type/manager.h"
+#include "src/tint/lang/base/type/manager.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::type::Vector);
 
diff --git a/src/tint/type/vector.h b/src/tint/lang/base/type/vector.h
similarity index 93%
rename from src/tint/type/vector.h
rename to src/tint/lang/base/type/vector.h
index e83d917..44e6ef5 100644
--- a/src/tint/type/vector.h
+++ b/src/tint/lang/base/type/vector.h
@@ -12,12 +12,12 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_TYPE_VECTOR_H_
-#define SRC_TINT_TYPE_VECTOR_H_
+#ifndef SRC_TINT_LANG_BASE_TYPE_VECTOR_H_
+#define SRC_TINT_LANG_BASE_TYPE_VECTOR_H_
 
 #include <string>
 
-#include "src/tint/type/type.h"
+#include "src/tint/lang/base/type/type.h"
 
 namespace tint::type {
 
@@ -83,4 +83,4 @@
 
 }  // namespace tint::type
 
-#endif  // SRC_TINT_TYPE_VECTOR_H_
+#endif  // SRC_TINT_LANG_BASE_TYPE_VECTOR_H_
diff --git a/src/tint/type/vector_test.cc b/src/tint/lang/base/type/vector_test.cc
similarity index 96%
rename from src/tint/type/vector_test.cc
rename to src/tint/lang/base/type/vector_test.cc
index 7d40be4..a4cb51b 100644
--- a/src/tint/type/vector_test.cc
+++ b/src/tint/lang/base/type/vector_test.cc
@@ -12,8 +12,8 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/type/test_helper.h"
-#include "src/tint/type/texture.h"
+#include "src/tint/lang/base/type/test_helper.h"
+#include "src/tint/lang/base/type/texture.h"
 
 namespace tint::type {
 namespace {
diff --git a/src/tint/type/void.cc b/src/tint/lang/base/type/void.cc
similarity index 92%
rename from src/tint/type/void.cc
rename to src/tint/lang/base/type/void.cc
index 2b8ddf7..cd32bb8 100644
--- a/src/tint/type/void.cc
+++ b/src/tint/lang/base/type/void.cc
@@ -12,9 +12,9 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/type/void.h"
+#include "src/tint/lang/base/type/void.h"
 
-#include "src/tint/type/manager.h"
+#include "src/tint/lang/base/type/manager.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::type::Void);
 
diff --git a/src/tint/type/void.h b/src/tint/lang/base/type/void.h
similarity index 88%
rename from src/tint/type/void.h
rename to src/tint/lang/base/type/void.h
index 0215c08..d996d6d 100644
--- a/src/tint/type/void.h
+++ b/src/tint/lang/base/type/void.h
@@ -12,12 +12,12 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_TYPE_VOID_H_
-#define SRC_TINT_TYPE_VOID_H_
+#ifndef SRC_TINT_LANG_BASE_TYPE_VOID_H_
+#define SRC_TINT_LANG_BASE_TYPE_VOID_H_
 
 #include <string>
 
-#include "src/tint/type/type.h"
+#include "src/tint/lang/base/type/type.h"
 
 namespace tint::type {
 
@@ -45,4 +45,4 @@
 
 }  // namespace tint::type
 
-#endif  // SRC_TINT_TYPE_VOID_H_
+#endif  // SRC_TINT_LANG_BASE_TYPE_VOID_H_
diff --git a/src/tint/lang/glsl/ast_writer/generator_impl.cc b/src/tint/lang/glsl/ast_writer/generator_impl.cc
index 0498769..b50edb1 100644
--- a/src/tint/lang/glsl/ast_writer/generator_impl.cc
+++ b/src/tint/lang/glsl/ast_writer/generator_impl.cc
@@ -30,6 +30,14 @@
 #include "src/tint/debug.h"
 #include "src/tint/lang/base/constant/splat.h"
 #include "src/tint/lang/base/constant/value.h"
+#include "src/tint/lang/base/type/array.h"
+#include "src/tint/lang/base/type/atomic.h"
+#include "src/tint/lang/base/type/depth_multisampled_texture.h"
+#include "src/tint/lang/base/type/depth_texture.h"
+#include "src/tint/lang/base/type/multisampled_texture.h"
+#include "src/tint/lang/base/type/sampled_texture.h"
+#include "src/tint/lang/base/type/storage_texture.h"
+#include "src/tint/lang/base/type/texture_dimension.h"
 #include "src/tint/lang/wgsl/ast/call_statement.h"
 #include "src/tint/lang/wgsl/ast/id_attribute.h"
 #include "src/tint/lang/wgsl/ast/internal_attribute.h"
@@ -73,14 +81,6 @@
 #include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/switch.h"
 #include "src/tint/transform/manager.h"
-#include "src/tint/type/array.h"
-#include "src/tint/type/atomic.h"
-#include "src/tint/type/depth_multisampled_texture.h"
-#include "src/tint/type/depth_texture.h"
-#include "src/tint/type/multisampled_texture.h"
-#include "src/tint/type/sampled_texture.h"
-#include "src/tint/type/storage_texture.h"
-#include "src/tint/type/texture_dimension.h"
 #include "src/tint/writer/append_vector.h"
 #include "src/tint/writer/float_to_string.h"
 
diff --git a/src/tint/lang/glsl/ast_writer/generator_impl_type_test.cc b/src/tint/lang/glsl/ast_writer/generator_impl_type_test.cc
index ebb8828..9594dd0 100644
--- a/src/tint/lang/glsl/ast_writer/generator_impl_type_test.cc
+++ b/src/tint/lang/glsl/ast_writer/generator_impl_type_test.cc
@@ -13,15 +13,15 @@
 // limitations under the License.
 
 #include "src/tint/core/string_stream.h"
+#include "src/tint/lang/base/type/depth_texture.h"
+#include "src/tint/lang/base/type/multisampled_texture.h"
+#include "src/tint/lang/base/type/sampled_texture.h"
+#include "src/tint/lang/base/type/sampler.h"
+#include "src/tint/lang/base/type/storage_texture.h"
+#include "src/tint/lang/base/type/texture_dimension.h"
 #include "src/tint/lang/glsl/ast_writer/test_helper.h"
 #include "src/tint/lang/wgsl/ast/call_statement.h"
 #include "src/tint/lang/wgsl/ast/stage_attribute.h"
-#include "src/tint/type/depth_texture.h"
-#include "src/tint/type/multisampled_texture.h"
-#include "src/tint/type/sampled_texture.h"
-#include "src/tint/type/sampler.h"
-#include "src/tint/type/storage_texture.h"
-#include "src/tint/type/texture_dimension.h"
 
 #include "gmock/gmock.h"
 
diff --git a/src/tint/lang/hlsl/ast_writer/generator_impl.cc b/src/tint/lang/hlsl/ast_writer/generator_impl.cc
index 9f7851e..c8114ef 100644
--- a/src/tint/lang/hlsl/ast_writer/generator_impl.cc
+++ b/src/tint/lang/hlsl/ast_writer/generator_impl.cc
@@ -31,6 +31,14 @@
 #include "src/tint/debug.h"
 #include "src/tint/lang/base/constant/splat.h"
 #include "src/tint/lang/base/constant/value.h"
+#include "src/tint/lang/base/type/array.h"
+#include "src/tint/lang/base/type/atomic.h"
+#include "src/tint/lang/base/type/depth_multisampled_texture.h"
+#include "src/tint/lang/base/type/depth_texture.h"
+#include "src/tint/lang/base/type/multisampled_texture.h"
+#include "src/tint/lang/base/type/sampled_texture.h"
+#include "src/tint/lang/base/type/storage_texture.h"
+#include "src/tint/lang/base/type/texture_dimension.h"
 #include "src/tint/lang/wgsl/ast/call_statement.h"
 #include "src/tint/lang/wgsl/ast/id_attribute.h"
 #include "src/tint/lang/wgsl/ast/internal_attribute.h"
@@ -73,14 +81,6 @@
 #include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/switch.h"
 #include "src/tint/transform/manager.h"
-#include "src/tint/type/array.h"
-#include "src/tint/type/atomic.h"
-#include "src/tint/type/depth_multisampled_texture.h"
-#include "src/tint/type/depth_texture.h"
-#include "src/tint/type/multisampled_texture.h"
-#include "src/tint/type/sampled_texture.h"
-#include "src/tint/type/storage_texture.h"
-#include "src/tint/type/texture_dimension.h"
 #include "src/tint/writer/append_vector.h"
 #include "src/tint/writer/check_supported_extensions.h"
 #include "src/tint/writer/float_to_string.h"
diff --git a/src/tint/lang/hlsl/ast_writer/generator_impl_type_test.cc b/src/tint/lang/hlsl/ast_writer/generator_impl_type_test.cc
index e40aa40..c04ba2a 100644
--- a/src/tint/lang/hlsl/ast_writer/generator_impl_type_test.cc
+++ b/src/tint/lang/hlsl/ast_writer/generator_impl_type_test.cc
@@ -14,15 +14,15 @@
 
 #include "gmock/gmock.h"
 #include "src/tint/core/string_stream.h"
+#include "src/tint/lang/base/type/depth_texture.h"
+#include "src/tint/lang/base/type/multisampled_texture.h"
+#include "src/tint/lang/base/type/sampled_texture.h"
+#include "src/tint/lang/base/type/sampler.h"
+#include "src/tint/lang/base/type/storage_texture.h"
+#include "src/tint/lang/base/type/texture_dimension.h"
 #include "src/tint/lang/hlsl/ast_writer/test_helper.h"
 #include "src/tint/lang/wgsl/ast/call_statement.h"
 #include "src/tint/lang/wgsl/ast/stage_attribute.h"
-#include "src/tint/type/depth_texture.h"
-#include "src/tint/type/multisampled_texture.h"
-#include "src/tint/type/sampled_texture.h"
-#include "src/tint/type/sampler.h"
-#include "src/tint/type/storage_texture.h"
-#include "src/tint/type/texture_dimension.h"
 
 using ::testing::HasSubstr;
 
diff --git a/src/tint/lang/msl/ast_writer/generator_impl.cc b/src/tint/lang/msl/ast_writer/generator_impl.cc
index 4c41bc2..2a436f4 100644
--- a/src/tint/lang/msl/ast_writer/generator_impl.cc
+++ b/src/tint/lang/msl/ast_writer/generator_impl.cc
@@ -27,6 +27,24 @@
 #include "src/tint/core/string_stream.h"
 #include "src/tint/lang/base/constant/splat.h"
 #include "src/tint/lang/base/constant/value.h"
+#include "src/tint/lang/base/type/array.h"
+#include "src/tint/lang/base/type/atomic.h"
+#include "src/tint/lang/base/type/bool.h"
+#include "src/tint/lang/base/type/depth_multisampled_texture.h"
+#include "src/tint/lang/base/type/depth_texture.h"
+#include "src/tint/lang/base/type/f16.h"
+#include "src/tint/lang/base/type/f32.h"
+#include "src/tint/lang/base/type/i32.h"
+#include "src/tint/lang/base/type/matrix.h"
+#include "src/tint/lang/base/type/multisampled_texture.h"
+#include "src/tint/lang/base/type/pointer.h"
+#include "src/tint/lang/base/type/reference.h"
+#include "src/tint/lang/base/type/sampled_texture.h"
+#include "src/tint/lang/base/type/storage_texture.h"
+#include "src/tint/lang/base/type/texture_dimension.h"
+#include "src/tint/lang/base/type/u32.h"
+#include "src/tint/lang/base/type/vector.h"
+#include "src/tint/lang/base/type/void.h"
 #include "src/tint/lang/msl/ast_writer/generator_support.h"
 #include "src/tint/lang/wgsl/ast/alias.h"
 #include "src/tint/lang/wgsl/ast/bool_literal_expression.h"
@@ -67,24 +85,6 @@
 #include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/switch.h"
 #include "src/tint/transform/manager.h"
-#include "src/tint/type/array.h"
-#include "src/tint/type/atomic.h"
-#include "src/tint/type/bool.h"
-#include "src/tint/type/depth_multisampled_texture.h"
-#include "src/tint/type/depth_texture.h"
-#include "src/tint/type/f16.h"
-#include "src/tint/type/f32.h"
-#include "src/tint/type/i32.h"
-#include "src/tint/type/matrix.h"
-#include "src/tint/type/multisampled_texture.h"
-#include "src/tint/type/pointer.h"
-#include "src/tint/type/reference.h"
-#include "src/tint/type/sampled_texture.h"
-#include "src/tint/type/storage_texture.h"
-#include "src/tint/type/texture_dimension.h"
-#include "src/tint/type/u32.h"
-#include "src/tint/type/vector.h"
-#include "src/tint/type/void.h"
 #include "src/tint/writer/check_supported_extensions.h"
 
 namespace tint::writer::msl {
diff --git a/src/tint/lang/msl/ast_writer/generator_impl_type_test.cc b/src/tint/lang/msl/ast_writer/generator_impl_type_test.cc
index 450633d..4ba5cc0 100644
--- a/src/tint/lang/msl/ast_writer/generator_impl_type_test.cc
+++ b/src/tint/lang/msl/ast_writer/generator_impl_type_test.cc
@@ -17,14 +17,14 @@
 #include "gmock/gmock.h"
 
 #include "src/tint/core/string_stream.h"
+#include "src/tint/lang/base/type/depth_multisampled_texture.h"
+#include "src/tint/lang/base/type/depth_texture.h"
+#include "src/tint/lang/base/type/multisampled_texture.h"
+#include "src/tint/lang/base/type/sampled_texture.h"
+#include "src/tint/lang/base/type/sampler.h"
+#include "src/tint/lang/base/type/storage_texture.h"
+#include "src/tint/lang/base/type/texture_dimension.h"
 #include "src/tint/lang/msl/ast_writer/test_helper.h"
-#include "src/tint/type/depth_multisampled_texture.h"
-#include "src/tint/type/depth_texture.h"
-#include "src/tint/type/multisampled_texture.h"
-#include "src/tint/type/sampled_texture.h"
-#include "src/tint/type/sampler.h"
-#include "src/tint/type/storage_texture.h"
-#include "src/tint/type/texture_dimension.h"
 
 namespace tint::writer::msl {
 namespace {
diff --git a/src/tint/lang/msl/ast_writer/generator_support.cc b/src/tint/lang/msl/ast_writer/generator_support.cc
index 7da52b3..379d385 100644
--- a/src/tint/lang/msl/ast_writer/generator_support.cc
+++ b/src/tint/lang/msl/ast_writer/generator_support.cc
@@ -18,16 +18,16 @@
 #include <limits>
 
 #include "src/tint/debug.h"
+#include "src/tint/lang/base/type/array.h"
+#include "src/tint/lang/base/type/atomic.h"
+#include "src/tint/lang/base/type/f16.h"
+#include "src/tint/lang/base/type/f32.h"
+#include "src/tint/lang/base/type/i32.h"
+#include "src/tint/lang/base/type/matrix.h"
+#include "src/tint/lang/base/type/struct.h"
+#include "src/tint/lang/base/type/u32.h"
+#include "src/tint/lang/base/type/vector.h"
 #include "src/tint/switch.h"
-#include "src/tint/type/array.h"
-#include "src/tint/type/atomic.h"
-#include "src/tint/type/f16.h"
-#include "src/tint/type/f32.h"
-#include "src/tint/type/i32.h"
-#include "src/tint/type/matrix.h"
-#include "src/tint/type/struct.h"
-#include "src/tint/type/u32.h"
-#include "src/tint/type/vector.h"
 #include "src/tint/writer/float_to_string.h"
 
 namespace tint::writer::msl {
diff --git a/src/tint/lang/msl/ast_writer/generator_support.h b/src/tint/lang/msl/ast_writer/generator_support.h
index c6efe8d..d898b56 100644
--- a/src/tint/lang/msl/ast_writer/generator_support.h
+++ b/src/tint/lang/msl/ast_writer/generator_support.h
@@ -21,7 +21,7 @@
 #include "src/tint/core/diagnostic/diagnostic.h"
 #include "src/tint/lang/base/builtin/builtin_value.h"
 #include "src/tint/lang/base/builtin/interpolation.h"
-#include "src/tint/type/type.h"
+#include "src/tint/lang/base/type/type.h"
 
 namespace tint::writer::msl {
 
diff --git a/src/tint/lang/msl/writer/generator_impl_ir.cc b/src/tint/lang/msl/writer/generator_impl_ir.cc
index 53eb3ac..cd60598 100644
--- a/src/tint/lang/msl/writer/generator_impl_ir.cc
+++ b/src/tint/lang/msl/writer/generator_impl_ir.cc
@@ -19,27 +19,27 @@
 #include "src/tint/ir/validator.h"
 #include "src/tint/lang/base/constant/composite.h"
 #include "src/tint/lang/base/constant/splat.h"
+#include "src/tint/lang/base/type/array.h"
+#include "src/tint/lang/base/type/atomic.h"
+#include "src/tint/lang/base/type/bool.h"
+#include "src/tint/lang/base/type/depth_multisampled_texture.h"
+#include "src/tint/lang/base/type/depth_texture.h"
+#include "src/tint/lang/base/type/external_texture.h"
+#include "src/tint/lang/base/type/f16.h"
+#include "src/tint/lang/base/type/f32.h"
+#include "src/tint/lang/base/type/i32.h"
+#include "src/tint/lang/base/type/matrix.h"
+#include "src/tint/lang/base/type/multisampled_texture.h"
+#include "src/tint/lang/base/type/pointer.h"
+#include "src/tint/lang/base/type/sampled_texture.h"
+#include "src/tint/lang/base/type/storage_texture.h"
+#include "src/tint/lang/base/type/texture.h"
+#include "src/tint/lang/base/type/u32.h"
+#include "src/tint/lang/base/type/vector.h"
+#include "src/tint/lang/base/type/void.h"
 #include "src/tint/lang/msl/ast_writer/generator_support.h"
 #include "src/tint/switch.h"
 #include "src/tint/transform/manager.h"
-#include "src/tint/type/array.h"
-#include "src/tint/type/atomic.h"
-#include "src/tint/type/bool.h"
-#include "src/tint/type/depth_multisampled_texture.h"
-#include "src/tint/type/depth_texture.h"
-#include "src/tint/type/external_texture.h"
-#include "src/tint/type/f16.h"
-#include "src/tint/type/f32.h"
-#include "src/tint/type/i32.h"
-#include "src/tint/type/matrix.h"
-#include "src/tint/type/multisampled_texture.h"
-#include "src/tint/type/pointer.h"
-#include "src/tint/type/sampled_texture.h"
-#include "src/tint/type/storage_texture.h"
-#include "src/tint/type/texture.h"
-#include "src/tint/type/u32.h"
-#include "src/tint/type/vector.h"
-#include "src/tint/type/void.h"
 
 namespace tint::writer::msl {
 namespace {
diff --git a/src/tint/lang/msl/writer/generator_impl_ir.h b/src/tint/lang/msl/writer/generator_impl_ir.h
index 182e578..83374ee 100644
--- a/src/tint/lang/msl/writer/generator_impl_ir.h
+++ b/src/tint/lang/msl/writer/generator_impl_ir.h
@@ -21,7 +21,7 @@
 #include "src/tint/core/diagnostic/diagnostic.h"
 #include "src/tint/core/string_stream.h"
 #include "src/tint/ir/module.h"
-#include "src/tint/type/texture.h"
+#include "src/tint/lang/base/type/texture.h"
 #include "src/tint/writer/ir_text_generator.h"
 
 namespace tint::writer::msl {
diff --git a/src/tint/lang/msl/writer/generator_impl_ir_constant_test.cc b/src/tint/lang/msl/writer/generator_impl_ir_constant_test.cc
index e7d1562..abc77e3 100644
--- a/src/tint/lang/msl/writer/generator_impl_ir_constant_test.cc
+++ b/src/tint/lang/msl/writer/generator_impl_ir_constant_test.cc
@@ -13,9 +13,9 @@
 // limitations under the License.
 
 #include "src/tint/core/string.h"
+#include "src/tint/lang/base/type/array.h"
+#include "src/tint/lang/base/type/matrix.h"
 #include "src/tint/lang/msl/writer/test_helper_ir.h"
-#include "src/tint/type/array.h"
-#include "src/tint/type/matrix.h"
 
 namespace tint::writer::msl {
 namespace {
diff --git a/src/tint/lang/msl/writer/generator_impl_ir_type_test.cc b/src/tint/lang/msl/writer/generator_impl_ir_type_test.cc
index fae3150..a8a8aa6 100644
--- a/src/tint/lang/msl/writer/generator_impl_ir_type_test.cc
+++ b/src/tint/lang/msl/writer/generator_impl_ir_type_test.cc
@@ -15,15 +15,15 @@
 #include "gmock/gmock.h"
 
 #include "src/tint/core/string.h"
+#include "src/tint/lang/base/type/array.h"
+#include "src/tint/lang/base/type/depth_multisampled_texture.h"
+#include "src/tint/lang/base/type/depth_texture.h"
+#include "src/tint/lang/base/type/matrix.h"
+#include "src/tint/lang/base/type/multisampled_texture.h"
+#include "src/tint/lang/base/type/sampled_texture.h"
+#include "src/tint/lang/base/type/storage_texture.h"
+#include "src/tint/lang/base/type/struct.h"
 #include "src/tint/lang/msl/writer/test_helper_ir.h"
-#include "src/tint/type/array.h"
-#include "src/tint/type/depth_multisampled_texture.h"
-#include "src/tint/type/depth_texture.h"
-#include "src/tint/type/matrix.h"
-#include "src/tint/type/multisampled_texture.h"
-#include "src/tint/type/sampled_texture.h"
-#include "src/tint/type/storage_texture.h"
-#include "src/tint/type/struct.h"
 
 namespace tint::writer::msl {
 namespace {
diff --git a/src/tint/lang/spirv/reader/enum_converter.cc b/src/tint/lang/spirv/reader/enum_converter.cc
index 2490e9a..4e011af 100644
--- a/src/tint/lang/spirv/reader/enum_converter.cc
+++ b/src/tint/lang/spirv/reader/enum_converter.cc
@@ -14,7 +14,7 @@
 
 #include "src/tint/lang/spirv/reader/enum_converter.h"
 
-#include "src/tint/type/texture_dimension.h"
+#include "src/tint/lang/base/type/texture_dimension.h"
 
 namespace tint::reader::spirv {
 
diff --git a/src/tint/lang/spirv/reader/enum_converter.h b/src/tint/lang/spirv/reader/enum_converter.h
index 6195cf9..6f75078 100644
--- a/src/tint/lang/spirv/reader/enum_converter.h
+++ b/src/tint/lang/spirv/reader/enum_converter.h
@@ -19,10 +19,10 @@
 #include "spirv/unified1/spirv.hpp11"
 #include "src/tint/lang/base/builtin/address_space.h"
 #include "src/tint/lang/base/builtin/builtin_value.h"
+#include "src/tint/lang/base/type/storage_texture.h"
+#include "src/tint/lang/base/type/texture_dimension.h"
 #include "src/tint/lang/spirv/reader/fail_stream.h"
 #include "src/tint/lang/wgsl/ast/pipeline_stage.h"
-#include "src/tint/type/storage_texture.h"
-#include "src/tint/type/texture_dimension.h"
 
 namespace tint::reader::spirv {
 
diff --git a/src/tint/lang/spirv/reader/enum_converter_test.cc b/src/tint/lang/spirv/reader/enum_converter_test.cc
index b1b6334..a312caf 100644
--- a/src/tint/lang/spirv/reader/enum_converter_test.cc
+++ b/src/tint/lang/spirv/reader/enum_converter_test.cc
@@ -18,7 +18,7 @@
 
 #include "gmock/gmock.h"
 #include "src/tint/core/string_stream.h"
-#include "src/tint/type/texture_dimension.h"
+#include "src/tint/lang/base/type/texture_dimension.h"
 
 namespace tint::reader::spirv {
 namespace {
diff --git a/src/tint/lang/spirv/reader/function.cc b/src/tint/lang/spirv/reader/function.cc
index 7d596fb..dd4c755 100644
--- a/src/tint/lang/spirv/reader/function.cc
+++ b/src/tint/lang/spirv/reader/function.cc
@@ -21,6 +21,9 @@
 #include "src/tint/core/hashset.h"
 #include "src/tint/lang/base/builtin/builtin_value.h"
 #include "src/tint/lang/base/builtin/function.h"
+#include "src/tint/lang/base/type/depth_texture.h"
+#include "src/tint/lang/base/type/sampled_texture.h"
+#include "src/tint/lang/base/type/texture_dimension.h"
 #include "src/tint/lang/wgsl/ast/assignment_statement.h"
 #include "src/tint/lang/wgsl/ast/bitcast_expression.h"
 #include "src/tint/lang/wgsl/ast/break_statement.h"
@@ -37,9 +40,6 @@
 #include "src/tint/lang/wgsl/ast/unary_op_expression.h"
 #include "src/tint/lang/wgsl/ast/variable_decl_statement.h"
 #include "src/tint/switch.h"
-#include "src/tint/type/depth_texture.h"
-#include "src/tint/type/sampled_texture.h"
-#include "src/tint/type/texture_dimension.h"
 
 // Terms:
 //    CFG: the control flow graph of the function, where basic blocks are the
diff --git a/src/tint/lang/spirv/reader/parser_impl.cc b/src/tint/lang/spirv/reader/parser_impl.cc
index 869e922..2805cac 100644
--- a/src/tint/lang/spirv/reader/parser_impl.cc
+++ b/src/tint/lang/spirv/reader/parser_impl.cc
@@ -21,6 +21,10 @@
 
 #include "source/opt/build_module.h"
 #include "src/tint/core/unique_vector.h"
+#include "src/tint/lang/base/type/depth_texture.h"
+#include "src/tint/lang/base/type/multisampled_texture.h"
+#include "src/tint/lang/base/type/sampled_texture.h"
+#include "src/tint/lang/base/type/texture_dimension.h"
 #include "src/tint/lang/spirv/reader/function.h"
 #include "src/tint/lang/wgsl/ast/bitcast_expression.h"
 #include "src/tint/lang/wgsl/ast/disable_validation_attribute.h"
@@ -28,10 +32,6 @@
 #include "src/tint/lang/wgsl/ast/interpolate_attribute.h"
 #include "src/tint/lang/wgsl/ast/unary_op_expression.h"
 #include "src/tint/switch.h"
-#include "src/tint/type/depth_texture.h"
-#include "src/tint/type/multisampled_texture.h"
-#include "src/tint/type/sampled_texture.h"
-#include "src/tint/type/texture_dimension.h"
 
 namespace tint::reader::spirv {
 
diff --git a/src/tint/lang/spirv/reader/parser_type.cc b/src/tint/lang/spirv/reader/parser_type.cc
index 34f3dc9..e2f78c8 100644
--- a/src/tint/lang/spirv/reader/parser_type.cc
+++ b/src/tint/lang/spirv/reader/parser_type.cc
@@ -24,9 +24,9 @@
 #include "src/tint/core/string.h"
 #include "src/tint/core/string_stream.h"
 #include "src/tint/core/unique_allocator.h"
+#include "src/tint/lang/base/type/texture_dimension.h"
 #include "src/tint/program_builder.h"
 #include "src/tint/switch.h"
-#include "src/tint/type/texture_dimension.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::reader::spirv::Type);
 TINT_INSTANTIATE_TYPEINFO(tint::reader::spirv::Void);
diff --git a/src/tint/lang/spirv/reader/parser_type.h b/src/tint/lang/spirv/reader/parser_type.h
index a999739..3a99f49 100644
--- a/src/tint/lang/spirv/reader/parser_type.h
+++ b/src/tint/lang/spirv/reader/parser_type.h
@@ -24,10 +24,10 @@
 #include "src/tint/lang/base/builtin/access.h"
 #include "src/tint/lang/base/builtin/address_space.h"
 #include "src/tint/lang/base/builtin/texel_format.h"
+#include "src/tint/lang/base/type/sampler_kind.h"
+#include "src/tint/lang/base/type/texture_dimension.h"
 #include "src/tint/lang/wgsl/ast/type.h"
 #include "src/tint/symbol.h"
-#include "src/tint/type/sampler_kind.h"
-#include "src/tint/type/texture_dimension.h"
 
 // Forward declarations
 namespace tint {
diff --git a/src/tint/lang/spirv/reader/parser_type_test.cc b/src/tint/lang/spirv/reader/parser_type_test.cc
index 47ef54b..9524485 100644
--- a/src/tint/lang/spirv/reader/parser_type_test.cc
+++ b/src/tint/lang/spirv/reader/parser_type_test.cc
@@ -14,8 +14,8 @@
 
 #include "gtest/gtest.h"
 
+#include "src/tint/lang/base/type/texture_dimension.h"
 #include "src/tint/lang/spirv/reader/parser_type.h"
-#include "src/tint/type/texture_dimension.h"
 
 namespace tint::reader::spirv {
 namespace {
diff --git a/src/tint/lang/wgsl/ast/builtin_texture_helper_test.cc b/src/tint/lang/wgsl/ast/builtin_texture_helper_test.cc
index 71f48f3..b86a316 100644
--- a/src/tint/lang/wgsl/ast/builtin_texture_helper_test.cc
+++ b/src/tint/lang/wgsl/ast/builtin_texture_helper_test.cc
@@ -15,10 +15,10 @@
 #include "src/tint/lang/wgsl/ast/builtin_texture_helper_test.h"
 
 #include "src/tint/lang/base/builtin/texel_format.h"
-#include "src/tint/type/depth_texture.h"
-#include "src/tint/type/multisampled_texture.h"
-#include "src/tint/type/sampled_texture.h"
-#include "src/tint/type/texture_dimension.h"
+#include "src/tint/lang/base/type/depth_texture.h"
+#include "src/tint/lang/base/type/multisampled_texture.h"
+#include "src/tint/lang/base/type/sampled_texture.h"
+#include "src/tint/lang/base/type/texture_dimension.h"
 
 namespace tint::ast::test {
 namespace {
diff --git a/src/tint/lang/wgsl/ast/builtin_texture_helper_test.h b/src/tint/lang/wgsl/ast/builtin_texture_helper_test.h
index e8c49c5..b2165b2 100644
--- a/src/tint/lang/wgsl/ast/builtin_texture_helper_test.h
+++ b/src/tint/lang/wgsl/ast/builtin_texture_helper_test.h
@@ -19,9 +19,9 @@
 
 #include "src/tint/lang/base/builtin/access.h"
 #include "src/tint/lang/base/builtin/texel_format.h"
+#include "src/tint/lang/base/type/storage_texture.h"
+#include "src/tint/lang/base/type/texture_dimension.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/type/storage_texture.h"
-#include "src/tint/type/texture_dimension.h"
 
 namespace tint::ast::test {
 
diff --git a/src/tint/lang/wgsl/ast/transform/builtin_polyfill.cc b/src/tint/lang/wgsl/ast/transform/builtin_polyfill.cc
index 501cf31..6a3c35d 100644
--- a/src/tint/lang/wgsl/ast/transform/builtin_polyfill.cc
+++ b/src/tint/lang/wgsl/ast/transform/builtin_polyfill.cc
@@ -20,14 +20,14 @@
 #include <utility>
 
 #include "src/tint/core/map.h"
+#include "src/tint/lang/base/type/storage_texture.h"
+#include "src/tint/lang/base/type/texture_dimension.h"
 #include "src/tint/lang/wgsl/sem/builtin.h"
 #include "src/tint/lang/wgsl/sem/call.h"
 #include "src/tint/lang/wgsl/sem/type_expression.h"
 #include "src/tint/lang/wgsl/sem/value_conversion.h"
 #include "src/tint/program_builder.h"
 #include "src/tint/switch.h"
-#include "src/tint/type/storage_texture.h"
-#include "src/tint/type/texture_dimension.h"
 
 using namespace tint::builtin::fluent_types;  // NOLINT
 using namespace tint::number_suffixes;        // NOLINT
diff --git a/src/tint/lang/wgsl/ast/transform/calculate_array_length.cc b/src/tint/lang/wgsl/ast/transform/calculate_array_length.cc
index d3011bc..34e175c 100644
--- a/src/tint/lang/wgsl/ast/transform/calculate_array_length.cc
+++ b/src/tint/lang/wgsl/ast/transform/calculate_array_length.cc
@@ -19,6 +19,7 @@
 
 #include "src/tint/core/hash.h"
 #include "src/tint/core/map.h"
+#include "src/tint/lang/base/type/reference.h"
 #include "src/tint/lang/wgsl/ast/call_statement.h"
 #include "src/tint/lang/wgsl/ast/disable_validation_attribute.h"
 #include "src/tint/lang/wgsl/ast/transform/simplify_pointers.h"
@@ -30,7 +31,6 @@
 #include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/program_builder.h"
 #include "src/tint/switch.h"
-#include "src/tint/type/reference.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::CalculateArrayLength);
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::CalculateArrayLength::BufferSizeIntrinsic);
diff --git a/src/tint/lang/wgsl/ast/transform/decompose_memory_access.cc b/src/tint/lang/wgsl/ast/transform/decompose_memory_access.cc
index 51ab7c8..ab9f00f 100644
--- a/src/tint/lang/wgsl/ast/transform/decompose_memory_access.cc
+++ b/src/tint/lang/wgsl/ast/transform/decompose_memory_access.cc
@@ -24,6 +24,9 @@
 #include "src/tint/core/hash.h"
 #include "src/tint/core/map.h"
 #include "src/tint/core/string_stream.h"
+#include "src/tint/lang/base/type/array.h"
+#include "src/tint/lang/base/type/atomic.h"
+#include "src/tint/lang/base/type/reference.h"
 #include "src/tint/lang/wgsl/ast/assignment_statement.h"
 #include "src/tint/lang/wgsl/ast/call_statement.h"
 #include "src/tint/lang/wgsl/ast/disable_validation_attribute.h"
@@ -35,9 +38,6 @@
 #include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/program_builder.h"
 #include "src/tint/switch.h"
-#include "src/tint/type/array.h"
-#include "src/tint/type/atomic.h"
-#include "src/tint/type/reference.h"
 
 using namespace tint::number_suffixes;  // NOLINT
 
diff --git a/src/tint/lang/wgsl/ast/transform/demote_to_helper.cc b/src/tint/lang/wgsl/ast/transform/demote_to_helper.cc
index 342f645..915b0c5 100644
--- a/src/tint/lang/wgsl/ast/transform/demote_to_helper.cc
+++ b/src/tint/lang/wgsl/ast/transform/demote_to_helper.cc
@@ -19,6 +19,7 @@
 #include <utility>
 
 #include "src/tint/core/map.h"
+#include "src/tint/lang/base/type/reference.h"
 #include "src/tint/lang/wgsl/ast/transform/utils/hoist_to_decl_before.h"
 #include "src/tint/lang/wgsl/sem/block_statement.h"
 #include "src/tint/lang/wgsl/sem/call.h"
@@ -26,7 +27,6 @@
 #include "src/tint/lang/wgsl/sem/statement.h"
 #include "src/tint/program_builder.h"
 #include "src/tint/switch.h"
-#include "src/tint/type/reference.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::DemoteToHelper);
 
diff --git a/src/tint/lang/wgsl/ast/transform/direct_variable_access.cc b/src/tint/lang/wgsl/ast/transform/direct_variable_access.cc
index 174ffbe..4712540 100644
--- a/src/tint/lang/wgsl/ast/transform/direct_variable_access.cc
+++ b/src/tint/lang/wgsl/ast/transform/direct_variable_access.cc
@@ -21,6 +21,7 @@
 #include "src/tint/core/reverse.h"
 #include "src/tint/core/scoped_assignment.h"
 #include "src/tint/core/string_stream.h"
+#include "src/tint/lang/base/type/abstract_int.h"
 #include "src/tint/lang/wgsl/ast/transform/utils/hoist_to_decl_before.h"
 #include "src/tint/lang/wgsl/ast/traverse_expressions.h"
 #include "src/tint/lang/wgsl/sem/call.h"
@@ -32,7 +33,6 @@
 #include "src/tint/lang/wgsl/sem/struct.h"
 #include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/type/abstract_int.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::DirectVariableAccess);
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::DirectVariableAccess::Config);
diff --git a/src/tint/lang/wgsl/ast/transform/localize_struct_array_assignment.cc b/src/tint/lang/wgsl/ast/transform/localize_struct_array_assignment.cc
index e28c8f5..2c0bef0 100644
--- a/src/tint/lang/wgsl/ast/transform/localize_struct_array_assignment.cc
+++ b/src/tint/lang/wgsl/ast/transform/localize_struct_array_assignment.cc
@@ -18,6 +18,7 @@
 #include <utility>
 
 #include "src/tint/core/scoped_assignment.h"
+#include "src/tint/lang/base/type/reference.h"
 #include "src/tint/lang/wgsl/ast/assignment_statement.h"
 #include "src/tint/lang/wgsl/ast/transform/simplify_pointers.h"
 #include "src/tint/lang/wgsl/ast/traverse_expressions.h"
@@ -26,7 +27,6 @@
 #include "src/tint/lang/wgsl/sem/value_expression.h"
 #include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/type/reference.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::LocalizeStructArrayAssignment);
 
diff --git a/src/tint/lang/wgsl/ast/transform/multiplanar_external_texture.cc b/src/tint/lang/wgsl/ast/transform/multiplanar_external_texture.cc
index 452b75b..32794e4 100644
--- a/src/tint/lang/wgsl/ast/transform/multiplanar_external_texture.cc
+++ b/src/tint/lang/wgsl/ast/transform/multiplanar_external_texture.cc
@@ -17,12 +17,12 @@
 #include <string>
 #include <vector>
 
+#include "src/tint/lang/base/type/texture_dimension.h"
 #include "src/tint/lang/wgsl/ast/function.h"
 #include "src/tint/lang/wgsl/sem/call.h"
 #include "src/tint/lang/wgsl/sem/function.h"
 #include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/type/texture_dimension.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::MultiplanarExternalTexture);
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::MultiplanarExternalTexture::NewBindingPoints);
diff --git a/src/tint/lang/wgsl/ast/transform/packed_vec3.cc b/src/tint/lang/wgsl/ast/transform/packed_vec3.cc
index 8d27b7e..56b11ef 100644
--- a/src/tint/lang/wgsl/ast/transform/packed_vec3.cc
+++ b/src/tint/lang/wgsl/ast/transform/packed_vec3.cc
@@ -22,6 +22,9 @@
 #include "src/tint/core/hashset.h"
 #include "src/tint/core/vector.h"
 #include "src/tint/lang/base/builtin/builtin.h"
+#include "src/tint/lang/base/type/array.h"
+#include "src/tint/lang/base/type/reference.h"
+#include "src/tint/lang/base/type/vector.h"
 #include "src/tint/lang/wgsl/ast/assignment_statement.h"
 #include "src/tint/lang/wgsl/sem/array_count.h"
 #include "src/tint/lang/wgsl/sem/index_accessor_expression.h"
@@ -31,9 +34,6 @@
 #include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/program_builder.h"
 #include "src/tint/switch.h"
-#include "src/tint/type/array.h"
-#include "src/tint/type/reference.h"
-#include "src/tint/type/vector.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::PackedVec3);
 
diff --git a/src/tint/lang/wgsl/ast/transform/packed_vec3_test.cc b/src/tint/lang/wgsl/ast/transform/packed_vec3_test.cc
index df02ace..32e6811 100644
--- a/src/tint/lang/wgsl/ast/transform/packed_vec3_test.cc
+++ b/src/tint/lang/wgsl/ast/transform/packed_vec3_test.cc
@@ -19,12 +19,12 @@
 #include <vector>
 
 #include "src/tint/core/string.h"
+#include "src/tint/lang/base/type/array.h"
 #include "src/tint/lang/wgsl/ast/module.h"
 #include "src/tint/lang/wgsl/ast/transform/test_helper.h"
 #include "src/tint/lang/wgsl/sem/struct.h"
 #include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/type/array.h"
 
 namespace tint::ast::transform {
 namespace {
diff --git a/src/tint/lang/wgsl/ast/transform/preserve_padding.cc b/src/tint/lang/wgsl/ast/transform/preserve_padding.cc
index 3b755cb..63e7385 100644
--- a/src/tint/lang/wgsl/ast/transform/preserve_padding.cc
+++ b/src/tint/lang/wgsl/ast/transform/preserve_padding.cc
@@ -19,10 +19,10 @@
 
 #include "src/tint/core/map.h"
 #include "src/tint/core/vector.h"
+#include "src/tint/lang/base/type/reference.h"
 #include "src/tint/lang/wgsl/sem/struct.h"
 #include "src/tint/program_builder.h"
 #include "src/tint/switch.h"
-#include "src/tint/type/reference.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::PreservePadding);
 
diff --git a/src/tint/lang/wgsl/ast/transform/promote_initializers_to_let.cc b/src/tint/lang/wgsl/ast/transform/promote_initializers_to_let.cc
index e088bcd..bea224d 100644
--- a/src/tint/lang/wgsl/ast/transform/promote_initializers_to_let.cc
+++ b/src/tint/lang/wgsl/ast/transform/promote_initializers_to_let.cc
@@ -17,13 +17,13 @@
 #include <utility>
 
 #include "src/tint/core/hashset.h"
+#include "src/tint/lang/base/type/struct.h"
 #include "src/tint/lang/wgsl/ast/transform/utils/hoist_to_decl_before.h"
 #include "src/tint/lang/wgsl/ast/traverse_expressions.h"
 #include "src/tint/lang/wgsl/sem/call.h"
 #include "src/tint/lang/wgsl/sem/statement.h"
 #include "src/tint/lang/wgsl/sem/value_constructor.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/type/struct.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::PromoteInitializersToLet);
 
diff --git a/src/tint/lang/wgsl/ast/transform/robustness.cc b/src/tint/lang/wgsl/ast/transform/robustness.cc
index 2b7796a..42c9a28 100644
--- a/src/tint/lang/wgsl/ast/transform/robustness.cc
+++ b/src/tint/lang/wgsl/ast/transform/robustness.cc
@@ -18,6 +18,7 @@
 #include <limits>
 #include <utility>
 
+#include "src/tint/lang/base/type/reference.h"
 #include "src/tint/lang/wgsl/ast/transform/utils/hoist_to_decl_before.h"
 #include "src/tint/lang/wgsl/sem/block_statement.h"
 #include "src/tint/lang/wgsl/sem/builtin.h"
@@ -30,7 +31,6 @@
 #include "src/tint/lang/wgsl/sem/value_expression.h"
 #include "src/tint/program_builder.h"
 #include "src/tint/switch.h"
-#include "src/tint/type/reference.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::Robustness);
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::Robustness::Config);
diff --git a/src/tint/lang/wgsl/ast/transform/spirv_atomic.cc b/src/tint/lang/wgsl/ast/transform/spirv_atomic.cc
index 2ddcabd..468823a 100644
--- a/src/tint/lang/wgsl/ast/transform/spirv_atomic.cc
+++ b/src/tint/lang/wgsl/ast/transform/spirv_atomic.cc
@@ -22,6 +22,7 @@
 
 #include "src/tint/core/map.h"
 #include "src/tint/core/unique_vector.h"
+#include "src/tint/lang/base/type/reference.h"
 #include "src/tint/lang/wgsl/sem/block_statement.h"
 #include "src/tint/lang/wgsl/sem/function.h"
 #include "src/tint/lang/wgsl/sem/index_accessor_expression.h"
@@ -29,7 +30,6 @@
 #include "src/tint/lang/wgsl/sem/statement.h"
 #include "src/tint/program_builder.h"
 #include "src/tint/switch.h"
-#include "src/tint/type/reference.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::SpirvAtomic);
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::SpirvAtomic::Stub);
diff --git a/src/tint/lang/wgsl/ast/transform/texture_1d_to_2d.cc b/src/tint/lang/wgsl/ast/transform/texture_1d_to_2d.cc
index d35cbf9..3435370 100644
--- a/src/tint/lang/wgsl/ast/transform/texture_1d_to_2d.cc
+++ b/src/tint/lang/wgsl/ast/transform/texture_1d_to_2d.cc
@@ -16,12 +16,12 @@
 
 #include <utility>
 
+#include "src/tint/lang/base/type/texture_dimension.h"
 #include "src/tint/lang/wgsl/sem/function.h"
 #include "src/tint/lang/wgsl/sem/statement.h"
 #include "src/tint/lang/wgsl/sem/type_expression.h"
 #include "src/tint/program_builder.h"
 #include "src/tint/switch.h"
-#include "src/tint/type/texture_dimension.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::Texture1DTo2D);
 
diff --git a/src/tint/lang/wgsl/ast/transform/transform.cc b/src/tint/lang/wgsl/ast/transform/transform.cc
index 02b5ea8..30085a1 100644
--- a/src/tint/lang/wgsl/ast/transform/transform.cc
+++ b/src/tint/lang/wgsl/ast/transform/transform.cc
@@ -18,14 +18,14 @@
 #include <string>
 
 #include "src/tint/lang/base/builtin/builtin.h"
+#include "src/tint/lang/base/type/atomic.h"
+#include "src/tint/lang/base/type/depth_multisampled_texture.h"
+#include "src/tint/lang/base/type/reference.h"
+#include "src/tint/lang/base/type/sampler.h"
 #include "src/tint/lang/wgsl/sem/block_statement.h"
 #include "src/tint/lang/wgsl/sem/for_loop_statement.h"
 #include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/type/atomic.h"
-#include "src/tint/type/depth_multisampled_texture.h"
-#include "src/tint/type/reference.h"
-#include "src/tint/type/sampler.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::Transform);
 
diff --git a/src/tint/lang/wgsl/ast/transform/utils/hoist_to_decl_before.cc b/src/tint/lang/wgsl/ast/transform/utils/hoist_to_decl_before.cc
index 45b705a..c4a87eb 100644
--- a/src/tint/lang/wgsl/ast/transform/utils/hoist_to_decl_before.cc
+++ b/src/tint/lang/wgsl/ast/transform/utils/hoist_to_decl_before.cc
@@ -19,13 +19,13 @@
 #include "src/tint/core/hashmap.h"
 #include "src/tint/core/reverse.h"
 #include "src/tint/core/transform.h"
+#include "src/tint/lang/base/type/reference.h"
 #include "src/tint/lang/wgsl/sem/block_statement.h"
 #include "src/tint/lang/wgsl/sem/for_loop_statement.h"
 #include "src/tint/lang/wgsl/sem/if_statement.h"
 #include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/lang/wgsl/sem/while_statement.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/type/reference.h"
 
 namespace tint::ast::transform {
 
diff --git a/src/tint/lang/wgsl/ast/transform/vectorize_matrix_conversions.cc b/src/tint/lang/wgsl/ast/transform/vectorize_matrix_conversions.cc
index abb1a9f..5f1b475 100644
--- a/src/tint/lang/wgsl/ast/transform/vectorize_matrix_conversions.cc
+++ b/src/tint/lang/wgsl/ast/transform/vectorize_matrix_conversions.cc
@@ -20,11 +20,11 @@
 
 #include "src/tint/core/hash.h"
 #include "src/tint/core/map.h"
+#include "src/tint/lang/base/type/abstract_numeric.h"
 #include "src/tint/lang/wgsl/sem/call.h"
 #include "src/tint/lang/wgsl/sem/value_conversion.h"
 #include "src/tint/lang/wgsl/sem/value_expression.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/type/abstract_numeric.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::VectorizeMatrixConversions);
 
diff --git a/src/tint/lang/wgsl/ast/transform/vectorize_scalar_matrix_initializers.cc b/src/tint/lang/wgsl/ast/transform/vectorize_scalar_matrix_initializers.cc
index 8cee6f1..9f4c7e5 100644
--- a/src/tint/lang/wgsl/ast/transform/vectorize_scalar_matrix_initializers.cc
+++ b/src/tint/lang/wgsl/ast/transform/vectorize_scalar_matrix_initializers.cc
@@ -18,11 +18,11 @@
 #include <utility>
 
 #include "src/tint/core/map.h"
+#include "src/tint/lang/base/type/abstract_numeric.h"
 #include "src/tint/lang/wgsl/sem/call.h"
 #include "src/tint/lang/wgsl/sem/value_constructor.h"
 #include "src/tint/lang/wgsl/sem/value_expression.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/type/abstract_numeric.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::VectorizeScalarMatrixInitializers);
 
diff --git a/src/tint/lang/wgsl/ast/transform/zero_init_workgroup_memory.cc b/src/tint/lang/wgsl/ast/transform/zero_init_workgroup_memory.cc
index ebb9abb..d429119 100644
--- a/src/tint/lang/wgsl/ast/transform/zero_init_workgroup_memory.cc
+++ b/src/tint/lang/wgsl/ast/transform/zero_init_workgroup_memory.cc
@@ -23,11 +23,11 @@
 #include "src/tint/core/map.h"
 #include "src/tint/core/unique_vector.h"
 #include "src/tint/lang/base/builtin/builtin_value.h"
+#include "src/tint/lang/base/type/atomic.h"
 #include "src/tint/lang/wgsl/ast/workgroup_attribute.h"
 #include "src/tint/lang/wgsl/sem/function.h"
 #include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/type/atomic.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::ZeroInitWorkgroupMemory);
 
diff --git a/src/tint/lang/wgsl/ast_writer/generator_impl_global_decl_test.cc b/src/tint/lang/wgsl/ast_writer/generator_impl_global_decl_test.cc
index 75161a2..c670e3e 100644
--- a/src/tint/lang/wgsl/ast_writer/generator_impl_global_decl_test.cc
+++ b/src/tint/lang/wgsl/ast_writer/generator_impl_global_decl_test.cc
@@ -12,11 +12,11 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
+#include "src/tint/lang/base/type/sampled_texture.h"
+#include "src/tint/lang/base/type/texture_dimension.h"
 #include "src/tint/lang/wgsl/ast/stage_attribute.h"
 #include "src/tint/lang/wgsl/ast/variable_decl_statement.h"
 #include "src/tint/lang/wgsl/ast_writer/test_helper.h"
-#include "src/tint/type/sampled_texture.h"
-#include "src/tint/type/texture_dimension.h"
 
 #include "gmock/gmock.h"
 
diff --git a/src/tint/lang/wgsl/ast_writer/generator_impl_type_test.cc b/src/tint/lang/wgsl/ast_writer/generator_impl_type_test.cc
index 716e253..818885b 100644
--- a/src/tint/lang/wgsl/ast_writer/generator_impl_type_test.cc
+++ b/src/tint/lang/wgsl/ast_writer/generator_impl_type_test.cc
@@ -14,11 +14,11 @@
 
 #include "src/tint/core/string_stream.h"
 #include "src/tint/lang/base/builtin/builtin_value.h"
+#include "src/tint/lang/base/type/depth_texture.h"
+#include "src/tint/lang/base/type/multisampled_texture.h"
+#include "src/tint/lang/base/type/sampled_texture.h"
+#include "src/tint/lang/base/type/texture_dimension.h"
 #include "src/tint/lang/wgsl/ast_writer/test_helper.h"
-#include "src/tint/type/depth_texture.h"
-#include "src/tint/type/multisampled_texture.h"
-#include "src/tint/type/sampled_texture.h"
-#include "src/tint/type/texture_dimension.h"
 
 #include "gmock/gmock.h"
 
diff --git a/src/tint/lang/wgsl/reader/parser_impl.cc b/src/tint/lang/wgsl/reader/parser_impl.cc
index 50bddda..5ffbcdd 100644
--- a/src/tint/lang/wgsl/reader/parser_impl.cc
+++ b/src/tint/lang/wgsl/reader/parser_impl.cc
@@ -21,6 +21,11 @@
 #include "src/tint/core/string.h"
 #include "src/tint/core/string_stream.h"
 #include "src/tint/lang/base/builtin/attribute.h"
+#include "src/tint/lang/base/type/depth_texture.h"
+#include "src/tint/lang/base/type/external_texture.h"
+#include "src/tint/lang/base/type/multisampled_texture.h"
+#include "src/tint/lang/base/type/sampled_texture.h"
+#include "src/tint/lang/base/type/texture_dimension.h"
 #include "src/tint/lang/wgsl/ast/assignment_statement.h"
 #include "src/tint/lang/wgsl/ast/bitcast_expression.h"
 #include "src/tint/lang/wgsl/ast/break_if_statement.h"
@@ -41,11 +46,6 @@
 #include "src/tint/lang/wgsl/ast/workgroup_attribute.h"
 #include "src/tint/lang/wgsl/reader/classify_template_args.h"
 #include "src/tint/lang/wgsl/reader/lexer.h"
-#include "src/tint/type/depth_texture.h"
-#include "src/tint/type/external_texture.h"
-#include "src/tint/type/multisampled_texture.h"
-#include "src/tint/type/sampled_texture.h"
-#include "src/tint/type/texture_dimension.h"
 
 namespace tint::reader::wgsl {
 namespace {
diff --git a/src/tint/lang/wgsl/reader/parser_impl_type_decl_test.cc b/src/tint/lang/wgsl/reader/parser_impl_type_decl_test.cc
index 02c43f2..12e0a6d 100644
--- a/src/tint/lang/wgsl/reader/parser_impl_type_decl_test.cc
+++ b/src/tint/lang/wgsl/reader/parser_impl_type_decl_test.cc
@@ -12,10 +12,10 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
+#include "src/tint/lang/base/type/sampled_texture.h"
 #include "src/tint/lang/wgsl/ast/alias.h"
 #include "src/tint/lang/wgsl/ast/test_helper.h"
 #include "src/tint/lang/wgsl/reader/parser_impl_test_helper.h"
-#include "src/tint/type/sampled_texture.h"
 
 namespace tint::reader::wgsl {
 namespace {
diff --git a/src/tint/lang/wgsl/sem/array_count.h b/src/tint/lang/wgsl/sem/array_count.h
index 9303466..f76ed52 100644
--- a/src/tint/lang/wgsl/sem/array_count.h
+++ b/src/tint/lang/wgsl/sem/array_count.h
@@ -17,9 +17,9 @@
 
 #include <string>
 
+#include "src/tint/lang/base/type/array_count.h"
 #include "src/tint/lang/wgsl/sem/value_expression.h"
 #include "src/tint/lang/wgsl/sem/variable.h"
-#include "src/tint/type/array_count.h"
 
 namespace tint::sem {
 
diff --git a/src/tint/lang/wgsl/sem/call_target.h b/src/tint/lang/wgsl/sem/call_target.h
index 33acdfb..6611205 100644
--- a/src/tint/lang/wgsl/sem/call_target.h
+++ b/src/tint/lang/wgsl/sem/call_target.h
@@ -19,9 +19,9 @@
 
 #include "src/tint/core/hash.h"
 #include "src/tint/core/vector.h"
+#include "src/tint/lang/base/type/sampler.h"
 #include "src/tint/lang/wgsl/sem/node.h"
 #include "src/tint/lang/wgsl/sem/variable.h"
-#include "src/tint/type/sampler.h"
 
 namespace tint::sem {
 
diff --git a/src/tint/lang/wgsl/sem/function.cc b/src/tint/lang/wgsl/sem/function.cc
index 8b9fa84..84cd857 100644
--- a/src/tint/lang/wgsl/sem/function.cc
+++ b/src/tint/lang/wgsl/sem/function.cc
@@ -15,15 +15,15 @@
 #include "src/tint/lang/wgsl/sem/function.h"
 
 #include "src/tint/core/transform.h"
+#include "src/tint/lang/base/type/depth_texture.h"
+#include "src/tint/lang/base/type/external_texture.h"
+#include "src/tint/lang/base/type/multisampled_texture.h"
+#include "src/tint/lang/base/type/sampled_texture.h"
+#include "src/tint/lang/base/type/storage_texture.h"
 #include "src/tint/lang/wgsl/ast/function.h"
 #include "src/tint/lang/wgsl/ast/identifier.h"
 #include "src/tint/lang/wgsl/ast/must_use_attribute.h"
 #include "src/tint/lang/wgsl/sem/variable.h"
-#include "src/tint/type/depth_texture.h"
-#include "src/tint/type/external_texture.h"
-#include "src/tint/type/multisampled_texture.h"
-#include "src/tint/type/sampled_texture.h"
-#include "src/tint/type/storage_texture.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::sem::Function);
 
diff --git a/src/tint/lang/wgsl/sem/load.cc b/src/tint/lang/wgsl/sem/load.cc
index 66f8a30..ff53446 100644
--- a/src/tint/lang/wgsl/sem/load.cc
+++ b/src/tint/lang/wgsl/sem/load.cc
@@ -15,7 +15,7 @@
 #include "src/tint/lang/wgsl/sem/load.h"
 
 #include "src/tint/debug.h"
-#include "src/tint/type/reference.h"
+#include "src/tint/lang/base/type/reference.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 29cb734..ebae1ea 100644
--- a/src/tint/lang/wgsl/sem/load.h
+++ b/src/tint/lang/wgsl/sem/load.h
@@ -15,8 +15,8 @@
 #ifndef SRC_TINT_LANG_WGSL_SEM_LOAD_H_
 #define SRC_TINT_LANG_WGSL_SEM_LOAD_H_
 
+#include "src/tint/lang/base/type/reference.h"
 #include "src/tint/lang/wgsl/sem/value_expression.h"
-#include "src/tint/type/reference.h"
 
 namespace tint::sem {
 
diff --git a/src/tint/lang/wgsl/sem/struct.h b/src/tint/lang/wgsl/sem/struct.h
index 28849bb..0915fb6 100644
--- a/src/tint/lang/wgsl/sem/struct.h
+++ b/src/tint/lang/wgsl/sem/struct.h
@@ -19,10 +19,10 @@
 
 #include "src/tint/core/vector.h"
 #include "src/tint/lang/base/builtin/address_space.h"
+#include "src/tint/lang/base/type/struct.h"
+#include "src/tint/lang/base/type/type.h"
 #include "src/tint/lang/wgsl/ast/struct.h"
 #include "src/tint/symbol.h"
-#include "src/tint/type/struct.h"
-#include "src/tint/type/type.h"
 
 // Forward declarations
 namespace tint::ast {
diff --git a/src/tint/lang/wgsl/sem/struct_test.cc b/src/tint/lang/wgsl/sem/struct_test.cc
index a811112..66db4bb 100644
--- a/src/tint/lang/wgsl/sem/struct_test.cc
+++ b/src/tint/lang/wgsl/sem/struct_test.cc
@@ -13,8 +13,8 @@
 // limitations under the License.
 
 #include "src/tint/lang/wgsl/sem/struct.h"
+#include "src/tint/lang/base/type/texture.h"
 #include "src/tint/lang/wgsl/sem/test_helper.h"
-#include "src/tint/type/texture.h"
 
 namespace tint::sem {
 namespace {
diff --git a/src/tint/lang/wgsl/sem/variable.cc b/src/tint/lang/wgsl/sem/variable.cc
index b9b69e0..2318b38 100644
--- a/src/tint/lang/wgsl/sem/variable.cc
+++ b/src/tint/lang/wgsl/sem/variable.cc
@@ -16,10 +16,10 @@
 
 #include <utility>
 
+#include "src/tint/lang/base/type/pointer.h"
 #include "src/tint/lang/wgsl/ast/identifier_expression.h"
 #include "src/tint/lang/wgsl/ast/parameter.h"
 #include "src/tint/lang/wgsl/ast/variable.h"
-#include "src/tint/type/pointer.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::sem::Variable);
 TINT_INSTANTIATE_TYPEINFO(tint::sem::GlobalVariable);
diff --git a/src/tint/lang/wgsl/sem/variable.h b/src/tint/lang/wgsl/sem/variable.h
index 5d449f2..074172b 100644
--- a/src/tint/lang/wgsl/sem/variable.h
+++ b/src/tint/lang/wgsl/sem/variable.h
@@ -24,11 +24,11 @@
 #include "src/tint/core/unique_vector.h"
 #include "src/tint/lang/base/builtin/access.h"
 #include "src/tint/lang/base/builtin/address_space.h"
+#include "src/tint/lang/base/type/type.h"
 #include "src/tint/lang/wgsl/ast/parameter.h"
 #include "src/tint/lang/wgsl/sem/binding_point.h"
 #include "src/tint/lang/wgsl/sem/parameter_usage.h"
 #include "src/tint/lang/wgsl/sem/value_expression.h"
-#include "src/tint/type/type.h"
 
 // Forward declarations
 namespace tint::ast {
diff --git a/src/tint/program.h b/src/tint/program.h
index a4a2963..5cee7e2 100644
--- a/src/tint/program.h
+++ b/src/tint/program.h
@@ -19,11 +19,11 @@
 #include <unordered_set>
 
 #include "src/tint/lang/base/constant/manager.h"
+#include "src/tint/lang/base/type/manager.h"
 #include "src/tint/lang/wgsl/ast/function.h"
 #include "src/tint/lang/wgsl/sem/info.h"
 #include "src/tint/program_id.h"
 #include "src/tint/symbol_table.h"
-#include "src/tint/type/manager.h"
 
 // Forward Declarations
 namespace tint {
diff --git a/src/tint/program_builder.h b/src/tint/program_builder.h
index c27d090..fd05186 100644
--- a/src/tint/program_builder.h
+++ b/src/tint/program_builder.h
@@ -28,6 +28,23 @@
 #include "src/tint/lang/base/builtin/interpolation_type.h"
 #include "src/tint/lang/base/builtin/number.h"
 #include "src/tint/lang/base/constant/manager.h"
+#include "src/tint/lang/base/type/array.h"
+#include "src/tint/lang/base/type/bool.h"
+#include "src/tint/lang/base/type/depth_texture.h"
+#include "src/tint/lang/base/type/external_texture.h"
+#include "src/tint/lang/base/type/f16.h"
+#include "src/tint/lang/base/type/f32.h"
+#include "src/tint/lang/base/type/i32.h"
+#include "src/tint/lang/base/type/matrix.h"
+#include "src/tint/lang/base/type/multisampled_texture.h"
+#include "src/tint/lang/base/type/pointer.h"
+#include "src/tint/lang/base/type/sampled_texture.h"
+#include "src/tint/lang/base/type/sampler_kind.h"
+#include "src/tint/lang/base/type/storage_texture.h"
+#include "src/tint/lang/base/type/texture_dimension.h"
+#include "src/tint/lang/base/type/u32.h"
+#include "src/tint/lang/base/type/vector.h"
+#include "src/tint/lang/base/type/void.h"
 #include "src/tint/lang/wgsl/ast/alias.h"
 #include "src/tint/lang/wgsl/ast/assignment_statement.h"
 #include "src/tint/lang/wgsl/ast/binary_expression.h"
@@ -87,23 +104,6 @@
 #include "src/tint/lang/wgsl/sem/struct.h"
 #include "src/tint/program.h"
 #include "src/tint/program_id.h"
-#include "src/tint/type/array.h"
-#include "src/tint/type/bool.h"
-#include "src/tint/type/depth_texture.h"
-#include "src/tint/type/external_texture.h"
-#include "src/tint/type/f16.h"
-#include "src/tint/type/f32.h"
-#include "src/tint/type/i32.h"
-#include "src/tint/type/matrix.h"
-#include "src/tint/type/multisampled_texture.h"
-#include "src/tint/type/pointer.h"
-#include "src/tint/type/sampled_texture.h"
-#include "src/tint/type/sampler_kind.h"
-#include "src/tint/type/storage_texture.h"
-#include "src/tint/type/texture_dimension.h"
-#include "src/tint/type/u32.h"
-#include "src/tint/type/vector.h"
-#include "src/tint/type/void.h"
 
 #ifdef CURRENTLY_IN_TINT_PUBLIC_HEADER
 #error "internal tint header being #included from tint.h"
diff --git a/src/tint/resolver/array_accessor_test.cc b/src/tint/resolver/array_accessor_test.cc
index f1acc5b..f2e0cb2 100644
--- a/src/tint/resolver/array_accessor_test.cc
+++ b/src/tint/resolver/array_accessor_test.cc
@@ -15,9 +15,9 @@
 #include "src/tint/resolver/resolver.h"
 
 #include "gmock/gmock.h"
+#include "src/tint/lang/base/type/reference.h"
 #include "src/tint/lang/wgsl/sem/index_accessor_expression.h"
 #include "src/tint/resolver/resolver_test_helper.h"
-#include "src/tint/type/reference.h"
 
 namespace tint::resolver {
 namespace {
diff --git a/src/tint/resolver/assignment_validation_test.cc b/src/tint/resolver/assignment_validation_test.cc
index f1251cb..38931b1 100644
--- a/src/tint/resolver/assignment_validation_test.cc
+++ b/src/tint/resolver/assignment_validation_test.cc
@@ -15,9 +15,9 @@
 #include "src/tint/resolver/resolver.h"
 
 #include "gmock/gmock.h"
+#include "src/tint/lang/base/type/storage_texture.h"
+#include "src/tint/lang/base/type/texture_dimension.h"
 #include "src/tint/resolver/resolver_test_helper.h"
-#include "src/tint/type/storage_texture.h"
-#include "src/tint/type/texture_dimension.h"
 
 namespace tint::resolver {
 namespace {
diff --git a/src/tint/resolver/atomics_test.cc b/src/tint/resolver/atomics_test.cc
index f079159..e134f63 100644
--- a/src/tint/resolver/atomics_test.cc
+++ b/src/tint/resolver/atomics_test.cc
@@ -12,10 +12,10 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
+#include "src/tint/lang/base/type/atomic.h"
+#include "src/tint/lang/base/type/reference.h"
 #include "src/tint/resolver/resolver.h"
 #include "src/tint/resolver/resolver_test_helper.h"
-#include "src/tint/type/atomic.h"
-#include "src/tint/type/reference.h"
 
 #include "gmock/gmock.h"
 
diff --git a/src/tint/resolver/atomics_validation_test.cc b/src/tint/resolver/atomics_validation_test.cc
index a557956..258bb8c 100644
--- a/src/tint/resolver/atomics_validation_test.cc
+++ b/src/tint/resolver/atomics_validation_test.cc
@@ -12,10 +12,10 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
+#include "src/tint/lang/base/type/atomic.h"
+#include "src/tint/lang/base/type/reference.h"
 #include "src/tint/resolver/resolver.h"
 #include "src/tint/resolver/resolver_test_helper.h"
-#include "src/tint/type/atomic.h"
-#include "src/tint/type/reference.h"
 
 #include "gmock/gmock.h"
 
diff --git a/src/tint/resolver/attribute_validation_test.cc b/src/tint/resolver/attribute_validation_test.cc
index 4992ff1..c31ff4a 100644
--- a/src/tint/resolver/attribute_validation_test.cc
+++ b/src/tint/resolver/attribute_validation_test.cc
@@ -14,11 +14,11 @@
 
 #include "src/tint/core/string_stream.h"
 #include "src/tint/lang/base/builtin/builtin_value.h"
+#include "src/tint/lang/base/type/texture_dimension.h"
 #include "src/tint/lang/wgsl/ast/disable_validation_attribute.h"
 #include "src/tint/lang/wgsl/ast/transform/add_block_attribute.h"
 #include "src/tint/resolver/resolver.h"
 #include "src/tint/resolver/resolver_test_helper.h"
-#include "src/tint/type/texture_dimension.h"
 
 #include "gmock/gmock.h"
 
diff --git a/src/tint/resolver/builtin_test.cc b/src/tint/resolver/builtin_test.cc
index 66f08f7..c22d7ed 100644
--- a/src/tint/resolver/builtin_test.cc
+++ b/src/tint/resolver/builtin_test.cc
@@ -17,6 +17,9 @@
 #include "gmock/gmock.h"
 #include "src/tint/core/string.h"
 #include "src/tint/core/string_stream.h"
+#include "src/tint/lang/base/type/sampled_texture.h"
+#include "src/tint/lang/base/type/test_helper.h"
+#include "src/tint/lang/base/type/texture_dimension.h"
 #include "src/tint/lang/wgsl/ast/assignment_statement.h"
 #include "src/tint/lang/wgsl/ast/bitcast_expression.h"
 #include "src/tint/lang/wgsl/ast/break_statement.h"
@@ -36,9 +39,6 @@
 #include "src/tint/lang/wgsl/sem/statement.h"
 #include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/resolver/resolver_test_helper.h"
-#include "src/tint/type/sampled_texture.h"
-#include "src/tint/type/test_helper.h"
-#include "src/tint/type/texture_dimension.h"
 
 using ::testing::ElementsAre;
 using ::testing::HasSubstr;
diff --git a/src/tint/resolver/compound_assignment_validation_test.cc b/src/tint/resolver/compound_assignment_validation_test.cc
index 0acf993..2d6881d 100644
--- a/src/tint/resolver/compound_assignment_validation_test.cc
+++ b/src/tint/resolver/compound_assignment_validation_test.cc
@@ -15,8 +15,8 @@
 #include "src/tint/resolver/resolver.h"
 
 #include "gmock/gmock.h"
+#include "src/tint/lang/base/type/storage_texture.h"
 #include "src/tint/resolver/resolver_test_helper.h"
-#include "src/tint/type/storage_texture.h"
 
 namespace tint::resolver {
 namespace {
diff --git a/src/tint/resolver/const_eval.cc b/src/tint/resolver/const_eval.cc
index e65ed5b..c79097b 100644
--- a/src/tint/resolver/const_eval.cc
+++ b/src/tint/resolver/const_eval.cc
@@ -32,21 +32,21 @@
 #include "src/tint/lang/base/constant/scalar.h"
 #include "src/tint/lang/base/constant/splat.h"
 #include "src/tint/lang/base/constant/value.h"
+#include "src/tint/lang/base/type/abstract_float.h"
+#include "src/tint/lang/base/type/abstract_int.h"
+#include "src/tint/lang/base/type/array.h"
+#include "src/tint/lang/base/type/bool.h"
+#include "src/tint/lang/base/type/f16.h"
+#include "src/tint/lang/base/type/f32.h"
+#include "src/tint/lang/base/type/i32.h"
+#include "src/tint/lang/base/type/matrix.h"
+#include "src/tint/lang/base/type/struct.h"
+#include "src/tint/lang/base/type/u32.h"
+#include "src/tint/lang/base/type/vector.h"
 #include "src/tint/lang/wgsl/sem/member_accessor_expression.h"
 #include "src/tint/lang/wgsl/sem/value_constructor.h"
 #include "src/tint/program_builder.h"
 #include "src/tint/switch.h"
-#include "src/tint/type/abstract_float.h"
-#include "src/tint/type/abstract_int.h"
-#include "src/tint/type/array.h"
-#include "src/tint/type/bool.h"
-#include "src/tint/type/f16.h"
-#include "src/tint/type/f32.h"
-#include "src/tint/type/i32.h"
-#include "src/tint/type/matrix.h"
-#include "src/tint/type/struct.h"
-#include "src/tint/type/u32.h"
-#include "src/tint/type/vector.h"
 
 using namespace tint::number_suffixes;  // NOLINT
 
diff --git a/src/tint/resolver/const_eval.h b/src/tint/resolver/const_eval.h
index 077074c..661801f 100644
--- a/src/tint/resolver/const_eval.h
+++ b/src/tint/resolver/const_eval.h
@@ -21,7 +21,7 @@
 #include "src/tint/core/result.h"
 #include "src/tint/core/vector.h"
 #include "src/tint/lang/base/builtin/number.h"
-#include "src/tint/type/type.h"
+#include "src/tint/lang/base/type/type.h"
 
 // Forward declarations
 namespace tint {
diff --git a/src/tint/resolver/const_eval_test.h b/src/tint/resolver/const_eval_test.h
index da05150..e761743 100644
--- a/src/tint/resolver/const_eval_test.h
+++ b/src/tint/resolver/const_eval_test.h
@@ -23,9 +23,9 @@
 #include "gmock/gmock.h"
 #include "gtest/gtest.h"
 #include "src/tint/core/string_stream.h"
+#include "src/tint/lang/base/type/test_helper.h"
 #include "src/tint/resolver/resolver_test_helper.h"
 #include "src/tint/switch.h"
-#include "src/tint/type/test_helper.h"
 
 namespace tint::resolver {
 
diff --git a/src/tint/resolver/dependency_graph_test.cc b/src/tint/resolver/dependency_graph_test.cc
index a10fa27..a46e6f8 100644
--- a/src/tint/resolver/dependency_graph_test.cc
+++ b/src/tint/resolver/dependency_graph_test.cc
@@ -19,9 +19,9 @@
 #include "gmock/gmock.h"
 #include "src/tint/core/transform.h"
 #include "src/tint/lang/base/builtin/address_space.h"
+#include "src/tint/lang/base/type/texture_dimension.h"
 #include "src/tint/resolver/dependency_graph.h"
 #include "src/tint/resolver/resolver_test_helper.h"
-#include "src/tint/type/texture_dimension.h"
 
 namespace tint::resolver {
 namespace {
diff --git a/src/tint/resolver/intrinsic_table.cc b/src/tint/resolver/intrinsic_table.cc
index 9d91d09..f5fef8c 100644
--- a/src/tint/resolver/intrinsic_table.cc
+++ b/src/tint/resolver/intrinsic_table.cc
@@ -23,6 +23,18 @@
 #include "src/tint/core/math.h"
 #include "src/tint/core/scoped_assignment.h"
 #include "src/tint/core/string_stream.h"
+#include "src/tint/lang/base/type/abstract_float.h"
+#include "src/tint/lang/base/type/abstract_int.h"
+#include "src/tint/lang/base/type/abstract_numeric.h"
+#include "src/tint/lang/base/type/atomic.h"
+#include "src/tint/lang/base/type/builtin_structs.h"
+#include "src/tint/lang/base/type/depth_multisampled_texture.h"
+#include "src/tint/lang/base/type/depth_texture.h"
+#include "src/tint/lang/base/type/external_texture.h"
+#include "src/tint/lang/base/type/multisampled_texture.h"
+#include "src/tint/lang/base/type/sampled_texture.h"
+#include "src/tint/lang/base/type/storage_texture.h"
+#include "src/tint/lang/base/type/texture_dimension.h"
 #include "src/tint/lang/wgsl/ast/binary_expression.h"
 #include "src/tint/lang/wgsl/sem/evaluation_stage.h"
 #include "src/tint/lang/wgsl/sem/pipeline_stage_set.h"
@@ -30,18 +42,6 @@
 #include "src/tint/lang/wgsl/sem/value_conversion.h"
 #include "src/tint/program_builder.h"
 #include "src/tint/switch.h"
-#include "src/tint/type/abstract_float.h"
-#include "src/tint/type/abstract_int.h"
-#include "src/tint/type/abstract_numeric.h"
-#include "src/tint/type/atomic.h"
-#include "src/tint/type/builtin_structs.h"
-#include "src/tint/type/depth_multisampled_texture.h"
-#include "src/tint/type/depth_texture.h"
-#include "src/tint/type/external_texture.h"
-#include "src/tint/type/multisampled_texture.h"
-#include "src/tint/type/sampled_texture.h"
-#include "src/tint/type/storage_texture.h"
-#include "src/tint/type/texture_dimension.h"
 
 namespace tint::resolver {
 namespace {
diff --git a/src/tint/resolver/intrinsic_table_test.cc b/src/tint/resolver/intrinsic_table_test.cc
index 51b48ec..8e66873 100644
--- a/src/tint/resolver/intrinsic_table_test.cc
+++ b/src/tint/resolver/intrinsic_table_test.cc
@@ -17,20 +17,20 @@
 #include <utility>
 
 #include "gmock/gmock.h"
+#include "src/tint/lang/base/type/atomic.h"
+#include "src/tint/lang/base/type/depth_multisampled_texture.h"
+#include "src/tint/lang/base/type/depth_texture.h"
+#include "src/tint/lang/base/type/external_texture.h"
+#include "src/tint/lang/base/type/multisampled_texture.h"
+#include "src/tint/lang/base/type/reference.h"
+#include "src/tint/lang/base/type/sampled_texture.h"
+#include "src/tint/lang/base/type/storage_texture.h"
+#include "src/tint/lang/base/type/test_helper.h"
+#include "src/tint/lang/base/type/texture_dimension.h"
 #include "src/tint/lang/wgsl/sem/value_constructor.h"
 #include "src/tint/lang/wgsl/sem/value_conversion.h"
 #include "src/tint/program_builder.h"
 #include "src/tint/resolver/resolver_test_helper.h"
-#include "src/tint/type/atomic.h"
-#include "src/tint/type/depth_multisampled_texture.h"
-#include "src/tint/type/depth_texture.h"
-#include "src/tint/type/external_texture.h"
-#include "src/tint/type/multisampled_texture.h"
-#include "src/tint/type/reference.h"
-#include "src/tint/type/sampled_texture.h"
-#include "src/tint/type/storage_texture.h"
-#include "src/tint/type/test_helper.h"
-#include "src/tint/type/texture_dimension.h"
 
 namespace tint::resolver {
 namespace {
diff --git a/src/tint/resolver/is_host_shareable_test.cc b/src/tint/resolver/is_host_shareable_test.cc
index 32ff06d..993ef85 100644
--- a/src/tint/resolver/is_host_shareable_test.cc
+++ b/src/tint/resolver/is_host_shareable_test.cc
@@ -15,8 +15,8 @@
 #include "src/tint/resolver/resolver.h"
 
 #include "gmock/gmock.h"
+#include "src/tint/lang/base/type/atomic.h"
 #include "src/tint/resolver/resolver_test_helper.h"
-#include "src/tint/type/atomic.h"
 
 namespace tint::resolver {
 namespace {
diff --git a/src/tint/resolver/is_storeable_test.cc b/src/tint/resolver/is_storeable_test.cc
index b7fa0e8..03df2ac 100644
--- a/src/tint/resolver/is_storeable_test.cc
+++ b/src/tint/resolver/is_storeable_test.cc
@@ -15,8 +15,8 @@
 #include "src/tint/resolver/resolver.h"
 
 #include "gmock/gmock.h"
+#include "src/tint/lang/base/type/atomic.h"
 #include "src/tint/resolver/resolver_test_helper.h"
-#include "src/tint/type/atomic.h"
 
 using namespace tint::builtin::fluent_types;  // NOLINT
 
diff --git a/src/tint/resolver/load_test.cc b/src/tint/resolver/load_test.cc
index d7ca8ab..f914447 100644
--- a/src/tint/resolver/load_test.cc
+++ b/src/tint/resolver/load_test.cc
@@ -14,11 +14,11 @@
 
 #include "src/tint/lang/wgsl/sem/load.h"
 #include "gmock/gmock.h"
+#include "src/tint/lang/base/type/reference.h"
+#include "src/tint/lang/base/type/texture_dimension.h"
 #include "src/tint/lang/wgsl/sem/test_helper.h"
 #include "src/tint/resolver/resolver.h"
 #include "src/tint/resolver/resolver_test_helper.h"
-#include "src/tint/type/reference.h"
-#include "src/tint/type/texture_dimension.h"
 
 namespace tint::resolver {
 namespace {
diff --git a/src/tint/resolver/materialize_test.cc b/src/tint/resolver/materialize_test.cc
index 5161531..bbe079c 100644
--- a/src/tint/resolver/materialize_test.cc
+++ b/src/tint/resolver/materialize_test.cc
@@ -14,10 +14,10 @@
 
 #include "src/tint/lang/wgsl/sem/materialize.h"
 
+#include "src/tint/lang/base/type/test_helper.h"
 #include "src/tint/resolver/resolver.h"
 #include "src/tint/resolver/resolver_test_helper.h"
 #include "src/tint/switch.h"
-#include "src/tint/type/test_helper.h"
 
 #include "gmock/gmock.h"
 
diff --git a/src/tint/resolver/ptr_ref_test.cc b/src/tint/resolver/ptr_ref_test.cc
index 40de655..6fbd5e9 100644
--- a/src/tint/resolver/ptr_ref_test.cc
+++ b/src/tint/resolver/ptr_ref_test.cc
@@ -12,10 +12,10 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
+#include "src/tint/lang/base/type/reference.h"
 #include "src/tint/lang/wgsl/sem/load.h"
 #include "src/tint/resolver/resolver.h"
 #include "src/tint/resolver/resolver_test_helper.h"
-#include "src/tint/type/reference.h"
 
 #include "gmock/gmock.h"
 
diff --git a/src/tint/resolver/ptr_ref_validation_test.cc b/src/tint/resolver/ptr_ref_validation_test.cc
index bcf8427..bac0288 100644
--- a/src/tint/resolver/ptr_ref_validation_test.cc
+++ b/src/tint/resolver/ptr_ref_validation_test.cc
@@ -13,11 +13,11 @@
 // limitations under the License.
 
 #include "gmock/gmock.h"
+#include "src/tint/lang/base/type/reference.h"
+#include "src/tint/lang/base/type/texture_dimension.h"
 #include "src/tint/lang/wgsl/ast/bitcast_expression.h"
 #include "src/tint/resolver/resolver.h"
 #include "src/tint/resolver/resolver_test_helper.h"
-#include "src/tint/type/reference.h"
-#include "src/tint/type/texture_dimension.h"
 
 namespace tint::resolver {
 namespace {
diff --git a/src/tint/resolver/resolver.cc b/src/tint/resolver/resolver.cc
index a625a39..44c7215 100644
--- a/src/tint/resolver/resolver.cc
+++ b/src/tint/resolver/resolver.cc
@@ -30,6 +30,20 @@
 #include "src/tint/core/transform.h"
 #include "src/tint/core/vector.h"
 #include "src/tint/lang/base/builtin/builtin.h"
+#include "src/tint/lang/base/type/abstract_float.h"
+#include "src/tint/lang/base/type/abstract_int.h"
+#include "src/tint/lang/base/type/array.h"
+#include "src/tint/lang/base/type/atomic.h"
+#include "src/tint/lang/base/type/builtin_structs.h"
+#include "src/tint/lang/base/type/depth_multisampled_texture.h"
+#include "src/tint/lang/base/type/depth_texture.h"
+#include "src/tint/lang/base/type/external_texture.h"
+#include "src/tint/lang/base/type/multisampled_texture.h"
+#include "src/tint/lang/base/type/pointer.h"
+#include "src/tint/lang/base/type/reference.h"
+#include "src/tint/lang/base/type/sampled_texture.h"
+#include "src/tint/lang/base/type/sampler.h"
+#include "src/tint/lang/base/type/storage_texture.h"
 #include "src/tint/lang/wgsl/ast/alias.h"
 #include "src/tint/lang/wgsl/ast/assignment_statement.h"
 #include "src/tint/lang/wgsl/ast/attribute.h"
@@ -74,20 +88,6 @@
 #include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/lang/wgsl/sem/while_statement.h"
 #include "src/tint/resolver/uniformity.h"
-#include "src/tint/type/abstract_float.h"
-#include "src/tint/type/abstract_int.h"
-#include "src/tint/type/array.h"
-#include "src/tint/type/atomic.h"
-#include "src/tint/type/builtin_structs.h"
-#include "src/tint/type/depth_multisampled_texture.h"
-#include "src/tint/type/depth_texture.h"
-#include "src/tint/type/external_texture.h"
-#include "src/tint/type/multisampled_texture.h"
-#include "src/tint/type/pointer.h"
-#include "src/tint/type/reference.h"
-#include "src/tint/type/sampled_texture.h"
-#include "src/tint/type/sampler.h"
-#include "src/tint/type/storage_texture.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::sem::BuiltinEnumExpression<tint::builtin::Access>);
 TINT_INSTANTIATE_TYPEINFO(tint::sem::BuiltinEnumExpression<tint::builtin::AddressSpace>);
diff --git a/src/tint/resolver/resolver_test.cc b/src/tint/resolver/resolver_test.cc
index cb7614d..0efc15c 100644
--- a/src/tint/resolver/resolver_test.cc
+++ b/src/tint/resolver/resolver_test.cc
@@ -20,6 +20,9 @@
 #include "gtest/gtest-spi.h"
 #include "src/tint/core/string_stream.h"
 #include "src/tint/lang/base/builtin/builtin_value.h"
+#include "src/tint/lang/base/type/reference.h"
+#include "src/tint/lang/base/type/sampled_texture.h"
+#include "src/tint/lang/base/type/texture_dimension.h"
 #include "src/tint/lang/wgsl/ast/assignment_statement.h"
 #include "src/tint/lang/wgsl/ast/bitcast_expression.h"
 #include "src/tint/lang/wgsl/ast/break_statement.h"
@@ -44,9 +47,6 @@
 #include "src/tint/lang/wgsl/sem/switch_statement.h"
 #include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/resolver/resolver_test_helper.h"
-#include "src/tint/type/reference.h"
-#include "src/tint/type/sampled_texture.h"
-#include "src/tint/type/texture_dimension.h"
 
 namespace tint::resolver {
 namespace {
diff --git a/src/tint/resolver/resolver_test_helper.h b/src/tint/resolver/resolver_test_helper.h
index 4d6861e..cd21dfa 100644
--- a/src/tint/resolver/resolver_test_helper.h
+++ b/src/tint/resolver/resolver_test_helper.h
@@ -26,13 +26,13 @@
 #include "gtest/gtest.h"
 #include "src/tint/core/traits.h"
 #include "src/tint/core/vector.h"
+#include "src/tint/lang/base/type/abstract_float.h"
+#include "src/tint/lang/base/type/abstract_int.h"
 #include "src/tint/lang/wgsl/sem/statement.h"
 #include "src/tint/lang/wgsl/sem/value_expression.h"
 #include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/program_builder.h"
 #include "src/tint/resolver/resolver.h"
-#include "src/tint/type/abstract_float.h"
-#include "src/tint/type/abstract_int.h"
 
 namespace tint::resolver {
 
diff --git a/src/tint/resolver/root_identifier_test.cc b/src/tint/resolver/root_identifier_test.cc
index 84bec8f..8873d2e 100644
--- a/src/tint/resolver/root_identifier_test.cc
+++ b/src/tint/resolver/root_identifier_test.cc
@@ -14,10 +14,10 @@
 
 #include "src/tint/resolver/resolver.h"
 
+#include "src/tint/lang/base/type/texture_dimension.h"
 #include "src/tint/lang/wgsl/sem/index_accessor_expression.h"
 #include "src/tint/lang/wgsl/sem/member_accessor_expression.h"
 #include "src/tint/resolver/resolver_test_helper.h"
-#include "src/tint/type/texture_dimension.h"
 
 namespace tint::resolver {
 namespace {
diff --git a/src/tint/resolver/side_effects_test.cc b/src/tint/resolver/side_effects_test.cc
index 043e25e..684569e 100644
--- a/src/tint/resolver/side_effects_test.cc
+++ b/src/tint/resolver/side_effects_test.cc
@@ -19,11 +19,11 @@
 #include "src/tint/lang/base/builtin/address_space.h"
 #include "src/tint/lang/base/builtin/extension.h"
 #include "src/tint/lang/base/builtin/texel_format.h"
+#include "src/tint/lang/base/type/texture_dimension.h"
 #include "src/tint/lang/wgsl/sem/index_accessor_expression.h"
 #include "src/tint/lang/wgsl/sem/member_accessor_expression.h"
 #include "src/tint/lang/wgsl/sem/value_expression.h"
 #include "src/tint/resolver/resolver_test_helper.h"
-#include "src/tint/type/texture_dimension.h"
 
 using namespace tint::number_suffixes;  // NOLINT
 
diff --git a/src/tint/resolver/type_validation_test.cc b/src/tint/resolver/type_validation_test.cc
index 2296df4..6f82005 100644
--- a/src/tint/resolver/type_validation_test.cc
+++ b/src/tint/resolver/type_validation_test.cc
@@ -12,14 +12,14 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
+#include "src/tint/lang/base/type/multisampled_texture.h"
+#include "src/tint/lang/base/type/storage_texture.h"
+#include "src/tint/lang/base/type/texture_dimension.h"
 #include "src/tint/lang/wgsl/ast/id_attribute.h"
 #include "src/tint/lang/wgsl/ast/return_statement.h"
 #include "src/tint/lang/wgsl/ast/stage_attribute.h"
 #include "src/tint/resolver/resolver.h"
 #include "src/tint/resolver/resolver_test_helper.h"
-#include "src/tint/type/multisampled_texture.h"
-#include "src/tint/type/storage_texture.h"
-#include "src/tint/type/texture_dimension.h"
 
 #include "gmock/gmock.h"
 
diff --git a/src/tint/resolver/validation_test.cc b/src/tint/resolver/validation_test.cc
index 8f76ebe..2e96368 100644
--- a/src/tint/resolver/validation_test.cc
+++ b/src/tint/resolver/validation_test.cc
@@ -17,6 +17,8 @@
 #include "gmock/gmock.h"
 #include "gtest/gtest-spi.h"
 #include "src/tint/lang/base/builtin/builtin_value.h"
+#include "src/tint/lang/base/type/sampled_texture.h"
+#include "src/tint/lang/base/type/texture_dimension.h"
 #include "src/tint/lang/wgsl/ast/assignment_statement.h"
 #include "src/tint/lang/wgsl/ast/bitcast_expression.h"
 #include "src/tint/lang/wgsl/ast/break_statement.h"
@@ -37,8 +39,6 @@
 #include "src/tint/lang/wgsl/sem/statement.h"
 #include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/resolver/resolver_test_helper.h"
-#include "src/tint/type/sampled_texture.h"
-#include "src/tint/type/texture_dimension.h"
 
 namespace tint::resolver {
 namespace {
diff --git a/src/tint/resolver/validator.cc b/src/tint/resolver/validator.cc
index f0de2df..fbb73c2 100644
--- a/src/tint/resolver/validator.cc
+++ b/src/tint/resolver/validator.cc
@@ -26,6 +26,18 @@
 #include "src/tint/core/string.h"
 #include "src/tint/core/string_stream.h"
 #include "src/tint/core/transform.h"
+#include "src/tint/lang/base/type/abstract_numeric.h"
+#include "src/tint/lang/base/type/array.h"
+#include "src/tint/lang/base/type/atomic.h"
+#include "src/tint/lang/base/type/depth_multisampled_texture.h"
+#include "src/tint/lang/base/type/depth_texture.h"
+#include "src/tint/lang/base/type/multisampled_texture.h"
+#include "src/tint/lang/base/type/pointer.h"
+#include "src/tint/lang/base/type/reference.h"
+#include "src/tint/lang/base/type/sampled_texture.h"
+#include "src/tint/lang/base/type/sampler.h"
+#include "src/tint/lang/base/type/storage_texture.h"
+#include "src/tint/lang/base/type/texture_dimension.h"
 #include "src/tint/lang/wgsl/ast/alias.h"
 #include "src/tint/lang/wgsl/ast/assignment_statement.h"
 #include "src/tint/lang/wgsl/ast/bitcast_expression.h"
@@ -62,18 +74,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/type/abstract_numeric.h"
-#include "src/tint/type/array.h"
-#include "src/tint/type/atomic.h"
-#include "src/tint/type/depth_multisampled_texture.h"
-#include "src/tint/type/depth_texture.h"
-#include "src/tint/type/multisampled_texture.h"
-#include "src/tint/type/pointer.h"
-#include "src/tint/type/reference.h"
-#include "src/tint/type/sampled_texture.h"
-#include "src/tint/type/sampler.h"
-#include "src/tint/type/storage_texture.h"
-#include "src/tint/type/texture_dimension.h"
 
 namespace tint::resolver {
 namespace {
diff --git a/src/tint/resolver/validator_is_storeable_test.cc b/src/tint/resolver/validator_is_storeable_test.cc
index 826ac57..c2bd16b 100644
--- a/src/tint/resolver/validator_is_storeable_test.cc
+++ b/src/tint/resolver/validator_is_storeable_test.cc
@@ -15,8 +15,8 @@
 #include "src/tint/resolver/validator.h"
 
 #include "gmock/gmock.h"
+#include "src/tint/lang/base/type/atomic.h"
 #include "src/tint/resolver/resolver_test_helper.h"
-#include "src/tint/type/atomic.h"
 
 namespace tint::resolver {
 namespace {
diff --git a/src/tint/resolver/value_constructor_validation_test.cc b/src/tint/resolver/value_constructor_validation_test.cc
index 4f58f47..0247836 100644
--- a/src/tint/resolver/value_constructor_validation_test.cc
+++ b/src/tint/resolver/value_constructor_validation_test.cc
@@ -14,10 +14,10 @@
 
 #include "gmock/gmock.h"
 #include "src/tint/core/string_stream.h"
+#include "src/tint/lang/base/type/reference.h"
 #include "src/tint/lang/wgsl/sem/value_constructor.h"
 #include "src/tint/lang/wgsl/sem/value_conversion.h"
 #include "src/tint/resolver/resolver_test_helper.h"
-#include "src/tint/type/reference.h"
 
 namespace tint::resolver {
 namespace {
diff --git a/src/tint/resolver/variable_test.cc b/src/tint/resolver/variable_test.cc
index 2054885..f8d3210 100644
--- a/src/tint/resolver/variable_test.cc
+++ b/src/tint/resolver/variable_test.cc
@@ -13,10 +13,10 @@
 // limitations under the License.
 
 #include "gmock/gmock.h"
+#include "src/tint/lang/base/type/reference.h"
+#include "src/tint/lang/base/type/texture_dimension.h"
 #include "src/tint/resolver/resolver.h"
 #include "src/tint/resolver/resolver_test_helper.h"
-#include "src/tint/type/reference.h"
-#include "src/tint/type/texture_dimension.h"
 
 namespace tint::resolver {
 namespace {
diff --git a/src/tint/resolver/variable_validation_test.cc b/src/tint/resolver/variable_validation_test.cc
index 44cc973..676d976 100644
--- a/src/tint/resolver/variable_validation_test.cc
+++ b/src/tint/resolver/variable_validation_test.cc
@@ -13,9 +13,9 @@
 // limitations under the License.
 
 #include "gmock/gmock.h"
+#include "src/tint/lang/base/type/texture_dimension.h"
 #include "src/tint/resolver/resolver.h"
 #include "src/tint/resolver/resolver_test_helper.h"
-#include "src/tint/type/texture_dimension.h"
 
 namespace tint::resolver {
 namespace {
diff --git a/src/tint/writer/flatten_bindings_test.cc b/src/tint/writer/flatten_bindings_test.cc
index 9db5ea9..b62e8d7 100644
--- a/src/tint/writer/flatten_bindings_test.cc
+++ b/src/tint/writer/flatten_bindings_test.cc
@@ -17,9 +17,9 @@
 #include <utility>
 
 #include "gtest/gtest.h"
+#include "src/tint/lang/base/type/texture_dimension.h"
 #include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/type/texture_dimension.h"
 
 namespace tint::writer {
 namespace {
diff --git a/src/tint/writer/spirv/builder.cc b/src/tint/writer/spirv/builder.cc
index e25e342..07048cb 100644
--- a/src/tint/writer/spirv/builder.cc
+++ b/src/tint/writer/spirv/builder.cc
@@ -23,6 +23,15 @@
 #include "src/tint/core/map.h"
 #include "src/tint/core/string_stream.h"
 #include "src/tint/lang/base/constant/value.h"
+#include "src/tint/lang/base/type/array.h"
+#include "src/tint/lang/base/type/atomic.h"
+#include "src/tint/lang/base/type/depth_multisampled_texture.h"
+#include "src/tint/lang/base/type/depth_texture.h"
+#include "src/tint/lang/base/type/multisampled_texture.h"
+#include "src/tint/lang/base/type/reference.h"
+#include "src/tint/lang/base/type/sampled_texture.h"
+#include "src/tint/lang/base/type/texture_dimension.h"
+#include "src/tint/lang/base/type/vector.h"
 #include "src/tint/lang/wgsl/ast/call_statement.h"
 #include "src/tint/lang/wgsl/ast/id_attribute.h"
 #include "src/tint/lang/wgsl/ast/internal_attribute.h"
@@ -41,15 +50,6 @@
 #include "src/tint/lang/wgsl/sem/value_constructor.h"
 #include "src/tint/lang/wgsl/sem/value_conversion.h"
 #include "src/tint/lang/wgsl/sem/variable.h"
-#include "src/tint/type/array.h"
-#include "src/tint/type/atomic.h"
-#include "src/tint/type/depth_multisampled_texture.h"
-#include "src/tint/type/depth_texture.h"
-#include "src/tint/type/multisampled_texture.h"
-#include "src/tint/type/reference.h"
-#include "src/tint/type/sampled_texture.h"
-#include "src/tint/type/texture_dimension.h"
-#include "src/tint/type/vector.h"
 #include "src/tint/writer/append_vector.h"
 #include "src/tint/writer/check_supported_extensions.h"
 
diff --git a/src/tint/writer/spirv/builder.h b/src/tint/writer/spirv/builder.h
index f22ca34..0cc74c4 100644
--- a/src/tint/writer/spirv/builder.h
+++ b/src/tint/writer/spirv/builder.h
@@ -23,6 +23,7 @@
 
 #include "spirv/unified1/spirv.h"
 #include "src/tint/lang/base/builtin/builtin_value.h"
+#include "src/tint/lang/base/type/storage_texture.h"
 #include "src/tint/lang/wgsl/ast/assignment_statement.h"
 #include "src/tint/lang/wgsl/ast/bitcast_expression.h"
 #include "src/tint/lang/wgsl/ast/break_statement.h"
@@ -38,7 +39,6 @@
 #include "src/tint/lang/wgsl/sem/builtin.h"
 #include "src/tint/program_builder.h"
 #include "src/tint/scope_stack.h"
-#include "src/tint/type/storage_texture.h"
 #include "src/tint/writer/spirv/function.h"
 #include "src/tint/writer/spirv/module.h"
 #include "src/tint/writer/spirv/scalar_constant.h"
diff --git a/src/tint/writer/spirv/builder_builtin_test.cc b/src/tint/writer/spirv/builder_builtin_test.cc
index 578a8f9..7dc775b 100644
--- a/src/tint/writer/spirv/builder_builtin_test.cc
+++ b/src/tint/writer/spirv/builder_builtin_test.cc
@@ -13,10 +13,10 @@
 // limitations under the License.
 
 #include "src/tint/core/string.h"
+#include "src/tint/lang/base/type/depth_texture.h"
+#include "src/tint/lang/base/type/texture_dimension.h"
 #include "src/tint/lang/wgsl/ast/call_statement.h"
 #include "src/tint/lang/wgsl/ast/stage_attribute.h"
-#include "src/tint/type/depth_texture.h"
-#include "src/tint/type/texture_dimension.h"
 #include "src/tint/writer/spirv/spv_dump.h"
 #include "src/tint/writer/spirv/test_helper.h"
 
diff --git a/src/tint/writer/spirv/builder_entry_point_test.cc b/src/tint/writer/spirv/builder_entry_point_test.cc
index 934460c..cae041f 100644
--- a/src/tint/writer/spirv/builder_entry_point_test.cc
+++ b/src/tint/writer/spirv/builder_entry_point_test.cc
@@ -17,14 +17,14 @@
 #include "gtest/gtest.h"
 #include "src/tint/lang/base/builtin/address_space.h"
 #include "src/tint/lang/base/builtin/builtin_value.h"
+#include "src/tint/lang/base/type/f32.h"
+#include "src/tint/lang/base/type/vector.h"
 #include "src/tint/lang/wgsl/ast/builtin_attribute.h"
 #include "src/tint/lang/wgsl/ast/location_attribute.h"
 #include "src/tint/lang/wgsl/ast/return_statement.h"
 #include "src/tint/lang/wgsl/ast/stage_attribute.h"
 #include "src/tint/lang/wgsl/ast/variable.h"
 #include "src/tint/program.h"
-#include "src/tint/type/f32.h"
-#include "src/tint/type/vector.h"
 #include "src/tint/writer/spirv/builder.h"
 #include "src/tint/writer/spirv/spv_dump.h"
 #include "src/tint/writer/spirv/test_helper.h"
diff --git a/src/tint/writer/spirv/builder_global_variable_test.cc b/src/tint/writer/spirv/builder_global_variable_test.cc
index 564ed1f..89fbf17 100644
--- a/src/tint/writer/spirv/builder_global_variable_test.cc
+++ b/src/tint/writer/spirv/builder_global_variable_test.cc
@@ -12,9 +12,9 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
+#include "src/tint/lang/base/type/texture_dimension.h"
 #include "src/tint/lang/wgsl/ast/id_attribute.h"
 #include "src/tint/lang/wgsl/ast/stage_attribute.h"
-#include "src/tint/type/texture_dimension.h"
 #include "src/tint/writer/spirv/spv_dump.h"
 #include "src/tint/writer/spirv/test_helper.h"
 
diff --git a/src/tint/writer/spirv/builder_type_test.cc b/src/tint/writer/spirv/builder_type_test.cc
index 0bf5280..f729b14 100644
--- a/src/tint/writer/spirv/builder_type_test.cc
+++ b/src/tint/writer/spirv/builder_type_test.cc
@@ -12,10 +12,10 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/type/depth_texture.h"
-#include "src/tint/type/multisampled_texture.h"
-#include "src/tint/type/sampled_texture.h"
-#include "src/tint/type/texture_dimension.h"
+#include "src/tint/lang/base/type/depth_texture.h"
+#include "src/tint/lang/base/type/multisampled_texture.h"
+#include "src/tint/lang/base/type/sampled_texture.h"
+#include "src/tint/lang/base/type/texture_dimension.h"
 #include "src/tint/writer/spirv/spv_dump.h"
 #include "src/tint/writer/spirv/test_helper.h"
 
diff --git a/src/tint/writer/spirv/ir/generator_impl_ir.cc b/src/tint/writer/spirv/ir/generator_impl_ir.cc
index b5938a0..2982f33 100644
--- a/src/tint/writer/spirv/ir/generator_impl_ir.cc
+++ b/src/tint/writer/spirv/ir/generator_impl_ir.cc
@@ -56,28 +56,28 @@
 #include "src/tint/ir/validator.h"
 #include "src/tint/ir/var.h"
 #include "src/tint/lang/base/constant/scalar.h"
+#include "src/tint/lang/base/type/array.h"
+#include "src/tint/lang/base/type/atomic.h"
+#include "src/tint/lang/base/type/bool.h"
+#include "src/tint/lang/base/type/depth_multisampled_texture.h"
+#include "src/tint/lang/base/type/depth_texture.h"
+#include "src/tint/lang/base/type/f16.h"
+#include "src/tint/lang/base/type/f32.h"
+#include "src/tint/lang/base/type/i32.h"
+#include "src/tint/lang/base/type/matrix.h"
+#include "src/tint/lang/base/type/multisampled_texture.h"
+#include "src/tint/lang/base/type/pointer.h"
+#include "src/tint/lang/base/type/sampled_texture.h"
+#include "src/tint/lang/base/type/sampler.h"
+#include "src/tint/lang/base/type/storage_texture.h"
+#include "src/tint/lang/base/type/struct.h"
+#include "src/tint/lang/base/type/texture.h"
+#include "src/tint/lang/base/type/type.h"
+#include "src/tint/lang/base/type/u32.h"
+#include "src/tint/lang/base/type/vector.h"
+#include "src/tint/lang/base/type/void.h"
 #include "src/tint/switch.h"
 #include "src/tint/transform/manager.h"
-#include "src/tint/type/array.h"
-#include "src/tint/type/atomic.h"
-#include "src/tint/type/bool.h"
-#include "src/tint/type/depth_multisampled_texture.h"
-#include "src/tint/type/depth_texture.h"
-#include "src/tint/type/f16.h"
-#include "src/tint/type/f32.h"
-#include "src/tint/type/i32.h"
-#include "src/tint/type/matrix.h"
-#include "src/tint/type/multisampled_texture.h"
-#include "src/tint/type/pointer.h"
-#include "src/tint/type/sampled_texture.h"
-#include "src/tint/type/sampler.h"
-#include "src/tint/type/storage_texture.h"
-#include "src/tint/type/struct.h"
-#include "src/tint/type/texture.h"
-#include "src/tint/type/type.h"
-#include "src/tint/type/u32.h"
-#include "src/tint/type/vector.h"
-#include "src/tint/type/void.h"
 #include "src/tint/writer/spirv/generator.h"
 #include "src/tint/writer/spirv/module.h"
 
diff --git a/src/tint/writer/spirv/ir/generator_impl_ir_atomic_builtin_test.cc b/src/tint/writer/spirv/ir/generator_impl_ir_atomic_builtin_test.cc
index 6967ca5..a8b07e0 100644
--- a/src/tint/writer/spirv/ir/generator_impl_ir_atomic_builtin_test.cc
+++ b/src/tint/writer/spirv/ir/generator_impl_ir_atomic_builtin_test.cc
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/type/builtin_structs.h"
+#include "src/tint/lang/base/type/builtin_structs.h"
 #include "src/tint/writer/spirv/ir/test_helper_ir.h"
 
 #include "src/tint/lang/base/builtin/function.h"
diff --git a/src/tint/writer/spirv/ir/generator_impl_ir_builtin_test.cc b/src/tint/writer/spirv/ir/generator_impl_ir_builtin_test.cc
index afa98c2f..a8ea65f 100644
--- a/src/tint/writer/spirv/ir/generator_impl_ir_builtin_test.cc
+++ b/src/tint/writer/spirv/ir/generator_impl_ir_builtin_test.cc
@@ -15,7 +15,7 @@
 #include "src/tint/writer/spirv/ir/test_helper_ir.h"
 
 #include "src/tint/lang/base/builtin/function.h"
-#include "src/tint/type/builtin_structs.h"
+#include "src/tint/lang/base/type/builtin_structs.h"
 
 using namespace tint::number_suffixes;  // NOLINT
 
diff --git a/src/tint/writer/spirv/ir/generator_impl_ir_texture_builtin_test.cc b/src/tint/writer/spirv/ir/generator_impl_ir_texture_builtin_test.cc
index db06d87..7997751 100644
--- a/src/tint/writer/spirv/ir/generator_impl_ir_texture_builtin_test.cc
+++ b/src/tint/writer/spirv/ir/generator_impl_ir_texture_builtin_test.cc
@@ -15,7 +15,7 @@
 #include "src/tint/writer/spirv/ir/test_helper_ir.h"
 
 #include "src/tint/lang/base/builtin/function.h"
-#include "src/tint/type/depth_multisampled_texture.h"
+#include "src/tint/lang/base/type/depth_multisampled_texture.h"
 
 using namespace tint::number_suffixes;  // NOLINT
 
diff --git a/src/tint/writer/spirv/ir/generator_impl_ir_type_test.cc b/src/tint/writer/spirv/ir/generator_impl_ir_type_test.cc
index 1c14172..5255b0f 100644
--- a/src/tint/writer/spirv/ir/generator_impl_ir_type_test.cc
+++ b/src/tint/writer/spirv/ir/generator_impl_ir_type_test.cc
@@ -12,18 +12,18 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/type/bool.h"
-#include "src/tint/type/depth_multisampled_texture.h"
-#include "src/tint/type/depth_texture.h"
-#include "src/tint/type/f16.h"
-#include "src/tint/type/f32.h"
-#include "src/tint/type/i32.h"
-#include "src/tint/type/multisampled_texture.h"
-#include "src/tint/type/sampled_texture.h"
-#include "src/tint/type/storage_texture.h"
-#include "src/tint/type/type.h"
-#include "src/tint/type/u32.h"
-#include "src/tint/type/void.h"
+#include "src/tint/lang/base/type/bool.h"
+#include "src/tint/lang/base/type/depth_multisampled_texture.h"
+#include "src/tint/lang/base/type/depth_texture.h"
+#include "src/tint/lang/base/type/f16.h"
+#include "src/tint/lang/base/type/f32.h"
+#include "src/tint/lang/base/type/i32.h"
+#include "src/tint/lang/base/type/multisampled_texture.h"
+#include "src/tint/lang/base/type/sampled_texture.h"
+#include "src/tint/lang/base/type/storage_texture.h"
+#include "src/tint/lang/base/type/type.h"
+#include "src/tint/lang/base/type/u32.h"
+#include "src/tint/lang/base/type/void.h"
 #include "src/tint/writer/spirv/ir/test_helper_ir.h"
 
 namespace tint::writer::spirv {
diff --git a/src/tint/writer/spirv/ir/generator_impl_ir_var_test.cc b/src/tint/writer/spirv/ir/generator_impl_ir_var_test.cc
index 9bd5d06..9e672c4 100644
--- a/src/tint/writer/spirv/ir/generator_impl_ir_var_test.cc
+++ b/src/tint/writer/spirv/ir/generator_impl_ir_var_test.cc
@@ -12,8 +12,8 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/type/pointer.h"
-#include "src/tint/type/sampled_texture.h"
+#include "src/tint/lang/base/type/pointer.h"
+#include "src/tint/lang/base/type/sampled_texture.h"
 #include "src/tint/writer/spirv/ir/test_helper_ir.h"
 
 namespace tint::writer::spirv {
diff --git a/src/tint/writer/text_generator.h b/src/tint/writer/text_generator.h
index d0d024a..47d48bc 100644
--- a/src/tint/writer/text_generator.h
+++ b/src/tint/writer/text_generator.h
@@ -22,7 +22,7 @@
 
 #include "src/tint/core/diagnostic/diagnostic.h"
 #include "src/tint/core/string_stream.h"
-#include "src/tint/type/struct.h"
+#include "src/tint/lang/base/type/struct.h"
 
 namespace tint::writer {