Move Number into core namespace.

Move the number file into the correct `tint::core` namespace from
`tint`. The types names are added to the fluent_types file in order to
make usage cleaner.

Change-Id: I3d8c1c0b18f646698e8f77213bcd2a273e8657d6
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/146681
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Dan Sinclair <dsinclair@chromium.org>
Reviewed-by: Ben Clayton <bclayton@google.com>
diff --git a/src/tint/cmd/common/generate_external_texture_bindings_test.cc b/src/tint/cmd/common/generate_external_texture_bindings_test.cc
index 35cf0b3..9d6fdd5 100644
--- a/src/tint/cmd/common/generate_external_texture_bindings_test.cc
+++ b/src/tint/cmd/common/generate_external_texture_bindings_test.cc
@@ -23,7 +23,7 @@
 namespace tint::cmd {
 namespace {
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 constexpr auto kUniform = core::AddressSpace::kUniform;
 
diff --git a/src/tint/lang/core/constant/composite_test.cc b/src/tint/lang/core/constant/composite_test.cc
index 763f357..8edda2d 100644
--- a/src/tint/lang/core/constant/composite_test.cc
+++ b/src/tint/lang/core/constant/composite_test.cc
@@ -16,12 +16,14 @@
 
 #include "src/tint/lang/core/constant/helper_test.h"
 #include "src/tint/lang/core/constant/scalar.h"
+#include "src/tint/lang/core/fluent_types.h"
+
+using namespace tint::core::number_suffixes;  // NOLINT
+using namespace tint::core::fluent_types;     // NOLINT
 
 namespace tint::core::constant {
 namespace {
 
-using namespace tint::number_suffixes;  // NOLINT
-
 using ConstantTest_Composite = TestHelper;
 
 TEST_F(ConstantTest_Composite, AllZero) {
@@ -74,10 +76,10 @@
     ASSERT_NE(composite->Index(1), nullptr);
     ASSERT_EQ(composite->Index(2), nullptr);
 
-    EXPECT_TRUE(composite->Index(0)->Is<Scalar<tint::f32>>());
-    EXPECT_EQ(composite->Index(0)->As<Scalar<tint::f32>>()->ValueOf(), 1.0);
-    EXPECT_TRUE(composite->Index(1)->Is<Scalar<tint::f32>>());
-    EXPECT_EQ(composite->Index(1)->As<Scalar<tint::f32>>()->ValueOf(), 0.0);
+    EXPECT_TRUE(composite->Index(0)->Is<Scalar<f32>>());
+    EXPECT_EQ(composite->Index(0)->As<Scalar<f32>>()->ValueOf(), 1.0);
+    EXPECT_TRUE(composite->Index(1)->Is<Scalar<f32>>());
+    EXPECT_EQ(composite->Index(1)->As<Scalar<f32>>()->ValueOf(), 0.0);
 }
 
 TEST_F(ConstantTest_Composite, Clone) {
diff --git a/src/tint/lang/core/constant/eval.cc b/src/tint/lang/core/constant/eval.cc
index 0840065..0da84aa 100644
--- a/src/tint/lang/core/constant/eval.cc
+++ b/src/tint/lang/core/constant/eval.cc
@@ -26,6 +26,7 @@
 #include "src/tint/lang/core/constant/scalar.h"
 #include "src/tint/lang/core/constant/splat.h"
 #include "src/tint/lang/core/constant/value.h"
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/core/number.h"
 #include "src/tint/lang/core/type/abstract_float.h"
 #include "src/tint/lang/core/type/abstract_int.h"
@@ -46,7 +47,8 @@
 #include "src/tint/utils/rtti/switch.h"
 #include "src/tint/utils/text/string_stream.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::fluent_types;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::core::constant {
 namespace {
@@ -370,22 +372,22 @@
             [&](const ScalarBase* scalar) {
                 auto* converted = Switch(
                     scalar,
-                    [&](const Scalar<tint::AFloat>* val) {
+                    [&](const Scalar<AFloat>* val) {
                         return ScalarConvert(val, convert->target_ty, ctx);
                     },
-                    [&](const Scalar<tint::AInt>* val) {
+                    [&](const Scalar<AInt>* val) {
                         return ScalarConvert(val, convert->target_ty, ctx);
                     },
-                    [&](const Scalar<tint::u32>* val) {
+                    [&](const Scalar<u32>* val) {
                         return ScalarConvert(val, convert->target_ty, ctx);
                     },
-                    [&](const Scalar<tint::i32>* val) {
+                    [&](const Scalar<i32>* val) {
                         return ScalarConvert(val, convert->target_ty, ctx);
                     },
-                    [&](const Scalar<tint::f32>* val) {
+                    [&](const Scalar<f32>* val) {
                         return ScalarConvert(val, convert->target_ty, ctx);
                     },
-                    [&](const Scalar<tint::f16>* val) {
+                    [&](const Scalar<f16>* val) {
                         return ScalarConvert(val, convert->target_ty, ctx);
                     },
                     [&](const Scalar<bool>* val) {
diff --git a/src/tint/lang/core/constant/eval_binary_op_test.cc b/src/tint/lang/core/constant/eval_binary_op_test.cc
index 8eff2f8..867418b 100644
--- a/src/tint/lang/core/constant/eval_binary_op_test.cc
+++ b/src/tint/lang/core/constant/eval_binary_op_test.cc
@@ -18,7 +18,7 @@
 #include "src/tint/utils/result/result.h"
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 using ::testing::HasSubstr;
 
 namespace tint::core::constant::test {
diff --git a/src/tint/lang/core/constant/eval_bitcast_test.cc b/src/tint/lang/core/constant/eval_bitcast_test.cc
index 745c02e..b977e7c 100644
--- a/src/tint/lang/core/constant/eval_bitcast_test.cc
+++ b/src/tint/lang/core/constant/eval_bitcast_test.cc
@@ -18,7 +18,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 struct Case {
     Value input;
diff --git a/src/tint/lang/core/constant/eval_builtin_test.cc b/src/tint/lang/core/constant/eval_builtin_test.cc
index 80f87ed..7b1e198 100644
--- a/src/tint/lang/core/constant/eval_builtin_test.cc
+++ b/src/tint/lang/core/constant/eval_builtin_test.cc
@@ -16,7 +16,7 @@
 
 #include "src/tint/utils/result/result.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 using ::testing::HasSubstr;
 
 namespace tint::core::constant::test {
diff --git a/src/tint/lang/core/constant/eval_construction_test.cc b/src/tint/lang/core/constant/eval_construction_test.cc
index 5d9cdc2..7a6f88c 100644
--- a/src/tint/lang/core/constant/eval_construction_test.cc
+++ b/src/tint/lang/core/constant/eval_construction_test.cc
@@ -18,7 +18,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 TEST_F(ConstEvalTest, Scalar_AFloat) {
     auto* expr = Expr(99.0_a);
diff --git a/src/tint/lang/core/constant/eval_conversion_test.cc b/src/tint/lang/core/constant/eval_conversion_test.cc
index 179f046..1dd68b5 100644
--- a/src/tint/lang/core/constant/eval_conversion_test.cc
+++ b/src/tint/lang/core/constant/eval_conversion_test.cc
@@ -20,7 +20,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 enum class Kind {
     kScalar,
diff --git a/src/tint/lang/core/constant/eval_indexing_test.cc b/src/tint/lang/core/constant/eval_indexing_test.cc
index c84a71e..679fa56 100644
--- a/src/tint/lang/core/constant/eval_indexing_test.cc
+++ b/src/tint/lang/core/constant/eval_indexing_test.cc
@@ -18,7 +18,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 TEST_F(ConstEvalTest, Vec3_Index) {
     auto* expr = IndexAccessor(Call<vec3<i32>>(1_i, 2_i, 3_i), 2_i);
diff --git a/src/tint/lang/core/constant/eval_member_access_test.cc b/src/tint/lang/core/constant/eval_member_access_test.cc
index fb6271d..7bc17d8 100644
--- a/src/tint/lang/core/constant/eval_member_access_test.cc
+++ b/src/tint/lang/core/constant/eval_member_access_test.cc
@@ -18,7 +18,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 TEST_F(ConstEvalTest, StructMemberAccess) {
     Structure("Inner", Vector{
diff --git a/src/tint/lang/core/constant/eval_runtime_semantics_test.cc b/src/tint/lang/core/constant/eval_runtime_semantics_test.cc
index 1407e86..48c17dc 100644
--- a/src/tint/lang/core/constant/eval_runtime_semantics_test.cc
+++ b/src/tint/lang/core/constant/eval_runtime_semantics_test.cc
@@ -16,7 +16,7 @@
 
 #include "src/tint/lang/core/constant/scalar.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::core::constant::test {
 namespace {
diff --git a/src/tint/lang/core/constant/eval_unary_op_test.cc b/src/tint/lang/core/constant/eval_unary_op_test.cc
index 39050de..668cf21 100644
--- a/src/tint/lang/core/constant/eval_unary_op_test.cc
+++ b/src/tint/lang/core/constant/eval_unary_op_test.cc
@@ -14,7 +14,7 @@
 
 #include "src/tint/lang/core/constant/eval_test.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::core::constant::test {
 namespace {
diff --git a/src/tint/lang/core/constant/manager_test.cc b/src/tint/lang/core/constant/manager_test.cc
index f01a612..f61ce99 100644
--- a/src/tint/lang/core/constant/manager_test.cc
+++ b/src/tint/lang/core/constant/manager_test.cc
@@ -28,7 +28,7 @@
 namespace tint::core::constant {
 namespace {
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 template <typename T>
 size_t count(const T& range_loopable) {
diff --git a/src/tint/lang/core/constant/scalar.cc b/src/tint/lang/core/constant/scalar.cc
index 3cbc347..71454e2 100644
--- a/src/tint/lang/core/constant/scalar.cc
+++ b/src/tint/lang/core/constant/scalar.cc
@@ -15,12 +15,12 @@
 #include "src/tint/lang/core/constant/scalar.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::core::constant::ScalarBase);
-TINT_INSTANTIATE_TYPEINFO(tint::core::constant::Scalar<tint::AInt>);
-TINT_INSTANTIATE_TYPEINFO(tint::core::constant::Scalar<tint::AFloat>);
-TINT_INSTANTIATE_TYPEINFO(tint::core::constant::Scalar<tint::i32>);
-TINT_INSTANTIATE_TYPEINFO(tint::core::constant::Scalar<tint::u32>);
-TINT_INSTANTIATE_TYPEINFO(tint::core::constant::Scalar<tint::f16>);
-TINT_INSTANTIATE_TYPEINFO(tint::core::constant::Scalar<tint::f32>);
+TINT_INSTANTIATE_TYPEINFO(tint::core::constant::Scalar<tint::core::AInt>);
+TINT_INSTANTIATE_TYPEINFO(tint::core::constant::Scalar<tint::core::AFloat>);
+TINT_INSTANTIATE_TYPEINFO(tint::core::constant::Scalar<tint::core::i32>);
+TINT_INSTANTIATE_TYPEINFO(tint::core::constant::Scalar<tint::core::u32>);
+TINT_INSTANTIATE_TYPEINFO(tint::core::constant::Scalar<tint::core::f16>);
+TINT_INSTANTIATE_TYPEINFO(tint::core::constant::Scalar<tint::core::f32>);
 TINT_INSTANTIATE_TYPEINFO(tint::core::constant::Scalar<bool>);
 
 namespace tint::core::constant {
diff --git a/src/tint/lang/core/constant/scalar_test.cc b/src/tint/lang/core/constant/scalar_test.cc
index 999da12..c07baa2 100644
--- a/src/tint/lang/core/constant/scalar_test.cc
+++ b/src/tint/lang/core/constant/scalar_test.cc
@@ -19,7 +19,7 @@
 namespace tint::core::constant {
 namespace {
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using ConstantTest_Scalar = TestHelper;
 
diff --git a/src/tint/lang/core/constant/splat_test.cc b/src/tint/lang/core/constant/splat_test.cc
index 1e7cdc3..ea8692e 100644
--- a/src/tint/lang/core/constant/splat_test.cc
+++ b/src/tint/lang/core/constant/splat_test.cc
@@ -16,12 +16,14 @@
 
 #include "src/tint/lang/core/constant/helper_test.h"
 #include "src/tint/lang/core/constant/scalar.h"
+#include "src/tint/lang/core/fluent_types.h"
+
+using namespace tint::core::number_suffixes;  // NOLINT
+using namespace tint::core::fluent_types;     // NOLINT
 
 namespace tint::core::constant {
 namespace {
 
-using namespace tint::number_suffixes;  // NOLINT
-
 using ConstantTest_Splat = TestHelper;
 
 TEST_F(ConstantTest_Splat, AllZero) {
@@ -66,8 +68,8 @@
     ASSERT_NE(sp->Index(1), nullptr);
     ASSERT_EQ(sp->Index(2), nullptr);
 
-    EXPECT_EQ(sp->Index(0)->As<Scalar<tint::f32>>()->ValueOf(), 1.f);
-    EXPECT_EQ(sp->Index(1)->As<Scalar<tint::f32>>()->ValueOf(), 1.f);
+    EXPECT_EQ(sp->Index(0)->As<Scalar<f32>>()->ValueOf(), 1.f);
+    EXPECT_EQ(sp->Index(1)->As<Scalar<f32>>()->ValueOf(), 1.f);
 }
 
 TEST_F(ConstantTest_Splat, Clone) {
@@ -81,7 +83,7 @@
     auto* r = sp->Clone(ctx);
     ASSERT_NE(r, nullptr);
     EXPECT_TRUE(r->type->Is<core::type::Vector>());
-    EXPECT_TRUE(r->el->Is<Scalar<tint::i32>>());
+    EXPECT_TRUE(r->el->Is<Scalar<i32>>());
     EXPECT_EQ(r->count, 2u);
 }
 
diff --git a/src/tint/lang/core/constant/value_test.cc b/src/tint/lang/core/constant/value_test.cc
index a8f9308..8305ceb 100644
--- a/src/tint/lang/core/constant/value_test.cc
+++ b/src/tint/lang/core/constant/value_test.cc
@@ -20,7 +20,7 @@
 namespace tint::core::constant {
 namespace {
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using ConstantTest_Value = TestHelper;
 
diff --git a/src/tint/lang/core/fluent_types.h b/src/tint/lang/core/fluent_types.h
index f1ee86c..896a3dc 100644
--- a/src/tint/lang/core/fluent_types.h
+++ b/src/tint/lang/core/fluent_types.h
@@ -23,6 +23,13 @@
 
 namespace tint::core::fluent_types {
 
+using f16 = tint::core::f16;
+using f32 = tint::core::f32;
+using i32 = tint::core::i32;
+using u32 = tint::core::u32;
+using AFloat = tint::core::AFloat;
+using AInt = tint::core::AInt;
+
 // A sentinel type used by some template arguments to signal that the a type should be inferred.
 struct Infer {};
 
diff --git a/src/tint/lang/core/ir/binary_test.cc b/src/tint/lang/core/ir/binary_test.cc
index 8201d98..5fbe8fd 100644
--- a/src/tint/lang/core/ir/binary_test.cc
+++ b/src/tint/lang/core/ir/binary_test.cc
@@ -14,15 +14,17 @@
 
 #include "gmock/gmock.h"
 #include "gtest/gtest-spi.h"
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/core/ir/builder.h"
 #include "src/tint/lang/core/ir/instruction.h"
 #include "src/tint/lang/core/ir/ir_helper_test.h"
 
+using namespace tint::core::number_suffixes;  // NOLINT
+using namespace tint::core::fluent_types;     // NOLINT
+
 namespace tint::ir {
 namespace {
 
-using namespace tint::number_suffixes;  // NOLINT
-
 using IR_BinaryTest = IRTestHelper;
 
 TEST_F(IR_BinaryTest, Fail_NullType) {
diff --git a/src/tint/lang/core/ir/bitcast_test.cc b/src/tint/lang/core/ir/bitcast_test.cc
index bbf7d2d..e847ea4 100644
--- a/src/tint/lang/core/ir/bitcast_test.cc
+++ b/src/tint/lang/core/ir/bitcast_test.cc
@@ -14,16 +14,18 @@
 
 #include "gmock/gmock.h"
 #include "gtest/gtest-spi.h"
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/core/ir/builder.h"
 #include "src/tint/lang/core/ir/constant.h"
 #include "src/tint/lang/core/ir/instruction.h"
 #include "src/tint/lang/core/ir/ir_helper_test.h"
 
+using namespace tint::core::number_suffixes;  // NOLINT
+using namespace tint::core::fluent_types;     // NOLINT
+
 namespace tint::ir {
 namespace {
 
-using namespace tint::number_suffixes;  // NOLINT
-
 using IR_BitcastTest = IRTestHelper;
 
 TEST_F(IR_BitcastTest, Bitcast) {
diff --git a/src/tint/lang/core/ir/block_param_test.cc b/src/tint/lang/core/ir/block_param_test.cc
index fa92414..001e846 100644
--- a/src/tint/lang/core/ir/block_param_test.cc
+++ b/src/tint/lang/core/ir/block_param_test.cc
@@ -19,7 +19,7 @@
 namespace tint::ir {
 namespace {
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 using IR_BlockParamTest = IRTestHelper;
 
 TEST_F(IR_BlockParamTest, Fail_NullType) {
diff --git a/src/tint/lang/core/ir/block_test.cc b/src/tint/lang/core/ir/block_test.cc
index b1b5305..e7433e7 100644
--- a/src/tint/lang/core/ir/block_test.cc
+++ b/src/tint/lang/core/ir/block_test.cc
@@ -19,7 +19,7 @@
 namespace tint::ir {
 namespace {
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 using IR_BlockTest = IRTestHelper;
 
 TEST_F(IR_BlockTest, HasTerminator_Empty) {
diff --git a/src/tint/lang/core/ir/break_if_test.cc b/src/tint/lang/core/ir/break_if_test.cc
index 992585d..38f3f88 100644
--- a/src/tint/lang/core/ir/break_if_test.cc
+++ b/src/tint/lang/core/ir/break_if_test.cc
@@ -21,7 +21,7 @@
 namespace tint::ir {
 namespace {
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 using IR_BreakIfTest = IRTestHelper;
 
 TEST_F(IR_BreakIfTest, Usage) {
diff --git a/src/tint/lang/core/ir/builder.h b/src/tint/lang/core/ir/builder.h
index b67303e..7fea105 100644
--- a/src/tint/lang/core/ir/builder.h
+++ b/src/tint/lang/core/ir/builder.h
@@ -221,22 +221,22 @@
     /// Creates a ir::Constant for an i32 Scalar
     /// @param v the value
     /// @returns the new constant
-    ir::Constant* Constant(i32 v) { return Constant(ConstantValue(v)); }
+    ir::Constant* Constant(core::i32 v) { return Constant(ConstantValue(v)); }
 
     /// Creates a ir::Constant for a u32 Scalar
     /// @param v the value
     /// @returns the new constant
-    ir::Constant* Constant(u32 v) { return Constant(ConstantValue(v)); }
+    ir::Constant* Constant(core::u32 v) { return Constant(ConstantValue(v)); }
 
     /// Creates a ir::Constant for a f32 Scalar
     /// @param v the value
     /// @returns the new constant
-    ir::Constant* Constant(f32 v) { return Constant(ConstantValue(v)); }
+    ir::Constant* Constant(core::f32 v) { return Constant(ConstantValue(v)); }
 
     /// Creates a ir::Constant for a f16 Scalar
     /// @param v the value
     /// @returns the new constant
-    ir::Constant* Constant(f16 v) { return Constant(ConstantValue(v)); }
+    ir::Constant* Constant(core::f16 v) { return Constant(ConstantValue(v)); }
 
     /// Creates a ir::Constant for a bool Scalar
     /// @param v the value
@@ -254,22 +254,22 @@
     /// Creates a core::constant::Value for an i32 Scalar
     /// @param v the value
     /// @returns the new constant
-    const core::constant::Value* ConstantValue(i32 v) { return ir.constant_values.Get(v); }
+    const core::constant::Value* ConstantValue(core::i32 v) { return ir.constant_values.Get(v); }
 
     /// Creates a core::constant::Value for a u32 Scalar
     /// @param v the value
     /// @returns the new constant
-    const core::constant::Value* ConstantValue(u32 v) { return ir.constant_values.Get(v); }
+    const core::constant::Value* ConstantValue(core::u32 v) { return ir.constant_values.Get(v); }
 
     /// Creates a core::constant::Value for a f32 Scalar
     /// @param v the value
     /// @returns the new constant
-    const core::constant::Value* ConstantValue(f32 v) { return ir.constant_values.Get(v); }
+    const core::constant::Value* ConstantValue(core::f32 v) { return ir.constant_values.Get(v); }
 
     /// Creates a core::constant::Value for a f16 Scalar
     /// @param v the value
     /// @returns the new constant
-    const core::constant::Value* ConstantValue(f16 v) { return ir.constant_values.Get(v); }
+    const core::constant::Value* ConstantValue(core::f16 v) { return ir.constant_values.Get(v); }
 
     /// Creates a core::constant::Value for a bool Scalar
     /// @param v the value
@@ -307,7 +307,7 @@
         using D = std::decay_t<T>;
         constexpr bool is_null = std::is_same_v<T, std::nullptr_t>;
         constexpr bool is_ptr = std::is_pointer_v<D>;
-        constexpr bool is_numeric = IsNumeric<D>;
+        constexpr bool is_numeric = core::IsNumeric<D>;
         static_assert(is_null || is_ptr || is_numeric, "invalid argument type for Value()");
 
         if constexpr (is_null) {
diff --git a/src/tint/lang/core/ir/constant_test.cc b/src/tint/lang/core/ir/constant_test.cc
index fd6bb01..6eb57aa 100644
--- a/src/tint/lang/core/ir/constant_test.cc
+++ b/src/tint/lang/core/ir/constant_test.cc
@@ -13,15 +13,17 @@
 // limitations under the License.
 
 #include "gtest/gtest-spi.h"
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/core/ir/builder.h"
 #include "src/tint/lang/core/ir/ir_helper_test.h"
 #include "src/tint/lang/core/ir/value.h"
 
+using namespace tint::core::number_suffixes;  // NOLINT
+using namespace tint::core::fluent_types;     // NOLINT
+
 namespace tint::ir {
 namespace {
 
-using namespace tint::number_suffixes;  // NOLINT
-
 using IR_ConstantTest = IRTestHelper;
 
 TEST_F(IR_ConstantTest, f32) {
diff --git a/src/tint/lang/core/ir/construct_test.cc b/src/tint/lang/core/ir/construct_test.cc
index 727db00..8d7a277 100644
--- a/src/tint/lang/core/ir/construct_test.cc
+++ b/src/tint/lang/core/ir/construct_test.cc
@@ -21,7 +21,7 @@
 namespace tint::ir {
 namespace {
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 using IR_ConstructTest = IRTestHelper;
 
 TEST_F(IR_ConstructTest, Usage) {
diff --git a/src/tint/lang/core/ir/continue_test.cc b/src/tint/lang/core/ir/continue_test.cc
index 1607195..7acb484 100644
--- a/src/tint/lang/core/ir/continue_test.cc
+++ b/src/tint/lang/core/ir/continue_test.cc
@@ -21,7 +21,7 @@
 namespace tint::ir {
 namespace {
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 using IR_ContinueTest = IRTestHelper;
 
 TEST_F(IR_ContinueTest, Usage) {
diff --git a/src/tint/lang/core/ir/convert_test.cc b/src/tint/lang/core/ir/convert_test.cc
index 35b9804..40cbf2d 100644
--- a/src/tint/lang/core/ir/convert_test.cc
+++ b/src/tint/lang/core/ir/convert_test.cc
@@ -19,7 +19,7 @@
 namespace tint::ir {
 namespace {
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 using IR_ConvertTest = IRTestHelper;
 
 TEST_F(IR_ConvertTest, Fail_NullToType) {
diff --git a/src/tint/lang/core/ir/core_builtin_call_test.cc b/src/tint/lang/core/ir/core_builtin_call_test.cc
index 9bdace5..b24f5a5 100644
--- a/src/tint/lang/core/ir/core_builtin_call_test.cc
+++ b/src/tint/lang/core/ir/core_builtin_call_test.cc
@@ -20,7 +20,7 @@
 namespace tint::ir {
 namespace {
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 using IR_CoreBuiltinCallTest = IRTestHelper;
 
 TEST_F(IR_CoreBuiltinCallTest, Usage) {
diff --git a/src/tint/lang/core/ir/disassembler.cc b/src/tint/lang/core/ir/disassembler.cc
index 71bd370..1ed9997 100644
--- a/src/tint/lang/core/ir/disassembler.cc
+++ b/src/tint/lang/core/ir/disassembler.cc
@@ -18,6 +18,7 @@
 #include "src/tint/lang/core/constant/composite.h"
 #include "src/tint/lang/core/constant/scalar.h"
 #include "src/tint/lang/core/constant/splat.h"
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/core/ir/access.h"
 #include "src/tint/lang/core/ir/binary.h"
 #include "src/tint/lang/core/ir/bitcast.h"
@@ -57,6 +58,8 @@
 #include "src/tint/utils/rtti/switch.h"
 #include "src/tint/utils/text/string.h"
 
+using namespace tint::core::fluent_types;  // NOLINT
+
 namespace tint::ir {
 namespace {
 
diff --git a/src/tint/lang/core/ir/exit_if_test.cc b/src/tint/lang/core/ir/exit_if_test.cc
index 59389f1..aff09f4 100644
--- a/src/tint/lang/core/ir/exit_if_test.cc
+++ b/src/tint/lang/core/ir/exit_if_test.cc
@@ -20,7 +20,7 @@
 namespace tint::ir {
 namespace {
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 using IR_ExitIfTest = IRTestHelper;
 
 TEST_F(IR_ExitIfTest, Usage) {
diff --git a/src/tint/lang/core/ir/exit_loop_test.cc b/src/tint/lang/core/ir/exit_loop_test.cc
index 8fb617a..a7b7396 100644
--- a/src/tint/lang/core/ir/exit_loop_test.cc
+++ b/src/tint/lang/core/ir/exit_loop_test.cc
@@ -20,7 +20,7 @@
 namespace tint::ir {
 namespace {
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 using IR_ExitLoopTest = IRTestHelper;
 
 TEST_F(IR_ExitLoopTest, Usage) {
diff --git a/src/tint/lang/core/ir/exit_switch_test.cc b/src/tint/lang/core/ir/exit_switch_test.cc
index 61fb75d..f7eaaea 100644
--- a/src/tint/lang/core/ir/exit_switch_test.cc
+++ b/src/tint/lang/core/ir/exit_switch_test.cc
@@ -20,7 +20,7 @@
 namespace tint::ir {
 namespace {
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 using IR_ExitSwitchTest = IRTestHelper;
 
 TEST_F(IR_ExitSwitchTest, Usage) {
diff --git a/src/tint/lang/core/ir/function_param_test.cc b/src/tint/lang/core/ir/function_param_test.cc
index 36e3234..03fbd08 100644
--- a/src/tint/lang/core/ir/function_param_test.cc
+++ b/src/tint/lang/core/ir/function_param_test.cc
@@ -19,7 +19,7 @@
 namespace tint::ir {
 namespace {
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 using IR_FunctionParamTest = IRTestHelper;
 
 TEST_F(IR_FunctionParamTest, Fail_NullType) {
diff --git a/src/tint/lang/core/ir/function_test.cc b/src/tint/lang/core/ir/function_test.cc
index 31890e1..18ac34c 100644
--- a/src/tint/lang/core/ir/function_test.cc
+++ b/src/tint/lang/core/ir/function_test.cc
@@ -19,7 +19,7 @@
 namespace tint::ir {
 namespace {
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 using IR_FunctionTest = IRTestHelper;
 
 TEST_F(IR_FunctionTest, Fail_NullReturnType) {
diff --git a/src/tint/lang/core/ir/if_test.cc b/src/tint/lang/core/ir/if_test.cc
index c554c9d..2e889a5 100644
--- a/src/tint/lang/core/ir/if_test.cc
+++ b/src/tint/lang/core/ir/if_test.cc
@@ -20,7 +20,7 @@
 namespace tint::ir {
 namespace {
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 using IR_IfTest = IRTestHelper;
 
 TEST_F(IR_IfTest, Usage) {
diff --git a/src/tint/lang/core/ir/instruction_result_test.cc b/src/tint/lang/core/ir/instruction_result_test.cc
index 325e74e..aff44e9 100644
--- a/src/tint/lang/core/ir/instruction_result_test.cc
+++ b/src/tint/lang/core/ir/instruction_result_test.cc
@@ -16,7 +16,7 @@
 #include "gtest/gtest-spi.h"
 #include "src/tint/lang/core/ir/ir_helper_test.h"
 
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 using namespace tint::core::fluent_types;  // NOLINT
 
 namespace tint::ir {
diff --git a/src/tint/lang/core/ir/intrinsic_call_test.cc b/src/tint/lang/core/ir/intrinsic_call_test.cc
index ecb2bd9..651b29c 100644
--- a/src/tint/lang/core/ir/intrinsic_call_test.cc
+++ b/src/tint/lang/core/ir/intrinsic_call_test.cc
@@ -19,7 +19,7 @@
 namespace tint::ir {
 namespace {
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 using IR_IntrinsicCallTest = IRTestHelper;
 
 TEST_F(IR_IntrinsicCallTest, Usage) {
diff --git a/src/tint/lang/core/ir/let_test.cc b/src/tint/lang/core/ir/let_test.cc
index 59d50c6..e138654 100644
--- a/src/tint/lang/core/ir/let_test.cc
+++ b/src/tint/lang/core/ir/let_test.cc
@@ -24,7 +24,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using IR_LetTest = IRTestHelper;
 
diff --git a/src/tint/lang/core/ir/load_test.cc b/src/tint/lang/core/ir/load_test.cc
index 94c2462..bd66640 100644
--- a/src/tint/lang/core/ir/load_test.cc
+++ b/src/tint/lang/core/ir/load_test.cc
@@ -22,7 +22,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using IR_LoadTest = IRTestHelper;
 
diff --git a/src/tint/lang/core/ir/load_vector_element_test.cc b/src/tint/lang/core/ir/load_vector_element_test.cc
index 39597a2..015d210 100644
--- a/src/tint/lang/core/ir/load_vector_element_test.cc
+++ b/src/tint/lang/core/ir/load_vector_element_test.cc
@@ -22,7 +22,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using IR_LoadVectorElementTest = IRTestHelper;
 
diff --git a/src/tint/lang/core/ir/loop_test.cc b/src/tint/lang/core/ir/loop_test.cc
index be5877d..b83ec2f 100644
--- a/src/tint/lang/core/ir/loop_test.cc
+++ b/src/tint/lang/core/ir/loop_test.cc
@@ -19,7 +19,7 @@
 namespace tint::ir {
 namespace {
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 using IR_LoopTest = IRTestHelper;
 
 TEST_F(IR_LoopTest, Parent) {
diff --git a/src/tint/lang/core/ir/module_test.cc b/src/tint/lang/core/ir/module_test.cc
index 2f18a95..e94ab23 100644
--- a/src/tint/lang/core/ir/module_test.cc
+++ b/src/tint/lang/core/ir/module_test.cc
@@ -20,7 +20,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using IR_ModuleTest = IRTestHelper;
 
diff --git a/src/tint/lang/core/ir/multi_in_block_test.cc b/src/tint/lang/core/ir/multi_in_block_test.cc
index 95b3f57..810aac2 100644
--- a/src/tint/lang/core/ir/multi_in_block_test.cc
+++ b/src/tint/lang/core/ir/multi_in_block_test.cc
@@ -20,7 +20,7 @@
 namespace tint::ir {
 namespace {
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 using IR_MultiInBlockTest = IRTestHelper;
 
 TEST_F(IR_MultiInBlockTest, Fail_NullInboundBranch) {
diff --git a/src/tint/lang/core/ir/next_iteration_test.cc b/src/tint/lang/core/ir/next_iteration_test.cc
index 841b9c6..3a9562d 100644
--- a/src/tint/lang/core/ir/next_iteration_test.cc
+++ b/src/tint/lang/core/ir/next_iteration_test.cc
@@ -19,7 +19,7 @@
 namespace tint::ir {
 namespace {
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 using IR_NextIterationTest = IRTestHelper;
 
 TEST_F(IR_NextIterationTest, Fail_NullLoop) {
diff --git a/src/tint/lang/core/ir/operand_instruction_test.cc b/src/tint/lang/core/ir/operand_instruction_test.cc
index 0b434b1..4217d6e 100644
--- a/src/tint/lang/core/ir/operand_instruction_test.cc
+++ b/src/tint/lang/core/ir/operand_instruction_test.cc
@@ -18,7 +18,7 @@
 namespace tint::ir {
 namespace {
 
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 using namespace tint::core::fluent_types;  // NOLINT
 
 using IR_OperandInstructionTest = IRTestHelper;
diff --git a/src/tint/lang/core/ir/return_test.cc b/src/tint/lang/core/ir/return_test.cc
index 21ecb2d..31c33cd 100644
--- a/src/tint/lang/core/ir/return_test.cc
+++ b/src/tint/lang/core/ir/return_test.cc
@@ -21,7 +21,7 @@
 namespace tint::ir {
 namespace {
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 using IR_ReturnTest = IRTestHelper;
 
 TEST_F(IR_ReturnTest, ImplicitNoValue) {
diff --git a/src/tint/lang/core/ir/store_test.cc b/src/tint/lang/core/ir/store_test.cc
index 519ccda..cba87a4 100644
--- a/src/tint/lang/core/ir/store_test.cc
+++ b/src/tint/lang/core/ir/store_test.cc
@@ -22,7 +22,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using IR_StoreTest = IRTestHelper;
 
diff --git a/src/tint/lang/core/ir/store_vector_element_test.cc b/src/tint/lang/core/ir/store_vector_element_test.cc
index 214f8c2..f4338fe 100644
--- a/src/tint/lang/core/ir/store_vector_element_test.cc
+++ b/src/tint/lang/core/ir/store_vector_element_test.cc
@@ -22,7 +22,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using IR_StoreVectorElementTest = IRTestHelper;
 
diff --git a/src/tint/lang/core/ir/switch_test.cc b/src/tint/lang/core/ir/switch_test.cc
index 92e6486..2ffee15 100644
--- a/src/tint/lang/core/ir/switch_test.cc
+++ b/src/tint/lang/core/ir/switch_test.cc
@@ -21,7 +21,7 @@
 namespace tint::ir {
 namespace {
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 using IR_SwitchTest = IRTestHelper;
 
 TEST_F(IR_SwitchTest, Usage) {
diff --git a/src/tint/lang/core/ir/transform/bgra8unorm_polyfill.cc b/src/tint/lang/core/ir/transform/bgra8unorm_polyfill.cc
index 96c6ed5..b94a5cd 100644
--- a/src/tint/lang/core/ir/transform/bgra8unorm_polyfill.cc
+++ b/src/tint/lang/core/ir/transform/bgra8unorm_polyfill.cc
@@ -23,7 +23,7 @@
 #include "src/tint/lang/core/type/storage_texture.h"
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::ir::transform {
 
diff --git a/src/tint/lang/core/ir/transform/bgra8unorm_polyfill_test.cc b/src/tint/lang/core/ir/transform/bgra8unorm_polyfill_test.cc
index 4cf15d0..192c398 100644
--- a/src/tint/lang/core/ir/transform/bgra8unorm_polyfill_test.cc
+++ b/src/tint/lang/core/ir/transform/bgra8unorm_polyfill_test.cc
@@ -23,7 +23,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using IR_Bgra8UnormPolyfillTest = TransformTest;
 
diff --git a/src/tint/lang/core/ir/transform/binding_remapper.cc b/src/tint/lang/core/ir/transform/binding_remapper.cc
index 4e9239e..dc91cc4 100644
--- a/src/tint/lang/core/ir/transform/binding_remapper.cc
+++ b/src/tint/lang/core/ir/transform/binding_remapper.cc
@@ -22,7 +22,7 @@
 #include "src/tint/utils/result/result.h"
 #include "src/tint/utils/text/string.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::ir::transform {
 
diff --git a/src/tint/lang/core/ir/transform/binding_remapper_test.cc b/src/tint/lang/core/ir/transform/binding_remapper_test.cc
index 0924e39..2ecb5c9 100644
--- a/src/tint/lang/core/ir/transform/binding_remapper_test.cc
+++ b/src/tint/lang/core/ir/transform/binding_remapper_test.cc
@@ -22,7 +22,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using IR_BindingRemapperTest = TransformTest;
 
diff --git a/src/tint/lang/core/ir/transform/block_decorated_structs.cc b/src/tint/lang/core/ir/transform/block_decorated_structs.cc
index befbbde..732a5d5 100644
--- a/src/tint/lang/core/ir/transform/block_decorated_structs.cc
+++ b/src/tint/lang/core/ir/transform/block_decorated_structs.cc
@@ -22,7 +22,7 @@
 #include "src/tint/lang/core/type/pointer.h"
 #include "src/tint/lang/core/type/struct.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::ir::transform {
 
diff --git a/src/tint/lang/core/ir/transform/block_decorated_structs_test.cc b/src/tint/lang/core/ir/transform/block_decorated_structs_test.cc
index 6d0524e..6683539 100644
--- a/src/tint/lang/core/ir/transform/block_decorated_structs_test.cc
+++ b/src/tint/lang/core/ir/transform/block_decorated_structs_test.cc
@@ -25,7 +25,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using IR_BlockDecoratedStructsTest = TransformTest;
 
diff --git a/src/tint/lang/core/ir/transform/builtin_polyfill.cc b/src/tint/lang/core/ir/transform/builtin_polyfill.cc
index 57e94e6..17f179c 100644
--- a/src/tint/lang/core/ir/transform/builtin_polyfill.cc
+++ b/src/tint/lang/core/ir/transform/builtin_polyfill.cc
@@ -22,7 +22,7 @@
 #include "src/tint/lang/core/type/sampled_texture.h"
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::ir::transform {
 
diff --git a/src/tint/lang/core/ir/transform/builtin_polyfill_test.cc b/src/tint/lang/core/ir/transform/builtin_polyfill_test.cc
index 3c57235..3918778 100644
--- a/src/tint/lang/core/ir/transform/builtin_polyfill_test.cc
+++ b/src/tint/lang/core/ir/transform/builtin_polyfill_test.cc
@@ -23,7 +23,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 class IR_BuiltinPolyfillTest : public TransformTest {
   protected:
diff --git a/src/tint/lang/core/ir/transform/demote_to_helper.cc b/src/tint/lang/core/ir/transform/demote_to_helper.cc
index d07ee4a..1f6b9cf 100644
--- a/src/tint/lang/core/ir/transform/demote_to_helper.cc
+++ b/src/tint/lang/core/ir/transform/demote_to_helper.cc
@@ -22,7 +22,7 @@
 #include "src/tint/utils/ice/ice.h"
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::ir::transform {
 
diff --git a/src/tint/lang/core/ir/transform/demote_to_helper_test.cc b/src/tint/lang/core/ir/transform/demote_to_helper_test.cc
index 721a983..2ce5988 100644
--- a/src/tint/lang/core/ir/transform/demote_to_helper_test.cc
+++ b/src/tint/lang/core/ir/transform/demote_to_helper_test.cc
@@ -25,7 +25,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using IR_DemoteToHelperTest = TransformTest;
 
diff --git a/src/tint/lang/core/ir/transform/multiplanar_external_texture.cc b/src/tint/lang/core/ir/transform/multiplanar_external_texture.cc
index 0a787b7..bf129ca 100644
--- a/src/tint/lang/core/ir/transform/multiplanar_external_texture.cc
+++ b/src/tint/lang/core/ir/transform/multiplanar_external_texture.cc
@@ -23,7 +23,7 @@
 #include "src/tint/lang/core/type/sampled_texture.h"
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::ir::transform {
 
diff --git a/src/tint/lang/core/ir/transform/multiplanar_external_texture_test.cc b/src/tint/lang/core/ir/transform/multiplanar_external_texture_test.cc
index 37345e2..267cd21 100644
--- a/src/tint/lang/core/ir/transform/multiplanar_external_texture_test.cc
+++ b/src/tint/lang/core/ir/transform/multiplanar_external_texture_test.cc
@@ -23,7 +23,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using IR_MultiplanarExternalTextureTest = TransformTest;
 
diff --git a/src/tint/lang/core/ir/transform/shader_io.cc b/src/tint/lang/core/ir/transform/shader_io.cc
index 1858a39..45b8d85 100644
--- a/src/tint/lang/core/ir/transform/shader_io.cc
+++ b/src/tint/lang/core/ir/transform/shader_io.cc
@@ -22,7 +22,7 @@
 #include "src/tint/lang/core/type/struct.h"
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::ir::transform {
 
diff --git a/src/tint/lang/core/ir/transform/std140.cc b/src/tint/lang/core/ir/transform/std140.cc
index 3a1430b..fb2e0f7 100644
--- a/src/tint/lang/core/ir/transform/std140.cc
+++ b/src/tint/lang/core/ir/transform/std140.cc
@@ -24,7 +24,7 @@
 #include "src/tint/lang/core/type/struct.h"
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::ir::transform {
 
diff --git a/src/tint/lang/core/ir/transform/std140_test.cc b/src/tint/lang/core/ir/transform/std140_test.cc
index c5510f1..cd313d1 100644
--- a/src/tint/lang/core/ir/transform/std140_test.cc
+++ b/src/tint/lang/core/ir/transform/std140_test.cc
@@ -26,7 +26,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using IR_Std140Test = TransformTest;
 
diff --git a/src/tint/lang/core/ir/unary_test.cc b/src/tint/lang/core/ir/unary_test.cc
index 33f3f77..af4289d 100644
--- a/src/tint/lang/core/ir/unary_test.cc
+++ b/src/tint/lang/core/ir/unary_test.cc
@@ -14,15 +14,17 @@
 
 #include "gmock/gmock.h"
 #include "gtest/gtest-spi.h"
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/core/ir/builder.h"
 #include "src/tint/lang/core/ir/instruction.h"
 #include "src/tint/lang/core/ir/ir_helper_test.h"
 
+using namespace tint::core::number_suffixes;  // NOLINT
+using namespace tint::core::fluent_types;     // NOLINT
+
 namespace tint::ir {
 namespace {
 
-using namespace tint::number_suffixes;  // NOLINT
-
 using IR_UnaryTest = IRTestHelper;
 
 TEST_F(IR_UnaryTest, CreateComplement) {
diff --git a/src/tint/lang/core/ir/user_call_test.cc b/src/tint/lang/core/ir/user_call_test.cc
index 9ca242e..a1043c4 100644
--- a/src/tint/lang/core/ir/user_call_test.cc
+++ b/src/tint/lang/core/ir/user_call_test.cc
@@ -21,7 +21,7 @@
 namespace tint::ir {
 namespace {
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 using IR_UserCallTest = IRTestHelper;
 
 TEST_F(IR_UserCallTest, Usage) {
diff --git a/src/tint/lang/core/ir/validator.cc b/src/tint/lang/core/ir/validator.cc
index d9f17fa..b6818d3 100644
--- a/src/tint/lang/core/ir/validator.cc
+++ b/src/tint/lang/core/ir/validator.cc
@@ -18,6 +18,7 @@
 #include <string>
 #include <utility>
 
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/core/ir/access.h"
 #include "src/tint/lang/core/ir/binary.h"
 #include "src/tint/lang/core/ir/bitcast.h"
@@ -64,6 +65,8 @@
 #include <iostream>
 #endif
 
+using namespace tint::core::fluent_types;  // NOLINT
+
 namespace tint::ir {
 
 Validator::Validator(Module& mod) : mod_(mod) {}
diff --git a/src/tint/lang/core/ir/validator_test.cc b/src/tint/lang/core/ir/validator_test.cc
index 3da02ae..d18366d 100644
--- a/src/tint/lang/core/ir/validator_test.cc
+++ b/src/tint/lang/core/ir/validator_test.cc
@@ -29,7 +29,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using IR_ValidatorTest = IRTestHelper;
 
diff --git a/src/tint/lang/core/ir/value_test.cc b/src/tint/lang/core/ir/value_test.cc
index 4e4cc7f..db212ad 100644
--- a/src/tint/lang/core/ir/value_test.cc
+++ b/src/tint/lang/core/ir/value_test.cc
@@ -16,7 +16,7 @@
 #include "gtest/gtest-spi.h"
 #include "src/tint/lang/core/ir/ir_helper_test.h"
 
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 using namespace tint::core::fluent_types;  // NOLINT
 
 namespace tint::ir {
diff --git a/src/tint/lang/core/ir/var_test.cc b/src/tint/lang/core/ir/var_test.cc
index 59a6a97..04349d9 100644
--- a/src/tint/lang/core/ir/var_test.cc
+++ b/src/tint/lang/core/ir/var_test.cc
@@ -24,7 +24,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using IR_VarTest = IRTestHelper;
 
diff --git a/src/tint/lang/core/number.cc b/src/tint/lang/core/number.cc
index 386fe6c..9902d18 100644
--- a/src/tint/lang/core/number.cc
+++ b/src/tint/lang/core/number.cc
@@ -22,7 +22,7 @@
 #include "src/tint/utils/memory/bitcast.h"
 #include "src/tint/utils/text/string_stream.h"
 
-namespace tint {
+namespace tint::core {
 namespace {
 
 constexpr uint16_t kF16Nan = 0x7e00u;
@@ -333,7 +333,7 @@
 }
 
 // static
-Number<tint::detail::NumberKindF16> f16::FromBits(uint16_t bits) {
+core::Number<core::detail::NumberKindF16> f16::FromBits(uint16_t bits) {
     // Assert we use binary32 (i.e. float) as underlying type, which has 4 bytes.
     static_assert(std::is_same<f16::type, float>());
 
@@ -401,4 +401,4 @@
     return f16(tint::Bitcast<f16::type>(val));
 }
 
-}  // namespace tint
+}  // namespace tint::core
diff --git a/src/tint/lang/core/number.h b/src/tint/lang/core/number.h
index 463bcb4..3326ee8 100644
--- a/src/tint/lang/core/number.h
+++ b/src/tint/lang/core/number.h
@@ -27,13 +27,13 @@
 #include "src/tint/utils/traits/traits.h"
 
 // Forward declaration
-namespace tint {
+namespace tint::core {
 /// Number wraps a integer or floating point number, enforcing explicit casting.
 template <typename T>
 struct Number;
-}  // namespace tint
+}  // namespace tint::core
 
-namespace tint::detail {
+namespace tint::core::detail {
 /// Base template for IsNumber
 template <typename T>
 struct IsNumber : std::false_type {};
@@ -60,22 +60,22 @@
     using type = typename Number<T>::type;
 };
 
-}  // namespace tint::detail
+}  // namespace tint::core::detail
 
-namespace tint {
+namespace tint::core {
 
 /// Evaluates to true iff T is a Number
 template <typename T>
-constexpr bool IsNumber = tint::detail::IsNumber<T>::value;
+constexpr bool IsNumber = tint::core::detail::IsNumber<T>::value;
 
 /// Resolves to the underlying type for a Number.
 template <typename T>
-using UnwrapNumber = typename tint::detail::NumberUnwrapper<T>::type;
+using UnwrapNumber = typename tint::core::detail::NumberUnwrapper<T>::type;
 
 /// Evaluates to true iff T or Number<T> is a floating-point type or is NumberKindF16.
 template <typename T>
 constexpr bool IsFloatingPoint = std::is_floating_point_v<UnwrapNumber<T>> ||
-                                 std::is_same_v<UnwrapNumber<T>, tint::detail::NumberKindF16>;
+                                 std::is_same_v<UnwrapNumber<T>, tint::core::detail::NumberKindF16>;
 
 /// Evaluates to true iff T or Number<T> is an integral type.
 template <typename T>
@@ -186,7 +186,8 @@
 /// The partial specification of Number for f16 type, storing the f16 value as float,
 /// and enforcing proper explicit casting.
 template <>
-struct Number<tint::detail::NumberKindF16> : NumberBase<Number<tint::detail::NumberKindF16>> {
+struct Number<tint::core::detail::NumberKindF16>
+    : NumberBase<Number<tint::core::detail::NumberKindF16>> {
     /// C++ does not have a native float16 type, so we use a 32-bit float instead.
     using type = float;
 
@@ -226,7 +227,7 @@
 
     /// Negation operator
     /// @returns the negative value of the number
-    Number operator-() const { return Number<tint::detail::NumberKindF16>(-value); }
+    Number operator-() const { return Number<tint::core::detail::NumberKindF16>(-value); }
 
     /// Assignment operator with parameter as native floating point type
     /// @param v the new value
@@ -246,7 +247,7 @@
     /// Creates an f16 value from the uint16_t bit representation.
     /// @param bits the bits to convert from
     /// @returns the binary16 value based off the provided bit pattern.
-    static Number<tint::detail::NumberKindF16> FromBits(uint16_t bits);
+    static Number<tint::core::detail::NumberKindF16> FromBits(uint16_t bits);
 
     /// @param value the input float32 value
     /// @returns the float32 value quantized to the smaller float16 value, through truncation of the
@@ -272,7 +273,7 @@
 using f32 = Number<float>;
 /// `f16` is a type alias to `Number<detail::NumberKindF16>`, which should be IEEE 754 binary16.
 /// However since C++ don't have native binary16 type, the value is stored as float.
-using f16 = Number<tint::detail::NumberKindF16>;
+using f16 = Number<tint::core::detail::NumberKindF16>;
 
 /// The algorithms in this module require support for infinity and quiet NaNs on
 /// floating point types.
@@ -611,7 +612,7 @@
         return {};
     }
 
-    return AInt{tint::detail::Mod(a.value, b.value)};
+    return AInt{tint::core::detail::Mod(a.value, b.value)};
 }
 
 /// @param a the LHS number
@@ -624,7 +625,7 @@
     if (b == FloatingPointT{0.0}) {
         return {};
     }
-    auto result = FloatingPointT{tint::detail::Mod(a.value, b.value)};
+    auto result = FloatingPointT{tint::core::detail::Mod(a.value, b.value)};
     if (!std::isfinite(result.value)) {
         return {};
     }
@@ -663,9 +664,9 @@
 /// Re-enables the maybe-uninitialized compiler warnings
 TINT_END_DISABLE_WARNING(MAYBE_UNINITIALIZED);
 
-}  // namespace tint
+}  // namespace tint::core
 
-namespace tint::number_suffixes {
+namespace tint::core::number_suffixes {
 
 /// Literal suffix for abstract integer literals
 inline AInt operator""_a(unsigned long long int value) {  // NOLINT
@@ -707,17 +708,17 @@
     return f16(static_cast<double>(value));
 }
 
-}  // namespace tint::number_suffixes
+}  // namespace tint::core::number_suffixes
 
 namespace std {
 
 /// Custom std::hash specialization for tint::Number<T>
 template <typename T>
-class hash<tint::Number<T>> {
+class hash<tint::core::Number<T>> {
   public:
     /// @param n the Number
     /// @return the hash value
-    inline std::size_t operator()(const tint::Number<T>& n) const {
+    inline std::size_t operator()(const tint::core::Number<T>& n) const {
         return std::hash<decltype(n.value)>()(n.value);
     }
 };
diff --git a/src/tint/lang/core/number_test.cc b/src/tint/lang/core/number_test.cc
index 9039841..2a1e61c 100644
--- a/src/tint/lang/core/number_test.cc
+++ b/src/tint/lang/core/number_test.cc
@@ -23,9 +23,9 @@
 
 #include "gtest/gtest.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
-namespace tint {
+namespace tint::core {
 namespace {
 
 // Concats any number of std::vectors
@@ -912,4 +912,4 @@
 TINT_END_DISABLE_WARNING(CONSTANT_OVERFLOW);
 
 }  // namespace
-}  // namespace tint
+}  // namespace tint::core
diff --git a/src/tint/lang/core/type/builtin_structs_test.cc b/src/tint/lang/core/type/builtin_structs_test.cc
index a981b0e..d4d99a04 100644
--- a/src/tint/lang/core/type/builtin_structs_test.cc
+++ b/src/tint/lang/core/type/builtin_structs_test.cc
@@ -27,7 +27,7 @@
 #include "src/tint/utils/id/generation_id.h"
 #include "src/tint/utils/symbol/symbol_table.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::core::type {
 namespace {
diff --git a/src/tint/lang/core/type/manager.h b/src/tint/lang/core/type/manager.h
index b3597d0..19abfa8 100644
--- a/src/tint/lang/core/type/manager.h
+++ b/src/tint/lang/core/type/manager.h
@@ -94,17 +94,17 @@
     /// the same pointer is returned.
     template <typename T, typename... ARGS>
     auto* Get(ARGS&&... args) {
-        if constexpr (std::is_same_v<T, tint::AInt>) {
+        if constexpr (std::is_same_v<T, tint::core::AInt>) {
             return Get<core::type::AbstractInt>(std::forward<ARGS>(args)...);
-        } else if constexpr (std::is_same_v<T, tint::AFloat>) {
+        } else if constexpr (std::is_same_v<T, tint::core::AFloat>) {
             return Get<core::type::AbstractFloat>(std::forward<ARGS>(args)...);
-        } else if constexpr (std::is_same_v<T, tint::i32>) {
+        } else if constexpr (std::is_same_v<T, tint::core::i32>) {
             return Get<core::type::I32>(std::forward<ARGS>(args)...);
-        } else if constexpr (std::is_same_v<T, tint::u32>) {
+        } else if constexpr (std::is_same_v<T, tint::core::u32>) {
             return Get<core::type::U32>(std::forward<ARGS>(args)...);
-        } else if constexpr (std::is_same_v<T, tint::f32>) {
+        } else if constexpr (std::is_same_v<T, tint::core::f32>) {
             return Get<core::type::F32>(std::forward<ARGS>(args)...);
-        } else if constexpr (std::is_same_v<T, tint::f16>) {
+        } else if constexpr (std::is_same_v<T, tint::core::f16>) {
             return Get<core::type::F16>(std::forward<ARGS>(args)...);
         } else if constexpr (std::is_same_v<T, bool>) {
             return Get<core::type::Bool>(std::forward<ARGS>(args)...);
diff --git a/src/tint/lang/core/type/struct_test.cc b/src/tint/lang/core/type/struct_test.cc
index b6059a1..6a78e2a 100644
--- a/src/tint/lang/core/type/struct_test.cc
+++ b/src/tint/lang/core/type/struct_test.cc
@@ -19,7 +19,7 @@
 namespace tint::core::type {
 namespace {
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 using TypeStructTest = TestHelper;
 
 TEST_F(TypeStructTest, Creation) {
diff --git a/src/tint/lang/glsl/writer/ast_printer/array_accessor_test.cc b/src/tint/lang/glsl/writer/ast_printer/array_accessor_test.cc
index c1591d1..64f02f1 100644
--- a/src/tint/lang/glsl/writer/ast_printer/array_accessor_test.cc
+++ b/src/tint/lang/glsl/writer/ast_printer/array_accessor_test.cc
@@ -14,11 +14,13 @@
 
 #include "src/tint/lang/glsl/writer/ast_printer/helper_test.h"
 
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/utils/text/string_stream.h"
 
 #include "gmock/gmock.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
+using namespace tint::core::fluent_types;     // NOLINT
 
 namespace tint::glsl::writer {
 namespace {
diff --git a/src/tint/lang/glsl/writer/ast_printer/ast_printer.cc b/src/tint/lang/glsl/writer/ast_printer/ast_printer.cc
index 268ea33..0347c0a 100644
--- a/src/tint/lang/glsl/writer/ast_printer/ast_printer.cc
+++ b/src/tint/lang/glsl/writer/ast_printer/ast_printer.cc
@@ -24,6 +24,7 @@
 
 #include "src/tint/lang/core/constant/splat.h"
 #include "src/tint/lang/core/constant/value.h"
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/core/type/array.h"
 #include "src/tint/lang/core/type/atomic.h"
 #include "src/tint/lang/core/type/depth_multisampled_texture.h"
@@ -86,7 +87,8 @@
 #include "src/tint/utils/text/string.h"
 #include "src/tint/utils/text/string_stream.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
+using namespace tint::core::fluent_types;     // NOLINT
 
 namespace tint::glsl::writer {
 namespace {
diff --git a/src/tint/lang/glsl/writer/ast_printer/binary_test.cc b/src/tint/lang/glsl/writer/ast_printer/binary_test.cc
index ab4268c..d2b36d9 100644
--- a/src/tint/lang/glsl/writer/ast_printer/binary_test.cc
+++ b/src/tint/lang/glsl/writer/ast_printer/binary_test.cc
@@ -23,7 +23,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using GlslASTPrinterTest_Binary = TestHelper;
 
diff --git a/src/tint/lang/glsl/writer/ast_printer/bitcast_test.cc b/src/tint/lang/glsl/writer/ast_printer/bitcast_test.cc
index 58d160c..7d561fa 100644
--- a/src/tint/lang/glsl/writer/ast_printer/bitcast_test.cc
+++ b/src/tint/lang/glsl/writer/ast_printer/bitcast_test.cc
@@ -19,7 +19,7 @@
 #include "gmock/gmock.h"
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::glsl::writer {
 namespace {
diff --git a/src/tint/lang/glsl/writer/ast_printer/builtin_test.cc b/src/tint/lang/glsl/writer/ast_printer/builtin_test.cc
index 3bac176..b83fa60 100644
--- a/src/tint/lang/glsl/writer/ast_printer/builtin_test.cc
+++ b/src/tint/lang/glsl/writer/ast_printer/builtin_test.cc
@@ -24,7 +24,7 @@
 
 using ::testing::HasSubstr;
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using GlslASTPrinterTest_Builtin = TestHelper;
 
diff --git a/src/tint/lang/glsl/writer/ast_printer/call_test.cc b/src/tint/lang/glsl/writer/ast_printer/call_test.cc
index 1999dc4..cf97d5a 100644
--- a/src/tint/lang/glsl/writer/ast_printer/call_test.cc
+++ b/src/tint/lang/glsl/writer/ast_printer/call_test.cc
@@ -18,7 +18,7 @@
 
 #include "gmock/gmock.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::glsl::writer {
 namespace {
diff --git a/src/tint/lang/glsl/writer/ast_printer/case_test.cc b/src/tint/lang/glsl/writer/ast_printer/case_test.cc
index 8e4af9e..b571847 100644
--- a/src/tint/lang/glsl/writer/ast_printer/case_test.cc
+++ b/src/tint/lang/glsl/writer/ast_printer/case_test.cc
@@ -16,7 +16,7 @@
 
 #include "gmock/gmock.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::glsl::writer {
 namespace {
diff --git a/src/tint/lang/glsl/writer/ast_printer/cast_test.cc b/src/tint/lang/glsl/writer/ast_printer/cast_test.cc
index 12a1c55..1a36878 100644
--- a/src/tint/lang/glsl/writer/ast_printer/cast_test.cc
+++ b/src/tint/lang/glsl/writer/ast_printer/cast_test.cc
@@ -21,7 +21,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using GlslASTPrinterTest_Cast = TestHelper;
 
diff --git a/src/tint/lang/glsl/writer/ast_printer/constructor_test.cc b/src/tint/lang/glsl/writer/ast_printer/constructor_test.cc
index b54740f..84d7d74 100644
--- a/src/tint/lang/glsl/writer/ast_printer/constructor_test.cc
+++ b/src/tint/lang/glsl/writer/ast_printer/constructor_test.cc
@@ -20,7 +20,7 @@
 
 using ::testing::HasSubstr;
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using GlslASTPrinterTest_Constructor = TestHelper;
 
diff --git a/src/tint/lang/glsl/writer/ast_printer/function_test.cc b/src/tint/lang/glsl/writer/ast_printer/function_test.cc
index e8d44c9..813fbb8 100644
--- a/src/tint/lang/glsl/writer/ast_printer/function_test.cc
+++ b/src/tint/lang/glsl/writer/ast_printer/function_test.cc
@@ -24,7 +24,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using GlslASTPrinterTest_Function = TestHelper;
 
diff --git a/src/tint/lang/glsl/writer/ast_printer/import_test.cc b/src/tint/lang/glsl/writer/ast_printer/import_test.cc
index 5214e3b..7784c38 100644
--- a/src/tint/lang/glsl/writer/ast_printer/import_test.cc
+++ b/src/tint/lang/glsl/writer/ast_printer/import_test.cc
@@ -21,7 +21,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using GlslASTPrinterTest_Import = TestHelper;
 
diff --git a/src/tint/lang/glsl/writer/ast_printer/loop_test.cc b/src/tint/lang/glsl/writer/ast_printer/loop_test.cc
index d9a60f9..d27c991 100644
--- a/src/tint/lang/glsl/writer/ast_printer/loop_test.cc
+++ b/src/tint/lang/glsl/writer/ast_printer/loop_test.cc
@@ -17,7 +17,7 @@
 
 #include "gmock/gmock.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::glsl::writer {
 namespace {
diff --git a/src/tint/lang/glsl/writer/ast_printer/member_accessor_test.cc b/src/tint/lang/glsl/writer/ast_printer/member_accessor_test.cc
index 2935a74..3a7259e 100644
--- a/src/tint/lang/glsl/writer/ast_printer/member_accessor_test.cc
+++ b/src/tint/lang/glsl/writer/ast_printer/member_accessor_test.cc
@@ -22,7 +22,7 @@
 
 using ::testing::HasSubstr;
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using create_type_func_ptr = ast::Type (*)(const ProgramBuilder::TypesBuilder& ty);
 
diff --git a/src/tint/lang/glsl/writer/ast_printer/module_constant_test.cc b/src/tint/lang/glsl/writer/ast_printer/module_constant_test.cc
index 72a0f08..7010d08 100644
--- a/src/tint/lang/glsl/writer/ast_printer/module_constant_test.cc
+++ b/src/tint/lang/glsl/writer/ast_printer/module_constant_test.cc
@@ -21,7 +21,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using GlslASTPrinterTest_ModuleConstant = TestHelper;
 
diff --git a/src/tint/lang/glsl/writer/ast_printer/return_test.cc b/src/tint/lang/glsl/writer/ast_printer/return_test.cc
index fc06aedb..93c0ebc 100644
--- a/src/tint/lang/glsl/writer/ast_printer/return_test.cc
+++ b/src/tint/lang/glsl/writer/ast_printer/return_test.cc
@@ -16,7 +16,7 @@
 
 #include "gmock/gmock.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::glsl::writer {
 namespace {
diff --git a/src/tint/lang/glsl/writer/ast_printer/sanitizer_test.cc b/src/tint/lang/glsl/writer/ast_printer/sanitizer_test.cc
index ae28022..81d2595 100644
--- a/src/tint/lang/glsl/writer/ast_printer/sanitizer_test.cc
+++ b/src/tint/lang/glsl/writer/ast_printer/sanitizer_test.cc
@@ -23,7 +23,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using GlslSanitizerTest = TestHelper;
 
diff --git a/src/tint/lang/glsl/writer/ast_printer/storage_buffer_test.cc b/src/tint/lang/glsl/writer/ast_printer/storage_buffer_test.cc
index 2b6f121..a075d78 100644
--- a/src/tint/lang/glsl/writer/ast_printer/storage_buffer_test.cc
+++ b/src/tint/lang/glsl/writer/ast_printer/storage_buffer_test.cc
@@ -18,7 +18,7 @@
 #include "gmock/gmock.h"
 
 using ::testing::HasSubstr;
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::glsl::writer {
 namespace {
diff --git a/src/tint/lang/glsl/writer/ast_printer/switch_test.cc b/src/tint/lang/glsl/writer/ast_printer/switch_test.cc
index 482a7ec..8abe8c7 100644
--- a/src/tint/lang/glsl/writer/ast_printer/switch_test.cc
+++ b/src/tint/lang/glsl/writer/ast_printer/switch_test.cc
@@ -16,7 +16,7 @@
 
 #include "gmock/gmock.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::glsl::writer {
 namespace {
diff --git a/src/tint/lang/glsl/writer/ast_printer/type_test.cc b/src/tint/lang/glsl/writer/ast_printer/type_test.cc
index 57163cd..01f0738 100644
--- a/src/tint/lang/glsl/writer/ast_printer/type_test.cc
+++ b/src/tint/lang/glsl/writer/ast_printer/type_test.cc
@@ -27,7 +27,7 @@
 
 using ::testing::HasSubstr;
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::glsl::writer {
 namespace {
diff --git a/src/tint/lang/glsl/writer/ast_printer/unary_op_test.cc b/src/tint/lang/glsl/writer/ast_printer/unary_op_test.cc
index 28530fa..97eaee1 100644
--- a/src/tint/lang/glsl/writer/ast_printer/unary_op_test.cc
+++ b/src/tint/lang/glsl/writer/ast_printer/unary_op_test.cc
@@ -12,11 +12,14 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/glsl/writer/ast_printer/helper_test.h"
 #include "src/tint/utils/text/string_stream.h"
 
 #include "gmock/gmock.h"
 
+using namespace tint::core::fluent_types;  // NOLINT
+
 namespace tint::glsl::writer {
 namespace {
 
diff --git a/src/tint/lang/glsl/writer/ast_printer/uniform_buffer_test.cc b/src/tint/lang/glsl/writer/ast_printer/uniform_buffer_test.cc
index 7509542..334c97d 100644
--- a/src/tint/lang/glsl/writer/ast_printer/uniform_buffer_test.cc
+++ b/src/tint/lang/glsl/writer/ast_printer/uniform_buffer_test.cc
@@ -21,7 +21,7 @@
 namespace tint::glsl::writer {
 namespace {
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using GlslASTPrinterTest_UniformBuffer = TestHelper;
 
diff --git a/src/tint/lang/glsl/writer/ast_printer/variable_decl_statement_test.cc b/src/tint/lang/glsl/writer/ast_printer/variable_decl_statement_test.cc
index b25e4c7..d6907e2 100644
--- a/src/tint/lang/glsl/writer/ast_printer/variable_decl_statement_test.cc
+++ b/src/tint/lang/glsl/writer/ast_printer/variable_decl_statement_test.cc
@@ -22,7 +22,7 @@
 
 using ::testing::HasSubstr;
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using GlslASTPrinterTest_VariableDecl = TestHelper;
 
diff --git a/src/tint/lang/glsl/writer/ast_printer/workgroup_var_test.cc b/src/tint/lang/glsl/writer/ast_printer/workgroup_var_test.cc
index 457be5c..c17d0f1 100644
--- a/src/tint/lang/glsl/writer/ast_printer/workgroup_var_test.cc
+++ b/src/tint/lang/glsl/writer/ast_printer/workgroup_var_test.cc
@@ -20,7 +20,7 @@
 
 using ::testing::HasSubstr;
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::glsl::writer {
 namespace {
diff --git a/src/tint/lang/hlsl/writer/ast_printer/array_accessor_test.cc b/src/tint/lang/hlsl/writer/ast_printer/array_accessor_test.cc
index 903d88b..b3c904a 100644
--- a/src/tint/lang/hlsl/writer/ast_printer/array_accessor_test.cc
+++ b/src/tint/lang/hlsl/writer/ast_printer/array_accessor_test.cc
@@ -12,10 +12,12 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/hlsl/writer/ast_printer/helper_test.h"
 #include "src/tint/utils/text/string_stream.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
+using namespace tint::core::fluent_types;     // NOLINT
 
 namespace tint::hlsl::writer {
 namespace {
diff --git a/src/tint/lang/hlsl/writer/ast_printer/assign_test.cc b/src/tint/lang/hlsl/writer/ast_printer/assign_test.cc
index c0e3f02..621d9ed 100644
--- a/src/tint/lang/hlsl/writer/ast_printer/assign_test.cc
+++ b/src/tint/lang/hlsl/writer/ast_printer/assign_test.cc
@@ -12,9 +12,11 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/hlsl/writer/ast_printer/helper_test.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
+using namespace tint::core::fluent_types;     // NOLINT
 
 namespace tint::hlsl::writer {
 namespace {
diff --git a/src/tint/lang/hlsl/writer/ast_printer/ast_printer.cc b/src/tint/lang/hlsl/writer/ast_printer/ast_printer.cc
index 413ec11..a5e999a 100644
--- a/src/tint/lang/hlsl/writer/ast_printer/ast_printer.cc
+++ b/src/tint/lang/hlsl/writer/ast_printer/ast_printer.cc
@@ -24,6 +24,7 @@
 
 #include "src/tint/lang/core/constant/splat.h"
 #include "src/tint/lang/core/constant/value.h"
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/core/type/array.h"
 #include "src/tint/lang/core/type/atomic.h"
 #include "src/tint/lang/core/type/depth_multisampled_texture.h"
@@ -85,7 +86,8 @@
 #include "src/tint/utils/text/string.h"
 #include "src/tint/utils/text/string_stream.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
+using namespace tint::core::fluent_types;     // NOLINT
 
 namespace tint::hlsl::writer {
 namespace {
diff --git a/src/tint/lang/hlsl/writer/ast_printer/binary_test.cc b/src/tint/lang/hlsl/writer/ast_printer/binary_test.cc
index 6c01562..f0f5337 100644
--- a/src/tint/lang/hlsl/writer/ast_printer/binary_test.cc
+++ b/src/tint/lang/hlsl/writer/ast_printer/binary_test.cc
@@ -21,7 +21,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using HlslASTPrinterTest_Binary = TestHelper;
 
diff --git a/src/tint/lang/hlsl/writer/ast_printer/bitcast_test.cc b/src/tint/lang/hlsl/writer/ast_printer/bitcast_test.cc
index f85fdbb..4d2bf5c 100644
--- a/src/tint/lang/hlsl/writer/ast_printer/bitcast_test.cc
+++ b/src/tint/lang/hlsl/writer/ast_printer/bitcast_test.cc
@@ -18,7 +18,7 @@
 #include "gmock/gmock.h"
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::hlsl::writer {
 namespace {
diff --git a/src/tint/lang/hlsl/writer/ast_printer/builtin_test.cc b/src/tint/lang/hlsl/writer/ast_printer/builtin_test.cc
index ae5067e..a6a2ffd 100644
--- a/src/tint/lang/hlsl/writer/ast_printer/builtin_test.cc
+++ b/src/tint/lang/hlsl/writer/ast_printer/builtin_test.cc
@@ -24,7 +24,7 @@
 
 using ::testing::HasSubstr;
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using HlslASTPrinterTest_Builtin = TestHelper;
 
diff --git a/src/tint/lang/hlsl/writer/ast_printer/call_test.cc b/src/tint/lang/hlsl/writer/ast_printer/call_test.cc
index 5d42759..8081355 100644
--- a/src/tint/lang/hlsl/writer/ast_printer/call_test.cc
+++ b/src/tint/lang/hlsl/writer/ast_printer/call_test.cc
@@ -16,7 +16,7 @@
 #include "src/tint/lang/wgsl/ast/call_statement.h"
 #include "src/tint/utils/text/string_stream.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::hlsl::writer {
 namespace {
diff --git a/src/tint/lang/hlsl/writer/ast_printer/case_test.cc b/src/tint/lang/hlsl/writer/ast_printer/case_test.cc
index 532997c..3f49596 100644
--- a/src/tint/lang/hlsl/writer/ast_printer/case_test.cc
+++ b/src/tint/lang/hlsl/writer/ast_printer/case_test.cc
@@ -14,7 +14,7 @@
 
 #include "src/tint/lang/hlsl/writer/ast_printer/helper_test.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::hlsl::writer {
 namespace {
diff --git a/src/tint/lang/hlsl/writer/ast_printer/cast_test.cc b/src/tint/lang/hlsl/writer/ast_printer/cast_test.cc
index eeeba5c..c064704 100644
--- a/src/tint/lang/hlsl/writer/ast_printer/cast_test.cc
+++ b/src/tint/lang/hlsl/writer/ast_printer/cast_test.cc
@@ -19,7 +19,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using HlslASTPrinterTest_Cast = TestHelper;
 
diff --git a/src/tint/lang/hlsl/writer/ast_printer/const_assert_test.cc b/src/tint/lang/hlsl/writer/ast_printer/const_assert_test.cc
index 7c23806..4e79a65 100644
--- a/src/tint/lang/hlsl/writer/ast_printer/const_assert_test.cc
+++ b/src/tint/lang/hlsl/writer/ast_printer/const_assert_test.cc
@@ -14,7 +14,7 @@
 
 #include "src/tint/lang/hlsl/writer/ast_printer/helper_test.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::hlsl::writer {
 namespace {
diff --git a/src/tint/lang/hlsl/writer/ast_printer/constructor_test.cc b/src/tint/lang/hlsl/writer/ast_printer/constructor_test.cc
index 4aabbad..4c7ae80 100644
--- a/src/tint/lang/hlsl/writer/ast_printer/constructor_test.cc
+++ b/src/tint/lang/hlsl/writer/ast_printer/constructor_test.cc
@@ -20,7 +20,7 @@
 
 using ::testing::HasSubstr;
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using HlslASTPrinterTest_Constructor = TestHelper;
 
diff --git a/src/tint/lang/hlsl/writer/ast_printer/function_test.cc b/src/tint/lang/hlsl/writer/ast_printer/function_test.cc
index eddd7eb..c8b1769 100644
--- a/src/tint/lang/hlsl/writer/ast_printer/function_test.cc
+++ b/src/tint/lang/hlsl/writer/ast_printer/function_test.cc
@@ -24,7 +24,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using HlslASTPrinterTest_Function = TestHelper;
 
diff --git a/src/tint/lang/hlsl/writer/ast_printer/import_test.cc b/src/tint/lang/hlsl/writer/ast_printer/import_test.cc
index ad5ffa4..0b39e48 100644
--- a/src/tint/lang/hlsl/writer/ast_printer/import_test.cc
+++ b/src/tint/lang/hlsl/writer/ast_printer/import_test.cc
@@ -19,7 +19,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using HlslASTPrinterTest_Import = TestHelper;
 
diff --git a/src/tint/lang/hlsl/writer/ast_printer/loop_test.cc b/src/tint/lang/hlsl/writer/ast_printer/loop_test.cc
index 5013094..03a541f 100644
--- a/src/tint/lang/hlsl/writer/ast_printer/loop_test.cc
+++ b/src/tint/lang/hlsl/writer/ast_printer/loop_test.cc
@@ -15,7 +15,7 @@
 #include "src/tint/lang/hlsl/writer/ast_printer/helper_test.h"
 #include "src/tint/lang/wgsl/ast/variable_decl_statement.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::hlsl::writer {
 namespace {
diff --git a/src/tint/lang/hlsl/writer/ast_printer/member_accessor_test.cc b/src/tint/lang/hlsl/writer/ast_printer/member_accessor_test.cc
index 1c4504d..7ec17f8 100644
--- a/src/tint/lang/hlsl/writer/ast_printer/member_accessor_test.cc
+++ b/src/tint/lang/hlsl/writer/ast_printer/member_accessor_test.cc
@@ -22,7 +22,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using create_type_func_ptr = ast::Type (*)(const ProgramBuilder::TypesBuilder& ty);
 
diff --git a/src/tint/lang/hlsl/writer/ast_printer/module_constant_test.cc b/src/tint/lang/hlsl/writer/ast_printer/module_constant_test.cc
index 916a94f..fd52f7a 100644
--- a/src/tint/lang/hlsl/writer/ast_printer/module_constant_test.cc
+++ b/src/tint/lang/hlsl/writer/ast_printer/module_constant_test.cc
@@ -19,7 +19,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using HlslASTPrinterTest_ModuleConstant = TestHelper;
 
diff --git a/src/tint/lang/hlsl/writer/ast_printer/return_test.cc b/src/tint/lang/hlsl/writer/ast_printer/return_test.cc
index b856a56..2998196 100644
--- a/src/tint/lang/hlsl/writer/ast_printer/return_test.cc
+++ b/src/tint/lang/hlsl/writer/ast_printer/return_test.cc
@@ -14,7 +14,7 @@
 
 #include "src/tint/lang/hlsl/writer/ast_printer/helper_test.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::hlsl::writer {
 namespace {
diff --git a/src/tint/lang/hlsl/writer/ast_printer/sanitizer_test.cc b/src/tint/lang/hlsl/writer/ast_printer/sanitizer_test.cc
index 95c5c11..f0088c1 100644
--- a/src/tint/lang/hlsl/writer/ast_printer/sanitizer_test.cc
+++ b/src/tint/lang/hlsl/writer/ast_printer/sanitizer_test.cc
@@ -21,7 +21,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using HlslSanitizerTest = TestHelper;
 
diff --git a/src/tint/lang/hlsl/writer/ast_printer/switch_test.cc b/src/tint/lang/hlsl/writer/ast_printer/switch_test.cc
index 8c8f023..633542b 100644
--- a/src/tint/lang/hlsl/writer/ast_printer/switch_test.cc
+++ b/src/tint/lang/hlsl/writer/ast_printer/switch_test.cc
@@ -14,7 +14,7 @@
 
 #include "src/tint/lang/hlsl/writer/ast_printer/helper_test.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::hlsl::writer {
 namespace {
diff --git a/src/tint/lang/hlsl/writer/ast_printer/type_test.cc b/src/tint/lang/hlsl/writer/ast_printer/type_test.cc
index 900670f..0dfb64c 100644
--- a/src/tint/lang/hlsl/writer/ast_printer/type_test.cc
+++ b/src/tint/lang/hlsl/writer/ast_printer/type_test.cc
@@ -26,7 +26,7 @@
 
 using ::testing::HasSubstr;
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::hlsl::writer {
 namespace {
diff --git a/src/tint/lang/hlsl/writer/ast_printer/variable_decl_statement_test.cc b/src/tint/lang/hlsl/writer/ast_printer/variable_decl_statement_test.cc
index af07b50..ce67816 100644
--- a/src/tint/lang/hlsl/writer/ast_printer/variable_decl_statement_test.cc
+++ b/src/tint/lang/hlsl/writer/ast_printer/variable_decl_statement_test.cc
@@ -20,7 +20,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using ::testing::HasSubstr;
 
diff --git a/src/tint/lang/hlsl/writer/ast_printer/workgroup_var_test.cc b/src/tint/lang/hlsl/writer/ast_printer/workgroup_var_test.cc
index 75865d5..f882c7d 100644
--- a/src/tint/lang/hlsl/writer/ast_printer/workgroup_var_test.cc
+++ b/src/tint/lang/hlsl/writer/ast_printer/workgroup_var_test.cc
@@ -19,7 +19,7 @@
 
 using ::testing::HasSubstr;
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::hlsl::writer {
 namespace {
diff --git a/src/tint/lang/msl/writer/ast_printer/array_accessor_test.cc b/src/tint/lang/msl/writer/ast_printer/array_accessor_test.cc
index fff8a96..4c36fd6 100644
--- a/src/tint/lang/msl/writer/ast_printer/array_accessor_test.cc
+++ b/src/tint/lang/msl/writer/ast_printer/array_accessor_test.cc
@@ -12,10 +12,12 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/msl/writer/ast_printer/helper_test.h"
 #include "src/tint/utils/text/string_stream.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
+using namespace tint::core::fluent_types;     // NOLINT
 
 namespace tint::msl::writer {
 namespace {
diff --git a/src/tint/lang/msl/writer/ast_printer/ast_function_test.cc b/src/tint/lang/msl/writer/ast_printer/ast_function_test.cc
index d9397d6..c47db15 100644
--- a/src/tint/lang/msl/writer/ast_printer/ast_function_test.cc
+++ b/src/tint/lang/msl/writer/ast_printer/ast_function_test.cc
@@ -20,7 +20,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using MslASTPrinterTest = TestHelper;
 
diff --git a/src/tint/lang/msl/writer/ast_printer/ast_printer.cc b/src/tint/lang/msl/writer/ast_printer/ast_printer.cc
index 59ca50b..9be715b 100644
--- a/src/tint/lang/msl/writer/ast_printer/ast_printer.cc
+++ b/src/tint/lang/msl/writer/ast_printer/ast_printer.cc
@@ -23,6 +23,7 @@
 
 #include "src/tint/lang/core/constant/splat.h"
 #include "src/tint/lang/core/constant/value.h"
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/core/type/array.h"
 #include "src/tint/lang/core/type/atomic.h"
 #include "src/tint/lang/core/type/bool.h"
@@ -88,6 +89,8 @@
 #include "src/tint/utils/rtti/switch.h"
 #include "src/tint/utils/text/string_stream.h"
 
+using namespace tint::core::fluent_types;  // NOLINT
+
 namespace tint::msl::writer {
 namespace {
 
diff --git a/src/tint/lang/msl/writer/ast_printer/ast_printer_test.cc b/src/tint/lang/msl/writer/ast_printer/ast_printer_test.cc
index 746f0a0..7e21d8a 100644
--- a/src/tint/lang/msl/writer/ast_printer/ast_printer_test.cc
+++ b/src/tint/lang/msl/writer/ast_printer/ast_printer_test.cc
@@ -12,11 +12,13 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/msl/writer/ast_printer/helper_test.h"
 #include "src/tint/lang/msl/writer/writer.h"
 #include "src/tint/lang/wgsl/ast/stage_attribute.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
+using namespace tint::core::fluent_types;     // NOLINT
 
 namespace tint::msl::writer {
 namespace {
diff --git a/src/tint/lang/msl/writer/ast_printer/ast_type_test.cc b/src/tint/lang/msl/writer/ast_printer/ast_type_test.cc
index 13a64aa..f264784 100644
--- a/src/tint/lang/msl/writer/ast_printer/ast_type_test.cc
+++ b/src/tint/lang/msl/writer/ast_printer/ast_type_test.cc
@@ -31,7 +31,7 @@
 
 using ::testing::HasSubstr;
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 void FormatMSLField(StringStream& out,
                     const char* addr,
diff --git a/src/tint/lang/msl/writer/ast_printer/binary_test.cc b/src/tint/lang/msl/writer/ast_printer/binary_test.cc
index f0acfd9..c0c741a 100644
--- a/src/tint/lang/msl/writer/ast_printer/binary_test.cc
+++ b/src/tint/lang/msl/writer/ast_printer/binary_test.cc
@@ -12,9 +12,12 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/msl/writer/ast_printer/helper_test.h"
 #include "src/tint/utils/text/string_stream.h"
 
+using namespace tint::core::fluent_types;  // NOLINT
+
 namespace tint::msl::writer {
 namespace {
 
diff --git a/src/tint/lang/msl/writer/ast_printer/bitcast_test.cc b/src/tint/lang/msl/writer/ast_printer/bitcast_test.cc
index 81302d4..6b64307 100644
--- a/src/tint/lang/msl/writer/ast_printer/bitcast_test.cc
+++ b/src/tint/lang/msl/writer/ast_printer/bitcast_test.cc
@@ -12,10 +12,12 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/msl/writer/ast_printer/helper_test.h"
 #include "src/tint/utils/text/string_stream.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
+using namespace tint::core::fluent_types;     // NOLINT
 
 namespace tint::msl::writer {
 namespace {
diff --git a/src/tint/lang/msl/writer/ast_printer/builtin_test.cc b/src/tint/lang/msl/writer/ast_printer/builtin_test.cc
index fa6d4f9..438d851 100644
--- a/src/tint/lang/msl/writer/ast_printer/builtin_test.cc
+++ b/src/tint/lang/msl/writer/ast_printer/builtin_test.cc
@@ -21,7 +21,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using MslASTPrinterTest = TestHelper;
 
diff --git a/src/tint/lang/msl/writer/ast_printer/call_test.cc b/src/tint/lang/msl/writer/ast_printer/call_test.cc
index fa8b8f3..1d8a30c 100644
--- a/src/tint/lang/msl/writer/ast_printer/call_test.cc
+++ b/src/tint/lang/msl/writer/ast_printer/call_test.cc
@@ -16,7 +16,7 @@
 #include "src/tint/lang/wgsl/ast/call_statement.h"
 #include "src/tint/utils/text/string_stream.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::msl::writer {
 namespace {
diff --git a/src/tint/lang/msl/writer/ast_printer/case_test.cc b/src/tint/lang/msl/writer/ast_printer/case_test.cc
index 885f01b..f544edb 100644
--- a/src/tint/lang/msl/writer/ast_printer/case_test.cc
+++ b/src/tint/lang/msl/writer/ast_printer/case_test.cc
@@ -14,7 +14,7 @@
 
 #include "src/tint/lang/msl/writer/ast_printer/helper_test.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::msl::writer {
 namespace {
diff --git a/src/tint/lang/msl/writer/ast_printer/cast_test.cc b/src/tint/lang/msl/writer/ast_printer/cast_test.cc
index 8583d32..bb87da7 100644
--- a/src/tint/lang/msl/writer/ast_printer/cast_test.cc
+++ b/src/tint/lang/msl/writer/ast_printer/cast_test.cc
@@ -19,7 +19,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using MslASTPrinterTest = TestHelper;
 
diff --git a/src/tint/lang/msl/writer/ast_printer/const_assert_test.cc b/src/tint/lang/msl/writer/ast_printer/const_assert_test.cc
index 826fca7..a9eb0e5 100644
--- a/src/tint/lang/msl/writer/ast_printer/const_assert_test.cc
+++ b/src/tint/lang/msl/writer/ast_printer/const_assert_test.cc
@@ -14,7 +14,7 @@
 
 #include "src/tint/lang/msl/writer/ast_printer/helper_test.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::msl::writer {
 namespace {
diff --git a/src/tint/lang/msl/writer/ast_printer/constructor_test.cc b/src/tint/lang/msl/writer/ast_printer/constructor_test.cc
index 78b1f0f..151b094 100644
--- a/src/tint/lang/msl/writer/ast_printer/constructor_test.cc
+++ b/src/tint/lang/msl/writer/ast_printer/constructor_test.cc
@@ -20,7 +20,7 @@
 
 using ::testing::HasSubstr;
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using MslASTPrinterTest_Constructor = TestHelper;
 
diff --git a/src/tint/lang/msl/writer/ast_printer/import_test.cc b/src/tint/lang/msl/writer/ast_printer/import_test.cc
index 4df1e6e..548d72e 100644
--- a/src/tint/lang/msl/writer/ast_printer/import_test.cc
+++ b/src/tint/lang/msl/writer/ast_printer/import_test.cc
@@ -20,7 +20,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using MslASTPrinterTest = TestHelper;
 
diff --git a/src/tint/lang/msl/writer/ast_printer/loop_test.cc b/src/tint/lang/msl/writer/ast_printer/loop_test.cc
index e27f73e..cc3fafb 100644
--- a/src/tint/lang/msl/writer/ast_printer/loop_test.cc
+++ b/src/tint/lang/msl/writer/ast_printer/loop_test.cc
@@ -12,10 +12,12 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/msl/writer/ast_printer/helper_test.h"
 #include "src/tint/lang/wgsl/ast/variable_decl_statement.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
+using namespace tint::core::fluent_types;     // NOLINT
 
 namespace tint::msl::writer {
 namespace {
diff --git a/src/tint/lang/msl/writer/ast_printer/member_accessor_test.cc b/src/tint/lang/msl/writer/ast_printer/member_accessor_test.cc
index 4446aaf..86e788c 100644
--- a/src/tint/lang/msl/writer/ast_printer/member_accessor_test.cc
+++ b/src/tint/lang/msl/writer/ast_printer/member_accessor_test.cc
@@ -12,9 +12,12 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/msl/writer/ast_printer/helper_test.h"
 #include "src/tint/utils/text/string_stream.h"
 
+using namespace tint::core::fluent_types;  // NOLINT
+
 namespace tint::msl::writer {
 namespace {
 
diff --git a/src/tint/lang/msl/writer/ast_printer/module_constant_test.cc b/src/tint/lang/msl/writer/ast_printer/module_constant_test.cc
index 182a0ab..1c5f70c 100644
--- a/src/tint/lang/msl/writer/ast_printer/module_constant_test.cc
+++ b/src/tint/lang/msl/writer/ast_printer/module_constant_test.cc
@@ -19,7 +19,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using MslASTPrinterTest = TestHelper;
 
diff --git a/src/tint/lang/msl/writer/ast_printer/return_test.cc b/src/tint/lang/msl/writer/ast_printer/return_test.cc
index 0ed655e..d8be7ff 100644
--- a/src/tint/lang/msl/writer/ast_printer/return_test.cc
+++ b/src/tint/lang/msl/writer/ast_printer/return_test.cc
@@ -14,7 +14,7 @@
 
 #include "src/tint/lang/msl/writer/ast_printer/helper_test.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::msl::writer {
 namespace {
diff --git a/src/tint/lang/msl/writer/ast_printer/sanitizer_test.cc b/src/tint/lang/msl/writer/ast_printer/sanitizer_test.cc
index 6165232..3cf04c1 100644
--- a/src/tint/lang/msl/writer/ast_printer/sanitizer_test.cc
+++ b/src/tint/lang/msl/writer/ast_printer/sanitizer_test.cc
@@ -13,17 +13,19 @@
 // limitations under the License.
 
 #include "gmock/gmock.h"
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/msl/writer/ast_printer/helper_test.h"
 #include "src/tint/lang/wgsl/ast/call_statement.h"
 #include "src/tint/lang/wgsl/ast/stage_attribute.h"
 #include "src/tint/lang/wgsl/ast/variable_decl_statement.h"
 
+using namespace tint::core::number_suffixes;  // NOLINT
+using namespace tint::core::fluent_types;     // NOLINT
+
 namespace tint::msl::writer {
 namespace {
 
 using ::testing::HasSubstr;
-using namespace tint::number_suffixes;  // NOLINT
-
 using MslSanitizerTest = TestHelper;
 
 TEST_F(MslSanitizerTest, Call_ArrayLength) {
diff --git a/src/tint/lang/msl/writer/ast_printer/switch_test.cc b/src/tint/lang/msl/writer/ast_printer/switch_test.cc
index 724d4e1..51e8d4c 100644
--- a/src/tint/lang/msl/writer/ast_printer/switch_test.cc
+++ b/src/tint/lang/msl/writer/ast_printer/switch_test.cc
@@ -14,7 +14,7 @@
 
 #include "src/tint/lang/msl/writer/ast_printer/helper_test.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::msl::writer {
 namespace {
diff --git a/src/tint/lang/msl/writer/ast_printer/unary_op_test.cc b/src/tint/lang/msl/writer/ast_printer/unary_op_test.cc
index bc84295..ed61444 100644
--- a/src/tint/lang/msl/writer/ast_printer/unary_op_test.cc
+++ b/src/tint/lang/msl/writer/ast_printer/unary_op_test.cc
@@ -12,9 +12,12 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/msl/writer/ast_printer/helper_test.h"
 #include "src/tint/utils/text/string_stream.h"
 
+using namespace tint::core::fluent_types;  // NOLINT
+
 namespace tint::msl::writer {
 namespace {
 
diff --git a/src/tint/lang/msl/writer/ast_printer/variable_decl_statement_test.cc b/src/tint/lang/msl/writer/ast_printer/variable_decl_statement_test.cc
index 5132a96..77817c3 100644
--- a/src/tint/lang/msl/writer/ast_printer/variable_decl_statement_test.cc
+++ b/src/tint/lang/msl/writer/ast_printer/variable_decl_statement_test.cc
@@ -21,7 +21,7 @@
 
 using ::testing::HasSubstr;
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using MslASTPrinterTest = TestHelper;
 
diff --git a/src/tint/lang/msl/writer/printer/binary_test.cc b/src/tint/lang/msl/writer/printer/binary_test.cc
index c8e40b3..8a94cc2 100644
--- a/src/tint/lang/msl/writer/printer/binary_test.cc
+++ b/src/tint/lang/msl/writer/printer/binary_test.cc
@@ -13,10 +13,12 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/msl/writer/printer/helper_test.h"
 #include "src/tint/utils/text/string_stream.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
+using namespace tint::core::fluent_types;     // NOLINT
 
 namespace tint::msl::writer {
 namespace {
diff --git a/src/tint/lang/msl/writer/printer/constant_test.cc b/src/tint/lang/msl/writer/printer/constant_test.cc
index bcaf97f..25a0d2f 100644
--- a/src/tint/lang/msl/writer/printer/constant_test.cc
+++ b/src/tint/lang/msl/writer/printer/constant_test.cc
@@ -12,16 +12,18 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/core/type/array.h"
 #include "src/tint/lang/core/type/matrix.h"
 #include "src/tint/lang/msl/writer/printer/helper_test.h"
 #include "src/tint/utils/text/string.h"
 
+using namespace tint::core::number_suffixes;  // NOLINT
+using namespace tint::core::fluent_types;     // NOLINT
+
 namespace tint::msl::writer {
 namespace {
 
-using namespace tint::number_suffixes;  // NOLINT
-
 TEST_F(MslPrinterTest, Constant_Bool_True) {
     auto* c = b.Constant(true);
     auto* func = b.Function("foo", ty.void_());
diff --git a/src/tint/lang/msl/writer/printer/if_test.cc b/src/tint/lang/msl/writer/printer/if_test.cc
index 7e01f7b..1c634fb 100644
--- a/src/tint/lang/msl/writer/printer/if_test.cc
+++ b/src/tint/lang/msl/writer/printer/if_test.cc
@@ -14,7 +14,7 @@
 
 #include "src/tint/lang/msl/writer/printer/helper_test.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::msl::writer {
 namespace {
diff --git a/src/tint/lang/msl/writer/printer/let_test.cc b/src/tint/lang/msl/writer/printer/let_test.cc
index 30087ec..cb058d4 100644
--- a/src/tint/lang/msl/writer/printer/let_test.cc
+++ b/src/tint/lang/msl/writer/printer/let_test.cc
@@ -18,7 +18,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 TEST_F(MslPrinterTest, LetU32) {
     auto* func = b.Function("foo", ty.void_());
diff --git a/src/tint/lang/msl/writer/printer/printer.cc b/src/tint/lang/msl/writer/printer/printer.cc
index 15cdd31..3e1c9f9 100644
--- a/src/tint/lang/msl/writer/printer/printer.cc
+++ b/src/tint/lang/msl/writer/printer/printer.cc
@@ -18,6 +18,7 @@
 
 #include "src/tint/lang/core/constant/composite.h"
 #include "src/tint/lang/core/constant/splat.h"
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/core/ir/binary.h"
 #include "src/tint/lang/core/ir/constant.h"
 #include "src/tint/lang/core/ir/exit_if.h"
@@ -53,6 +54,8 @@
 #include "src/tint/utils/rtti/switch.h"
 #include "src/tint/utils/text/string.h"
 
+using namespace tint::core::fluent_types;  // NOLINT
+
 namespace tint::msl::writer {
 namespace {
 
diff --git a/src/tint/lang/msl/writer/printer/return_test.cc b/src/tint/lang/msl/writer/printer/return_test.cc
index ede7b13..5425c49 100644
--- a/src/tint/lang/msl/writer/printer/return_test.cc
+++ b/src/tint/lang/msl/writer/printer/return_test.cc
@@ -14,7 +14,7 @@
 
 #include "src/tint/lang/msl/writer/printer/helper_test.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::msl::writer {
 namespace {
diff --git a/src/tint/lang/msl/writer/printer/type_test.cc b/src/tint/lang/msl/writer/printer/type_test.cc
index f2a52f3..e608005 100644
--- a/src/tint/lang/msl/writer/printer/type_test.cc
+++ b/src/tint/lang/msl/writer/printer/type_test.cc
@@ -29,7 +29,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 TEST_F(MslPrinterTest, EmitType_Array) {
     auto* func = b.Function("foo", ty.void_());
diff --git a/src/tint/lang/msl/writer/printer/var_test.cc b/src/tint/lang/msl/writer/printer/var_test.cc
index be8c4a9..da9c3f6 100644
--- a/src/tint/lang/msl/writer/printer/var_test.cc
+++ b/src/tint/lang/msl/writer/printer/var_test.cc
@@ -18,7 +18,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 TEST_F(MslPrinterTest, VarF32) {
     auto* func = b.Function("foo", ty.void_());
diff --git a/src/tint/lang/spirv/reader/ast_parser/ast_parser.cc b/src/tint/lang/spirv/reader/ast_parser/ast_parser.cc
index ec709e6..70fa074 100644
--- a/src/tint/lang/spirv/reader/ast_parser/ast_parser.cc
+++ b/src/tint/lang/spirv/reader/ast_parser/ast_parser.cc
@@ -20,6 +20,7 @@
 #include <utility>
 
 #include "source/opt/build_module.h"
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/core/type/depth_texture.h"
 #include "src/tint/lang/core/type/multisampled_texture.h"
 #include "src/tint/lang/core/type/sampled_texture.h"
@@ -34,8 +35,9 @@
 #include "src/tint/utils/containers/unique_vector.h"
 #include "src/tint/utils/rtti/switch.h"
 
-namespace tint::spirv::reader::ast_parser {
+using namespace tint::core::fluent_types;  // NOLINT
 
+namespace tint::spirv::reader::ast_parser {
 namespace {
 
 // Input SPIR-V needs only to conform to Vulkan 1.1 requirements.
@@ -2022,7 +2024,7 @@
                                        ast::IntLiteralExpression::Suffix::kU)};
         },
         [&](const F32*) {
-            if (auto f = CheckedConvert<f32>(AFloat(spirv_const->GetFloat()))) {
+            if (auto f = core::CheckedConvert<f32>(AFloat(spirv_const->GetFloat()))) {
                 return TypedExpression{ty_.F32(),
                                        create<ast::FloatLiteralExpression>(
                                            source, static_cast<double>(spirv_const->GetFloat()),
diff --git a/src/tint/lang/spirv/reader/ast_parser/function.cc b/src/tint/lang/spirv/reader/ast_parser/function.cc
index 8dfe5c2..658652d 100644
--- a/src/tint/lang/spirv/reader/ast_parser/function.cc
+++ b/src/tint/lang/spirv/reader/ast_parser/function.cc
@@ -18,6 +18,7 @@
 #include <array>
 
 #include "src/tint/lang/core/builtin_value.h"
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/core/function.h"
 #include "src/tint/lang/core/type/depth_texture.h"
 #include "src/tint/lang/core/type/sampled_texture.h"
@@ -141,7 +142,8 @@
 //           constructs
 //
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
+using namespace tint::core::fluent_types;     // NOLINT
 
 namespace tint::spirv::reader::ast_parser {
 
diff --git a/src/tint/lang/spirv/reader/ast_parser/type.cc b/src/tint/lang/spirv/reader/ast_parser/type.cc
index fa36202..5089bae 100644
--- a/src/tint/lang/spirv/reader/ast_parser/type.cc
+++ b/src/tint/lang/spirv/reader/ast_parser/type.cc
@@ -19,6 +19,7 @@
 #include <unordered_map>
 #include <utility>
 
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/core/type/texture_dimension.h"
 #include "src/tint/lang/wgsl/program/program_builder.h"
 #include "src/tint/utils/containers/map.h"
@@ -50,9 +51,11 @@
 TINT_INSTANTIATE_TYPEINFO(tint::spirv::reader::ast_parser::Alias);
 TINT_INSTANTIATE_TYPEINFO(tint::spirv::reader::ast_parser::Struct);
 
-namespace tint::spirv::reader::ast_parser {
+using namespace tint::core::fluent_types;  // NOLINT
 
+namespace tint::spirv::reader::ast_parser {
 namespace {
+
 struct PointerHasher {
     size_t operator()(const Pointer& t) const { return Hash(t.address_space, t.type, t.access); }
 };
diff --git a/src/tint/lang/spirv/writer/access_test.cc b/src/tint/lang/spirv/writer/access_test.cc
index a39fac5..628901c 100644
--- a/src/tint/lang/spirv/writer/access_test.cc
+++ b/src/tint/lang/spirv/writer/access_test.cc
@@ -20,7 +20,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 TEST_F(SpirvWriterTest, Access_Array_Value_ConstantIndex) {
     auto* arr_val = b.FunctionParam("arr", ty.array(ty.i32(), 4));
diff --git a/src/tint/lang/spirv/writer/ast_printer/accessor_expression_test.cc b/src/tint/lang/spirv/writer/ast_printer/accessor_expression_test.cc
index 8ef1eb6..d0030dd 100644
--- a/src/tint/lang/spirv/writer/ast_printer/accessor_expression_test.cc
+++ b/src/tint/lang/spirv/writer/ast_printer/accessor_expression_test.cc
@@ -19,7 +19,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using SpirvASTPrinterTest = TestHelper;
 
diff --git a/src/tint/lang/spirv/writer/ast_printer/assign_test.cc b/src/tint/lang/spirv/writer/ast_printer/assign_test.cc
index 8504802..ac78417 100644
--- a/src/tint/lang/spirv/writer/ast_printer/assign_test.cc
+++ b/src/tint/lang/spirv/writer/ast_printer/assign_test.cc
@@ -21,7 +21,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using SpirvASTPrinterTest = TestHelper;
 
diff --git a/src/tint/lang/spirv/writer/ast_printer/ast_builtin_test.cc b/src/tint/lang/spirv/writer/ast_printer/ast_builtin_test.cc
index 8a34624..eb76957 100644
--- a/src/tint/lang/spirv/writer/ast_printer/ast_builtin_test.cc
+++ b/src/tint/lang/spirv/writer/ast_printer/ast_builtin_test.cc
@@ -24,7 +24,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using BuiltinSpirvASTPrinterTest = TestHelper;
 
diff --git a/src/tint/lang/spirv/writer/ast_printer/ast_function_test.cc b/src/tint/lang/spirv/writer/ast_printer/ast_function_test.cc
index 8d833cf..b7512d3 100644
--- a/src/tint/lang/spirv/writer/ast_printer/ast_function_test.cc
+++ b/src/tint/lang/spirv/writer/ast_printer/ast_function_test.cc
@@ -16,7 +16,7 @@
 #include "src/tint/lang/spirv/writer/common/spv_dump.h"
 #include "src/tint/lang/wgsl/ast/stage_attribute.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::spirv::writer {
 namespace {
diff --git a/src/tint/lang/spirv/writer/ast_printer/ast_if_test.cc b/src/tint/lang/spirv/writer/ast_printer/ast_if_test.cc
index df9284a..1efceb0 100644
--- a/src/tint/lang/spirv/writer/ast_printer/ast_if_test.cc
+++ b/src/tint/lang/spirv/writer/ast_printer/ast_if_test.cc
@@ -17,7 +17,7 @@
 #include "src/tint/lang/spirv/writer/ast_printer/helper_test.h"
 #include "src/tint/lang/spirv/writer/common/spv_dump.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::spirv::writer {
 namespace {
diff --git a/src/tint/lang/spirv/writer/ast_printer/ast_loop_test.cc b/src/tint/lang/spirv/writer/ast_printer/ast_loop_test.cc
index 0071641..c5df488 100644
--- a/src/tint/lang/spirv/writer/ast_printer/ast_loop_test.cc
+++ b/src/tint/lang/spirv/writer/ast_printer/ast_loop_test.cc
@@ -15,7 +15,7 @@
 #include "src/tint/lang/spirv/writer/ast_printer/helper_test.h"
 #include "src/tint/lang/spirv/writer/common/spv_dump.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::spirv::writer {
 namespace {
diff --git a/src/tint/lang/spirv/writer/ast_printer/ast_switch_test.cc b/src/tint/lang/spirv/writer/ast_printer/ast_switch_test.cc
index 9c89cf2..ba73c59 100644
--- a/src/tint/lang/spirv/writer/ast_printer/ast_switch_test.cc
+++ b/src/tint/lang/spirv/writer/ast_printer/ast_switch_test.cc
@@ -15,7 +15,7 @@
 #include "src/tint/lang/spirv/writer/ast_printer/helper_test.h"
 #include "src/tint/lang/spirv/writer/common/spv_dump.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::spirv::writer {
 namespace {
diff --git a/src/tint/lang/spirv/writer/ast_printer/ast_type_test.cc b/src/tint/lang/spirv/writer/ast_printer/ast_type_test.cc
index 090d165..d33d7bf 100644
--- a/src/tint/lang/spirv/writer/ast_printer/ast_type_test.cc
+++ b/src/tint/lang/spirv/writer/ast_printer/ast_type_test.cc
@@ -12,6 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/core/type/depth_texture.h"
 #include "src/tint/lang/core/type/multisampled_texture.h"
 #include "src/tint/lang/core/type/sampled_texture.h"
@@ -19,7 +20,8 @@
 #include "src/tint/lang/spirv/writer/ast_printer/helper_test.h"
 #include "src/tint/lang/spirv/writer/common/spv_dump.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
+using namespace tint::core::fluent_types;     // NOLINT
 
 namespace tint::spirv::writer {
 namespace {
diff --git a/src/tint/lang/spirv/writer/ast_printer/binary_expression_test.cc b/src/tint/lang/spirv/writer/ast_printer/binary_expression_test.cc
index 49e6239..ca0afed 100644
--- a/src/tint/lang/spirv/writer/ast_printer/binary_expression_test.cc
+++ b/src/tint/lang/spirv/writer/ast_printer/binary_expression_test.cc
@@ -19,7 +19,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using SpirvASTPrinterTest = TestHelper;
 
diff --git a/src/tint/lang/spirv/writer/ast_printer/bitcast_expression_test.cc b/src/tint/lang/spirv/writer/ast_printer/bitcast_expression_test.cc
index 2dbcca8..cdff243 100644
--- a/src/tint/lang/spirv/writer/ast_printer/bitcast_expression_test.cc
+++ b/src/tint/lang/spirv/writer/ast_printer/bitcast_expression_test.cc
@@ -12,10 +12,12 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/spirv/writer/ast_printer/helper_test.h"
 #include "src/tint/lang/spirv/writer/common/spv_dump.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
+using namespace tint::core::fluent_types;     // NOLINT
 
 namespace tint::spirv::writer {
 namespace {
diff --git a/src/tint/lang/spirv/writer/ast_printer/block_test.cc b/src/tint/lang/spirv/writer/ast_printer/block_test.cc
index fef6970..f26dc5a 100644
--- a/src/tint/lang/spirv/writer/ast_printer/block_test.cc
+++ b/src/tint/lang/spirv/writer/ast_printer/block_test.cc
@@ -15,7 +15,7 @@
 #include "src/tint/lang/spirv/writer/ast_printer/helper_test.h"
 #include "src/tint/lang/spirv/writer/common/spv_dump.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::spirv::writer {
 namespace {
diff --git a/src/tint/lang/spirv/writer/ast_printer/builder.cc b/src/tint/lang/spirv/writer/ast_printer/builder.cc
index 1bad80c..7b0afae 100644
--- a/src/tint/lang/spirv/writer/ast_printer/builder.cc
+++ b/src/tint/lang/spirv/writer/ast_printer/builder.cc
@@ -19,6 +19,7 @@
 
 #include "spirv/unified1/GLSL.std.450.h"
 #include "src/tint/lang/core/constant/value.h"
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/core/type/array.h"
 #include "src/tint/lang/core/type/atomic.h"
 #include "src/tint/lang/core/type/depth_multisampled_texture.h"
@@ -53,6 +54,8 @@
 #include "src/tint/utils/macros/defer.h"
 #include "src/tint/utils/text/string_stream.h"
 
+using namespace tint::core::fluent_types;  // NOLINT
+
 namespace tint::spirv::writer {
 namespace {
 
diff --git a/src/tint/lang/spirv/writer/ast_printer/call_test.cc b/src/tint/lang/spirv/writer/ast_printer/call_test.cc
index 2bebef5..0e20861 100644
--- a/src/tint/lang/spirv/writer/ast_printer/call_test.cc
+++ b/src/tint/lang/spirv/writer/ast_printer/call_test.cc
@@ -17,7 +17,7 @@
 #include "src/tint/lang/spirv/writer/common/spv_dump.h"
 #include "src/tint/lang/wgsl/ast/call_statement.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::spirv::writer {
 namespace {
diff --git a/src/tint/lang/spirv/writer/ast_printer/const_assert_test.cc b/src/tint/lang/spirv/writer/ast_printer/const_assert_test.cc
index 7ec84eb..b60fd52 100644
--- a/src/tint/lang/spirv/writer/ast_printer/const_assert_test.cc
+++ b/src/tint/lang/spirv/writer/ast_printer/const_assert_test.cc
@@ -15,7 +15,7 @@
 #include "src/tint/lang/spirv/writer/ast_printer/helper_test.h"
 #include "src/tint/lang/spirv/writer/common/spv_dump.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::spirv::writer {
 namespace {
diff --git a/src/tint/lang/spirv/writer/ast_printer/constructor_expression_test.cc b/src/tint/lang/spirv/writer/ast_printer/constructor_expression_test.cc
index 2bd367a..93e9eb2 100644
--- a/src/tint/lang/spirv/writer/ast_printer/constructor_expression_test.cc
+++ b/src/tint/lang/spirv/writer/ast_printer/constructor_expression_test.cc
@@ -19,7 +19,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using SpvBuilderConstructorTest = TestHelper;
 
diff --git a/src/tint/lang/spirv/writer/ast_printer/entry_point_test.cc b/src/tint/lang/spirv/writer/ast_printer/entry_point_test.cc
index f473e43..0f2163c 100644
--- a/src/tint/lang/spirv/writer/ast_printer/entry_point_test.cc
+++ b/src/tint/lang/spirv/writer/ast_printer/entry_point_test.cc
@@ -33,7 +33,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using SpirvASTPrinterTest = TestHelper;
 
diff --git a/src/tint/lang/spirv/writer/ast_printer/function_attribute_test.cc b/src/tint/lang/spirv/writer/ast_printer/function_attribute_test.cc
index 796647a..fb707f5 100644
--- a/src/tint/lang/spirv/writer/ast_printer/function_attribute_test.cc
+++ b/src/tint/lang/spirv/writer/ast_printer/function_attribute_test.cc
@@ -23,7 +23,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using SpirvASTPrinterTest = TestHelper;
 
diff --git a/src/tint/lang/spirv/writer/ast_printer/function_variable_test.cc b/src/tint/lang/spirv/writer/ast_printer/function_variable_test.cc
index c10811c..d2e67ab 100644
--- a/src/tint/lang/spirv/writer/ast_printer/function_variable_test.cc
+++ b/src/tint/lang/spirv/writer/ast_printer/function_variable_test.cc
@@ -19,7 +19,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using SpirvASTPrinterTest = TestHelper;
 
diff --git a/src/tint/lang/spirv/writer/ast_printer/global_variable_test.cc b/src/tint/lang/spirv/writer/ast_printer/global_variable_test.cc
index 2364f69..d6a89ef 100644
--- a/src/tint/lang/spirv/writer/ast_printer/global_variable_test.cc
+++ b/src/tint/lang/spirv/writer/ast_printer/global_variable_test.cc
@@ -22,7 +22,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using SpirvASTPrinterTest = TestHelper;
 
diff --git a/src/tint/lang/spirv/writer/ast_printer/ident_expression_test.cc b/src/tint/lang/spirv/writer/ast_printer/ident_expression_test.cc
index c362b70..f7d0cfc 100644
--- a/src/tint/lang/spirv/writer/ast_printer/ident_expression_test.cc
+++ b/src/tint/lang/spirv/writer/ast_printer/ident_expression_test.cc
@@ -20,7 +20,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using SpirvASTPrinterTest = TestHelper;
 
diff --git a/src/tint/lang/spirv/writer/ast_printer/literal_test.cc b/src/tint/lang/spirv/writer/ast_printer/literal_test.cc
index da50283..3cf16cf 100644
--- a/src/tint/lang/spirv/writer/ast_printer/literal_test.cc
+++ b/src/tint/lang/spirv/writer/ast_printer/literal_test.cc
@@ -15,7 +15,7 @@
 #include "src/tint/lang/spirv/writer/ast_printer/helper_test.h"
 #include "src/tint/lang/spirv/writer/common/spv_dump.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::spirv::writer {
 
diff --git a/src/tint/lang/spirv/writer/ast_printer/return_test.cc b/src/tint/lang/spirv/writer/ast_printer/return_test.cc
index 25e19ed..2223b25 100644
--- a/src/tint/lang/spirv/writer/ast_printer/return_test.cc
+++ b/src/tint/lang/spirv/writer/ast_printer/return_test.cc
@@ -19,7 +19,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using SpirvASTPrinterTest = TestHelper;
 
diff --git a/src/tint/lang/spirv/writer/ast_printer/scalar_constant.h b/src/tint/lang/spirv/writer/ast_printer/scalar_constant.h
index 6c6931b..677fbc5 100644
--- a/src/tint/lang/spirv/writer/ast_printer/scalar_constant.h
+++ b/src/tint/lang/spirv/writer/ast_printer/scalar_constant.h
@@ -91,9 +91,9 @@
 
     /// @param value the value of the constant
     /// @returns a new ScalarConstant with the provided value and kind Kind::kF16
-    static inline ScalarConstant F16(f16::type value) {
+    static inline ScalarConstant F16(core::f16::type value) {
         ScalarConstant c;
-        c.value.f16 = {f16(value).BitsRepresentation()};
+        c.value.f16 = {core::f16(value).BitsRepresentation()};
         c.kind = Kind::kF16;
         return c;
     }
diff --git a/src/tint/lang/spirv/writer/ast_printer/unary_op_expression_test.cc b/src/tint/lang/spirv/writer/ast_printer/unary_op_expression_test.cc
index 4359172..0531e32 100644
--- a/src/tint/lang/spirv/writer/ast_printer/unary_op_expression_test.cc
+++ b/src/tint/lang/spirv/writer/ast_printer/unary_op_expression_test.cc
@@ -12,10 +12,12 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/spirv/writer/ast_printer/helper_test.h"
 #include "src/tint/lang/spirv/writer/common/spv_dump.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
+using namespace tint::core::fluent_types;     // NOLINT
 
 namespace tint::spirv::writer {
 namespace {
diff --git a/src/tint/lang/spirv/writer/atomic_builtin_test.cc b/src/tint/lang/spirv/writer/atomic_builtin_test.cc
index 906253e..f14a82f 100644
--- a/src/tint/lang/spirv/writer/atomic_builtin_test.cc
+++ b/src/tint/lang/spirv/writer/atomic_builtin_test.cc
@@ -20,7 +20,7 @@
 #include "src/tint/lang/core/function.h"
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::spirv::writer {
 namespace {
diff --git a/src/tint/lang/spirv/writer/binary_test.cc b/src/tint/lang/spirv/writer/binary_test.cc
index 4026eda..b9fdc92 100644
--- a/src/tint/lang/spirv/writer/binary_test.cc
+++ b/src/tint/lang/spirv/writer/binary_test.cc
@@ -16,9 +16,11 @@
 
 #include "src/tint/lang/spirv/writer/common/helper_test.h"
 
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/core/ir/binary.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
+using namespace tint::core::fluent_types;     // NOLINT
 
 namespace tint::spirv::writer {
 namespace {
diff --git a/src/tint/lang/spirv/writer/bitcast_test.cc b/src/tint/lang/spirv/writer/bitcast_test.cc
index 3a9b5fd..8ea9fe6 100644
--- a/src/tint/lang/spirv/writer/bitcast_test.cc
+++ b/src/tint/lang/spirv/writer/bitcast_test.cc
@@ -20,7 +20,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 /// A parameterized test case.
 struct BitcastCase {
diff --git a/src/tint/lang/spirv/writer/builtin_test.cc b/src/tint/lang/spirv/writer/builtin_test.cc
index aca5d4b..01390c8 100644
--- a/src/tint/lang/spirv/writer/builtin_test.cc
+++ b/src/tint/lang/spirv/writer/builtin_test.cc
@@ -19,7 +19,7 @@
 #include "src/tint/lang/core/function.h"
 #include "src/tint/lang/core/type/builtin_structs.h"
 
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 using namespace tint::core::fluent_types;  // NOLINT
 
 namespace tint::spirv::writer {
diff --git a/src/tint/lang/spirv/writer/common/helper_test.h b/src/tint/lang/spirv/writer/common/helper_test.h
index 463c681..7e98f87 100644
--- a/src/tint/lang/spirv/writer/common/helper_test.h
+++ b/src/tint/lang/spirv/writer/common/helper_test.h
@@ -38,7 +38,7 @@
 
 namespace tint::spirv::writer {
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 // Helper macro to check whether the SPIR-V output contains an instruction, dumping the full output
 // if the instruction was not present.
@@ -204,13 +204,13 @@
             case kBool:
                 return b.Constant(true);
             case kI32:
-                return b.Constant(i32(value));
+                return b.Constant(core::i32(value));
             case kU32:
-                return b.Constant(u32(value));
+                return b.Constant(core::u32(value));
             case kF32:
-                return b.Constant(f32(value));
+                return b.Constant(core::f32(value));
             case kF16:
-                return b.Constant(f16(value));
+                return b.Constant(core::f16(value));
         }
         return nullptr;
     }
diff --git a/src/tint/lang/spirv/writer/constant_test.cc b/src/tint/lang/spirv/writer/constant_test.cc
index 1824223..9b26464 100644
--- a/src/tint/lang/spirv/writer/constant_test.cc
+++ b/src/tint/lang/spirv/writer/constant_test.cc
@@ -14,12 +14,14 @@
 
 // GEN_BUILD:CONDITION(tint_build_ir)
 
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/spirv/writer/common/helper_test.h"
 
 namespace tint::spirv::writer {
 namespace {
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
+using namespace tint::core::fluent_types;     // NOLINT
 
 TEST_F(SpirvWriterTest, Constant_Bool) {
     writer_.Constant(b.Constant(true));
diff --git a/src/tint/lang/spirv/writer/construct_test.cc b/src/tint/lang/spirv/writer/construct_test.cc
index c38cf49..9d04327 100644
--- a/src/tint/lang/spirv/writer/construct_test.cc
+++ b/src/tint/lang/spirv/writer/construct_test.cc
@@ -20,7 +20,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 TEST_F(SpirvWriterTest, Construct_Vector) {
     auto* func = b.Function("foo", ty.vec4<i32>());
diff --git a/src/tint/lang/spirv/writer/convert_test.cc b/src/tint/lang/spirv/writer/convert_test.cc
index 5940c18..456c657 100644
--- a/src/tint/lang/spirv/writer/convert_test.cc
+++ b/src/tint/lang/spirv/writer/convert_test.cc
@@ -20,7 +20,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 /// A parameterized test case.
 struct ConvertCase {
diff --git a/src/tint/lang/spirv/writer/discard_test.cc b/src/tint/lang/spirv/writer/discard_test.cc
index 0d2192b..f6eba8a 100644
--- a/src/tint/lang/spirv/writer/discard_test.cc
+++ b/src/tint/lang/spirv/writer/discard_test.cc
@@ -20,7 +20,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 TEST_F(SpirvWriterTest, Discard) {
     auto* buffer = b.Var("buffer", ty.ptr<storage, i32>());
diff --git a/src/tint/lang/spirv/writer/function_test.cc b/src/tint/lang/spirv/writer/function_test.cc
index 868f789..7147b62 100644
--- a/src/tint/lang/spirv/writer/function_test.cc
+++ b/src/tint/lang/spirv/writer/function_test.cc
@@ -20,7 +20,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 TEST_F(SpirvWriterTest, Function_Empty) {
     auto* func = b.Function("foo", ty.void_());
diff --git a/src/tint/lang/spirv/writer/if_test.cc b/src/tint/lang/spirv/writer/if_test.cc
index a4ee046..7b3cf3c 100644
--- a/src/tint/lang/spirv/writer/if_test.cc
+++ b/src/tint/lang/spirv/writer/if_test.cc
@@ -16,7 +16,7 @@
 
 #include "src/tint/lang/spirv/writer/common/helper_test.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::spirv::writer {
 namespace {
diff --git a/src/tint/lang/spirv/writer/let_test.cc b/src/tint/lang/spirv/writer/let_test.cc
index 7c2b456..642f930 100644
--- a/src/tint/lang/spirv/writer/let_test.cc
+++ b/src/tint/lang/spirv/writer/let_test.cc
@@ -20,7 +20,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 TEST_F(SpirvWriterTest, Let_Constant) {
     auto* func = b.Function("foo", ty.void_());
diff --git a/src/tint/lang/spirv/writer/loop_test.cc b/src/tint/lang/spirv/writer/loop_test.cc
index 04b0d54..b7e8d8f 100644
--- a/src/tint/lang/spirv/writer/loop_test.cc
+++ b/src/tint/lang/spirv/writer/loop_test.cc
@@ -16,7 +16,7 @@
 
 #include "src/tint/lang/spirv/writer/common/helper_test.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::spirv::writer {
 namespace {
diff --git a/src/tint/lang/spirv/writer/printer/printer.cc b/src/tint/lang/spirv/writer/printer/printer.cc
index 75f2205..827ee1e 100644
--- a/src/tint/lang/spirv/writer/printer/printer.cc
+++ b/src/tint/lang/spirv/writer/printer/printer.cc
@@ -20,6 +20,7 @@
 #include "spirv/unified1/spirv.h"
 #include "src/tint/lang/core/constant/scalar.h"
 #include "src/tint/lang/core/constant/splat.h"
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/core/ir/access.h"
 #include "src/tint/lang/core/ir/binary.h"
 #include "src/tint/lang/core/ir/bitcast.h"
@@ -79,12 +80,12 @@
 #include "src/tint/utils/macros/scoped_assignment.h"
 #include "src/tint/utils/rtti/switch.h"
 
+using namespace tint::core::fluent_types;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
+
 namespace tint::spirv::writer {
-
 namespace {
 
-using namespace tint::number_suffixes;  // NOLINT
-
 constexpr uint32_t kWriterVersion = 1;
 
 SpvStorageClass StorageClass(core::AddressSpace addrspace) {
diff --git a/src/tint/lang/spirv/writer/raise/builtin_polyfill.cc b/src/tint/lang/spirv/writer/raise/builtin_polyfill.cc
index 1173d66..65289a3 100644
--- a/src/tint/lang/spirv/writer/raise/builtin_polyfill.cc
+++ b/src/tint/lang/spirv/writer/raise/builtin_polyfill.cc
@@ -17,6 +17,7 @@
 #include <utility>
 
 #include "spirv/unified1/spirv.h"
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/core/ir/builder.h"
 #include "src/tint/lang/core/ir/module.h"
 #include "src/tint/lang/core/ir/validator.h"
@@ -32,7 +33,8 @@
 TINT_INSTANTIATE_TYPEINFO(tint::spirv::writer::raise::LiteralOperand);
 TINT_INSTANTIATE_TYPEINFO(tint::spirv::writer::raise::SampledImage);
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
+using namespace tint::core::fluent_types;     // NOLINT
 
 namespace tint::spirv::writer::raise {
 
diff --git a/src/tint/lang/spirv/writer/raise/builtin_polyfill_test.cc b/src/tint/lang/spirv/writer/raise/builtin_polyfill_test.cc
index 5f827d7..df7aeb3 100644
--- a/src/tint/lang/spirv/writer/raise/builtin_polyfill_test.cc
+++ b/src/tint/lang/spirv/writer/raise/builtin_polyfill_test.cc
@@ -29,7 +29,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using SpirvWriter_BuiltinPolyfillTest = ir::transform::TransformTest;
 
diff --git a/src/tint/lang/spirv/writer/raise/expand_implicit_splats.cc b/src/tint/lang/spirv/writer/raise/expand_implicit_splats.cc
index 591d240..19dc647 100644
--- a/src/tint/lang/spirv/writer/raise/expand_implicit_splats.cc
+++ b/src/tint/lang/spirv/writer/raise/expand_implicit_splats.cc
@@ -20,7 +20,7 @@
 #include "src/tint/lang/core/ir/module.h"
 #include "src/tint/lang/core/ir/validator.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::spirv::writer::raise {
 
diff --git a/src/tint/lang/spirv/writer/raise/expand_implicit_splats_test.cc b/src/tint/lang/spirv/writer/raise/expand_implicit_splats_test.cc
index 30a8b44..bd01482 100644
--- a/src/tint/lang/spirv/writer/raise/expand_implicit_splats_test.cc
+++ b/src/tint/lang/spirv/writer/raise/expand_implicit_splats_test.cc
@@ -22,7 +22,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using SpirvWriter_ExpandImplicitSplatsTest = ir::transform::TransformTest;
 
diff --git a/src/tint/lang/spirv/writer/raise/handle_matrix_arithmetic.cc b/src/tint/lang/spirv/writer/raise/handle_matrix_arithmetic.cc
index 5e49d45..fbcc95b 100644
--- a/src/tint/lang/spirv/writer/raise/handle_matrix_arithmetic.cc
+++ b/src/tint/lang/spirv/writer/raise/handle_matrix_arithmetic.cc
@@ -16,13 +16,15 @@
 
 #include <utility>
 
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/core/ir/builder.h"
 #include "src/tint/lang/core/ir/module.h"
 #include "src/tint/lang/core/ir/validator.h"
 #include "src/tint/lang/core/type/matrix.h"
 #include "src/tint/utils/ice/ice.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
+using namespace tint::core::fluent_types;     // NOLINT
 
 namespace tint::spirv::writer::raise {
 
diff --git a/src/tint/lang/spirv/writer/raise/handle_matrix_arithmetic_test.cc b/src/tint/lang/spirv/writer/raise/handle_matrix_arithmetic_test.cc
index 7810941..9eac8bb 100644
--- a/src/tint/lang/spirv/writer/raise/handle_matrix_arithmetic_test.cc
+++ b/src/tint/lang/spirv/writer/raise/handle_matrix_arithmetic_test.cc
@@ -23,7 +23,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using SpirvWriter_HandleMatrixArithmeticTest = ir::transform::TransformTest;
 
diff --git a/src/tint/lang/spirv/writer/raise/merge_return.cc b/src/tint/lang/spirv/writer/raise/merge_return.cc
index 31e4731..b5c84ea 100644
--- a/src/tint/lang/spirv/writer/raise/merge_return.cc
+++ b/src/tint/lang/spirv/writer/raise/merge_return.cc
@@ -24,7 +24,7 @@
 #include "src/tint/utils/rtti/switch.h"
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::spirv::writer::raise {
 
diff --git a/src/tint/lang/spirv/writer/raise/merge_return_test.cc b/src/tint/lang/spirv/writer/raise/merge_return_test.cc
index 956cd56..2c13386 100644
--- a/src/tint/lang/spirv/writer/raise/merge_return_test.cc
+++ b/src/tint/lang/spirv/writer/raise/merge_return_test.cc
@@ -22,7 +22,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using SpirvWriter_MergeReturnTest = ir::transform::TransformTest;
 
diff --git a/src/tint/lang/spirv/writer/raise/shader_io.cc b/src/tint/lang/spirv/writer/raise/shader_io.cc
index 6f695e6..1060703 100644
--- a/src/tint/lang/spirv/writer/raise/shader_io.cc
+++ b/src/tint/lang/spirv/writer/raise/shader_io.cc
@@ -25,7 +25,7 @@
 #include "src/tint/lang/core/type/struct.h"
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::spirv::writer::raise {
 
diff --git a/src/tint/lang/spirv/writer/raise/shader_io_test.cc b/src/tint/lang/spirv/writer/raise/shader_io_test.cc
index 56083a5..4012216 100644
--- a/src/tint/lang/spirv/writer/raise/shader_io_test.cc
+++ b/src/tint/lang/spirv/writer/raise/shader_io_test.cc
@@ -22,7 +22,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using SpirvWriter_ShaderIOTest = ir::transform::TransformTest;
 
diff --git a/src/tint/lang/spirv/writer/raise/var_for_dynamic_index.cc b/src/tint/lang/spirv/writer/raise/var_for_dynamic_index.cc
index 644f05c..c66d8de 100644
--- a/src/tint/lang/spirv/writer/raise/var_for_dynamic_index.cc
+++ b/src/tint/lang/spirv/writer/raise/var_for_dynamic_index.cc
@@ -16,6 +16,7 @@
 
 #include <utility>
 
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/core/ir/builder.h"
 #include "src/tint/lang/core/ir/module.h"
 #include "src/tint/lang/core/ir/validator.h"
@@ -25,7 +26,8 @@
 #include "src/tint/lang/core/type/vector.h"
 #include "src/tint/utils/containers/hashmap.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
+using namespace tint::core::fluent_types;     // NOLINT
 
 namespace tint::spirv::writer::raise {
 
diff --git a/src/tint/lang/spirv/writer/raise/var_for_dynamic_index_test.cc b/src/tint/lang/spirv/writer/raise/var_for_dynamic_index_test.cc
index 55dc58f..26031a4c 100644
--- a/src/tint/lang/spirv/writer/raise/var_for_dynamic_index_test.cc
+++ b/src/tint/lang/spirv/writer/raise/var_for_dynamic_index_test.cc
@@ -25,7 +25,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using SpirvWriter_VarForDynamicIndexTest = ir::transform::TransformTest;
 
diff --git a/src/tint/lang/spirv/writer/switch_test.cc b/src/tint/lang/spirv/writer/switch_test.cc
index d6d711f..7accfd2 100644
--- a/src/tint/lang/spirv/writer/switch_test.cc
+++ b/src/tint/lang/spirv/writer/switch_test.cc
@@ -16,7 +16,7 @@
 
 #include "src/tint/lang/spirv/writer/common/helper_test.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::spirv::writer {
 namespace {
diff --git a/src/tint/lang/spirv/writer/swizzle_test.cc b/src/tint/lang/spirv/writer/swizzle_test.cc
index 9b6657e..68b25c2 100644
--- a/src/tint/lang/spirv/writer/swizzle_test.cc
+++ b/src/tint/lang/spirv/writer/swizzle_test.cc
@@ -20,7 +20,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 TEST_F(SpirvWriterTest, Swizzle_TwoElements) {
     auto* vec = b.FunctionParam("vec", ty.vec4<i32>());
diff --git a/src/tint/lang/spirv/writer/texture_builtin_test.cc b/src/tint/lang/spirv/writer/texture_builtin_test.cc
index 46062a7..4b91601 100644
--- a/src/tint/lang/spirv/writer/texture_builtin_test.cc
+++ b/src/tint/lang/spirv/writer/texture_builtin_test.cc
@@ -14,11 +14,13 @@
 
 // GEN_BUILD:CONDITION(tint_build_ir)
 
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/core/function.h"
 #include "src/tint/lang/core/type/depth_multisampled_texture.h"
 #include "src/tint/lang/spirv/writer/common/helper_test.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
+using namespace tint::core::fluent_types;     // NOLINT
 
 namespace tint::spirv::writer {
 namespace {
diff --git a/src/tint/lang/spirv/writer/type_test.cc b/src/tint/lang/spirv/writer/type_test.cc
index b502285..ec395bb 100644
--- a/src/tint/lang/spirv/writer/type_test.cc
+++ b/src/tint/lang/spirv/writer/type_test.cc
@@ -15,6 +15,7 @@
 // GEN_BUILD:CONDITION(tint_build_ir)
 
 #include "src/tint/lang/core/type/type.h"
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/core/type/bool.h"
 #include "src/tint/lang/core/type/depth_multisampled_texture.h"
 #include "src/tint/lang/core/type/depth_texture.h"
@@ -28,6 +29,8 @@
 #include "src/tint/lang/core/type/void.h"
 #include "src/tint/lang/spirv/writer/common/helper_test.h"
 
+using namespace tint::core::fluent_types;  // NOLINT
+
 namespace tint::spirv::writer {
 namespace {
 
diff --git a/src/tint/lang/spirv/writer/unary_test.cc b/src/tint/lang/spirv/writer/unary_test.cc
index 588a49c..0384b39 100644
--- a/src/tint/lang/spirv/writer/unary_test.cc
+++ b/src/tint/lang/spirv/writer/unary_test.cc
@@ -18,7 +18,7 @@
 
 #include "src/tint/lang/core/ir/unary.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::spirv::writer {
 namespace {
diff --git a/src/tint/lang/spirv/writer/var_test.cc b/src/tint/lang/spirv/writer/var_test.cc
index 3d80d17..7300129 100644
--- a/src/tint/lang/spirv/writer/var_test.cc
+++ b/src/tint/lang/spirv/writer/var_test.cc
@@ -22,7 +22,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 TEST_F(SpirvWriterTest, FunctionVar_NoInit) {
     auto* func = b.Function("foo", ty.void_());
diff --git a/src/tint/lang/spirv/writer/writer_test.cc b/src/tint/lang/spirv/writer/writer_test.cc
index fe9145a..1d99514 100644
--- a/src/tint/lang/spirv/writer/writer_test.cc
+++ b/src/tint/lang/spirv/writer/writer_test.cc
@@ -21,7 +21,7 @@
 namespace tint::spirv::writer {
 namespace {
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 TEST_F(SpirvWriterTest, ModuleHeader) {
     auto spirv = writer_.Generate();
diff --git a/src/tint/lang/wgsl/ast/assignment_statement_test.cc b/src/tint/lang/wgsl/ast/assignment_statement_test.cc
index 96ee03c..e32ec24 100644
--- a/src/tint/lang/wgsl/ast/assignment_statement_test.cc
+++ b/src/tint/lang/wgsl/ast/assignment_statement_test.cc
@@ -17,7 +17,7 @@
 #include "gtest/gtest-spi.h"
 #include "src/tint/lang/wgsl/ast/helper_test.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::ast {
 namespace {
diff --git a/src/tint/lang/wgsl/ast/binding_attribute_test.cc b/src/tint/lang/wgsl/ast/binding_attribute_test.cc
index 471cd60..6992c49 100644
--- a/src/tint/lang/wgsl/ast/binding_attribute_test.cc
+++ b/src/tint/lang/wgsl/ast/binding_attribute_test.cc
@@ -17,7 +17,7 @@
 namespace tint::ast {
 namespace {
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 using BindingAttributeTest = TestHelper;
 
 TEST_F(BindingAttributeTest, Creation) {
diff --git a/src/tint/lang/wgsl/ast/builder.cc b/src/tint/lang/wgsl/ast/builder.cc
index bfcccd3..d665a10 100644
--- a/src/tint/lang/wgsl/ast/builder.cc
+++ b/src/tint/lang/wgsl/ast/builder.cc
@@ -14,7 +14,7 @@
 
 #include "src/tint/lang/wgsl/ast/builder.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::ast {
 
diff --git a/src/tint/lang/wgsl/ast/builder.h b/src/tint/lang/wgsl/ast/builder.h
index fd9ec3a..4b7a8be 100644
--- a/src/tint/lang/wgsl/ast/builder.h
+++ b/src/tint/lang/wgsl/ast/builder.h
@@ -118,7 +118,7 @@
 /// Evaluates to true if T is a Infer, AInt or AFloat.
 template <typename T>
 static constexpr const bool IsInferOrAbstract =
-    std::is_same_v<std::decay_t<T>, core::fluent_types::Infer> || IsAbstract<std::decay_t<T>>;
+    std::is_same_v<std::decay_t<T>, core::fluent_types::Infer> || core::IsAbstract<std::decay_t<T>>;
 
 // Forward declare metafunction that evaluates to true iff T can be wrapped in a statement.
 template <typename T, typename = void>
@@ -135,8 +135,8 @@
     /// Evaluates to true if T is a Number or bool.
     template <typename T>
     static constexpr const bool IsScalar =
-        std::is_integral_v<UnwrapNumber<T>> || std::is_floating_point_v<UnwrapNumber<T>> ||
-        std::is_same_v<T, bool>;
+        std::is_integral_v<core::UnwrapNumber<T>> ||
+        std::is_floating_point_v<core::UnwrapNumber<T>> || std::is_same_v<T, bool>;
 
     /// Evaluates to true if T can be converted to an identifier.
     template <typename T>
@@ -988,7 +988,7 @@
                     source, builder->Sym("array"),
                     Vector{
                         Of<T>().expr,
-                        builder->Expr(builder->source_, tint::u32(N)),
+                        builder->Expr(builder->source_, core::u32(N)),
                     },
                     std::move(attrs)))};
             }
@@ -1436,7 +1436,7 @@
     /// @param source the source information
     /// @param value the float value
     /// @return a 'f'-suffixed FloatLiteralExpression for the f32 value
-    const ast::FloatLiteralExpression* Expr(const Source& source, f32 value) {
+    const ast::FloatLiteralExpression* Expr(const Source& source, core::f32 value) {
         return create<ast::FloatLiteralExpression>(source, static_cast<double>(value.value),
                                                    ast::FloatLiteralExpression::Suffix::kF);
     }
@@ -1444,7 +1444,7 @@
     /// @param source the source information
     /// @param value the float value
     /// @return a 'h'-suffixed FloatLiteralExpression for the f16 value
-    const ast::FloatLiteralExpression* Expr(const Source& source, f16 value) {
+    const ast::FloatLiteralExpression* Expr(const Source& source, core::f16 value) {
         return create<ast::FloatLiteralExpression>(source, static_cast<double>(value.value),
                                                    ast::FloatLiteralExpression::Suffix::kH);
     }
@@ -1452,7 +1452,7 @@
     /// @param source the source information
     /// @param value the integer value
     /// @return an unsuffixed IntLiteralExpression for the AInt value
-    const ast::IntLiteralExpression* Expr(const Source& source, AInt value) {
+    const ast::IntLiteralExpression* Expr(const Source& source, core::AInt value) {
         return create<ast::IntLiteralExpression>(source, value,
                                                  ast::IntLiteralExpression::Suffix::kNone);
     }
@@ -1460,7 +1460,7 @@
     /// @param source the source information
     /// @param value the integer value
     /// @return an unsuffixed FloatLiteralExpression for the AFloat value
-    const ast::FloatLiteralExpression* Expr(const Source& source, AFloat value) {
+    const ast::FloatLiteralExpression* Expr(const Source& source, core::AFloat value) {
         return create<ast::FloatLiteralExpression>(source, value.value,
                                                    ast::FloatLiteralExpression::Suffix::kNone);
     }
@@ -1468,7 +1468,7 @@
     /// @param source the source information
     /// @param value the integer value
     /// @return a signed 'i'-suffixed IntLiteralExpression for the i32 value
-    const ast::IntLiteralExpression* Expr(const Source& source, i32 value) {
+    const ast::IntLiteralExpression* Expr(const Source& source, core::i32 value) {
         return create<ast::IntLiteralExpression>(source, value,
                                                  ast::IntLiteralExpression::Suffix::kI);
     }
@@ -1476,7 +1476,7 @@
     /// @param source the source information
     /// @param value the unsigned int value
     /// @return an unsigned 'u'-suffixed IntLiteralExpression for the u32 value
-    const ast::IntLiteralExpression* Expr(const Source& source, u32 value) {
+    const ast::IntLiteralExpression* Expr(const Source& source, core::u32 value) {
         return create<ast::IntLiteralExpression>(source, value,
                                                  ast::IntLiteralExpression::Suffix::kU);
     }
@@ -2597,7 +2597,7 @@
     const ast::StructMember* Member(uint32_t offset, NAME&& name, ast::Type type) {
         return create<ast::StructMember>(source_, Ident(std::forward<NAME>(name)), type,
                                          Vector<const ast::Attribute*, 1>{
-                                             MemberOffset(AInt(offset)),
+                                             MemberOffset(core::AInt(offset)),
                                          });
     }
 
@@ -3164,14 +3164,14 @@
     /// @param id the id value
     /// @returns the override attribute pointer
     const ast::IdAttribute* Id(const Source& source, OverrideId id) {
-        return create<ast::IdAttribute>(source, Expr(AInt(id.value)));
+        return create<ast::IdAttribute>(source, Expr(core::AInt(id.value)));
     }
 
     /// Creates an ast::IdAttribute with an override identifier
     /// @param id the optional id value
     /// @returns the override attribute pointer
     const ast::IdAttribute* Id(OverrideId id) {
-        return create<ast::IdAttribute>(Expr(AInt(id.value)));
+        return create<ast::IdAttribute>(Expr(core::AInt(id.value)));
     }
 
     /// Creates an ast::IdAttribute
@@ -3483,27 +3483,27 @@
 //! @cond Doxygen_Suppress
 // Various template specializations for Builder::TypesBuilder::CToAST.
 template <>
-struct Builder::TypesBuilder::CToAST<AInt> {
+struct Builder::TypesBuilder::CToAST<core::AInt> {
     static ast::Type get(const Builder::TypesBuilder*) { return ast::Type{}; }
 };
 template <>
-struct Builder::TypesBuilder::CToAST<AFloat> {
+struct Builder::TypesBuilder::CToAST<core::AFloat> {
     static ast::Type get(const Builder::TypesBuilder*) { return ast::Type{}; }
 };
 template <>
-struct Builder::TypesBuilder::CToAST<i32> {
+struct Builder::TypesBuilder::CToAST<core::i32> {
     static ast::Type get(const Builder::TypesBuilder* t) { return t->i32(); }
 };
 template <>
-struct Builder::TypesBuilder::CToAST<u32> {
+struct Builder::TypesBuilder::CToAST<core::u32> {
     static ast::Type get(const Builder::TypesBuilder* t) { return t->u32(); }
 };
 template <>
-struct Builder::TypesBuilder::CToAST<f32> {
+struct Builder::TypesBuilder::CToAST<core::f32> {
     static ast::Type get(const Builder::TypesBuilder* t) { return t->f32(); }
 };
 template <>
-struct Builder::TypesBuilder::CToAST<f16> {
+struct Builder::TypesBuilder::CToAST<core::f16> {
     static ast::Type get(const Builder::TypesBuilder* t) { return t->f16(); }
 };
 template <>
@@ -3511,23 +3511,23 @@
     static ast::Type get(const Builder::TypesBuilder* t) { return t->bool_(); }
 };
 template <typename T, uint32_t N>
-struct Builder::TypesBuilder::CToAST<tint::core::fluent_types::array<T, N>> {
+struct Builder::TypesBuilder::CToAST<core::fluent_types::array<T, N>> {
     static ast::Type get(const Builder::TypesBuilder* t) { return t->array<T, N>(); }
 };
 template <typename T>
-struct Builder::TypesBuilder::CToAST<tint::core::fluent_types::atomic<T>> {
+struct Builder::TypesBuilder::CToAST<core::fluent_types::atomic<T>> {
     static ast::Type get(const Builder::TypesBuilder* t) { return t->atomic<T>(); }
 };
 template <uint32_t C, uint32_t R, typename T>
-struct Builder::TypesBuilder::CToAST<tint::core::fluent_types::mat<C, R, T>> {
+struct Builder::TypesBuilder::CToAST<core::fluent_types::mat<C, R, T>> {
     static ast::Type get(const Builder::TypesBuilder* t) { return t->mat<T>(C, R); }
 };
 template <uint32_t N, typename T>
-struct Builder::TypesBuilder::CToAST<tint::core::fluent_types::vec<N, T>> {
+struct Builder::TypesBuilder::CToAST<core::fluent_types::vec<N, T>> {
     static ast::Type get(const Builder::TypesBuilder* t) { return t->vec<T, N>(); }
 };
 template <core::AddressSpace ADDRESS, typename T, core::Access ACCESS>
-struct Builder::TypesBuilder::CToAST<tint::core::fluent_types::ptr<ADDRESS, T, ACCESS>> {
+struct Builder::TypesBuilder::CToAST<core::fluent_types::ptr<ADDRESS, T, ACCESS>> {
     static ast::Type get(const Builder::TypesBuilder* t) { return t->ptr<ADDRESS, T, ACCESS>(); }
 };
 //! @endcond
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 3633616..a721431 100644
--- a/src/tint/lang/wgsl/ast/builtin_texture_helper_test.cc
+++ b/src/tint/lang/wgsl/ast/builtin_texture_helper_test.cc
@@ -25,7 +25,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 StringStream& operator<<(StringStream& out, const TextureKind& kind) {
     switch (kind) {
diff --git a/src/tint/lang/wgsl/ast/case_selector_test.cc b/src/tint/lang/wgsl/ast/case_selector_test.cc
index a865210..932f796 100644
--- a/src/tint/lang/wgsl/ast/case_selector_test.cc
+++ b/src/tint/lang/wgsl/ast/case_selector_test.cc
@@ -17,7 +17,7 @@
 #include "gtest/gtest-spi.h"
 #include "src/tint/lang/wgsl/ast/helper_test.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::ast {
 namespace {
diff --git a/src/tint/lang/wgsl/ast/case_statement_test.cc b/src/tint/lang/wgsl/ast/case_statement_test.cc
index 6ab2e0c..440aa10 100644
--- a/src/tint/lang/wgsl/ast/case_statement_test.cc
+++ b/src/tint/lang/wgsl/ast/case_statement_test.cc
@@ -19,7 +19,7 @@
 #include "src/tint/lang/wgsl/ast/helper_test.h"
 #include "src/tint/lang/wgsl/ast/if_statement.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::ast {
 namespace {
diff --git a/src/tint/lang/wgsl/ast/compound_assignment_statement_test.cc b/src/tint/lang/wgsl/ast/compound_assignment_statement_test.cc
index 4d3ac96..128a4fc 100644
--- a/src/tint/lang/wgsl/ast/compound_assignment_statement_test.cc
+++ b/src/tint/lang/wgsl/ast/compound_assignment_statement_test.cc
@@ -17,7 +17,7 @@
 #include "gtest/gtest-spi.h"
 #include "src/tint/lang/wgsl/ast/helper_test.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::ast {
 namespace {
diff --git a/src/tint/lang/wgsl/ast/const_assert_test.cc b/src/tint/lang/wgsl/ast/const_assert_test.cc
index f99eafa..8e10da4 100644
--- a/src/tint/lang/wgsl/ast/const_assert_test.cc
+++ b/src/tint/lang/wgsl/ast/const_assert_test.cc
@@ -15,8 +15,11 @@
 #include "src/tint/lang/wgsl/ast/const_assert.h"
 
 #include "gtest/gtest-spi.h"
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/wgsl/ast/helper_test.h"
 
+using namespace tint::core::fluent_types;  // NOLINT
+
 namespace tint::ast {
 namespace {
 
diff --git a/src/tint/lang/wgsl/ast/diagnostic_attribute_test.cc b/src/tint/lang/wgsl/ast/diagnostic_attribute_test.cc
index a8dc26a..3d6744f 100644
--- a/src/tint/lang/wgsl/ast/diagnostic_attribute_test.cc
+++ b/src/tint/lang/wgsl/ast/diagnostic_attribute_test.cc
@@ -17,7 +17,7 @@
 namespace tint::ast {
 namespace {
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 using DiagnosticAttributeTest = TestHelper;
 
 TEST_F(DiagnosticAttributeTest, Name) {
diff --git a/src/tint/lang/wgsl/ast/for_loop_statement_test.cc b/src/tint/lang/wgsl/ast/for_loop_statement_test.cc
index 40894e1..b1ae242 100644
--- a/src/tint/lang/wgsl/ast/for_loop_statement_test.cc
+++ b/src/tint/lang/wgsl/ast/for_loop_statement_test.cc
@@ -17,7 +17,7 @@
 #include "src/tint/lang/wgsl/ast/binary_expression.h"
 #include "src/tint/lang/wgsl/ast/helper_test.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::ast {
 namespace {
diff --git a/src/tint/lang/wgsl/ast/function_test.cc b/src/tint/lang/wgsl/ast/function_test.cc
index e0f141b..23bf1a9 100644
--- a/src/tint/lang/wgsl/ast/function_test.cc
+++ b/src/tint/lang/wgsl/ast/function_test.cc
@@ -13,12 +13,14 @@
 // limitations under the License.
 
 #include "gtest/gtest-spi.h"
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/wgsl/ast/discard_statement.h"
 #include "src/tint/lang/wgsl/ast/helper_test.h"
 #include "src/tint/lang/wgsl/ast/stage_attribute.h"
 #include "src/tint/lang/wgsl/ast/workgroup_attribute.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
+using namespace tint::core::fluent_types;     // NOLINT
 
 namespace tint::ast {
 namespace {
diff --git a/src/tint/lang/wgsl/ast/group_attribute_test.cc b/src/tint/lang/wgsl/ast/group_attribute_test.cc
index c46a939..5c7d44f 100644
--- a/src/tint/lang/wgsl/ast/group_attribute_test.cc
+++ b/src/tint/lang/wgsl/ast/group_attribute_test.cc
@@ -17,7 +17,7 @@
 namespace tint::ast {
 namespace {
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 using GroupAttributeTest = TestHelper;
 
 TEST_F(GroupAttributeTest, Creation) {
diff --git a/src/tint/lang/wgsl/ast/helper_test.cc b/src/tint/lang/wgsl/ast/helper_test.cc
index 24a998f..9685d6e 100644
--- a/src/tint/lang/wgsl/ast/helper_test.cc
+++ b/src/tint/lang/wgsl/ast/helper_test.cc
@@ -16,7 +16,7 @@
 
 namespace tint::ast {
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using AstCheckIdentifierTest = TestHelper;
 
diff --git a/src/tint/lang/wgsl/ast/helper_test.h b/src/tint/lang/wgsl/ast/helper_test.h
index d1efdc2..eaf0ea2 100644
--- a/src/tint/lang/wgsl/ast/helper_test.h
+++ b/src/tint/lang/wgsl/ast/helper_test.h
@@ -107,36 +107,36 @@
         } else if constexpr (std::is_same_v<T, bool>) {
             ASSERT_TRUE(got_arg->Is<BoolLiteralExpression>());
             EXPECT_EQ(got_arg->As<BoolLiteralExpression>()->value, expected_arg);
-        } else if constexpr (std::is_same_v<T, AInt>) {
+        } else if constexpr (std::is_same_v<T, core::AInt>) {
             ASSERT_TRUE(got_arg->Is<IntLiteralExpression>());
             EXPECT_EQ(got_arg->As<IntLiteralExpression>()->suffix,
                       IntLiteralExpression::Suffix::kNone);
-            EXPECT_EQ(AInt(got_arg->As<IntLiteralExpression>()->value), expected_arg);
-        } else if constexpr (std::is_same_v<T, i32>) {
+            EXPECT_EQ(core::AInt(got_arg->As<IntLiteralExpression>()->value), expected_arg);
+        } else if constexpr (std::is_same_v<T, core::i32>) {
             ASSERT_TRUE(got_arg->Is<IntLiteralExpression>());
             EXPECT_EQ(got_arg->As<IntLiteralExpression>()->suffix,
                       IntLiteralExpression::Suffix::kI);
-            EXPECT_EQ(i32(got_arg->As<IntLiteralExpression>()->value), expected_arg);
-        } else if constexpr (std::is_same_v<T, u32>) {
+            EXPECT_EQ(core::i32(got_arg->As<IntLiteralExpression>()->value), expected_arg);
+        } else if constexpr (std::is_same_v<T, core::u32>) {
             ASSERT_TRUE(got_arg->Is<IntLiteralExpression>());
             EXPECT_EQ(got_arg->As<IntLiteralExpression>()->suffix,
                       IntLiteralExpression::Suffix::kU);
-            EXPECT_EQ(u32(got_arg->As<IntLiteralExpression>()->value), expected_arg);
-        } else if constexpr (std::is_same_v<T, AFloat>) {
+            EXPECT_EQ(core::u32(got_arg->As<IntLiteralExpression>()->value), expected_arg);
+        } else if constexpr (std::is_same_v<T, core::AFloat>) {
             ASSERT_TRUE(got_arg->Is<FloatLiteralExpression>());
             EXPECT_EQ(got_arg->As<FloatLiteralExpression>()->suffix,
                       FloatLiteralExpression::Suffix::kNone);
-            EXPECT_EQ(AFloat(got_arg->As<FloatLiteralExpression>()->value), expected_arg);
-        } else if constexpr (std::is_same_v<T, f32>) {
+            EXPECT_EQ(core::AFloat(got_arg->As<FloatLiteralExpression>()->value), expected_arg);
+        } else if constexpr (std::is_same_v<T, core::f32>) {
             ASSERT_TRUE(got_arg->Is<FloatLiteralExpression>());
             EXPECT_EQ(got_arg->As<FloatLiteralExpression>()->suffix,
                       FloatLiteralExpression::Suffix::kF);
-            EXPECT_EQ(f32(got_arg->As<FloatLiteralExpression>()->value), expected_arg);
-        } else if constexpr (std::is_same_v<T, f16>) {
+            EXPECT_EQ(core::f32(got_arg->As<FloatLiteralExpression>()->value), expected_arg);
+        } else if constexpr (std::is_same_v<T, core::f16>) {
             ASSERT_TRUE(got_arg->Is<FloatLiteralExpression>());
             EXPECT_EQ(got_arg->As<FloatLiteralExpression>()->suffix,
                       FloatLiteralExpression::Suffix::kH);
-            EXPECT_EQ(f16(got_arg->As<FloatLiteralExpression>()->value), expected_arg);
+            EXPECT_EQ(core::f16(got_arg->As<FloatLiteralExpression>()->value), expected_arg);
         } else {
             FAIL() << "unhandled expected_args type";
         }
diff --git a/src/tint/lang/wgsl/ast/id_attribute_test.cc b/src/tint/lang/wgsl/ast/id_attribute_test.cc
index a20ed74..b63741f 100644
--- a/src/tint/lang/wgsl/ast/id_attribute_test.cc
+++ b/src/tint/lang/wgsl/ast/id_attribute_test.cc
@@ -19,7 +19,7 @@
 namespace tint::ast {
 namespace {
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 using IdAttributeTest = TestHelper;
 
 TEST_F(IdAttributeTest, Creation) {
diff --git a/src/tint/lang/wgsl/ast/identifier_expression_test.cc b/src/tint/lang/wgsl/ast/identifier_expression_test.cc
index 758966c..5b5ab6e 100644
--- a/src/tint/lang/wgsl/ast/identifier_expression_test.cc
+++ b/src/tint/lang/wgsl/ast/identifier_expression_test.cc
@@ -18,7 +18,7 @@
 namespace tint::ast {
 namespace {
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using IdentifierExpressionTest = TestHelper;
 
diff --git a/src/tint/lang/wgsl/ast/index_attribute_test.cc b/src/tint/lang/wgsl/ast/index_attribute_test.cc
index 0756642..d9dcbe6 100644
--- a/src/tint/lang/wgsl/ast/index_attribute_test.cc
+++ b/src/tint/lang/wgsl/ast/index_attribute_test.cc
@@ -19,7 +19,7 @@
 namespace tint::ast {
 namespace {
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 using IndexAttributeTest = TestHelper;
 
 TEST_F(IndexAttributeTest, Creation) {
diff --git a/src/tint/lang/wgsl/ast/location_attribute_test.cc b/src/tint/lang/wgsl/ast/location_attribute_test.cc
index 61b12df..8afe98a 100644
--- a/src/tint/lang/wgsl/ast/location_attribute_test.cc
+++ b/src/tint/lang/wgsl/ast/location_attribute_test.cc
@@ -17,7 +17,7 @@
 namespace tint::ast {
 namespace {
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 using LocationAttributeTest = TestHelper;
 
 TEST_F(LocationAttributeTest, Creation) {
diff --git a/src/tint/lang/wgsl/ast/struct_member_offset_attribute_test.cc b/src/tint/lang/wgsl/ast/struct_member_offset_attribute_test.cc
index 725bb57..585907f 100644
--- a/src/tint/lang/wgsl/ast/struct_member_offset_attribute_test.cc
+++ b/src/tint/lang/wgsl/ast/struct_member_offset_attribute_test.cc
@@ -17,7 +17,7 @@
 namespace tint::ast {
 namespace {
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 using StructMemberOffsetAttributeTest = TestHelper;
 
 TEST_F(StructMemberOffsetAttributeTest, Creation) {
diff --git a/src/tint/lang/wgsl/ast/struct_member_size_attribute_test.cc b/src/tint/lang/wgsl/ast/struct_member_size_attribute_test.cc
index 02a1606..5dc41f1 100644
--- a/src/tint/lang/wgsl/ast/struct_member_size_attribute_test.cc
+++ b/src/tint/lang/wgsl/ast/struct_member_size_attribute_test.cc
@@ -19,7 +19,7 @@
 namespace tint::ast {
 namespace {
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 using StructMemberSizeAttributeTest = TestHelper;
 
 TEST_F(StructMemberSizeAttributeTest, Creation) {
diff --git a/src/tint/lang/wgsl/ast/struct_member_test.cc b/src/tint/lang/wgsl/ast/struct_member_test.cc
index 844b3a2..cf236ac 100644
--- a/src/tint/lang/wgsl/ast/struct_member_test.cc
+++ b/src/tint/lang/wgsl/ast/struct_member_test.cc
@@ -18,7 +18,7 @@
 namespace tint::ast {
 namespace {
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 using StructMemberTest = TestHelper;
 
 TEST_F(StructMemberTest, Creation) {
diff --git a/src/tint/lang/wgsl/ast/switch_statement_test.cc b/src/tint/lang/wgsl/ast/switch_statement_test.cc
index 35cf65e..c1a4d01 100644
--- a/src/tint/lang/wgsl/ast/switch_statement_test.cc
+++ b/src/tint/lang/wgsl/ast/switch_statement_test.cc
@@ -18,7 +18,7 @@
 #include "gtest/gtest-spi.h"
 #include "src/tint/lang/wgsl/ast/helper_test.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::ast {
 namespace {
diff --git a/src/tint/lang/wgsl/ast/templated_identifier_test.cc b/src/tint/lang/wgsl/ast/templated_identifier_test.cc
index fe1873d..a3d90fd 100644
--- a/src/tint/lang/wgsl/ast/templated_identifier_test.cc
+++ b/src/tint/lang/wgsl/ast/templated_identifier_test.cc
@@ -19,7 +19,7 @@
 namespace tint::ast {
 namespace {
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using TemplatedIdentifierTest = TestHelper;
 
diff --git a/src/tint/lang/wgsl/ast/transform/add_empty_entry_point.cc b/src/tint/lang/wgsl/ast/transform/add_empty_entry_point.cc
index 142984a..015f4ae 100644
--- a/src/tint/lang/wgsl/ast/transform/add_empty_entry_point.cc
+++ b/src/tint/lang/wgsl/ast/transform/add_empty_entry_point.cc
@@ -22,7 +22,7 @@
 
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::AddEmptyEntryPoint);
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::ast::transform {
 namespace {
diff --git a/src/tint/lang/wgsl/ast/transform/array_length_from_uniform.cc b/src/tint/lang/wgsl/ast/transform/array_length_from_uniform.cc
index edf28d0..d9e1c60c 100644
--- a/src/tint/lang/wgsl/ast/transform/array_length_from_uniform.cc
+++ b/src/tint/lang/wgsl/ast/transform/array_length_from_uniform.cc
@@ -18,6 +18,7 @@
 #include <string>
 #include <utility>
 
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/wgsl/ast/transform/simplify_pointers.h"
 #include "src/tint/lang/wgsl/program/clone_context.h"
 #include "src/tint/lang/wgsl/program/program_builder.h"
@@ -31,8 +32,9 @@
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::ArrayLengthFromUniform::Config);
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::ArrayLengthFromUniform::Result);
 
+using namespace tint::core::fluent_types;  // NOLINT
+                                           //
 namespace tint::ast::transform {
-
 namespace {
 
 bool ShouldRun(const Program* program) {
diff --git a/src/tint/lang/wgsl/ast/transform/binding_remapper.cc b/src/tint/lang/wgsl/ast/transform/binding_remapper.cc
index 31fad37..83a35bd 100644
--- a/src/tint/lang/wgsl/ast/transform/binding_remapper.cc
+++ b/src/tint/lang/wgsl/ast/transform/binding_remapper.cc
@@ -18,6 +18,7 @@
 #include <unordered_set>
 #include <utility>
 
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/wgsl/ast/disable_validation_attribute.h"
 #include "src/tint/lang/wgsl/program/clone_context.h"
 #include "src/tint/lang/wgsl/program/program_builder.h"
@@ -29,6 +30,8 @@
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::BindingRemapper);
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::BindingRemapper::Remappings);
 
+using namespace tint::core::fluent_types;  // NOLINT
+
 namespace tint::ast::transform {
 
 BindingRemapper::Remappings::Remappings(BindingPoints bp, AccessControls ac, bool may_collide)
diff --git a/src/tint/lang/wgsl/ast/transform/builtin_polyfill.cc b/src/tint/lang/wgsl/ast/transform/builtin_polyfill.cc
index 38605ac..7166a6a 100644
--- a/src/tint/lang/wgsl/ast/transform/builtin_polyfill.cc
+++ b/src/tint/lang/wgsl/ast/transform/builtin_polyfill.cc
@@ -32,7 +32,7 @@
 #include "src/tint/utils/rtti/switch.h"
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::BuiltinPolyfill);
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::BuiltinPolyfill::Config);
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 2def1be..03693b7 100644
--- a/src/tint/lang/wgsl/ast/transform/calculate_array_length.cc
+++ b/src/tint/lang/wgsl/ast/transform/calculate_array_length.cc
@@ -41,7 +41,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 bool ShouldRun(const Program* program) {
     for (auto* fn : program->AST().Functions()) {
diff --git a/src/tint/lang/wgsl/ast/transform/canonicalize_entry_point_io.cc b/src/tint/lang/wgsl/ast/transform/canonicalize_entry_point_io.cc
index 838e871..be33712 100644
--- a/src/tint/lang/wgsl/ast/transform/canonicalize_entry_point_io.cc
+++ b/src/tint/lang/wgsl/ast/transform/canonicalize_entry_point_io.cc
@@ -21,6 +21,7 @@
 #include <vector>
 
 #include "src/tint/lang/core/builtin_value.h"
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/wgsl/ast/disable_validation_attribute.h"
 #include "src/tint/lang/wgsl/ast/transform/unshadow.h"
 #include "src/tint/lang/wgsl/program/clone_context.h"
@@ -28,7 +29,8 @@
 #include "src/tint/lang/wgsl/resolver/resolve.h"
 #include "src/tint/lang/wgsl/sem/function.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
+using namespace tint::core::fluent_types;     // NOLINT
 
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::CanonicalizeEntryPointIO);
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::CanonicalizeEntryPointIO::Config);
diff --git a/src/tint/lang/wgsl/ast/transform/combine_samplers.cc b/src/tint/lang/wgsl/ast/transform/combine_samplers.cc
index 5313b7a..70db874 100644
--- a/src/tint/lang/wgsl/ast/transform/combine_samplers.cc
+++ b/src/tint/lang/wgsl/ast/transform/combine_samplers.cc
@@ -41,7 +41,7 @@
 
 namespace tint::ast::transform {
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 CombineSamplers::BindingInfo::BindingInfo(const BindingMap& map, const BindingPoint& placeholder)
     : binding_map(map), placeholder_binding_point(placeholder) {}
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 5a04194..b60adb1 100644
--- a/src/tint/lang/wgsl/ast/transform/decompose_memory_access.cc
+++ b/src/tint/lang/wgsl/ast/transform/decompose_memory_access.cc
@@ -20,6 +20,7 @@
 #include <utility>
 #include <vector>
 
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/core/type/array.h"
 #include "src/tint/lang/core/type/atomic.h"
 #include "src/tint/lang/core/type/reference.h"
@@ -41,7 +42,8 @@
 #include "src/tint/utils/rtti/switch.h"
 #include "src/tint/utils/text/string_stream.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
+using namespace tint::core::fluent_types;     // NOLINT
 
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::DecomposeMemoryAccess);
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::DecomposeMemoryAccess::Intrinsic);
diff --git a/src/tint/lang/wgsl/ast/transform/decompose_strided_array.cc b/src/tint/lang/wgsl/ast/transform/decompose_strided_array.cc
index bf0bd0d..ef1dc3c 100644
--- a/src/tint/lang/wgsl/ast/transform/decompose_strided_array.cc
+++ b/src/tint/lang/wgsl/ast/transform/decompose_strided_array.cc
@@ -18,6 +18,7 @@
 #include <utility>
 #include <vector>
 
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/wgsl/ast/transform/simplify_pointers.h"
 #include "src/tint/lang/wgsl/program/clone_context.h"
 #include "src/tint/lang/wgsl/program/program_builder.h"
@@ -30,6 +31,8 @@
 #include "src/tint/utils/containers/map.h"
 #include "src/tint/utils/math/hash.h"
 
+using namespace tint::core::fluent_types;  // NOLINT
+
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::DecomposeStridedArray);
 
 namespace tint::ast::transform {
diff --git a/src/tint/lang/wgsl/ast/transform/decompose_strided_array_test.cc b/src/tint/lang/wgsl/ast/transform/decompose_strided_array_test.cc
index 80036b0..bcfc473 100644
--- a/src/tint/lang/wgsl/ast/transform/decompose_strided_array_test.cc
+++ b/src/tint/lang/wgsl/ast/transform/decompose_strided_array_test.cc
@@ -18,6 +18,7 @@
 #include <utility>
 #include <vector>
 
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/wgsl/ast/transform/helper_test.h"
 #include "src/tint/lang/wgsl/ast/transform/simplify_pointers.h"
 #include "src/tint/lang/wgsl/ast/transform/unshadow.h"
@@ -25,7 +26,8 @@
 #include "src/tint/lang/wgsl/program/program_builder.h"
 #include "src/tint/lang/wgsl/resolver/resolve.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
+using namespace tint::core::fluent_types;     // NOLINT
 
 namespace tint::ast::transform {
 namespace {
diff --git a/src/tint/lang/wgsl/ast/transform/decompose_strided_matrix.cc b/src/tint/lang/wgsl/ast/transform/decompose_strided_matrix.cc
index cc251e2..79bdce9 100644
--- a/src/tint/lang/wgsl/ast/transform/decompose_strided_matrix.cc
+++ b/src/tint/lang/wgsl/ast/transform/decompose_strided_matrix.cc
@@ -18,6 +18,7 @@
 #include <utility>
 #include <vector>
 
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/wgsl/ast/transform/simplify_pointers.h"
 #include "src/tint/lang/wgsl/program/clone_context.h"
 #include "src/tint/lang/wgsl/program/program_builder.h"
@@ -27,6 +28,8 @@
 #include "src/tint/utils/containers/map.h"
 #include "src/tint/utils/math/hash.h"
 
+using namespace tint::core::fluent_types;  // NOLINT
+
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::DecomposeStridedMatrix);
 
 namespace tint::ast::transform {
diff --git a/src/tint/lang/wgsl/ast/transform/decompose_strided_matrix_test.cc b/src/tint/lang/wgsl/ast/transform/decompose_strided_matrix_test.cc
index 8415cc7..8fafc2c 100644
--- a/src/tint/lang/wgsl/ast/transform/decompose_strided_matrix_test.cc
+++ b/src/tint/lang/wgsl/ast/transform/decompose_strided_matrix_test.cc
@@ -30,7 +30,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using DecomposeStridedMatrixTest = TransformTest;
 
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 fa439fa..f3f16ff 100644
--- a/src/tint/lang/wgsl/ast/transform/demote_to_helper.cc
+++ b/src/tint/lang/wgsl/ast/transform/demote_to_helper.cc
@@ -32,7 +32,7 @@
 
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::DemoteToHelper);
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::ast::transform {
 
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 e222e31..30dbbb7 100644
--- a/src/tint/lang/wgsl/ast/transform/direct_variable_access.cc
+++ b/src/tint/lang/wgsl/ast/transform/direct_variable_access.cc
@@ -18,6 +18,7 @@
 #include <string>
 #include <utility>
 
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/core/type/abstract_int.h"
 #include "src/tint/lang/wgsl/ast/transform/hoist_to_decl_before.h"
 #include "src/tint/lang/wgsl/ast/traverse_expressions.h"
@@ -39,7 +40,8 @@
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::DirectVariableAccess);
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::DirectVariableAccess::Config);
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
+using namespace tint::core::fluent_types;     // NOLINT
 
 namespace {
 
diff --git a/src/tint/lang/wgsl/ast/transform/expand_compound_assignment.cc b/src/tint/lang/wgsl/ast/transform/expand_compound_assignment.cc
index 995f581..a568c1d 100644
--- a/src/tint/lang/wgsl/ast/transform/expand_compound_assignment.cc
+++ b/src/tint/lang/wgsl/ast/transform/expand_compound_assignment.cc
@@ -29,7 +29,7 @@
 
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::ExpandCompoundAssignment);
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::ast::transform {
 
diff --git a/src/tint/lang/wgsl/ast/transform/first_index_offset.cc b/src/tint/lang/wgsl/ast/transform/first_index_offset.cc
index 2f242f8..4deef70 100644
--- a/src/tint/lang/wgsl/ast/transform/first_index_offset.cc
+++ b/src/tint/lang/wgsl/ast/transform/first_index_offset.cc
@@ -19,6 +19,7 @@
 #include <utility>
 
 #include "src/tint/lang/core/builtin_value.h"
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/wgsl/program/clone_context.h"
 #include "src/tint/lang/wgsl/program/program_builder.h"
 #include "src/tint/lang/wgsl/resolver/resolve.h"
@@ -27,6 +28,8 @@
 #include "src/tint/lang/wgsl/sem/struct.h"
 #include "src/tint/lang/wgsl/sem/variable.h"
 
+using namespace tint::core::fluent_types;  // NOLINT
+
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::FirstIndexOffset);
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::FirstIndexOffset::BindingPoint);
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::FirstIndexOffset::Data);
diff --git a/src/tint/lang/wgsl/ast/transform/get_insertion_point_test.cc b/src/tint/lang/wgsl/ast/transform/get_insertion_point_test.cc
index 648c30a..3ae4f11 100644
--- a/src/tint/lang/wgsl/ast/transform/get_insertion_point_test.cc
+++ b/src/tint/lang/wgsl/ast/transform/get_insertion_point_test.cc
@@ -22,7 +22,7 @@
 #include "src/tint/lang/wgsl/resolver/resolve.h"
 #include "src/tint/utils/ice/ice.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::ast::transform {
 namespace {
diff --git a/src/tint/lang/wgsl/ast/transform/hoist_to_decl_before_test.cc b/src/tint/lang/wgsl/ast/transform/hoist_to_decl_before_test.cc
index 5043610..4efc34c 100644
--- a/src/tint/lang/wgsl/ast/transform/hoist_to_decl_before_test.cc
+++ b/src/tint/lang/wgsl/ast/transform/hoist_to_decl_before_test.cc
@@ -15,6 +15,7 @@
 #include <utility>
 
 #include "gtest/gtest-spi.h"
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/wgsl/ast/transform/helper_test.h"
 #include "src/tint/lang/wgsl/ast/transform/hoist_to_decl_before.h"
 #include "src/tint/lang/wgsl/program/clone_context.h"
@@ -24,7 +25,8 @@
 #include "src/tint/lang/wgsl/sem/index_accessor_expression.h"
 #include "src/tint/lang/wgsl/sem/statement.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
+using namespace tint::core::fluent_types;     // NOLINT
 
 namespace tint::ast::transform {
 namespace {
diff --git a/src/tint/lang/wgsl/ast/transform/merge_return.cc b/src/tint/lang/wgsl/ast/transform/merge_return.cc
index 9ec23c1..6f7905a 100644
--- a/src/tint/lang/wgsl/ast/transform/merge_return.cc
+++ b/src/tint/lang/wgsl/ast/transform/merge_return.cc
@@ -25,7 +25,7 @@
 
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::MergeReturn);
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::ast::transform {
 
diff --git a/src/tint/lang/wgsl/ast/transform/msl_subgroup_ballot.cc b/src/tint/lang/wgsl/ast/transform/msl_subgroup_ballot.cc
index 8859131..696db80 100644
--- a/src/tint/lang/wgsl/ast/transform/msl_subgroup_ballot.cc
+++ b/src/tint/lang/wgsl/ast/transform/msl_subgroup_ballot.cc
@@ -16,6 +16,7 @@
 
 #include <utility>
 
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/wgsl/program/clone_context.h"
 #include "src/tint/lang/wgsl/program/program_builder.h"
 #include "src/tint/lang/wgsl/resolver/resolve.h"
@@ -26,7 +27,8 @@
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::MslSubgroupBallot);
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::MslSubgroupBallot::SimdActiveThreadsMask);
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
+using namespace tint::core::fluent_types;     // NOLINT
 
 namespace tint::ast::transform {
 
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 089d72e..12eda74 100644
--- a/src/tint/lang/wgsl/ast/transform/multiplanar_external_texture.cc
+++ b/src/tint/lang/wgsl/ast/transform/multiplanar_external_texture.cc
@@ -33,7 +33,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 bool ShouldRun(const Program* program) {
     auto ext = program->Types().Find<core::type::ExternalTexture>();
diff --git a/src/tint/lang/wgsl/ast/transform/num_workgroups_from_uniform.cc b/src/tint/lang/wgsl/ast/transform/num_workgroups_from_uniform.cc
index 1b1d2c4..d337198 100644
--- a/src/tint/lang/wgsl/ast/transform/num_workgroups_from_uniform.cc
+++ b/src/tint/lang/wgsl/ast/transform/num_workgroups_from_uniform.cc
@@ -20,6 +20,7 @@
 #include <utility>
 
 #include "src/tint/lang/core/builtin_value.h"
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/wgsl/ast/transform/canonicalize_entry_point_io.h"
 #include "src/tint/lang/wgsl/program/clone_context.h"
 #include "src/tint/lang/wgsl/program/program_builder.h"
@@ -27,6 +28,8 @@
 #include "src/tint/lang/wgsl/sem/function.h"
 #include "src/tint/utils/math/hash.h"
 
+using namespace tint::core::fluent_types;  // NOLINT
+
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::NumWorkgroupsFromUniform);
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::NumWorkgroupsFromUniform::Config);
 
diff --git a/src/tint/lang/wgsl/ast/transform/packed_vec3.cc b/src/tint/lang/wgsl/ast/transform/packed_vec3.cc
index 3d38924..c6f4780 100644
--- a/src/tint/lang/wgsl/ast/transform/packed_vec3.cc
+++ b/src/tint/lang/wgsl/ast/transform/packed_vec3.cc
@@ -19,6 +19,7 @@
 #include <utility>
 
 #include "src/tint/lang/core/builtin.h"
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/core/type/array.h"
 #include "src/tint/lang/core/type/reference.h"
 #include "src/tint/lang/core/type/vector.h"
@@ -39,7 +40,8 @@
 
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::PackedVec3);
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
+using namespace tint::core::fluent_types;     // NOLINT
 
 namespace tint::ast::transform {
 
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 c0adb8f..8866041 100644
--- a/src/tint/lang/wgsl/ast/transform/packed_vec3_test.cc
+++ b/src/tint/lang/wgsl/ast/transform/packed_vec3_test.cc
@@ -18,6 +18,7 @@
 #include <utility>
 #include <vector>
 
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/core/type/array.h"
 #include "src/tint/lang/wgsl/ast/module.h"
 #include "src/tint/lang/wgsl/ast/transform/helper_test.h"
@@ -27,6 +28,8 @@
 #include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/utils/text/string.h"
 
+using namespace tint::core::fluent_types;  // NOLINT
+
 namespace tint::ast::transform {
 namespace {
 
diff --git a/src/tint/lang/wgsl/ast/transform/pad_structs.cc b/src/tint/lang/wgsl/ast/transform/pad_structs.cc
index 49c3eaf..7b47952 100644
--- a/src/tint/lang/wgsl/ast/transform/pad_structs.cc
+++ b/src/tint/lang/wgsl/ast/transform/pad_structs.cc
@@ -27,7 +27,7 @@
 #include "src/tint/lang/wgsl/sem/module.h"
 #include "src/tint/lang/wgsl/sem/value_constructor.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::PadStructs);
 
diff --git a/src/tint/lang/wgsl/ast/transform/preserve_padding.cc b/src/tint/lang/wgsl/ast/transform/preserve_padding.cc
index 5dba8d0..a97218e 100644
--- a/src/tint/lang/wgsl/ast/transform/preserve_padding.cc
+++ b/src/tint/lang/wgsl/ast/transform/preserve_padding.cc
@@ -31,7 +31,7 @@
 namespace tint::ast::transform {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 PreservePadding::PreservePadding() = default;
 
diff --git a/src/tint/lang/wgsl/ast/transform/robustness.cc b/src/tint/lang/wgsl/ast/transform/robustness.cc
index dcd0157..e3c7c6c 100644
--- a/src/tint/lang/wgsl/ast/transform/robustness.cc
+++ b/src/tint/lang/wgsl/ast/transform/robustness.cc
@@ -40,7 +40,7 @@
 namespace tint::ast::transform {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 /// PIMPL state for the transform
 struct Robustness::State {
diff --git a/src/tint/lang/wgsl/ast/transform/spirv_atomic.cc b/src/tint/lang/wgsl/ast/transform/spirv_atomic.cc
index fdbbba2..4074bac 100644
--- a/src/tint/lang/wgsl/ast/transform/spirv_atomic.cc
+++ b/src/tint/lang/wgsl/ast/transform/spirv_atomic.cc
@@ -20,6 +20,7 @@
 #include <utility>
 #include <vector>
 
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/core/type/reference.h"
 #include "src/tint/lang/wgsl/program/clone_context.h"
 #include "src/tint/lang/wgsl/program/program_builder.h"
@@ -33,13 +34,14 @@
 #include "src/tint/utils/containers/unique_vector.h"
 #include "src/tint/utils/rtti/switch.h"
 
+using namespace tint::core::number_suffixes;  // NOLINT
+using namespace tint::core::fluent_types;     // NOLINT
+
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::SpirvAtomic);
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::SpirvAtomic::Stub);
 
 namespace tint::ast::transform {
 
-using namespace tint::number_suffixes;  // NOLINT
-
 /// PIMPL state for the transform
 struct SpirvAtomic::State {
   private:
diff --git a/src/tint/lang/wgsl/ast/transform/spirv_atomic_test.cc b/src/tint/lang/wgsl/ast/transform/spirv_atomic_test.cc
index 14c1b61..626a93e 100644
--- a/src/tint/lang/wgsl/ast/transform/spirv_atomic_test.cc
+++ b/src/tint/lang/wgsl/ast/transform/spirv_atomic_test.cc
@@ -23,7 +23,7 @@
 #include "src/tint/lang/wgsl/reader/parser/parser.h"
 #include "src/tint/lang/wgsl/resolver/resolve.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::ast::transform {
 namespace {
diff --git a/src/tint/lang/wgsl/ast/transform/std140.cc b/src/tint/lang/wgsl/ast/transform/std140.cc
index 6b2b6a2..3d41108 100644
--- a/src/tint/lang/wgsl/ast/transform/std140.cc
+++ b/src/tint/lang/wgsl/ast/transform/std140.cc
@@ -19,6 +19,7 @@
 #include <utility>
 #include <variant>
 
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/wgsl/program/clone_context.h"
 #include "src/tint/lang/wgsl/program/program_builder.h"
 #include "src/tint/lang/wgsl/resolver/resolve.h"
@@ -34,7 +35,8 @@
 
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::Std140);
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
+using namespace tint::core::fluent_types;     // NOLINT
 
 namespace {
 
diff --git a/src/tint/lang/wgsl/ast/transform/substitute_override.cc b/src/tint/lang/wgsl/ast/transform/substitute_override.cc
index 07cd479..ffd3960 100644
--- a/src/tint/lang/wgsl/ast/transform/substitute_override.cc
+++ b/src/tint/lang/wgsl/ast/transform/substitute_override.cc
@@ -17,6 +17,7 @@
 #include <functional>
 #include <utility>
 
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/core/function.h"
 #include "src/tint/lang/wgsl/program/clone_context.h"
 #include "src/tint/lang/wgsl/program/program_builder.h"
@@ -26,6 +27,8 @@
 #include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/utils/rtti/switch.h"
 
+using namespace tint::core::fluent_types;  // NOLINT
+
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::SubstituteOverride);
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::SubstituteOverride::Config);
 
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 f0cc8c8..c47dabf 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
@@ -27,7 +27,7 @@
 
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::Texture1DTo2D);
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::ast::transform {
 
diff --git a/src/tint/lang/wgsl/ast/transform/transform.cc b/src/tint/lang/wgsl/ast/transform/transform.cc
index fc3006f..1e70a35 100644
--- a/src/tint/lang/wgsl/ast/transform/transform.cc
+++ b/src/tint/lang/wgsl/ast/transform/transform.cc
@@ -18,6 +18,7 @@
 #include <string>
 
 #include "src/tint/lang/core/builtin.h"
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/core/type/atomic.h"
 #include "src/tint/lang/core/type/depth_multisampled_texture.h"
 #include "src/tint/lang/core/type/reference.h"
@@ -29,6 +30,8 @@
 #include "src/tint/lang/wgsl/sem/for_loop_statement.h"
 #include "src/tint/lang/wgsl/sem/variable.h"
 
+using namespace tint::core::fluent_types;  // NOLINT
+
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::Transform);
 
 namespace tint::ast::transform {
diff --git a/src/tint/lang/wgsl/ast/transform/transform_test.cc b/src/tint/lang/wgsl/ast/transform/transform_test.cc
index 0c6de47..46c5f24 100644
--- a/src/tint/lang/wgsl/ast/transform/transform_test.cc
+++ b/src/tint/lang/wgsl/ast/transform/transform_test.cc
@@ -25,7 +25,7 @@
 namespace tint::ast::transform {
 namespace {
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 // Inherit from Transform so we have access to protected methods
 struct CreateASTTypeForTest : public testing::Test, public 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 83e30ed..bb00bc0 100644
--- a/src/tint/lang/wgsl/ast/transform/vectorize_matrix_conversions.cc
+++ b/src/tint/lang/wgsl/ast/transform/vectorize_matrix_conversions.cc
@@ -18,6 +18,7 @@
 #include <unordered_map>
 #include <utility>
 
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/core/type/abstract_numeric.h"
 #include "src/tint/lang/wgsl/program/clone_context.h"
 #include "src/tint/lang/wgsl/program/program_builder.h"
@@ -28,10 +29,11 @@
 #include "src/tint/utils/containers/map.h"
 #include "src/tint/utils/math/hash.h"
 
+using namespace tint::core::fluent_types;  // NOLINT
+
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::VectorizeMatrixConversions);
 
 namespace tint::ast::transform {
-
 namespace {
 
 bool ShouldRun(const Program* program) {
@@ -106,7 +108,7 @@
             tint::Vector<const Expression*, 4> columns;
             for (uint32_t c = 0; c < dst_type->columns(); c++) {
                 auto* src_matrix_expr = src_expression_builder();
-                auto* src_column_expr = b.IndexAccessor(src_matrix_expr, b.Expr(tint::AInt(c)));
+                auto* src_column_expr = b.IndexAccessor(src_matrix_expr, b.Expr(AInt(c)));
                 columns.Push(
                     b.Call(CreateASTTypeFor(ctx, dst_type->ColumnType()), src_column_expr));
             }
diff --git a/src/tint/lang/wgsl/ast/transform/vertex_pulling.cc b/src/tint/lang/wgsl/ast/transform/vertex_pulling.cc
index 09faca7..e65e54d 100644
--- a/src/tint/lang/wgsl/ast/transform/vertex_pulling.cc
+++ b/src/tint/lang/wgsl/ast/transform/vertex_pulling.cc
@@ -37,7 +37,7 @@
 namespace tint::ast::transform {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace {
 
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 a7d3c87..a14d218 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
@@ -21,6 +21,7 @@
 #include <vector>
 
 #include "src/tint/lang/core/builtin_value.h"
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/core/type/atomic.h"
 #include "src/tint/lang/wgsl/ast/workgroup_attribute.h"
 #include "src/tint/lang/wgsl/program/clone_context.h"
@@ -31,6 +32,8 @@
 #include "src/tint/utils/containers/map.h"
 #include "src/tint/utils/containers/unique_vector.h"
 
+using namespace tint::core::fluent_types;  // NOLINT
+
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::ZeroInitWorkgroupMemory);
 
 namespace tint::ast::transform {
diff --git a/src/tint/lang/wgsl/ast/traverse_expressions_test.cc b/src/tint/lang/wgsl/ast/traverse_expressions_test.cc
index cfc4628..c477ac0 100644
--- a/src/tint/lang/wgsl/ast/traverse_expressions_test.cc
+++ b/src/tint/lang/wgsl/ast/traverse_expressions_test.cc
@@ -14,11 +14,13 @@
 
 #include "src/tint/lang/wgsl/ast/traverse_expressions.h"
 #include "gmock/gmock.h"
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/wgsl/ast/helper_test.h"
 
 using ::testing::ElementsAre;
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
+using namespace tint::core::fluent_types;     // NOLINT
 
 namespace tint::ast {
 namespace {
diff --git a/src/tint/lang/wgsl/ast/variable_test.cc b/src/tint/lang/wgsl/ast/variable_test.cc
index 02af43d..018821c 100644
--- a/src/tint/lang/wgsl/ast/variable_test.cc
+++ b/src/tint/lang/wgsl/ast/variable_test.cc
@@ -18,7 +18,7 @@
 #include "src/tint/lang/wgsl/ast/helper_test.h"
 #include "src/tint/lang/wgsl/ast/id_attribute.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::ast {
 namespace {
diff --git a/src/tint/lang/wgsl/ast/while_statement_test.cc b/src/tint/lang/wgsl/ast/while_statement_test.cc
index ede5cef..43c2093 100644
--- a/src/tint/lang/wgsl/ast/while_statement_test.cc
+++ b/src/tint/lang/wgsl/ast/while_statement_test.cc
@@ -17,7 +17,7 @@
 #include "src/tint/lang/wgsl/ast/binary_expression.h"
 #include "src/tint/lang/wgsl/ast/helper_test.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::ast {
 namespace {
diff --git a/src/tint/lang/wgsl/ast/workgroup_attribute_test.cc b/src/tint/lang/wgsl/ast/workgroup_attribute_test.cc
index b93b3cc..8af533a 100644
--- a/src/tint/lang/wgsl/ast/workgroup_attribute_test.cc
+++ b/src/tint/lang/wgsl/ast/workgroup_attribute_test.cc
@@ -17,7 +17,7 @@
 #include "src/tint/lang/wgsl/ast/helper_test.h"
 #include "src/tint/lang/wgsl/ast/stage_attribute.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::ast {
 namespace {
diff --git a/src/tint/lang/wgsl/helpers/append_vector.cc b/src/tint/lang/wgsl/helpers/append_vector.cc
index a5c547d..0f0da17 100644
--- a/src/tint/lang/wgsl/helpers/append_vector.cc
+++ b/src/tint/lang/wgsl/helpers/append_vector.cc
@@ -24,7 +24,7 @@
 #include "src/tint/utils/containers/transform.h"
 #include "src/tint/utils/rtti/switch.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::writer {
 namespace {
diff --git a/src/tint/lang/wgsl/helpers/append_vector_test.cc b/src/tint/lang/wgsl/helpers/append_vector_test.cc
index a876d85..ad5364f 100644
--- a/src/tint/lang/wgsl/helpers/append_vector_test.cc
+++ b/src/tint/lang/wgsl/helpers/append_vector_test.cc
@@ -24,7 +24,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 class AppendVectorTest : public ::testing::Test, public ProgramBuilder {};
 
diff --git a/src/tint/lang/wgsl/helpers/flatten_bindings_test.cc b/src/tint/lang/wgsl/helpers/flatten_bindings_test.cc
index 7d4b38e..201e254 100644
--- a/src/tint/lang/wgsl/helpers/flatten_bindings_test.cc
+++ b/src/tint/lang/wgsl/helpers/flatten_bindings_test.cc
@@ -25,7 +25,7 @@
 namespace tint::writer {
 namespace {
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 class FlattenBindingsTest : public ::testing::Test {};
 
diff --git a/src/tint/lang/wgsl/inspector/inspector.cc b/src/tint/lang/wgsl/inspector/inspector.cc
index 8ef8162..e3a81b2 100644
--- a/src/tint/lang/wgsl/inspector/inspector.cc
+++ b/src/tint/lang/wgsl/inspector/inspector.cc
@@ -19,6 +19,7 @@
 
 #include "src/tint/lang/core/builtin_value.h"
 #include "src/tint/lang/core/extension.h"
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/core/interpolation_sampling.h"
 #include "src/tint/lang/core/interpolation_type.h"
 #include "src/tint/lang/core/type/array.h"
@@ -59,8 +60,9 @@
 #include "src/tint/utils/rtti/switch.h"
 #include "src/tint/utils/text/string.h"
 
-namespace tint::inspector {
+using namespace tint::core::fluent_types;  // NOLINT
 
+namespace tint::inspector {
 namespace {
 
 void AppendResourceBindings(std::vector<ResourceBinding>* dest,
diff --git a/src/tint/lang/wgsl/inspector/inspector_builder_test.cc b/src/tint/lang/wgsl/inspector/inspector_builder_test.cc
index 5119b40..b09f9fe 100644
--- a/src/tint/lang/wgsl/inspector/inspector_builder_test.cc
+++ b/src/tint/lang/wgsl/inspector/inspector_builder_test.cc
@@ -21,8 +21,11 @@
 #include <vector>
 
 #include "gtest/gtest.h"
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/wgsl/resolver/resolve.h"
 
+using namespace tint::core::fluent_types;  // NOLINT
+
 namespace tint::inspector {
 
 InspectorBuilder::InspectorBuilder() = default;
diff --git a/src/tint/lang/wgsl/inspector/inspector_test.cc b/src/tint/lang/wgsl/inspector/inspector_test.cc
index 7a5832e..bce7e23 100644
--- a/src/tint/lang/wgsl/inspector/inspector_test.cc
+++ b/src/tint/lang/wgsl/inspector/inspector_test.cc
@@ -14,6 +14,7 @@
 
 #include "gmock/gmock.h"
 
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/core/type/depth_texture.h"
 #include "src/tint/lang/core/type/external_texture.h"
 #include "src/tint/lang/core/type/multisampled_texture.h"
@@ -31,7 +32,8 @@
 #include "src/tint/lang/wgsl/program/program_builder.h"
 #include "src/tint/lang/wgsl/sem/variable.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
+using namespace tint::core::fluent_types;     // NOLINT
 
 namespace tint::inspector {
 namespace {
diff --git a/src/tint/lang/wgsl/ir_roundtrip_test.cc b/src/tint/lang/wgsl/ir_roundtrip_test.cc
index c162975..ef4207a 100644
--- a/src/tint/lang/wgsl/ir_roundtrip_test.cc
+++ b/src/tint/lang/wgsl/ir_roundtrip_test.cc
@@ -24,7 +24,7 @@
 namespace tint::wgsl {
 namespace {
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 class IRToProgramRoundtripTest : public helpers::IRProgramTest {
   public:
diff --git a/src/tint/lang/wgsl/program/program_builder.cc b/src/tint/lang/wgsl/program/program_builder.cc
index 29d441c..ff7b469 100644
--- a/src/tint/lang/wgsl/program/program_builder.cc
+++ b/src/tint/lang/wgsl/program/program_builder.cc
@@ -24,7 +24,7 @@
 #include "src/tint/utils/macros/compiler.h"
 #include "src/tint/utils/rtti/switch.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint {
 
diff --git a/src/tint/lang/wgsl/reader/parser/const_literal_test.cc b/src/tint/lang/wgsl/reader/parser/const_literal_test.cc
index bd8fe02..4be71b6 100644
--- a/src/tint/lang/wgsl/reader/parser/const_literal_test.cc
+++ b/src/tint/lang/wgsl/reader/parser/const_literal_test.cc
@@ -15,8 +15,11 @@
 #include <cstring>
 
 #include "gmock/gmock.h"
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/wgsl/reader/parser/helper_test.h"
 
+using namespace tint::core::fluent_types;  // NOLINT
+
 namespace tint::wgsl::reader {
 namespace {
 
diff --git a/src/tint/lang/wgsl/reader/parser/lexer.cc b/src/tint/lang/wgsl/reader/parser/lexer.cc
index 9a61f12..7f8197f 100644
--- a/src/tint/lang/wgsl/reader/parser/lexer.cc
+++ b/src/tint/lang/wgsl/reader/parser/lexer.cc
@@ -25,11 +25,14 @@
 #include <type_traits>
 #include <utility>
 
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/core/number.h"
 #include "src/tint/utils/ice/ice.h"
 #include "src/tint/utils/strconv/parse_num.h"
 #include "src/tint/utils/text/unicode.h"
 
+using namespace tint::core::fluent_types;  // NOLINT
+
 namespace tint::wgsl::reader {
 namespace {
 
@@ -450,7 +453,7 @@
     advance(end - start);
 
     if (has_f_suffix) {
-        auto f = CheckedConvert<f32>(AFloat(value));
+        auto f = core::CheckedConvert<f32>(AFloat(value));
         if (!overflow && f) {
             advance(1);
             end_source(source);
@@ -460,7 +463,7 @@
     }
 
     if (has_h_suffix) {
-        auto f = CheckedConvert<f16>(AFloat(value));
+        auto f = core::CheckedConvert<f16>(AFloat(value));
         if (!overflow && f) {
             advance(1);
             end_source(source);
@@ -894,7 +897,7 @@
     advance(static_cast<size_t>(res.ptr - start_ptr) + prefix_count);
 
     if (matches(pos(), 'u')) {
-        if (!overflow && CheckedConvert<u32>(AInt(value))) {
+        if (!overflow && core::CheckedConvert<u32>(AInt(value))) {
             advance(1);
             end_source(source);
             return {Token::Type::kIntLiteral_U, source, value};
@@ -903,7 +906,7 @@
     }
 
     if (matches(pos(), 'i')) {
-        if (!overflow && CheckedConvert<i32>(AInt(value))) {
+        if (!overflow && core::CheckedConvert<i32>(AInt(value))) {
             advance(1);
             end_source(source);
             return {Token::Type::kIntLiteral_I, source, value};
diff --git a/src/tint/lang/wgsl/reader/parser/lexer_test.cc b/src/tint/lang/wgsl/reader/parser/lexer_test.cc
index 8fc9fa5..5ddacc1 100644
--- a/src/tint/lang/wgsl/reader/parser/lexer_test.cc
+++ b/src/tint/lang/wgsl/reader/parser/lexer_test.cc
@@ -19,8 +19,11 @@
 #include <vector>
 
 #include "gtest/gtest.h"
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/core/number.h"
 
+using namespace tint::core::fluent_types;  // NOLINT
+
 namespace tint::wgsl::reader {
 namespace {
 
diff --git a/src/tint/lang/wgsl/reader/parser/type_decl_test.cc b/src/tint/lang/wgsl/reader/parser/type_decl_test.cc
index 5fef8f7..d43afca 100644
--- a/src/tint/lang/wgsl/reader/parser/type_decl_test.cc
+++ b/src/tint/lang/wgsl/reader/parser/type_decl_test.cc
@@ -20,7 +20,7 @@
 namespace tint::wgsl::reader {
 namespace {
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 TEST_F(WGSLParserTest, TypeDecl_Invalid) {
     auto p = parser("1234");
diff --git a/src/tint/lang/wgsl/reader/program_to_ir/accessor_test.cc b/src/tint/lang/wgsl/reader/program_to_ir/accessor_test.cc
index 4439f21..fd95788 100644
--- a/src/tint/lang/wgsl/reader/program_to_ir/accessor_test.cc
+++ b/src/tint/lang/wgsl/reader/program_to_ir/accessor_test.cc
@@ -25,7 +25,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using ProgramToIRAccessorTest = helpers::IRProgramTest;
 
diff --git a/src/tint/lang/wgsl/reader/program_to_ir/binary_test.cc b/src/tint/lang/wgsl/reader/program_to_ir/binary_test.cc
index e07317f..1ad4372 100644
--- a/src/tint/lang/wgsl/reader/program_to_ir/binary_test.cc
+++ b/src/tint/lang/wgsl/reader/program_to_ir/binary_test.cc
@@ -21,7 +21,7 @@
 namespace tint::wgsl::reader {
 namespace {
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using ProgramToIRBinaryTest = helpers::IRProgramTest;
 
diff --git a/src/tint/lang/wgsl/reader/program_to_ir/builtin_test.cc b/src/tint/lang/wgsl/reader/program_to_ir/builtin_test.cc
index ac72991..e3092df 100644
--- a/src/tint/lang/wgsl/reader/program_to_ir/builtin_test.cc
+++ b/src/tint/lang/wgsl/reader/program_to_ir/builtin_test.cc
@@ -21,7 +21,7 @@
 namespace tint::wgsl::reader {
 namespace {
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using ProgramToIRBuiltinTest = helpers::IRProgramTest;
 
diff --git a/src/tint/lang/wgsl/reader/program_to_ir/call_test.cc b/src/tint/lang/wgsl/reader/program_to_ir/call_test.cc
index b6cea7a..d9faa7f 100644
--- a/src/tint/lang/wgsl/reader/program_to_ir/call_test.cc
+++ b/src/tint/lang/wgsl/reader/program_to_ir/call_test.cc
@@ -22,7 +22,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using ProgramToIRCallTest = helpers::IRProgramTest;
 
diff --git a/src/tint/lang/wgsl/reader/program_to_ir/function_test.cc b/src/tint/lang/wgsl/reader/program_to_ir/function_test.cc
index e32f9a7..67ed7b9 100644
--- a/src/tint/lang/wgsl/reader/program_to_ir/function_test.cc
+++ b/src/tint/lang/wgsl/reader/program_to_ir/function_test.cc
@@ -22,7 +22,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using ProgramToIRFunctionTest = helpers::IRProgramTest;
 
diff --git a/src/tint/lang/wgsl/reader/program_to_ir/let_test.cc b/src/tint/lang/wgsl/reader/program_to_ir/let_test.cc
index fcda990..5bcd835 100644
--- a/src/tint/lang/wgsl/reader/program_to_ir/let_test.cc
+++ b/src/tint/lang/wgsl/reader/program_to_ir/let_test.cc
@@ -21,7 +21,7 @@
 namespace tint::wgsl::reader {
 namespace {
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using ProgramToIRLetTest = helpers::IRProgramTest;
 
diff --git a/src/tint/lang/wgsl/reader/program_to_ir/literal_test.cc b/src/tint/lang/wgsl/reader/program_to_ir/literal_test.cc
index af06157..23612b5 100644
--- a/src/tint/lang/wgsl/reader/program_to_ir/literal_test.cc
+++ b/src/tint/lang/wgsl/reader/program_to_ir/literal_test.cc
@@ -14,6 +14,7 @@
 
 #include "gmock/gmock.h"
 #include "src/tint/lang/core/constant/scalar.h"
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/core/ir/block.h"
 #include "src/tint/lang/core/ir/constant.h"
 #include "src/tint/lang/core/ir/var.h"
@@ -21,6 +22,8 @@
 #include "src/tint/lang/wgsl/ast/int_literal_expression.h"
 #include "src/tint/lang/wgsl/helpers/ir_program_test.h"
 
+using namespace tint::core::fluent_types;  // NOLINT
+
 namespace tint::wgsl::reader {
 namespace {
 
@@ -39,7 +42,7 @@
     return var->Initializer();
 }
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using ProgramToIRLiteralTest = helpers::IRProgramTest;
 
diff --git a/src/tint/lang/wgsl/reader/program_to_ir/materialize_test.cc b/src/tint/lang/wgsl/reader/program_to_ir/materialize_test.cc
index 236a50e..dcef1e4 100644
--- a/src/tint/lang/wgsl/reader/program_to_ir/materialize_test.cc
+++ b/src/tint/lang/wgsl/reader/program_to_ir/materialize_test.cc
@@ -21,7 +21,7 @@
 namespace tint::wgsl::reader {
 namespace {
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using ProgramToIRMaterializeTest = helpers::IRProgramTest;
 
diff --git a/src/tint/lang/wgsl/reader/program_to_ir/program_to_ir.cc b/src/tint/lang/wgsl/reader/program_to_ir/program_to_ir.cc
index f9dc57d..503ab91 100644
--- a/src/tint/lang/wgsl/reader/program_to_ir/program_to_ir.cc
+++ b/src/tint/lang/wgsl/reader/program_to_ir/program_to_ir.cc
@@ -20,6 +20,7 @@
 #include <variant>
 #include <vector>
 
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/core/ir/block_param.h"
 #include "src/tint/lang/core/ir/builder.h"
 #include "src/tint/lang/core/ir/exit_if.h"
@@ -104,10 +105,10 @@
 #include "src/tint/utils/result/result.h"
 #include "src/tint/utils/rtti/switch.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
+using namespace tint::core::fluent_types;     // NOLINT
 
 namespace tint::wgsl::reader {
-
 namespace {
 
 using ResultType = tint::Result<ir::Module, diag::List>;
diff --git a/src/tint/lang/wgsl/reader/program_to_ir/program_to_ir_test.cc b/src/tint/lang/wgsl/reader/program_to_ir/program_to_ir_test.cc
index 4f840a5..608f973 100644
--- a/src/tint/lang/wgsl/reader/program_to_ir/program_to_ir_test.cc
+++ b/src/tint/lang/wgsl/reader/program_to_ir/program_to_ir_test.cc
@@ -14,6 +14,7 @@
 
 #include "gmock/gmock.h"
 #include "src/tint/lang/core/constant/scalar.h"
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/core/ir/block.h"
 #include "src/tint/lang/core/ir/if.h"
 #include "src/tint/lang/core/ir/loop.h"
@@ -23,6 +24,8 @@
 #include "src/tint/lang/wgsl/ast/int_literal_expression.h"
 #include "src/tint/lang/wgsl/helpers/ir_program_test.h"
 
+using namespace tint::core::fluent_types;  // NOLINT
+
 namespace tint::wgsl::reader {
 namespace {
 
@@ -49,7 +52,7 @@
     return found;
 }
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using IR_FromProgramTest = helpers::IRProgramTest;
 
@@ -838,16 +841,14 @@
     ASSERT_EQ(3u, cases.Length());
 
     ASSERT_EQ(1u, cases[0].selectors.Length());
-    ASSERT_TRUE(cases[0].selectors[0].val->Value()->Is<core::constant::Scalar<tint::i32>>());
-    EXPECT_EQ(
-        0_i,
-        cases[0].selectors[0].val->Value()->As<core::constant::Scalar<tint::i32>>()->ValueOf());
+    ASSERT_TRUE(cases[0].selectors[0].val->Value()->Is<core::constant::Scalar<i32>>());
+    EXPECT_EQ(0_i,
+              cases[0].selectors[0].val->Value()->As<core::constant::Scalar<i32>>()->ValueOf());
 
     ASSERT_EQ(1u, cases[1].selectors.Length());
-    ASSERT_TRUE(cases[1].selectors[0].val->Value()->Is<core::constant::Scalar<tint::i32>>());
-    EXPECT_EQ(
-        1_i,
-        cases[1].selectors[0].val->Value()->As<core::constant::Scalar<tint::i32>>()->ValueOf());
+    ASSERT_TRUE(cases[1].selectors[0].val->Value()->Is<core::constant::Scalar<i32>>());
+    EXPECT_EQ(1_i,
+              cases[1].selectors[0].val->Value()->As<core::constant::Scalar<i32>>()->ValueOf());
 
     ASSERT_EQ(1u, cases[2].selectors.Length());
     EXPECT_TRUE(cases[2].selectors[0].IsDefault());
@@ -890,15 +891,13 @@
     auto cases = swtch->Cases();
     ASSERT_EQ(1u, cases.Length());
     ASSERT_EQ(3u, cases[0].selectors.Length());
-    ASSERT_TRUE(cases[0].selectors[0].val->Value()->Is<core::constant::Scalar<tint::i32>>());
-    EXPECT_EQ(
-        0_i,
-        cases[0].selectors[0].val->Value()->As<core::constant::Scalar<tint::i32>>()->ValueOf());
+    ASSERT_TRUE(cases[0].selectors[0].val->Value()->Is<core::constant::Scalar<i32>>());
+    EXPECT_EQ(0_i,
+              cases[0].selectors[0].val->Value()->As<core::constant::Scalar<i32>>()->ValueOf());
 
-    ASSERT_TRUE(cases[0].selectors[1].val->Value()->Is<core::constant::Scalar<tint::i32>>());
-    EXPECT_EQ(
-        1_i,
-        cases[0].selectors[1].val->Value()->As<core::constant::Scalar<tint::i32>>()->ValueOf());
+    ASSERT_TRUE(cases[0].selectors[1].val->Value()->Is<core::constant::Scalar<i32>>());
+    EXPECT_EQ(1_i,
+              cases[0].selectors[1].val->Value()->As<core::constant::Scalar<i32>>()->ValueOf());
 
     EXPECT_TRUE(cases[0].selectors[2].IsDefault());
 
@@ -964,10 +963,9 @@
     auto cases = swtch->Cases();
     ASSERT_EQ(2u, cases.Length());
     ASSERT_EQ(1u, cases[0].selectors.Length());
-    ASSERT_TRUE(cases[0].selectors[0].val->Value()->Is<core::constant::Scalar<tint::i32>>());
-    EXPECT_EQ(
-        0_i,
-        cases[0].selectors[0].val->Value()->As<core::constant::Scalar<tint::i32>>()->ValueOf());
+    ASSERT_TRUE(cases[0].selectors[0].val->Value()->Is<core::constant::Scalar<i32>>());
+    EXPECT_EQ(0_i,
+              cases[0].selectors[0].val->Value()->As<core::constant::Scalar<i32>>()->ValueOf());
 
     ASSERT_EQ(1u, cases[1].selectors.Length());
     EXPECT_TRUE(cases[1].selectors[0].IsDefault());
@@ -1009,10 +1007,9 @@
     auto cases = swtch->Cases();
     ASSERT_EQ(2u, cases.Length());
     ASSERT_EQ(1u, cases[0].selectors.Length());
-    ASSERT_TRUE(cases[0].selectors[0].val->Value()->Is<core::constant::Scalar<tint::i32>>());
-    EXPECT_EQ(
-        0_i,
-        cases[0].selectors[0].val->Value()->As<core::constant::Scalar<tint::i32>>()->ValueOf());
+    ASSERT_TRUE(cases[0].selectors[0].val->Value()->Is<core::constant::Scalar<i32>>());
+    EXPECT_EQ(0_i,
+              cases[0].selectors[0].val->Value()->As<core::constant::Scalar<i32>>()->ValueOf());
 
     ASSERT_EQ(1u, cases[1].selectors.Length());
     EXPECT_TRUE(cases[1].selectors[0].IsDefault());
diff --git a/src/tint/lang/wgsl/reader/program_to_ir/shadowing_test.cc b/src/tint/lang/wgsl/reader/program_to_ir/shadowing_test.cc
index 1825c5c..e93f082 100644
--- a/src/tint/lang/wgsl/reader/program_to_ir/shadowing_test.cc
+++ b/src/tint/lang/wgsl/reader/program_to_ir/shadowing_test.cc
@@ -25,7 +25,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using ProgramToIRShadowingTest = helpers::IRProgramTest;
 
diff --git a/src/tint/lang/wgsl/reader/program_to_ir/store_test.cc b/src/tint/lang/wgsl/reader/program_to_ir/store_test.cc
index 80137a1..6c6ba47 100644
--- a/src/tint/lang/wgsl/reader/program_to_ir/store_test.cc
+++ b/src/tint/lang/wgsl/reader/program_to_ir/store_test.cc
@@ -21,7 +21,7 @@
 namespace tint::wgsl::reader {
 namespace {
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using ProgramToIRStoreTest = helpers::IRProgramTest;
 
diff --git a/src/tint/lang/wgsl/reader/program_to_ir/unary_test.cc b/src/tint/lang/wgsl/reader/program_to_ir/unary_test.cc
index d97b9b4..ef9ada9 100644
--- a/src/tint/lang/wgsl/reader/program_to_ir/unary_test.cc
+++ b/src/tint/lang/wgsl/reader/program_to_ir/unary_test.cc
@@ -21,7 +21,7 @@
 namespace tint::wgsl::reader {
 namespace {
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using ProgramToIRUnaryTest = helpers::IRProgramTest;
 
diff --git a/src/tint/lang/wgsl/reader/program_to_ir/var_test.cc b/src/tint/lang/wgsl/reader/program_to_ir/var_test.cc
index 9dcd669..8506e02 100644
--- a/src/tint/lang/wgsl/reader/program_to_ir/var_test.cc
+++ b/src/tint/lang/wgsl/reader/program_to_ir/var_test.cc
@@ -22,7 +22,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using ProgramToIRVarTest = helpers::IRProgramTest;
 
diff --git a/src/tint/lang/wgsl/resolver/address_space_layout_validation_test.cc b/src/tint/lang/wgsl/resolver/address_space_layout_validation_test.cc
index 656bb3f..5b4ab24 100644
--- a/src/tint/lang/wgsl/resolver/address_space_layout_validation_test.cc
+++ b/src/tint/lang/wgsl/resolver/address_space_layout_validation_test.cc
@@ -21,7 +21,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using ResolverAddressSpaceLayoutValidationTest = ResolverTest;
 
diff --git a/src/tint/lang/wgsl/resolver/address_space_validation_test.cc b/src/tint/lang/wgsl/resolver/address_space_validation_test.cc
index aaed35a..a734285 100644
--- a/src/tint/lang/wgsl/resolver/address_space_validation_test.cc
+++ b/src/tint/lang/wgsl/resolver/address_space_validation_test.cc
@@ -22,7 +22,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using ::testing::HasSubstr;
 
diff --git a/src/tint/lang/wgsl/resolver/alias_analysis_test.cc b/src/tint/lang/wgsl/resolver/alias_analysis_test.cc
index fe9b36e..0c0c4253 100644
--- a/src/tint/lang/wgsl/resolver/alias_analysis_test.cc
+++ b/src/tint/lang/wgsl/resolver/alias_analysis_test.cc
@@ -22,7 +22,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 struct ResolverAliasAnalysisTest : public resolver::TestHelper, public testing::Test {};
 
diff --git a/src/tint/lang/wgsl/resolver/array_accessor_test.cc b/src/tint/lang/wgsl/resolver/array_accessor_test.cc
index 470ea97..daa1d08 100644
--- a/src/tint/lang/wgsl/resolver/array_accessor_test.cc
+++ b/src/tint/lang/wgsl/resolver/array_accessor_test.cc
@@ -15,16 +15,17 @@
 #include "src/tint/lang/wgsl/resolver/resolver.h"
 
 #include "gmock/gmock.h"
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/core/type/reference.h"
 #include "src/tint/lang/wgsl/resolver/resolver_helper_test.h"
 #include "src/tint/lang/wgsl/sem/index_accessor_expression.h"
 
+using namespace tint::core::fluent_types;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
+
 namespace tint::resolver {
 namespace {
 
-using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
-
 using ResolverIndexAccessorTest = ResolverTest;
 
 TEST_F(ResolverIndexAccessorTest, Matrix_Dynamic_F32) {
diff --git a/src/tint/lang/wgsl/resolver/assignment_validation_test.cc b/src/tint/lang/wgsl/resolver/assignment_validation_test.cc
index 7539446..e025922 100644
--- a/src/tint/lang/wgsl/resolver/assignment_validation_test.cc
+++ b/src/tint/lang/wgsl/resolver/assignment_validation_test.cc
@@ -23,7 +23,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using ResolverAssignmentValidationTest = ResolverTest;
 
diff --git a/src/tint/lang/wgsl/resolver/atomics_test.cc b/src/tint/lang/wgsl/resolver/atomics_test.cc
index e19fe74..d551408 100644
--- a/src/tint/lang/wgsl/resolver/atomics_test.cc
+++ b/src/tint/lang/wgsl/resolver/atomics_test.cc
@@ -22,7 +22,7 @@
 namespace tint::resolver {
 namespace {
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 struct ResolverAtomicTest : public resolver::TestHelper, public testing::Test {};
 
diff --git a/src/tint/lang/wgsl/resolver/atomics_validation_test.cc b/src/tint/lang/wgsl/resolver/atomics_validation_test.cc
index eafb649..a548831 100644
--- a/src/tint/lang/wgsl/resolver/atomics_validation_test.cc
+++ b/src/tint/lang/wgsl/resolver/atomics_validation_test.cc
@@ -12,6 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/core/type/atomic.h"
 #include "src/tint/lang/core/type/reference.h"
 #include "src/tint/lang/wgsl/resolver/resolver.h"
@@ -19,7 +20,8 @@
 
 #include "gmock/gmock.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
+using namespace tint::core::fluent_types;     // NOLINT
 
 namespace tint::resolver {
 namespace {
diff --git a/src/tint/lang/wgsl/resolver/attribute_validation_test.cc b/src/tint/lang/wgsl/resolver/attribute_validation_test.cc
index 3b7a35a..add989e 100644
--- a/src/tint/lang/wgsl/resolver/attribute_validation_test.cc
+++ b/src/tint/lang/wgsl/resolver/attribute_validation_test.cc
@@ -25,7 +25,7 @@
 namespace tint::resolver {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 // Helpers and typedefs
 template <typename T>
diff --git a/src/tint/lang/wgsl/resolver/bitcast_validation_test.cc b/src/tint/lang/wgsl/resolver/bitcast_validation_test.cc
index 756b373..95ccb25 100644
--- a/src/tint/lang/wgsl/resolver/bitcast_validation_test.cc
+++ b/src/tint/lang/wgsl/resolver/bitcast_validation_test.cc
@@ -24,7 +24,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 struct Type {
     template <typename T, std::enable_if_t<IsVector<T>, bool> = true>
diff --git a/src/tint/lang/wgsl/resolver/builtin_enum_test.cc b/src/tint/lang/wgsl/resolver/builtin_enum_test.cc
index ad1e056..26749b2 100644
--- a/src/tint/lang/wgsl/resolver/builtin_enum_test.cc
+++ b/src/tint/lang/wgsl/resolver/builtin_enum_test.cc
@@ -15,6 +15,7 @@
 #include "src/tint/lang/core/access.h"
 #include "src/tint/lang/core/address_space.h"
 #include "src/tint/lang/core/builtin_value.h"
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/core/interpolation_sampling.h"
 #include "src/tint/lang/core/interpolation_type.h"
 #include "src/tint/lang/core/texel_format.h"
@@ -23,7 +24,8 @@
 
 #include "gmock/gmock.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
+using namespace tint::core::fluent_types;     // NOLINT
 
 namespace tint::resolver {
 namespace {
diff --git a/src/tint/lang/wgsl/resolver/builtin_structs_test.cc b/src/tint/lang/wgsl/resolver/builtin_structs_test.cc
index fe96142..0696559 100644
--- a/src/tint/lang/wgsl/resolver/builtin_structs_test.cc
+++ b/src/tint/lang/wgsl/resolver/builtin_structs_test.cc
@@ -17,7 +17,7 @@
 
 #include "gmock/gmock.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::resolver {
 namespace {
diff --git a/src/tint/lang/wgsl/resolver/builtin_test.cc b/src/tint/lang/wgsl/resolver/builtin_test.cc
index 535cb5f..8a536b2 100644
--- a/src/tint/lang/wgsl/resolver/builtin_test.cc
+++ b/src/tint/lang/wgsl/resolver/builtin_test.cc
@@ -47,7 +47,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using ExpressionList = Vector<const ast::Expression*, 8>;
 
diff --git a/src/tint/lang/wgsl/resolver/builtin_validation_test.cc b/src/tint/lang/wgsl/resolver/builtin_validation_test.cc
index 038be27..b3f945c 100644
--- a/src/tint/lang/wgsl/resolver/builtin_validation_test.cc
+++ b/src/tint/lang/wgsl/resolver/builtin_validation_test.cc
@@ -23,7 +23,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using ResolverBuiltinValidationTest = ResolverTest;
 
diff --git a/src/tint/lang/wgsl/resolver/builtins_validation_test.cc b/src/tint/lang/wgsl/resolver/builtins_validation_test.cc
index 204a678..ba3fc06 100644
--- a/src/tint/lang/wgsl/resolver/builtins_validation_test.cc
+++ b/src/tint/lang/wgsl/resolver/builtins_validation_test.cc
@@ -21,7 +21,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 template <typename T>
 using DataType = builder::DataType<T>;
diff --git a/src/tint/lang/wgsl/resolver/call_test.cc b/src/tint/lang/wgsl/resolver/call_test.cc
index c18deb3..8eca97c 100644
--- a/src/tint/lang/wgsl/resolver/call_test.cc
+++ b/src/tint/lang/wgsl/resolver/call_test.cc
@@ -22,7 +22,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 template <typename T, int ID = 0>
 using alias = builder::alias<T, ID>;
diff --git a/src/tint/lang/wgsl/resolver/call_validation_test.cc b/src/tint/lang/wgsl/resolver/call_validation_test.cc
index 46cc615..c68bb61 100644
--- a/src/tint/lang/wgsl/resolver/call_validation_test.cc
+++ b/src/tint/lang/wgsl/resolver/call_validation_test.cc
@@ -22,7 +22,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using ResolverCallValidationTest = ResolverTest;
 
diff --git a/src/tint/lang/wgsl/resolver/compound_assignment_validation_test.cc b/src/tint/lang/wgsl/resolver/compound_assignment_validation_test.cc
index 1f44f6b..51728f9 100644
--- a/src/tint/lang/wgsl/resolver/compound_assignment_validation_test.cc
+++ b/src/tint/lang/wgsl/resolver/compound_assignment_validation_test.cc
@@ -23,7 +23,7 @@
 
 using ::testing::HasSubstr;
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using ResolverCompoundAssignmentValidationTest = ResolverTest;
 
diff --git a/src/tint/lang/wgsl/resolver/compound_statement_test.cc b/src/tint/lang/wgsl/resolver/compound_statement_test.cc
index 2c27a50..59ce6b8 100644
--- a/src/tint/lang/wgsl/resolver/compound_statement_test.cc
+++ b/src/tint/lang/wgsl/resolver/compound_statement_test.cc
@@ -23,7 +23,7 @@
 #include "src/tint/lang/wgsl/sem/switch_statement.h"
 #include "src/tint/lang/wgsl/sem/while_statement.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::resolver {
 namespace {
diff --git a/src/tint/lang/wgsl/resolver/const_assert_test.cc b/src/tint/lang/wgsl/resolver/const_assert_test.cc
index 50d3e21..7013afe 100644
--- a/src/tint/lang/wgsl/resolver/const_assert_test.cc
+++ b/src/tint/lang/wgsl/resolver/const_assert_test.cc
@@ -17,7 +17,7 @@
 #include "gmock/gmock.h"
 #include "src/tint/lang/wgsl/resolver/resolver_helper_test.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::resolver {
 namespace {
diff --git a/src/tint/lang/wgsl/resolver/control_block_validation_test.cc b/src/tint/lang/wgsl/resolver/control_block_validation_test.cc
index 638a079c..3e77ffa 100644
--- a/src/tint/lang/wgsl/resolver/control_block_validation_test.cc
+++ b/src/tint/lang/wgsl/resolver/control_block_validation_test.cc
@@ -12,12 +12,14 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/wgsl/ast/break_statement.h"
 #include "src/tint/lang/wgsl/ast/continue_statement.h"
 #include "src/tint/lang/wgsl/ast/switch_statement.h"
 #include "src/tint/lang/wgsl/resolver/resolver_helper_test.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
+using namespace tint::core::fluent_types;     // NOLINT
 
 namespace tint::resolver {
 namespace {
diff --git a/src/tint/lang/wgsl/resolver/dependency_graph_test.cc b/src/tint/lang/wgsl/resolver/dependency_graph_test.cc
index 1ceb195..0ada187 100644
--- a/src/tint/lang/wgsl/resolver/dependency_graph_test.cc
+++ b/src/tint/lang/wgsl/resolver/dependency_graph_test.cc
@@ -28,7 +28,7 @@
 
 using ::testing::ElementsAre;
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 template <typename T>
 class ResolverDependencyGraphTestWithParam : public ResolverTestWithParam<T> {
diff --git a/src/tint/lang/wgsl/resolver/diagnostic_control_test.cc b/src/tint/lang/wgsl/resolver/diagnostic_control_test.cc
index 5078172..43bea18 100644
--- a/src/tint/lang/wgsl/resolver/diagnostic_control_test.cc
+++ b/src/tint/lang/wgsl/resolver/diagnostic_control_test.cc
@@ -16,7 +16,7 @@
 
 #include "src/tint/lang/wgsl/resolver/resolver_helper_test.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::resolver {
 namespace {
diff --git a/src/tint/lang/wgsl/resolver/dual_source_blending_extension_test.cc b/src/tint/lang/wgsl/resolver/dual_source_blending_extension_test.cc
index 54d9649..bd6bb4b 100644
--- a/src/tint/lang/wgsl/resolver/dual_source_blending_extension_test.cc
+++ b/src/tint/lang/wgsl/resolver/dual_source_blending_extension_test.cc
@@ -12,12 +12,14 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/wgsl/resolver/resolver.h"
 #include "src/tint/lang/wgsl/resolver/resolver_helper_test.h"
 
 #include "gmock/gmock.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
+using namespace tint::core::fluent_types;     // NOLINT
 
 namespace tint::resolver {
 namespace {
diff --git a/src/tint/lang/wgsl/resolver/entry_point_validation_test.cc b/src/tint/lang/wgsl/resolver/entry_point_validation_test.cc
index e2081d4..49b9996 100644
--- a/src/tint/lang/wgsl/resolver/entry_point_validation_test.cc
+++ b/src/tint/lang/wgsl/resolver/entry_point_validation_test.cc
@@ -26,7 +26,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 // Helpers and typedefs
 template <typename T>
diff --git a/src/tint/lang/wgsl/resolver/evaluation_stage_test.cc b/src/tint/lang/wgsl/resolver/evaluation_stage_test.cc
index 527879a..4c9b236 100644
--- a/src/tint/lang/wgsl/resolver/evaluation_stage_test.cc
+++ b/src/tint/lang/wgsl/resolver/evaluation_stage_test.cc
@@ -21,7 +21,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using ResolverEvaluationStageTest = ResolverTest;
 
diff --git a/src/tint/lang/wgsl/resolver/expression_kind_test.cc b/src/tint/lang/wgsl/resolver/expression_kind_test.cc
index 00511d9..a1e98ba 100644
--- a/src/tint/lang/wgsl/resolver/expression_kind_test.cc
+++ b/src/tint/lang/wgsl/resolver/expression_kind_test.cc
@@ -15,9 +15,11 @@
 #include "src/tint/lang/wgsl/resolver/resolver.h"
 
 #include "gmock/gmock.h"
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/wgsl/resolver/resolver_helper_test.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
+using namespace tint::core::fluent_types;     // NOLINT
 
 namespace tint::resolver {
 namespace {
diff --git a/src/tint/lang/wgsl/resolver/f16_extension_test.cc b/src/tint/lang/wgsl/resolver/f16_extension_test.cc
index 4282b6a..5cb95f7 100644
--- a/src/tint/lang/wgsl/resolver/f16_extension_test.cc
+++ b/src/tint/lang/wgsl/resolver/f16_extension_test.cc
@@ -21,7 +21,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using ResolverF16ExtensionTest = ResolverTest;
 
diff --git a/src/tint/lang/wgsl/resolver/function_validation_test.cc b/src/tint/lang/wgsl/resolver/function_validation_test.cc
index 0e25434..c921a3d 100644
--- a/src/tint/lang/wgsl/resolver/function_validation_test.cc
+++ b/src/tint/lang/wgsl/resolver/function_validation_test.cc
@@ -26,7 +26,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 class ResolverFunctionValidationTest : public TestHelper, public testing::Test {};
 
diff --git a/src/tint/lang/wgsl/resolver/host_shareable_validation_test.cc b/src/tint/lang/wgsl/resolver/host_shareable_validation_test.cc
index 0657dac..473d84a 100644
--- a/src/tint/lang/wgsl/resolver/host_shareable_validation_test.cc
+++ b/src/tint/lang/wgsl/resolver/host_shareable_validation_test.cc
@@ -15,14 +15,16 @@
 #include "src/tint/lang/wgsl/resolver/resolver.h"
 
 #include "gmock/gmock.h"
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/wgsl/resolver/resolver_helper_test.h"
 #include "src/tint/lang/wgsl/sem/struct.h"
 
+using namespace tint::core::number_suffixes;  // NOLINT
+using namespace tint::core::fluent_types;     // NOLINT
+
 namespace tint::resolver {
 namespace {
 
-using namespace tint::number_suffixes;  // NOLINT
-
 using ResolverHostShareableValidationTest = ResolverTest;
 
 TEST_F(ResolverHostShareableValidationTest, BoolMember) {
diff --git a/src/tint/lang/wgsl/resolver/increment_decrement_validation_test.cc b/src/tint/lang/wgsl/resolver/increment_decrement_validation_test.cc
index 44631f8..9e7a4f1 100644
--- a/src/tint/lang/wgsl/resolver/increment_decrement_validation_test.cc
+++ b/src/tint/lang/wgsl/resolver/increment_decrement_validation_test.cc
@@ -21,7 +21,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using ResolverIncrementDecrementValidationTest = ResolverTest;
 
diff --git a/src/tint/lang/wgsl/resolver/inferred_type_test.cc b/src/tint/lang/wgsl/resolver/inferred_type_test.cc
index 750fc39..f821693 100644
--- a/src/tint/lang/wgsl/resolver/inferred_type_test.cc
+++ b/src/tint/lang/wgsl/resolver/inferred_type_test.cc
@@ -21,7 +21,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 // Helpers and typedefs
 template <typename T>
diff --git a/src/tint/lang/wgsl/resolver/load_test.cc b/src/tint/lang/wgsl/resolver/load_test.cc
index 9c5f5ab..e9ee5cc 100644
--- a/src/tint/lang/wgsl/resolver/load_test.cc
+++ b/src/tint/lang/wgsl/resolver/load_test.cc
@@ -24,7 +24,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using ResolverLoadTest = ResolverTest;
 
diff --git a/src/tint/lang/wgsl/resolver/materialize_test.cc b/src/tint/lang/wgsl/resolver/materialize_test.cc
index c56245b..254f7e3 100644
--- a/src/tint/lang/wgsl/resolver/materialize_test.cc
+++ b/src/tint/lang/wgsl/resolver/materialize_test.cc
@@ -25,7 +25,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using AFloatV = vec3<AFloat>;
 using AFloatM = mat3x2<AFloat>;
diff --git a/src/tint/lang/wgsl/resolver/override_test.cc b/src/tint/lang/wgsl/resolver/override_test.cc
index 8ec2351..1e0a533 100644
--- a/src/tint/lang/wgsl/resolver/override_test.cc
+++ b/src/tint/lang/wgsl/resolver/override_test.cc
@@ -16,7 +16,7 @@
 
 #include "src/tint/lang/wgsl/resolver/resolver_helper_test.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::resolver {
 namespace {
diff --git a/src/tint/lang/wgsl/resolver/ptr_ref_test.cc b/src/tint/lang/wgsl/resolver/ptr_ref_test.cc
index e22f9b9..a6202b2 100644
--- a/src/tint/lang/wgsl/resolver/ptr_ref_test.cc
+++ b/src/tint/lang/wgsl/resolver/ptr_ref_test.cc
@@ -22,7 +22,7 @@
 namespace tint::resolver {
 namespace {
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 struct ResolverPtrRefTest : public resolver::TestHelper, public testing::Test {};
 
diff --git a/src/tint/lang/wgsl/resolver/ptr_ref_validation_test.cc b/src/tint/lang/wgsl/resolver/ptr_ref_validation_test.cc
index d4ddb72..cdec2f8 100644
--- a/src/tint/lang/wgsl/resolver/ptr_ref_validation_test.cc
+++ b/src/tint/lang/wgsl/resolver/ptr_ref_validation_test.cc
@@ -23,7 +23,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 struct ResolverPtrRefValidationTest : public resolver::TestHelper, public testing::Test {};
 
diff --git a/src/tint/lang/wgsl/resolver/resolver.cc b/src/tint/lang/wgsl/resolver/resolver.cc
index 9d929f2..de69282 100644
--- a/src/tint/lang/wgsl/resolver/resolver.cc
+++ b/src/tint/lang/wgsl/resolver/resolver.cc
@@ -22,6 +22,7 @@
 
 #include "src/tint/lang/core/builtin.h"
 #include "src/tint/lang/core/constant/scalar.h"
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/core/intrinsic/data/data.h"
 #include "src/tint/lang/core/type/abstract_float.h"
 #include "src/tint/lang/core/type/abstract_int.h"
@@ -91,6 +92,8 @@
 #include "src/tint/utils/text/string.h"
 #include "src/tint/utils/text/string_stream.h"
 
+using namespace tint::core::fluent_types;  // NOLINT
+
 TINT_INSTANTIATE_TYPEINFO(tint::sem::BuiltinEnumExpression<tint::core::Access>);
 TINT_INSTANTIATE_TYPEINFO(tint::sem::BuiltinEnumExpression<tint::core::AddressSpace>);
 TINT_INSTANTIATE_TYPEINFO(tint::sem::BuiltinEnumExpression<tint::core::BuiltinValue>);
diff --git a/src/tint/lang/wgsl/resolver/resolver_behavior_test.cc b/src/tint/lang/wgsl/resolver/resolver_behavior_test.cc
index 99ca97a..8347734 100644
--- a/src/tint/lang/wgsl/resolver/resolver_behavior_test.cc
+++ b/src/tint/lang/wgsl/resolver/resolver_behavior_test.cc
@@ -26,7 +26,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 class ResolverBehaviorTest : public ResolverTest {
   protected:
diff --git a/src/tint/lang/wgsl/resolver/resolver_helper_test.h b/src/tint/lang/wgsl/resolver/resolver_helper_test.h
index 9ed8395..a8048d7 100644
--- a/src/tint/lang/wgsl/resolver/resolver_helper_test.h
+++ b/src/tint/lang/wgsl/resolver/resolver_helper_test.h
@@ -142,7 +142,8 @@
 using alias3 = alias<TO, 3>;
 
 /// A scalar value
-using Scalar = std::variant<i32, u32, f32, f16, AInt, AFloat, bool>;
+using Scalar =
+    std::variant<core::i32, core::u32, core::f32, core::f16, core::AInt, core::AFloat, bool>;
 
 /// Returns current variant value in `s` cast to type `T`
 template <typename T>
@@ -212,9 +213,9 @@
 
 /// Helper for building i32 types and expressions
 template <>
-struct DataType<i32> {
+struct DataType<core::i32> {
     /// The element type
-    using ElementType = i32;
+    using ElementType = core::i32;
 
     /// false as i32 is not a composite type
     static constexpr bool is_composite = false;
@@ -231,7 +232,7 @@
     /// @param args args of size 1 with the i32 value to init with
     /// @return a new AST i32 literal value expression
     static inline const ast::Expression* Expr(ProgramBuilder& b, VectorRef<Scalar> args) {
-        return b.Expr(std::get<i32>(args[0]));
+        return b.Expr(std::get<core::i32>(args[0]));
     }
     /// @param b the ProgramBuilder
     /// @param v arg of type double that will be cast to i32.
@@ -245,9 +246,9 @@
 
 /// Helper for building u32 types and expressions
 template <>
-struct DataType<u32> {
+struct DataType<core::u32> {
     /// The element type
-    using ElementType = u32;
+    using ElementType = core::u32;
 
     /// false as u32 is not a composite type
     static constexpr bool is_composite = false;
@@ -264,7 +265,7 @@
     /// @param args args of size 1 with the u32 value to init with
     /// @return a new AST u32 literal value expression
     static inline const ast::Expression* Expr(ProgramBuilder& b, VectorRef<Scalar> args) {
-        return b.Expr(std::get<u32>(args[0]));
+        return b.Expr(std::get<core::u32>(args[0]));
     }
     /// @param b the ProgramBuilder
     /// @param v arg of type double that will be cast to u32.
@@ -278,9 +279,9 @@
 
 /// Helper for building f32 types and expressions
 template <>
-struct DataType<f32> {
+struct DataType<core::f32> {
     /// The element type
-    using ElementType = f32;
+    using ElementType = core::f32;
 
     /// false as f32 is not a composite type
     static constexpr bool is_composite = false;
@@ -297,13 +298,13 @@
     /// @param args args of size 1 with the f32 value to init with
     /// @return a new AST f32 literal value expression
     static inline const ast::Expression* Expr(ProgramBuilder& b, VectorRef<Scalar> args) {
-        return b.Expr(std::get<f32>(args[0]));
+        return b.Expr(std::get<core::f32>(args[0]));
     }
     /// @param b the ProgramBuilder
     /// @param v arg of type double that will be cast to f32.
     /// @return a new AST f32 literal value expression
     static inline const ast::Expression* ExprFromDouble(ProgramBuilder& b, double v) {
-        return Expr(b, Vector<Scalar, 1>{static_cast<f32>(v)});
+        return Expr(b, Vector<Scalar, 1>{static_cast<core::f32>(v)});
     }
     /// @returns the WGSL name for the type
     static inline std::string Name() { return "f32"; }
@@ -311,9 +312,9 @@
 
 /// Helper for building f16 types and expressions
 template <>
-struct DataType<f16> {
+struct DataType<core::f16> {
     /// The element type
-    using ElementType = f16;
+    using ElementType = core::f16;
 
     /// false as f16 is not a composite type
     static constexpr bool is_composite = false;
@@ -330,7 +331,7 @@
     /// @param args args of size 1 with the f16 value to init with
     /// @return a new AST f16 literal value expression
     static inline const ast::Expression* Expr(ProgramBuilder& b, VectorRef<Scalar> args) {
-        return b.Expr(std::get<f16>(args[0]));
+        return b.Expr(std::get<core::f16>(args[0]));
     }
     /// @param b the ProgramBuilder
     /// @param v arg of type double that will be cast to f16.
@@ -344,9 +345,9 @@
 
 /// Helper for building abstract float types and expressions
 template <>
-struct DataType<AFloat> {
+struct DataType<core::AFloat> {
     /// The element type
-    using ElementType = AFloat;
+    using ElementType = core::AFloat;
 
     /// false as AFloat is not a composite type
     static constexpr bool is_composite = false;
@@ -362,7 +363,7 @@
     /// @param args args of size 1 with the abstract-float value to init with
     /// @return a new AST abstract-float literal value expression
     static inline const ast::Expression* Expr(ProgramBuilder& b, VectorRef<Scalar> args) {
-        return b.Expr(std::get<AFloat>(args[0]));
+        return b.Expr(std::get<core::AFloat>(args[0]));
     }
     /// @param b the ProgramBuilder
     /// @param v arg of type double that will be cast to AFloat.
@@ -376,9 +377,9 @@
 
 /// Helper for building abstract integer types and expressions
 template <>
-struct DataType<AInt> {
+struct DataType<core::AInt> {
     /// The element type
-    using ElementType = AInt;
+    using ElementType = core::AInt;
 
     /// false as AFloat is not a composite type
     static constexpr bool is_composite = false;
@@ -394,7 +395,7 @@
     /// @param args args of size 1 with the abstract-int value to init with
     /// @return a new AST abstract-int literal value expression
     static inline const ast::Expression* Expr(ProgramBuilder& b, VectorRef<Scalar> args) {
-        return b.Expr(std::get<AInt>(args[0]));
+        return b.Expr(std::get<core::AInt>(args[0]));
     }
     /// @param b the ProgramBuilder
     /// @param v arg of type double that will be cast to AInt.
@@ -634,7 +635,7 @@
     /// @return a new AST array type
     static inline ast::Type AST(ProgramBuilder& b) {
         if (auto ast = DataType<T>::AST(b)) {
-            return b.ty.array(ast, u32(N));
+            return b.ty.array(ast, core::u32(N));
         }
         return b.ty.array<core::fluent_types::Infer>();
     }
@@ -732,9 +733,9 @@
         return Value{
             std::move(args),          //
             CreatePtrsFor<T>(),       //
-            tint::IsAbstract<EL_TY>,  //
-            tint::IsIntegral<EL_TY>,  //
-            tint::FriendlyName<EL_TY>(),
+            core::IsAbstract<EL_TY>,  //
+            core::IsIntegral<EL_TY>,  //
+            core::FriendlyName<EL_TY>(),
         };
     }
 
diff --git a/src/tint/lang/wgsl/resolver/resolver_test.cc b/src/tint/lang/wgsl/resolver/resolver_test.cc
index 10c36ba..01a193a 100644
--- a/src/tint/lang/wgsl/resolver/resolver_test.cc
+++ b/src/tint/lang/wgsl/resolver/resolver_test.cc
@@ -55,7 +55,7 @@
 using ::testing::HasSubstr;
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 // Helpers and typedefs
 template <typename T>
diff --git a/src/tint/lang/wgsl/resolver/root_identifier_test.cc b/src/tint/lang/wgsl/resolver/root_identifier_test.cc
index cae41a8..8e70d95 100644
--- a/src/tint/lang/wgsl/resolver/root_identifier_test.cc
+++ b/src/tint/lang/wgsl/resolver/root_identifier_test.cc
@@ -23,7 +23,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 class ResolverRootIdentifierTest : public ResolverTest {};
 
diff --git a/src/tint/lang/wgsl/resolver/side_effects_test.cc b/src/tint/lang/wgsl/resolver/side_effects_test.cc
index 777896f..cb3602c 100644
--- a/src/tint/lang/wgsl/resolver/side_effects_test.cc
+++ b/src/tint/lang/wgsl/resolver/side_effects_test.cc
@@ -17,6 +17,7 @@
 #include "gtest/gtest.h"
 #include "src/tint/lang/core/address_space.h"
 #include "src/tint/lang/core/extension.h"
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/core/texel_format.h"
 #include "src/tint/lang/core/type/texture_dimension.h"
 #include "src/tint/lang/wgsl/resolver/resolver_helper_test.h"
@@ -25,7 +26,8 @@
 #include "src/tint/lang/wgsl/sem/value_expression.h"
 #include "src/tint/utils/containers/vector.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
+using namespace tint::core::fluent_types;     // NOLINT
 
 namespace tint::resolver {
 namespace {
diff --git a/src/tint/lang/wgsl/resolver/struct_address_space_use_test.cc b/src/tint/lang/wgsl/resolver/struct_address_space_use_test.cc
index d90b466..e724213 100644
--- a/src/tint/lang/wgsl/resolver/struct_address_space_use_test.cc
+++ b/src/tint/lang/wgsl/resolver/struct_address_space_use_test.cc
@@ -20,7 +20,7 @@
 
 using ::testing::UnorderedElementsAre;
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::resolver {
 namespace {
diff --git a/src/tint/lang/wgsl/resolver/struct_layout_test.cc b/src/tint/lang/wgsl/resolver/struct_layout_test.cc
index cefee42..529f673 100644
--- a/src/tint/lang/wgsl/resolver/struct_layout_test.cc
+++ b/src/tint/lang/wgsl/resolver/struct_layout_test.cc
@@ -15,10 +15,12 @@
 #include "src/tint/lang/wgsl/resolver/resolver.h"
 
 #include "gmock/gmock.h"
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/wgsl/resolver/resolver_helper_test.h"
 #include "src/tint/lang/wgsl/sem/struct.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
+using namespace tint::core::fluent_types;     // NOLINT
 
 namespace tint::resolver {
 namespace {
diff --git a/src/tint/lang/wgsl/resolver/struct_pipeline_stage_use_test.cc b/src/tint/lang/wgsl/resolver/struct_pipeline_stage_use_test.cc
index d40b767..36bef32 100644
--- a/src/tint/lang/wgsl/resolver/struct_pipeline_stage_use_test.cc
+++ b/src/tint/lang/wgsl/resolver/struct_pipeline_stage_use_test.cc
@@ -25,7 +25,7 @@
 
 using ::testing::UnorderedElementsAre;
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using ResolverPipelineStageUseTest = ResolverTest;
 
diff --git a/src/tint/lang/wgsl/resolver/subgroups_extension_test.cc b/src/tint/lang/wgsl/resolver/subgroups_extension_test.cc
index fa30dec..b3f9c00 100644
--- a/src/tint/lang/wgsl/resolver/subgroups_extension_test.cc
+++ b/src/tint/lang/wgsl/resolver/subgroups_extension_test.cc
@@ -17,7 +17,7 @@
 
 #include "gmock/gmock.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::resolver {
 namespace {
diff --git a/src/tint/lang/wgsl/resolver/type_validation_test.cc b/src/tint/lang/wgsl/resolver/type_validation_test.cc
index 3233026..27bc29b 100644
--- a/src/tint/lang/wgsl/resolver/type_validation_test.cc
+++ b/src/tint/lang/wgsl/resolver/type_validation_test.cc
@@ -27,7 +27,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 // Helpers and typedefs
 template <typename T>
diff --git a/src/tint/lang/wgsl/resolver/uniformity_test.cc b/src/tint/lang/wgsl/resolver/uniformity_test.cc
index 0cba7df..84df633 100644
--- a/src/tint/lang/wgsl/resolver/uniformity_test.cc
+++ b/src/tint/lang/wgsl/resolver/uniformity_test.cc
@@ -30,7 +30,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 class UniformityAnalysisTestBase {
   protected:
diff --git a/src/tint/lang/wgsl/resolver/unresolved_identifier_test.cc b/src/tint/lang/wgsl/resolver/unresolved_identifier_test.cc
index bf1ce18..173934f 100644
--- a/src/tint/lang/wgsl/resolver/unresolved_identifier_test.cc
+++ b/src/tint/lang/wgsl/resolver/unresolved_identifier_test.cc
@@ -14,9 +14,11 @@
 
 #include "gmock/gmock.h"
 
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/wgsl/resolver/resolver_helper_test.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
+using namespace tint::core::fluent_types;     // NOLINT
 
 namespace tint::resolver {
 namespace {
diff --git a/src/tint/lang/wgsl/resolver/validation_test.cc b/src/tint/lang/wgsl/resolver/validation_test.cc
index 75e9e80..2dbfb6c 100644
--- a/src/tint/lang/wgsl/resolver/validation_test.cc
+++ b/src/tint/lang/wgsl/resolver/validation_test.cc
@@ -47,7 +47,7 @@
 using ::testing::ElementsAre;
 using ::testing::HasSubstr;
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using ResolverValidationTest = ResolverTest;
 
diff --git a/src/tint/lang/wgsl/resolver/validator.cc b/src/tint/lang/wgsl/resolver/validator.cc
index bb6447b9..11b9971 100644
--- a/src/tint/lang/wgsl/resolver/validator.cc
+++ b/src/tint/lang/wgsl/resolver/validator.cc
@@ -18,6 +18,7 @@
 #include <limits>
 #include <utility>
 
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/core/type/abstract_numeric.h"
 #include "src/tint/lang/core/type/array.h"
 #include "src/tint/lang/core/type/atomic.h"
@@ -75,6 +76,8 @@
 #include "src/tint/utils/text/string.h"
 #include "src/tint/utils/text/string_stream.h"
 
+using namespace tint::core::fluent_types;  // NOLINT
+
 namespace tint::resolver {
 namespace {
 
diff --git a/src/tint/lang/wgsl/resolver/value_constructor_validation_test.cc b/src/tint/lang/wgsl/resolver/value_constructor_validation_test.cc
index 7e74e69..7e4b2da 100644
--- a/src/tint/lang/wgsl/resolver/value_constructor_validation_test.cc
+++ b/src/tint/lang/wgsl/resolver/value_constructor_validation_test.cc
@@ -23,7 +23,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using ::testing::HasSubstr;
 
diff --git a/src/tint/lang/wgsl/resolver/variable_test.cc b/src/tint/lang/wgsl/resolver/variable_test.cc
index 34c96e9..16d0b97 100644
--- a/src/tint/lang/wgsl/resolver/variable_test.cc
+++ b/src/tint/lang/wgsl/resolver/variable_test.cc
@@ -22,7 +22,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 struct ResolverVariableTest : public resolver::TestHelper, public testing::Test {};
 
diff --git a/src/tint/lang/wgsl/resolver/variable_validation_test.cc b/src/tint/lang/wgsl/resolver/variable_validation_test.cc
index c7abf4e..71ff03e 100644
--- a/src/tint/lang/wgsl/resolver/variable_validation_test.cc
+++ b/src/tint/lang/wgsl/resolver/variable_validation_test.cc
@@ -21,7 +21,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 struct ResolverVariableValidationTest : public resolver::TestHelper, public testing::Test {};
 
diff --git a/src/tint/lang/wgsl/sem/diagnostic_severity_test.cc b/src/tint/lang/wgsl/sem/diagnostic_severity_test.cc
index f779516..3a464e9 100644
--- a/src/tint/lang/wgsl/sem/diagnostic_severity_test.cc
+++ b/src/tint/lang/wgsl/sem/diagnostic_severity_test.cc
@@ -16,7 +16,7 @@
 
 #include "src/tint/lang/wgsl/sem/module.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::sem {
 namespace {
diff --git a/src/tint/lang/wgsl/sem/struct_test.cc b/src/tint/lang/wgsl/sem/struct_test.cc
index 7b6c01a..6b2ca2d 100644
--- a/src/tint/lang/wgsl/sem/struct_test.cc
+++ b/src/tint/lang/wgsl/sem/struct_test.cc
@@ -19,7 +19,7 @@
 namespace tint::sem {
 namespace {
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 using SemStructTest = TestHelper;
 
 TEST_F(SemStructTest, Creation) {
diff --git a/src/tint/lang/wgsl/sem/value_expression_test.cc b/src/tint/lang/wgsl/sem/value_expression_test.cc
index 0c81147..d2a87ef 100644
--- a/src/tint/lang/wgsl/sem/value_expression_test.cc
+++ b/src/tint/lang/wgsl/sem/value_expression_test.cc
@@ -14,11 +14,12 @@
 
 #include "src/tint/lang/wgsl/sem/value_expression.h"
 
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/wgsl/sem/helper_test.h"
-
 #include "src/tint/lang/wgsl/sem/materialize.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
+using namespace tint::core::fluent_types;     // NOLINT
 
 namespace tint::sem {
 namespace {
diff --git a/src/tint/lang/wgsl/writer/ast_printer/array_accessor_test.cc b/src/tint/lang/wgsl/writer/ast_printer/array_accessor_test.cc
index 1a043fd..da922ad 100644
--- a/src/tint/lang/wgsl/writer/ast_printer/array_accessor_test.cc
+++ b/src/tint/lang/wgsl/writer/ast_printer/array_accessor_test.cc
@@ -12,12 +12,14 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/wgsl/writer/ast_printer/helper_test.h"
 #include "src/tint/utils/text/string_stream.h"
 
 #include "gmock/gmock.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
+using namespace tint::core::fluent_types;     // NOLINT
 
 namespace tint::wgsl::writer {
 namespace {
diff --git a/src/tint/lang/wgsl/writer/ast_printer/bitcast_test.cc b/src/tint/lang/wgsl/writer/ast_printer/bitcast_test.cc
index 1915238..c9fbf1b 100644
--- a/src/tint/lang/wgsl/writer/ast_printer/bitcast_test.cc
+++ b/src/tint/lang/wgsl/writer/ast_printer/bitcast_test.cc
@@ -12,12 +12,14 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/wgsl/writer/ast_printer/helper_test.h"
 #include "src/tint/utils/text/string_stream.h"
 
 #include "gmock/gmock.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
+using namespace tint::core::fluent_types;     // NOLINT
 
 namespace tint::wgsl::writer {
 namespace {
diff --git a/src/tint/lang/wgsl/writer/ast_printer/call_test.cc b/src/tint/lang/wgsl/writer/ast_printer/call_test.cc
index 5753024..c489ae7 100644
--- a/src/tint/lang/wgsl/writer/ast_printer/call_test.cc
+++ b/src/tint/lang/wgsl/writer/ast_printer/call_test.cc
@@ -18,7 +18,7 @@
 
 #include "gmock/gmock.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::wgsl::writer {
 namespace {
diff --git a/src/tint/lang/wgsl/writer/ast_printer/case_test.cc b/src/tint/lang/wgsl/writer/ast_printer/case_test.cc
index 9dc5f5f..7eb9c2c 100644
--- a/src/tint/lang/wgsl/writer/ast_printer/case_test.cc
+++ b/src/tint/lang/wgsl/writer/ast_printer/case_test.cc
@@ -16,7 +16,7 @@
 
 #include "gmock/gmock.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::wgsl::writer {
 namespace {
diff --git a/src/tint/lang/wgsl/writer/ast_printer/cast_test.cc b/src/tint/lang/wgsl/writer/ast_printer/cast_test.cc
index afc6580..030bbb5 100644
--- a/src/tint/lang/wgsl/writer/ast_printer/cast_test.cc
+++ b/src/tint/lang/wgsl/writer/ast_printer/cast_test.cc
@@ -21,7 +21,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using WgslASTPrinterTest = TestHelper;
 
diff --git a/src/tint/lang/wgsl/writer/ast_printer/const_assert_test.cc b/src/tint/lang/wgsl/writer/ast_printer/const_assert_test.cc
index 9b3c9bf..574bcef 100644
--- a/src/tint/lang/wgsl/writer/ast_printer/const_assert_test.cc
+++ b/src/tint/lang/wgsl/writer/ast_printer/const_assert_test.cc
@@ -16,7 +16,7 @@
 
 #include "gmock/gmock.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::wgsl::writer {
 namespace {
diff --git a/src/tint/lang/wgsl/writer/ast_printer/constructor_test.cc b/src/tint/lang/wgsl/writer/ast_printer/constructor_test.cc
index 4893c72..bcb86e3 100644
--- a/src/tint/lang/wgsl/writer/ast_printer/constructor_test.cc
+++ b/src/tint/lang/wgsl/writer/ast_printer/constructor_test.cc
@@ -22,7 +22,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using WgslASTPrinterTest_Constructor = TestHelper;
 
diff --git a/src/tint/lang/wgsl/writer/ast_printer/function_test.cc b/src/tint/lang/wgsl/writer/ast_printer/function_test.cc
index 1a1e5f7..a4f3ba6 100644
--- a/src/tint/lang/wgsl/writer/ast_printer/function_test.cc
+++ b/src/tint/lang/wgsl/writer/ast_printer/function_test.cc
@@ -13,6 +13,7 @@
 // limitations under the License.
 
 #include "src/tint/lang/core/builtin_value.h"
+#include "src/tint/lang/core/fluent_types.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/workgroup_attribute.h"
@@ -20,7 +21,8 @@
 
 #include "gmock/gmock.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
+using namespace tint::core::fluent_types;     // NOLINT
 
 namespace tint::wgsl::writer {
 namespace {
diff --git a/src/tint/lang/wgsl/writer/ast_printer/global_decl_test.cc b/src/tint/lang/wgsl/writer/ast_printer/global_decl_test.cc
index dafff0e..a20f70e 100644
--- a/src/tint/lang/wgsl/writer/ast_printer/global_decl_test.cc
+++ b/src/tint/lang/wgsl/writer/ast_printer/global_decl_test.cc
@@ -20,7 +20,7 @@
 
 #include "gmock/gmock.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::wgsl::writer {
 namespace {
diff --git a/src/tint/lang/wgsl/writer/ast_printer/literal_test.cc b/src/tint/lang/wgsl/writer/ast_printer/literal_test.cc
index 6802bd0..670d5eb 100644
--- a/src/tint/lang/wgsl/writer/ast_printer/literal_test.cc
+++ b/src/tint/lang/wgsl/writer/ast_printer/literal_test.cc
@@ -14,12 +14,14 @@
 
 #include <cstring>
 
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/wgsl/writer/ast_printer/helper_test.h"
 #include "src/tint/utils/text/string_stream.h"
 
 #include "gmock/gmock.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
+using namespace tint::core::fluent_types;     // NOLINT
 
 namespace tint::wgsl::writer {
 namespace {
diff --git a/src/tint/lang/wgsl/writer/ast_printer/loop_test.cc b/src/tint/lang/wgsl/writer/ast_printer/loop_test.cc
index c3a952f..999807f 100644
--- a/src/tint/lang/wgsl/writer/ast_printer/loop_test.cc
+++ b/src/tint/lang/wgsl/writer/ast_printer/loop_test.cc
@@ -15,8 +15,10 @@
 #include "src/tint/lang/wgsl/writer/ast_printer/helper_test.h"
 
 #include "gmock/gmock.h"
+#include "src/tint/lang/core/fluent_types.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
+using namespace tint::core::fluent_types;     // NOLINT
 
 namespace tint::wgsl::writer {
 namespace {
diff --git a/src/tint/lang/wgsl/writer/ast_printer/return_test.cc b/src/tint/lang/wgsl/writer/ast_printer/return_test.cc
index f83890a..b4a2bac 100644
--- a/src/tint/lang/wgsl/writer/ast_printer/return_test.cc
+++ b/src/tint/lang/wgsl/writer/ast_printer/return_test.cc
@@ -16,7 +16,7 @@
 
 #include "gmock/gmock.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::wgsl::writer {
 namespace {
diff --git a/src/tint/lang/wgsl/writer/ast_printer/switch_test.cc b/src/tint/lang/wgsl/writer/ast_printer/switch_test.cc
index 964e17d..1aec5f9 100644
--- a/src/tint/lang/wgsl/writer/ast_printer/switch_test.cc
+++ b/src/tint/lang/wgsl/writer/ast_printer/switch_test.cc
@@ -16,7 +16,7 @@
 
 #include "gmock/gmock.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::wgsl::writer {
 namespace {
diff --git a/src/tint/lang/wgsl/writer/ast_printer/type_test.cc b/src/tint/lang/wgsl/writer/ast_printer/type_test.cc
index ccee176..4e41025 100644
--- a/src/tint/lang/wgsl/writer/ast_printer/type_test.cc
+++ b/src/tint/lang/wgsl/writer/ast_printer/type_test.cc
@@ -26,7 +26,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using WgslASTPrinterTest = TestHelper;
 
diff --git a/src/tint/lang/wgsl/writer/ast_printer/variable_decl_statement_test.cc b/src/tint/lang/wgsl/writer/ast_printer/variable_decl_statement_test.cc
index 960d27d..7f34103 100644
--- a/src/tint/lang/wgsl/writer/ast_printer/variable_decl_statement_test.cc
+++ b/src/tint/lang/wgsl/writer/ast_printer/variable_decl_statement_test.cc
@@ -21,7 +21,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 using WgslASTPrinterTest = TestHelper;
 
diff --git a/src/tint/lang/wgsl/writer/ast_printer/variable_test.cc b/src/tint/lang/wgsl/writer/ast_printer/variable_test.cc
index 83cb95d..a78773e 100644
--- a/src/tint/lang/wgsl/writer/ast_printer/variable_test.cc
+++ b/src/tint/lang/wgsl/writer/ast_printer/variable_test.cc
@@ -17,7 +17,7 @@
 
 #include "gmock/gmock.h"
 
-using namespace tint::number_suffixes;  // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 namespace tint::wgsl::writer {
 namespace {
diff --git a/src/tint/lang/wgsl/writer/ir_to_program/inlining_test.cc b/src/tint/lang/wgsl/writer/ir_to_program/inlining_test.cc
index 3ca8579e..8cf02e3 100644
--- a/src/tint/lang/wgsl/writer/ir_to_program/inlining_test.cc
+++ b/src/tint/lang/wgsl/writer/ir_to_program/inlining_test.cc
@@ -25,7 +25,7 @@
 namespace tint::wgsl::writer {
 namespace {
 
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 using namespace tint::core::fluent_types;  // NOLINT
 
 using IRToProgramInliningTest = IRToProgramTest;
diff --git a/src/tint/lang/wgsl/writer/ir_to_program/ir_to_program.cc b/src/tint/lang/wgsl/writer/ir_to_program/ir_to_program.cc
index 5b4fbc3..188fd1a 100644
--- a/src/tint/lang/wgsl/writer/ir_to_program/ir_to_program.cc
+++ b/src/tint/lang/wgsl/writer/ir_to_program/ir_to_program.cc
@@ -20,6 +20,7 @@
 
 #include "src/tint/lang/core/builtin.h"
 #include "src/tint/lang/core/constant/splat.h"
+#include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/core/ir/access.h"
 #include "src/tint/lang/core/ir/binary.h"
 #include "src/tint/lang/core/ir/bitcast.h"
@@ -85,8 +86,9 @@
     nesting_depth_++;    \
     TINT_DEFER(nesting_depth_--)
 
-namespace tint::wgsl::writer {
+using namespace tint::core::fluent_types;  // NOLINT
 
+namespace tint::wgsl::writer {
 namespace {
 
 class State {
diff --git a/src/tint/lang/wgsl/writer/ir_to_program/ir_to_program_test.cc b/src/tint/lang/wgsl/writer/ir_to_program/ir_to_program_test.cc
index a506c9b..6a047a3 100644
--- a/src/tint/lang/wgsl/writer/ir_to_program/ir_to_program_test.cc
+++ b/src/tint/lang/wgsl/writer/ir_to_program/ir_to_program_test.cc
@@ -23,7 +23,7 @@
 
 namespace tint::wgsl::writer {
 
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 using namespace tint::core::fluent_types;  // NOLINT
 
 IRToProgramTest::Result IRToProgramTest::Run() {
diff --git a/src/tint/lang/wgsl/writer/ir_to_program/rename_conflicts_test.cc b/src/tint/lang/wgsl/writer/ir_to_program/rename_conflicts_test.cc
index 02d7fed..bc429f4 100644
--- a/src/tint/lang/wgsl/writer/ir_to_program/rename_conflicts_test.cc
+++ b/src/tint/lang/wgsl/writer/ir_to_program/rename_conflicts_test.cc
@@ -26,7 +26,7 @@
 namespace {
 
 using namespace tint::core::fluent_types;  // NOLINT
-using namespace tint::number_suffixes;     // NOLINT
+using namespace tint::core::number_suffixes;  // NOLINT
 
 class IRToProgramRenameConflictsTest : public testing::Test {
   public: