Move type_manager to type/ folder

This CL moves the type_manager from sem to type and updates the
namespace as needed.

Bug: tint:1718
Change-Id: I1fe0c2be08146221e68a9d2e7450283d102afdfa
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/113280
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: Ben Clayton <bclayton@google.com>
diff --git a/include/tint/tint.h b/include/tint/tint.h
index 57a3c67..cd01ae8 100644
--- a/include/tint/tint.h
+++ b/include/tint/tint.h
@@ -25,7 +25,6 @@
 #include "src/tint/diagnostic/printer.h"
 #include "src/tint/inspector/inspector.h"
 #include "src/tint/reader/reader.h"
-#include "src/tint/sem/type_manager.h"
 #include "src/tint/transform/binding_remapper.h"
 #include "src/tint/transform/first_index_offset.h"
 #include "src/tint/transform/manager.h"
@@ -35,6 +34,7 @@
 #include "src/tint/transform/single_entry_point.h"
 #include "src/tint/transform/substitute_override.h"
 #include "src/tint/transform/vertex_pulling.h"
+#include "src/tint/type/type_manager.h"
 #include "src/tint/writer/flatten_bindings.h"
 #include "src/tint/writer/writer.h"
 
diff --git a/src/tint/BUILD.gn b/src/tint/BUILD.gn
index 8889605..7099a46 100644
--- a/src/tint/BUILD.gn
+++ b/src/tint/BUILD.gn
@@ -460,7 +460,6 @@
     "sem/texture.h",
     "sem/type_conversion.h",
     "sem/type_initializer.h",
-    "sem/type_manager.h",
     "sem/type_mappings.h",
     "sem/u32.h",
     "sem/vector.h",
@@ -579,6 +578,7 @@
     "type/array_count.h",
     "type/node.h",
     "type/type.h",
+    "type/type_manager.h",
     "utils/bitcast.h",
     "utils/bitset.h",
     "utils/block_allocator.h",
@@ -722,8 +722,6 @@
     "sem/type_conversion.h",
     "sem/type_initializer.cc",
     "sem/type_initializer.h",
-    "sem/type_manager.cc",
-    "sem/type_manager.h",
     "sem/type_mappings.h",
     "sem/u32.cc",
     "sem/u32.h",
@@ -747,6 +745,8 @@
     "type/node.h",
     "type/type.cc",
     "type/type.h",
+    "type/type_manager.cc",
+    "type/type_manager.h",
   ]
 
   public_deps = [ ":libtint_core_all_src" ]
@@ -1222,14 +1222,16 @@
       "sem/storage_texture_test.cc",
       "sem/struct_test.cc",
       "sem/texture_test.cc",
-      "sem/type_manager_test.cc",
       "sem/u32_test.cc",
       "sem/vector_test.cc",
     ]
   }
 
   tint_unittests_source_set("tint_unittests_type_src") {
-    sources = [ "type/type_test.cc" ]
+    sources = [
+      "type/type_manager_test.cc",
+      "type/type_test.cc",
+    ]
   }
 
   tint_unittests_source_set("tint_unittests_text_src") {
diff --git a/src/tint/CMakeLists.txt b/src/tint/CMakeLists.txt
index a22ab9a..4d69e28 100644
--- a/src/tint/CMakeLists.txt
+++ b/src/tint/CMakeLists.txt
@@ -379,8 +379,6 @@
   sem/type_initializer.h
   sem/type_conversion.cc
   sem/type_conversion.h
-  sem/type_manager.cc
-  sem/type_manager.h
   sem/type_mappings.h
   sem/u32.cc
   sem/u32.h
@@ -505,6 +503,8 @@
   type/node.h
   type/type.cc
   type/type.h
+  type/type_manager.cc
+  type/type_manager.h
   utils/bitcast.h
   utils/bitset.h
   utils/block_allocator.h
@@ -940,7 +940,6 @@
     sem/storage_texture_test.cc
     sem/struct_test.cc
     sem/texture_test.cc
-    sem/type_manager_test.cc
     sem/u32_test.cc
     sem/vector_test.cc
     source_test.cc
@@ -951,6 +950,7 @@
     traits_test.cc
     transform/transform_test.cc
     type/type_test.cc
+    type/type_manager_test.cc
     utils/bitcast_test.cc
     utils/bitset_test.cc
     utils/block_allocator_test.cc
diff --git a/src/tint/program.h b/src/tint/program.h
index b1a9576..025db67 100644
--- a/src/tint/program.h
+++ b/src/tint/program.h
@@ -22,8 +22,8 @@
 #include "src/tint/program_id.h"
 #include "src/tint/sem/constant.h"
 #include "src/tint/sem/info.h"
-#include "src/tint/sem/type_manager.h"
 #include "src/tint/symbol_table.h"
+#include "src/tint/type/type_manager.h"
 
 // Forward Declarations
 namespace tint {
@@ -73,7 +73,7 @@
     ast::NodeID HighestASTNodeID() const { return highest_node_id_; }
 
     /// @returns a reference to the program's types
-    const sem::TypeManager& Types() const {
+    const type::TypeManager& Types() const {
         AssertNotMoved();
         return types_;
     }
@@ -180,7 +180,7 @@
 
     ProgramID id_;
     ast::NodeID highest_node_id_;
-    sem::TypeManager types_;
+    type::TypeManager types_;
     ASTNodeAllocator ast_nodes_;
     SemNodeAllocator sem_nodes_;
     ConstantAllocator constant_nodes_;
diff --git a/src/tint/program_builder.cc b/src/tint/program_builder.cc
index 02f9a13..244e735 100644
--- a/src/tint/program_builder.cc
+++ b/src/tint/program_builder.cc
@@ -70,7 +70,7 @@
     ProgramBuilder builder;
     builder.id_ = program->ID();
     builder.last_ast_node_id_ = program->HighestASTNodeID();
-    builder.types_ = sem::TypeManager::Wrap(program->Types());
+    builder.types_ = type::TypeManager::Wrap(program->Types());
     builder.ast_ =
         builder.create<ast::Module>(program->AST().source, program->AST().GlobalDeclarations());
     builder.sem_ = sem::Info::Wrap(program->Sem());
diff --git a/src/tint/program_builder.h b/src/tint/program_builder.h
index e8b27d4..7f59711 100644
--- a/src/tint/program_builder.h
+++ b/src/tint/program_builder.h
@@ -299,13 +299,13 @@
     ProgramID ID() const { return id_; }
 
     /// @returns a reference to the program's types
-    sem::TypeManager& Types() {
+    type::TypeManager& Types() {
         AssertNotMoved();
         return types_;
     }
 
     /// @returns a reference to the program's types
-    const sem::TypeManager& Types() const {
+    const type::TypeManager& Types() const {
         AssertNotMoved();
         return types_;
     }
@@ -3247,7 +3247,7 @@
   private:
     ProgramID id_;
     ast::NodeID last_ast_node_id_ = ast::NodeID{static_cast<decltype(ast::NodeID::value)>(0) - 1};
-    sem::TypeManager types_;
+    type::TypeManager types_;
     ASTNodeAllocator ast_nodes_;
     SemNodeAllocator sem_nodes_;
     ConstantAllocator constant_nodes_;
diff --git a/src/tint/sem/storage_texture.cc b/src/tint/sem/storage_texture.cc
index 62c443b..ea83a49 100644
--- a/src/tint/sem/storage_texture.cc
+++ b/src/tint/sem/storage_texture.cc
@@ -48,7 +48,7 @@
     return out.str();
 }
 
-type::Type* StorageTexture::SubtypeFor(ast::TexelFormat format, sem::TypeManager& type_mgr) {
+type::Type* StorageTexture::SubtypeFor(ast::TexelFormat format, type::TypeManager& type_mgr) {
     switch (format) {
         case ast::TexelFormat::kR32Uint:
         case ast::TexelFormat::kRgba8Uint:
diff --git a/src/tint/sem/storage_texture.h b/src/tint/sem/storage_texture.h
index 3fdb1a7..f86fd1e 100644
--- a/src/tint/sem/storage_texture.h
+++ b/src/tint/sem/storage_texture.h
@@ -22,9 +22,9 @@
 #include "src/tint/sem/texture.h"
 
 // Forward declarations
-namespace tint::sem {
+namespace tint::type {
 class TypeManager;
-}  // namespace tint::sem
+}  // namespace tint::type
 
 namespace tint::sem {
 
@@ -67,9 +67,9 @@
     std::string FriendlyName(const SymbolTable& symbols) const override;
 
     /// @param format the storage texture image format
-    /// @param type_mgr the sem::TypeManager used to build the returned type
+    /// @param type_mgr the type::TypeManager used to build the returned type
     /// @returns the storage texture subtype for the given TexelFormat
-    static type::Type* SubtypeFor(ast::TexelFormat format, sem::TypeManager& type_mgr);
+    static type::Type* SubtypeFor(ast::TexelFormat format, type::TypeManager& type_mgr);
 
   private:
     ast::TexelFormat const texel_format_;
diff --git a/src/tint/sem/type_manager.cc b/src/tint/type/type_manager.cc
similarity index 85%
rename from src/tint/sem/type_manager.cc
rename to src/tint/type/type_manager.cc
index 8c26a4f..766725c 100644
--- a/src/tint/sem/type_manager.cc
+++ b/src/tint/type/type_manager.cc
@@ -1,4 +1,4 @@
-// Copyright 2020 The Tint Authors.
+// Copyright 2022 The Tint Authors.
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -12,13 +12,13 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/sem/type_manager.h"
+#include "src/tint/type/type_manager.h"
 
-namespace tint::sem {
+namespace tint::type {
 
 TypeManager::TypeManager() = default;
 TypeManager::TypeManager(TypeManager&&) = default;
 TypeManager& TypeManager::operator=(TypeManager&& rhs) = default;
 TypeManager::~TypeManager() = default;
 
-}  // namespace tint::sem
+}  // namespace tint::type
diff --git a/src/tint/sem/type_manager.h b/src/tint/type/type_manager.h
similarity index 96%
rename from src/tint/sem/type_manager.h
rename to src/tint/type/type_manager.h
index 4decdef..c6319e5 100644
--- a/src/tint/sem/type_manager.h
+++ b/src/tint/type/type_manager.h
@@ -1,4 +1,4 @@
-// Copyright 2020 The Tint Authors.
+// Copyright 2022 The Tint Authors.
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -12,8 +12,8 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_SEM_TYPE_MANAGER_H_
-#define SRC_TINT_SEM_TYPE_MANAGER_H_
+#ifndef SRC_TINT_TYPE_TYPE_MANAGER_H_
+#define SRC_TINT_TYPE_TYPE_MANAGER_H_
 
 #include <functional>
 #include <string>
@@ -26,7 +26,7 @@
 #include "src/tint/type/type.h"
 #include "src/tint/utils/unique_allocator.h"
 
-namespace tint::sem {
+namespace tint::type {
 
 /// The type manager holds all the pointers to the known types.
 class TypeManager final {
@@ -107,7 +107,7 @@
     utils::UniqueAllocator<type::Node> nodes_;
 };
 
-}  // namespace tint::sem
+}  // namespace tint::type
 
 namespace std {
 
@@ -149,4 +149,4 @@
 
 }  // namespace std
 
-#endif  // SRC_TINT_SEM_TYPE_MANAGER_H_
+#endif  // SRC_TINT_TYPE_TYPE_MANAGER_H_
diff --git a/src/tint/sem/type_manager_test.cc b/src/tint/type/type_manager_test.cc
similarity index 71%
rename from src/tint/sem/type_manager_test.cc
rename to src/tint/type/type_manager_test.cc
index a488913..76312bd 100644
--- a/src/tint/sem/type_manager_test.cc
+++ b/src/tint/type/type_manager_test.cc
@@ -1,4 +1,4 @@
-// Copyright 2020 The Tint Authors.
+// Copyright 2022 The Tint Authors.
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -12,13 +12,13 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/sem/type_manager.h"
+#include "src/tint/type/type_manager.h"
 
 #include "gtest/gtest.h"
 #include "src/tint/sem/i32.h"
 #include "src/tint/sem/u32.h"
 
-namespace tint::sem {
+namespace tint::type {
 namespace {
 
 template <typename T>
@@ -35,55 +35,55 @@
 
 TEST_F(TypeManagerTest, GetUnregistered) {
     TypeManager tm;
-    auto* t = tm.Get<I32>();
+    auto* t = tm.Get<sem::I32>();
     ASSERT_NE(t, nullptr);
-    EXPECT_TRUE(t->Is<I32>());
+    EXPECT_TRUE(t->Is<sem::I32>());
 }
 
 TEST_F(TypeManagerTest, GetSameTypeReturnsSamePtr) {
     TypeManager tm;
-    auto* t = tm.Get<I32>();
+    auto* t = tm.Get<sem::I32>();
     ASSERT_NE(t, nullptr);
-    EXPECT_TRUE(t->Is<I32>());
+    EXPECT_TRUE(t->Is<sem::I32>());
 
-    auto* t2 = tm.Get<I32>();
+    auto* t2 = tm.Get<sem::I32>();
     EXPECT_EQ(t, t2);
 }
 
 TEST_F(TypeManagerTest, GetDifferentTypeReturnsDifferentPtr) {
     TypeManager tm;
-    type::Type* t = tm.Get<I32>();
+    type::Type* t = tm.Get<sem::I32>();
     ASSERT_NE(t, nullptr);
-    EXPECT_TRUE(t->Is<I32>());
+    EXPECT_TRUE(t->Is<sem::I32>());
 
-    type::Type* t2 = tm.Get<U32>();
+    type::Type* t2 = tm.Get<sem::U32>();
     ASSERT_NE(t2, nullptr);
     EXPECT_NE(t, t2);
-    EXPECT_TRUE(t2->Is<U32>());
+    EXPECT_TRUE(t2->Is<sem::U32>());
 }
 
 TEST_F(TypeManagerTest, Find) {
     TypeManager tm;
-    auto* created = tm.Get<I32>();
+    auto* created = tm.Get<sem::I32>();
 
-    EXPECT_EQ(tm.Find<U32>(), nullptr);
-    EXPECT_EQ(tm.Find<I32>(), created);
+    EXPECT_EQ(tm.Find<sem::U32>(), nullptr);
+    EXPECT_EQ(tm.Find<sem::I32>(), created);
 }
 
 TEST_F(TypeManagerTest, WrapDoesntAffectInner) {
     TypeManager inner;
     TypeManager outer = TypeManager::Wrap(inner);
 
-    inner.Get<I32>();
+    inner.Get<sem::I32>();
 
     EXPECT_EQ(count(inner), 1u);
     EXPECT_EQ(count(outer), 0u);
 
-    outer.Get<U32>();
+    outer.Get<sem::U32>();
 
     EXPECT_EQ(count(inner), 1u);
     EXPECT_EQ(count(outer), 1u);
 }
 
 }  // namespace
-}  // namespace tint::sem
+}  // namespace tint::type