Namer: Take a SymbolTable instead of a Program

Program is going to undergo some heavy refactoring.
Reduce unnecessary dependencies to what Namer actually wants.

Change-Id: Ie411da113a2728321c52ba0a72ae7c2139469886
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/38543
Reviewed-by: dan sinclair <dsinclair@chromium.org>
diff --git a/src/namer.cc b/src/namer.cc
index 405a56a..b9009d1 100644
--- a/src/namer.cc
+++ b/src/namer.cc
@@ -22,7 +22,7 @@
 
 namespace tint {
 
-Namer::Namer(Program* program) : program_(program) {}
+Namer::Namer(SymbolTable* symbols) : symbols_(symbols) {}
 
 Namer::~Namer() = default;
 
@@ -42,7 +42,7 @@
   return name;
 }
 
-MangleNamer::MangleNamer(Program* program) : Namer(program) {}
+MangleNamer::MangleNamer(SymbolTable* symbols) : Namer(symbols) {}
 
 MangleNamer::~MangleNamer() = default;
 
@@ -50,12 +50,12 @@
   return sym.to_str();
 }
 
-UnsafeNamer::UnsafeNamer(Program* program) : Namer(program) {}
+UnsafeNamer::UnsafeNamer(SymbolTable* symbols) : Namer(symbols) {}
 
 UnsafeNamer::~UnsafeNamer() = default;
 
 std::string UnsafeNamer::NameFor(const Symbol& sym) {
-  return program_->SymbolToName(sym);
+  return symbols_->NameFor(sym);
 }
 
 }  // namespace tint
diff --git a/src/namer.h b/src/namer.h
index c818c3f..2510889 100644
--- a/src/namer.h
+++ b/src/namer.h
@@ -19,7 +19,7 @@
 #include <unordered_map>
 #include <unordered_set>
 
-#include "src/program.h"
+#include "src/symbol_table.h"
 
 namespace tint {
 
@@ -27,8 +27,8 @@
 class Namer {
  public:
   /// Constructor
-  /// @param program the program this namer works with
-  explicit Namer(Program* program);
+  /// @param symbols the symbol table this namer works with
+  explicit Namer(SymbolTable* symbols);
   /// Destructor
   virtual ~Namer();
 
@@ -48,8 +48,8 @@
   /// @returns true if `name` has already been used
   bool IsUsed(const std::string& name);
 
-  /// The program storing the symbol table
-  Program* program_ = nullptr;
+  /// The symbol table
+  SymbolTable* symbols_ = nullptr;
 
  private:
   // The list of names taken by the remapper
@@ -60,8 +60,8 @@
 class MangleNamer : public Namer {
  public:
   /// Constructor
-  /// @param program the program to retrieve names from
-  explicit MangleNamer(Program* program);
+  /// @param symbols the symbol table this namer works with
+  explicit MangleNamer(SymbolTable* symbols);
   /// Destructor
   ~MangleNamer() override;
 
@@ -77,8 +77,8 @@
 class UnsafeNamer : public Namer {
  public:
   /// Constructor
-  /// @param program the program to retrieve names from
-  explicit UnsafeNamer(Program* program);
+  /// @param symbols the symbol table this namer works with
+  explicit UnsafeNamer(SymbolTable* symbols);
   /// Destructor
   ~UnsafeNamer() override;
 
diff --git a/src/namer_test.cc b/src/namer_test.cc
index 552a959..efd863b 100644
--- a/src/namer_test.cc
+++ b/src/namer_test.cc
@@ -15,7 +15,7 @@
 #include "src/namer.h"
 
 #include "gtest/gtest.h"
-#include "src/program.h"
+#include "src/symbol_table.h"
 
 namespace tint {
 namespace {
@@ -23,8 +23,8 @@
 using NamerTest = testing::Test;
 
 TEST_F(NamerTest, GenerateName) {
-  Program m;
-  MangleNamer n(&m);
+  SymbolTable t;
+  MangleNamer n(&t);
   EXPECT_EQ("name", n.GenerateName("name"));
   EXPECT_EQ("name_0", n.GenerateName("name"));
   EXPECT_EQ("name_1", n.GenerateName("name"));
@@ -33,19 +33,19 @@
 using MangleNamerTest = testing::Test;
 
 TEST_F(MangleNamerTest, ReturnsName) {
-  Program m;
-  auto s = m.RegisterSymbol("my_sym");
+  SymbolTable t;
+  auto s = t.Register("my_sym");
 
-  MangleNamer n(&m);
+  MangleNamer n(&t);
   EXPECT_EQ("tint_symbol_1", n.NameFor(s));
 }
 
 TEST_F(MangleNamerTest, ReturnsSameValueForSameName) {
-  Program m;
-  auto s1 = m.RegisterSymbol("my_sym");
-  auto s2 = m.RegisterSymbol("my_sym2");
+  SymbolTable t;
+  auto s1 = t.Register("my_sym");
+  auto s2 = t.Register("my_sym2");
 
-  MangleNamer n(&m);
+  MangleNamer n(&t);
   EXPECT_EQ("tint_symbol_1", n.NameFor(s1));
   EXPECT_EQ("tint_symbol_2", n.NameFor(s2));
   EXPECT_EQ("tint_symbol_1", n.NameFor(s1));
@@ -53,10 +53,10 @@
 
 using UnsafeNamerTest = testing::Test;
 TEST_F(UnsafeNamerTest, ReturnsName) {
-  Program m;
-  auto s = m.RegisterSymbol("my_sym");
+  SymbolTable t;
+  auto s = t.Register("my_sym");
 
-  UnsafeNamer n(&m);
+  UnsafeNamer n(&t);
   EXPECT_EQ("my_sym", n.NameFor(s));
 }