Remove tint::Namer

Replaced with tint::transform::Rename and was never used.

Bug: tint:273
Change-Id: Icf0b19b389377f3c9a6efcf3ca232ba294775f9b
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/43981
Auto-Submit: Ben Clayton <bclayton@google.com>
Commit-Queue: Ryan Harrison <rharrison@chromium.org>
Reviewed-by: Ryan Harrison <rharrison@chromium.org>
This commit is contained in:
Ben Clayton 2021-03-04 21:00:15 +00:00 committed by Commit Bot service account
parent 798876e7eb
commit d1781fd0af
6 changed files with 0 additions and 225 deletions

View File

@ -371,8 +371,6 @@ source_set("libtint_core_src") {
"src/inspector/scalar.h",
"src/intrinsic_table.cc",
"src/intrinsic_table.h",
"src/namer.cc",
"src/namer.h",
"src/program.cc",
"src/program.h",
"src/program_builder.cc",
@ -844,7 +842,6 @@ source_set("tint_unittests_core_src") {
"src/diagnostic/printer_test.cc",
"src/inspector/inspector_test.cc",
"src/intrinsic_table_test.cc",
"src/namer_test.cc",
"src/program_builder_test.cc",
"src/program_test.cc",
"src/scope_stack_test.cc",

View File

@ -22,7 +22,6 @@
#include "src/demangler.h"
#include "src/diagnostic/printer.h"
#include "src/inspector/inspector.h"
#include "src/namer.h"
#include "src/reader/reader.h"
#include "src/transform/bound_array_accessors.h"
#include "src/transform/emit_vertex_point_size.h"

View File

@ -185,8 +185,6 @@ set(TINT_LIB_SRCS
inspector/inspector.h
inspector/scalar.cc
inspector/scalar.h
namer.cc
namer.h
program_builder.cc
program_builder.h
program.cc
@ -473,7 +471,6 @@ if(${TINT_BUILD_TESTS})
diagnostic/printer_test.cc
inspector/inspector_test.cc
intrinsic_table_test.cc
namer_test.cc
program_test.cc
scope_stack_test.cc
symbol_table_test.cc

View File

@ -1,61 +0,0 @@
// Copyright 2020 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.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#include "src/namer.h"
#include <algorithm>
#include <iomanip>
#include <sstream>
#include "src/symbol.h"
namespace tint {
Namer::Namer(SymbolTable* symbols) : symbols_(symbols) {}
Namer::~Namer() = default;
bool Namer::IsUsed(const std::string& name) {
auto it = used_.find(name);
return it != used_.end();
}
std::string Namer::GenerateName(const std::string& prefix) {
std::string name = prefix;
uint32_t i = 0;
while (IsUsed(name)) {
name = prefix + "_" + std::to_string(i);
++i;
}
used_.insert(name);
return name;
}
MangleNamer::MangleNamer(SymbolTable* symbols) : Namer(symbols) {}
MangleNamer::~MangleNamer() = default;
std::string MangleNamer::NameFor(const Symbol& sym) {
return sym.to_str();
}
UnsafeNamer::UnsafeNamer(SymbolTable* symbols) : Namer(symbols) {}
UnsafeNamer::~UnsafeNamer() = default;
std::string UnsafeNamer::NameFor(const Symbol& sym) {
return symbols_->NameFor(sym);
}
} // namespace tint

View File

@ -1,93 +0,0 @@
// Copyright 2020 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.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#ifndef SRC_NAMER_H_
#define SRC_NAMER_H_
#include <string>
#include <unordered_map>
#include <unordered_set>
#include "src/symbol_table.h"
namespace tint {
/// Base class for the namers.
class Namer {
public:
/// Constructor
/// @param symbols the symbol table this namer works with
explicit Namer(SymbolTable* symbols);
/// Destructor
virtual ~Namer();
/// Returns the name for `sym`
/// @param sym the symbol to retrieve the name for
/// @returns the sanitized version of `name` or "" if not found
virtual std::string NameFor(const Symbol& sym) = 0;
/// Generates a unique name for `prefix`
/// @param prefix the prefix name
/// @returns the unique name string
std::string GenerateName(const std::string& prefix);
protected:
/// Checks if `name` has been used
/// @param name the name to check
/// @returns true if `name` has already been used
bool IsUsed(const std::string& name);
/// The symbol table
SymbolTable* symbols_ = nullptr;
private:
// The list of names taken by the remapper
std::unordered_set<std::string> used_;
};
/// A namer class which mangles the name
class MangleNamer : public Namer {
public:
/// Constructor
/// @param symbols the symbol table this namer works with
explicit MangleNamer(SymbolTable* symbols);
/// Destructor
~MangleNamer() override;
/// Returns a mangled name for `sym`
/// @param sym the symbol to name
/// @returns the name for `sym` or "" if not found
std::string NameFor(const Symbol& sym) override;
};
/// A namer which returns the user provided name. This is unsafe in general as
/// it passes user provided data through to the backend compiler. It is useful
/// for development and debugging.
class UnsafeNamer : public Namer {
public:
/// Constructor
/// @param symbols the symbol table this namer works with
explicit UnsafeNamer(SymbolTable* symbols);
/// Destructor
~UnsafeNamer() override;
/// Returns `name`
/// @param sym the symbol
/// @returns `name` or "" if not found
std::string NameFor(const Symbol& sym) override;
};
} // namespace tint
#endif // SRC_NAMER_H_

View File

@ -1,64 +0,0 @@
// Copyright 2020 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.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#include "src/namer.h"
#include "gtest/gtest.h"
#include "src/symbol_table.h"
namespace tint {
namespace {
using NamerTest = testing::Test;
TEST_F(NamerTest, GenerateName) {
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"));
}
using MangleNamerTest = testing::Test;
TEST_F(MangleNamerTest, ReturnsName) {
SymbolTable t;
auto s = t.Register("my_sym");
MangleNamer n(&t);
EXPECT_EQ("tint_symbol_1", n.NameFor(s));
}
TEST_F(MangleNamerTest, ReturnsSameValueForSameName) {
SymbolTable t;
auto s1 = t.Register("my_sym");
auto s2 = t.Register("my_sym2");
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));
}
using UnsafeNamerTest = testing::Test;
TEST_F(UnsafeNamerTest, ReturnsName) {
SymbolTable t;
auto s = t.Register("my_sym");
UnsafeNamer n(&t);
EXPECT_EQ("my_sym", n.NameFor(s));
}
} // namespace
} // namespace tint