Remove internal usage of Context.
This CL removes all internal usage of the Context object. It is still
accepted as a parameter until we update Dawn, but all usage is removed.
The namer has been removed from the SPIR-V backend with this change and
the emitted names reverted to their non-modified version.
Change-Id: Ie6c550fab1807b558182cd7188ab6450a627f154
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/34740
Commit-Queue: dan sinclair <dsinclair@chromium.org>
Auto-Submit: dan sinclair <dsinclair@chromium.org>
Reviewed-by: Ryan Harrison <rharrison@chromium.org>
diff --git a/fuzzers/tint_ast_clone_fuzzer.cc b/fuzzers/tint_ast_clone_fuzzer.cc
index 71c1e27..ff72174 100644
--- a/fuzzers/tint_ast_clone_fuzzer.cc
+++ b/fuzzers/tint_ast_clone_fuzzer.cc
@@ -47,8 +47,7 @@
tint::Source::File file("test.wgsl", str);
// Parse the wgsl, create the src module
- tint::Context ctx;
- tint::reader::wgsl::ParserImpl parser(&ctx, &file);
+ tint::reader::wgsl::ParserImpl parser(&file);
parser.set_max_errors(1);
if (!parser.Parse()) {
return 0;
diff --git a/fuzzers/tint_spv_reader_fuzzer.cc b/fuzzers/tint_spv_reader_fuzzer.cc
index 2498383..e809e55 100644
--- a/fuzzers/tint_spv_reader_fuzzer.cc
+++ b/fuzzers/tint_spv_reader_fuzzer.cc
@@ -22,8 +22,7 @@
std::vector<uint32_t> input(u32Data, u32Data + sizeInU32);
if (input.size() != 0) {
- tint::Context ctx;
- tint::reader::spirv::Parser parser(&ctx, input);
+ tint::reader::spirv::Parser parser(input);
parser.Parse();
}
diff --git a/fuzzers/tint_wgsl_reader_fuzzer.cc b/fuzzers/tint_wgsl_reader_fuzzer.cc
index d9c0d4e..d1a7507 100644
--- a/fuzzers/tint_wgsl_reader_fuzzer.cc
+++ b/fuzzers/tint_wgsl_reader_fuzzer.cc
@@ -20,9 +20,7 @@
std::string str(reinterpret_cast<const char*>(data), size);
tint::Source::File file("test.wgsl", str);
-
- tint::Context ctx;
- tint::reader::wgsl::Parser parser(&ctx, &file);
+ tint::reader::wgsl::Parser parser(&file);
parser.Parse();
return 0;
diff --git a/samples/main.cc b/samples/main.cc
index 5d4534c..dcdea27 100644
--- a/samples/main.cc
+++ b/samples/main.cc
@@ -418,8 +418,6 @@
options.format = Format::kSpvAsm;
}
- tint::Context ctx(std::make_unique<tint::NoopNamer>());
-
auto diag_printer = tint::diag::Printer::create(stderr, true);
tint::diag::Formatter diag_formatter;
@@ -435,8 +433,7 @@
}
source_file = std::make_unique<tint::Source::File>(
options.input_filename, std::string(data.begin(), data.end()));
- reader =
- std::make_unique<tint::reader::wgsl::Parser>(&ctx, source_file.get());
+ reader = std::make_unique<tint::reader::wgsl::Parser>(source_file.get());
}
#endif // TINT_BUILD_WGSL_READER
@@ -449,7 +446,7 @@
if (!ReadFile<uint32_t>(options.input_filename, &data)) {
return 1;
}
- reader = std::make_unique<tint::reader::spirv::Parser>(&ctx, data);
+ reader = std::make_unique<tint::reader::spirv::Parser>(data);
}
// Handle SPIR-V assembly input, in files ending with .spvasm
if (options.input_filename.size() > 7 &&
@@ -471,7 +468,7 @@
SPV_TEXT_TO_BINARY_OPTION_PRESERVE_NUMERIC_IDS)) {
return 1;
}
- reader = std::make_unique<tint::reader::spirv::Parser>(&ctx, data);
+ reader = std::make_unique<tint::reader::spirv::Parser>(data);
}
#endif // TINT_BUILD_SPV_READER
@@ -490,7 +487,7 @@
return 1;
}
- tint::TypeDeterminer td(&ctx, &mod);
+ tint::TypeDeterminer td(&mod);
if (!td.Determine()) {
std::cerr << "Type Determination: " << td.error() << std::endl;
return 1;
@@ -509,7 +506,7 @@
return 1;
}
- tint::transform::Manager transform_manager(&ctx, &mod);
+ tint::transform::Manager transform_manager;
for (const auto& name : options.transforms) {
// TODO(dsinclair): The vertex pulling transform requires setup code to
// be run that needs user input. Should we find a way to support that here
@@ -518,13 +515,13 @@
if (name == "bound_array_accessors") {
transform_manager.append(
std::make_unique<tint::transform::BoundArrayAccessorsTransform>(
- &ctx, &mod));
+ &mod));
} else {
std::cerr << "Unknown transform name: " << name << std::endl;
return 1;
}
}
- if (!transform_manager.Run()) {
+ if (!transform_manager.Run(&mod)) {
std::cerr << "Transformer: " << transform_manager.error() << std::endl;
return 1;
}
@@ -533,29 +530,25 @@
#if TINT_BUILD_SPV_WRITER
if (options.format == Format::kSpirv || options.format == Format::kSpvAsm) {
- writer =
- std::make_unique<tint::writer::spirv::Generator>(&ctx, std::move(mod));
+ writer = std::make_unique<tint::writer::spirv::Generator>(std::move(mod));
}
#endif // TINT_BUILD_SPV_WRITER
#if TINT_BUILD_WGSL_WRITER
if (options.format == Format::kWgsl) {
- writer =
- std::make_unique<tint::writer::wgsl::Generator>(&ctx, std::move(mod));
+ writer = std::make_unique<tint::writer::wgsl::Generator>(std::move(mod));
}
#endif // TINT_BUILD_WGSL_WRITER
#if TINT_BUILD_MSL_WRITER
if (options.format == Format::kMsl) {
- writer =
- std::make_unique<tint::writer::msl::Generator>(&ctx, std::move(mod));
+ writer = std::make_unique<tint::writer::msl::Generator>(std::move(mod));
}
#endif // TINT_BUILD_MSL_WRITER
#if TINT_BUILD_HLSL_WRITER
if (options.format == Format::kHlsl) {
- writer =
- std::make_unique<tint::writer::hlsl::Generator>(&ctx, std::move(mod));
+ writer = std::make_unique<tint::writer::hlsl::Generator>(std::move(mod));
}
#endif // TINT_BUILD_HLSL_WRITER
diff --git a/src/ast/builder.cc b/src/ast/builder.cc
index cdc6835..9984977 100644
--- a/src/ast/builder.cc
+++ b/src/ast/builder.cc
@@ -25,7 +25,8 @@
void_(mod->create<type::Void>()),
mod_(mod) {}
-Builder::Builder(Context* c, Module* m) : ctx(c), mod(m), ty(m) {}
+Builder::Builder(Module* m) : mod(m), ty(m) {}
+
Builder::~Builder() = default;
Variable* Builder::Var(const std::string& name,
@@ -36,10 +37,9 @@
return var;
}
-BuilderWithContextAndModule::BuilderWithContextAndModule()
- : Builder(new Context(), new Module()) {}
-BuilderWithContextAndModule::~BuilderWithContextAndModule() {
- delete ctx;
+BuilderWithModule::BuilderWithModule() : Builder(new Module()) {}
+
+BuilderWithModule::~BuilderWithModule() {
delete mod;
}
diff --git a/src/ast/builder.h b/src/ast/builder.h
index 7551f92..eaa7ed7 100644
--- a/src/ast/builder.h
+++ b/src/ast/builder.h
@@ -38,7 +38,6 @@
#include "src/ast/type_constructor_expression.h"
#include "src/ast/uint_literal.h"
#include "src/ast/variable.h"
-#include "src/context.h"
namespace tint {
namespace ast {
@@ -186,9 +185,8 @@
using f32 = float;
/// Constructor
- /// @param ctx the context to use in the builder
/// @param mod the module to use in the builder
- explicit Builder(Context* ctx, Module* mod);
+ explicit Builder(Module* mod);
virtual ~Builder();
/// @param expr the expression
@@ -444,8 +442,6 @@
}
/// The builder module
- Context* const ctx;
- /// The builder module
Module* const mod;
/// The builder types
const TypesBuilder ty;
@@ -455,12 +451,11 @@
virtual void OnVariableBuilt(Variable*) {}
};
-/// BuilderWithContextAndModule is a `Builder` that constructs and owns its
-/// `Context` and `Module`.
-class BuilderWithContextAndModule : public Builder {
+/// BuilderWithModule is a `Builder` that constructs and owns its `Module`.
+class BuilderWithModule : public Builder {
public:
- BuilderWithContextAndModule();
- ~BuilderWithContextAndModule() override;
+ BuilderWithModule();
+ ~BuilderWithModule() override;
};
//! @cond Doxygen_Suppress
diff --git a/src/context.cc b/src/context.cc
index 88e69f9..e637879 100644
--- a/src/context.cc
+++ b/src/context.cc
@@ -21,9 +21,9 @@
namespace tint {
-Context::Context() : namer_(std::make_unique<HashingNamer>()) {}
+Context::Context() = default;
-Context::Context(std::unique_ptr<Namer> namer) : namer_(std::move(namer)) {}
+Context::Context(std::unique_ptr<Namer>) {}
Context::~Context() = default;
diff --git a/src/context.h b/src/context.h
index d21fc5b..89a89b3 100644
--- a/src/context.h
+++ b/src/context.h
@@ -41,12 +41,6 @@
explicit Context(std::unique_ptr<Namer> namer);
/// Destructor
~Context();
-
- /// @returns the namer object
- Namer* namer() const { return namer_.get(); }
-
- private:
- std::unique_ptr<Namer> namer_;
};
} // namespace tint
diff --git a/src/inspector/inspector.cc b/src/inspector/inspector.cc
index 9914d85..031723b 100644
--- a/src/inspector/inspector.cc
+++ b/src/inspector/inspector.cc
@@ -43,18 +43,12 @@
namespace tint {
namespace inspector {
-Inspector::Inspector(const ast::Module& module)
- : ctx_(new Context()), context_is_owned_(true), module_(module) {}
+Inspector::Inspector(const ast::Module& module) : module_(module) {}
-Inspector::Inspector(Context* ctx, const ast::Module& module)
- : ctx_(ctx), context_is_owned_(false), module_(module) {
- assert(ctx);
-}
+Inspector::Inspector(Context*, const ast::Module& module)
+ : Inspector(std::move(module)) {}
-Inspector::~Inspector() {
- if (context_is_owned_)
- delete ctx_;
-}
+Inspector::~Inspector() = default;
std::vector<EntryPoint> Inspector::GetEntryPoints() {
std::vector<EntryPoint> result;
@@ -66,7 +60,7 @@
EntryPoint entry_point;
entry_point.name = func->name();
- entry_point.remapped_name = ctx_->namer()->NameFor(func->name());
+ entry_point.remapped_name = func->name();
entry_point.stage = func->pipeline_stage();
std::tie(entry_point.workgroup_size_x, entry_point.workgroup_size_y,
entry_point.workgroup_size_z) = func->workgroup_size();
@@ -93,7 +87,7 @@
// if (!func) {
// return {};
// }
- // return ctx_->namer()->NameFor(entry_point);
+ // return func->name();
return entry_point;
}
diff --git a/src/inspector/inspector.h b/src/inspector/inspector.h
index d14c1df..f1189b0 100644
--- a/src/inspector/inspector.h
+++ b/src/inspector/inspector.h
@@ -72,10 +72,10 @@
class Inspector {
public:
/// Constructor
- /// DEPRECATED
/// @param module Shader module to extract information from.
explicit Inspector(const ast::Module& module);
/// Constructor
+ /// DEPRECATED
/// @param ctx the context, must be non-null
/// @param module Shader module to extract information from.
Inspector(Context* ctx, const ast::Module& module);
@@ -133,8 +133,6 @@
const std::string& entry_point);
private:
- Context* ctx_ = nullptr;
- bool context_is_owned_ = false;
const ast::Module& module_;
std::string error_;
diff --git a/src/inspector/inspector_test.cc b/src/inspector/inspector_test.cc
index f463ba3..34c8796 100644
--- a/src/inspector/inspector_test.cc
+++ b/src/inspector/inspector_test.cc
@@ -59,7 +59,6 @@
#include "src/ast/variable_decl_statement.h"
#include "src/ast/variable_decoration.h"
#include "src/ast/workgroup_decoration.h"
-#include "src/context.h"
#include "src/type_determiner.h"
#include "tint/tint.h"
@@ -70,7 +69,7 @@
class InspectorHelper {
public:
InspectorHelper()
- : td_(std::make_unique<TypeDeterminer>(&ctx_, &mod_)),
+ : td_(std::make_unique<TypeDeterminer>(&mod_)),
inspector_(std::make_unique<Inspector>(mod_)),
sampler_type_(ast::type::SamplerKind::kSampler),
comparison_sampler_type_(ast::type::SamplerKind::kComparisonSampler) {}
@@ -683,7 +682,6 @@
}
private:
- Context ctx_;
ast::Module mod_;
std::unique_ptr<TypeDeterminer> td_;
std::unique_ptr<Inspector> inspector_;
@@ -771,12 +769,14 @@
create<ast::StageDecoration>(ast::PipelineStage::kVertex, Source{}));
mod()->AddFunction(foo);
+ // TODO(dsinclair): Update to run the namer transform when available.
+
auto result = inspector()->GetEntryPoints();
ASSERT_FALSE(inspector()->has_error()) << inspector()->error();
ASSERT_EQ(1u, result.size());
EXPECT_EQ("foo", result[0].name);
- EXPECT_EQ("tint_666f6f", result[0].remapped_name);
+ EXPECT_EQ("foo", result[0].remapped_name);
EXPECT_EQ(ast::PipelineStage::kVertex, result[0].stage);
}
@@ -791,15 +791,17 @@
create<ast::StageDecoration>(ast::PipelineStage::kCompute, Source{}));
mod()->AddFunction(bar);
+ // TODO(dsinclair): Update to run the namer transform when available.
+
auto result = inspector()->GetEntryPoints();
ASSERT_FALSE(inspector()->has_error()) << inspector()->error();
ASSERT_EQ(2u, result.size());
EXPECT_EQ("foo", result[0].name);
- EXPECT_EQ("tint_666f6f", result[0].remapped_name);
+ EXPECT_EQ("foo", result[0].remapped_name);
EXPECT_EQ(ast::PipelineStage::kVertex, result[0].stage);
EXPECT_EQ("bar", result[1].name);
- EXPECT_EQ("tint_626172", result[1].remapped_name);
+ EXPECT_EQ("bar", result[1].remapped_name);
EXPECT_EQ(ast::PipelineStage::kCompute, result[1].stage);
}
@@ -817,15 +819,17 @@
create<ast::StageDecoration>(ast::PipelineStage::kFragment, Source{}));
mod()->AddFunction(bar);
+ // TODO(dsinclair): Update to run the namer transform when available.
+
auto result = inspector()->GetEntryPoints();
EXPECT_FALSE(inspector()->has_error());
ASSERT_EQ(2u, result.size());
EXPECT_EQ("foo", result[0].name);
- EXPECT_EQ("tint_666f6f", result[0].remapped_name);
+ EXPECT_EQ("foo", result[0].remapped_name);
EXPECT_EQ(ast::PipelineStage::kVertex, result[0].stage);
EXPECT_EQ("bar", result[1].name);
- EXPECT_EQ("tint_626172", result[1].remapped_name);
+ EXPECT_EQ("bar", result[1].remapped_name);
EXPECT_EQ(ast::PipelineStage::kFragment, result[1].stage);
}
@@ -1017,20 +1021,22 @@
ASSERT_TRUE(td()->Determine()) << td()->error();
+ // TODO(dsinclair): Update to run the namer transform when available.
+
auto result = inspector()->GetEntryPoints();
ASSERT_FALSE(inspector()->has_error()) << inspector()->error();
ASSERT_EQ(2u, result.size());
ASSERT_EQ("foo", result[0].name);
- ASSERT_EQ("tint_666f6f", result[0].remapped_name);
+ ASSERT_EQ("foo", result[0].remapped_name);
ASSERT_EQ(1u, result[0].input_variables.size());
EXPECT_EQ("in_var", result[0].input_variables[0]);
ASSERT_EQ(1u, result[0].output_variables.size());
EXPECT_EQ("out2_var", result[0].output_variables[0]);
ASSERT_EQ("bar", result[1].name);
- ASSERT_EQ("tint_626172", result[1].remapped_name);
+ ASSERT_EQ("bar", result[1].remapped_name);
ASSERT_EQ(1u, result[1].input_variables.size());
EXPECT_EQ("in2_var", result[1].input_variables[0]);
ASSERT_EQ(1u, result[1].output_variables.size());
@@ -1056,13 +1062,15 @@
ASSERT_TRUE(td()->Determine()) << td()->error();
+ // TODO(dsinclair): Update to run the namer transform when available.
+
auto result = inspector()->GetEntryPoints();
ASSERT_FALSE(inspector()->has_error()) << inspector()->error();
ASSERT_EQ(2u, result.size());
ASSERT_EQ("foo", result[0].name);
- ASSERT_EQ("tint_666f6f", result[0].remapped_name);
+ ASSERT_EQ("foo", result[0].remapped_name);
EXPECT_EQ(2u, result[0].input_variables.size());
EXPECT_TRUE(ContainsString(result[0].input_variables, "in_var"));
EXPECT_TRUE(ContainsString(result[0].input_variables, "in2_var"));
@@ -1071,7 +1079,7 @@
EXPECT_TRUE(ContainsString(result[0].output_variables, "out2_var"));
ASSERT_EQ("bar", result[1].name);
- ASSERT_EQ("tint_626172", result[1].remapped_name);
+ ASSERT_EQ("bar", result[1].remapped_name);
EXPECT_EQ(1u, result[1].input_variables.size());
EXPECT_EQ("in2_var", result[1].input_variables[0]);
EXPECT_EQ(1u, result[1].output_variables.size());
@@ -1106,10 +1114,12 @@
create<ast::StageDecoration>(ast::PipelineStage::kVertex, Source{}));
mod()->AddFunction(foo);
+ // TODO(dsinclair): Update to run the namer transform when available.
+
auto result = inspector()->GetRemappedNameForEntryPoint("foo");
ASSERT_FALSE(inspector()->has_error()) << inspector()->error();
- EXPECT_EQ("tint_666f6f", result);
+ EXPECT_EQ("foo", result);
}
// TODO(rharrison): Reenable once GetRemappedNameForEntryPoint isn't a pass
@@ -1121,6 +1131,8 @@
create<ast::StageDecoration>(ast::PipelineStage::kVertex, Source{}));
mod()->AddFunction(foo);
+ // TODO(dsinclair): Update to run the namer transform when available.
+
auto* bar = MakeEmptyBodyFunction("bar");
bar->add_decoration(
create<ast::StageDecoration>(ast::PipelineStage::kCompute, Source{}));
@@ -1129,12 +1141,12 @@
{
auto result = inspector()->GetRemappedNameForEntryPoint("foo");
ASSERT_FALSE(inspector()->has_error()) << inspector()->error();
- EXPECT_EQ("tint_666f6f", result);
+ EXPECT_EQ("foo", result);
}
{
auto result = inspector()->GetRemappedNameForEntryPoint("bar");
ASSERT_FALSE(inspector()->has_error()) << inspector()->error();
- EXPECT_EQ("tint_626172", result);
+ EXPECT_EQ("bar", result);
}
}
diff --git a/src/reader/reader.cc b/src/reader/reader.cc
index c94f899..6d90273 100644
--- a/src/reader/reader.cc
+++ b/src/reader/reader.cc
@@ -17,7 +17,7 @@
namespace tint {
namespace reader {
-Reader::Reader(Context* ctx) : ctx_(*ctx) {}
+Reader::Reader() = default;
Reader::~Reader() = default;
diff --git a/src/reader/reader.h b/src/reader/reader.h
index 481752f..8fa4c92 100644
--- a/src/reader/reader.h
+++ b/src/reader/reader.h
@@ -19,7 +19,6 @@
#include <utility>
#include "src/ast/module.h"
-#include "src/context.h"
#include "src/diagnostic/diagnostic.h"
#include "src/diagnostic/formatter.h"
@@ -52,16 +51,12 @@
protected:
/// Constructor
- /// @param ctx the context object, must be non-null
- explicit Reader(Context* ctx);
+ Reader();
/// Sets the diagnostic messages
/// @param diags the list of diagnostic messages
void set_diagnostics(const diag::List& diags) { diags_ = diags; }
- /// The Tint context object
- Context& ctx_;
-
/// All diagnostic messages from the reader.
diag::List diags_;
};
diff --git a/src/reader/spirv/parser.cc b/src/reader/spirv/parser.cc
index 23b5acd..751b59d 100644
--- a/src/reader/spirv/parser.cc
+++ b/src/reader/spirv/parser.cc
@@ -20,8 +20,11 @@
namespace reader {
namespace spirv {
-Parser::Parser(Context* ctx, const std::vector<uint32_t>& spv_binary)
- : Reader(ctx), impl_(std::make_unique<ParserImpl>(ctx, spv_binary)) {}
+Parser::Parser(const std::vector<uint32_t>& spv_binary)
+ : Reader(), impl_(std::make_unique<ParserImpl>(spv_binary)) {}
+
+Parser::Parser(Context*, const std::vector<uint32_t>& spv_binary)
+ : Parser(spv_binary) {}
Parser::~Parser() = default;
diff --git a/src/reader/spirv/parser.h b/src/reader/spirv/parser.h
index d4d0974..e2084e2 100644
--- a/src/reader/spirv/parser.h
+++ b/src/reader/spirv/parser.h
@@ -19,6 +19,7 @@
#include <memory>
#include <vector>
+#include "src/context.h"
#include "src/reader/reader.h"
namespace tint {
@@ -31,6 +32,10 @@
class Parser : public Reader {
public:
/// Creates a new parser
+ /// @param input the input data to parse
+ explicit Parser(const std::vector<uint32_t>& input);
+ /// Creates a new parser
+ /// DEPRECATED
/// @param ctx the non-null context object
/// @param input the input data to parse
Parser(Context* ctx, const std::vector<uint32_t>& input);
diff --git a/src/reader/spirv/parser_impl.cc b/src/reader/spirv/parser_impl.cc
index ccdf5c5..b0c01a9 100644
--- a/src/reader/spirv/parser_impl.cc
+++ b/src/reader/spirv/parser_impl.cc
@@ -192,8 +192,8 @@
} // namespace
-ParserImpl::ParserImpl(Context* ctx, const std::vector<uint32_t>& spv_binary)
- : Reader(ctx),
+ParserImpl::ParserImpl(const std::vector<uint32_t>& spv_binary)
+ : Reader(),
spv_binary_(spv_binary),
fail_stream_(&success_, &errors_),
bool_type_(ast_module_.create<ast::type::Bool>()),
diff --git a/src/reader/spirv/parser_impl.h b/src/reader/spirv/parser_impl.h
index 856ecf8..6530d9e 100644
--- a/src/reader/spirv/parser_impl.h
+++ b/src/reader/spirv/parser_impl.h
@@ -86,9 +86,8 @@
class ParserImpl : Reader {
public:
/// Creates a new parser
- /// @param ctx the non-null context object
/// @param input the input data to parse
- ParserImpl(Context* ctx, const std::vector<uint32_t>& input);
+ explicit ParserImpl(const std::vector<uint32_t>& input);
/// Destructor
~ParserImpl() override;
@@ -96,11 +95,6 @@
/// @returns true if the parse was successful, false otherwise.
bool Parse() override;
- /// @returns the Tint context.
- Context& context() {
- return ctx_; // Inherited from Reader
- }
-
/// @returns the module. The module in the parser will be reset after this.
ast::Module module() override;
diff --git a/src/reader/spirv/parser_impl_test_helper.h b/src/reader/spirv/parser_impl_test_helper.h
index 164bfaa..0a915a8 100644
--- a/src/reader/spirv/parser_impl_test_helper.h
+++ b/src/reader/spirv/parser_impl_test_helper.h
@@ -22,7 +22,6 @@
#include "gtest/gtest.h"
#include "source/opt/ir_context.h"
-#include "src/context.h"
#include "src/reader/spirv/parser_impl.h"
namespace tint {
@@ -40,7 +39,7 @@
/// @param input the SPIR-V binary to parse
/// @returns a parser for the given binary
std::unique_ptr<ParserImpl> parser(const std::vector<uint32_t>& input) {
- return std::make_unique<ParserImpl>(&ctx_, input);
+ return std::make_unique<ParserImpl>(input);
}
/// Gets the internal representation of the function with the given ID.
@@ -52,9 +51,6 @@
spvtools::opt::Function* spirv_function(ParserImpl* parser, uint32_t id) {
return parser->ir_context()->GetFunction(id);
}
-
- private:
- Context ctx_;
};
// Use this form when you don't need to template any further.
diff --git a/src/reader/wgsl/parser.cc b/src/reader/wgsl/parser.cc
index 3b41c09..503910b 100644
--- a/src/reader/wgsl/parser.cc
+++ b/src/reader/wgsl/parser.cc
@@ -22,8 +22,10 @@
namespace reader {
namespace wgsl {
-Parser::Parser(Context* ctx, Source::File const* file)
- : Reader(ctx), impl_(std::make_unique<ParserImpl>(ctx, file)) {}
+Parser::Parser(Source::File const* file)
+ : Reader(), impl_(std::make_unique<ParserImpl>(file)) {}
+
+Parser::Parser(Context*, Source::File const* file) : Parser(file) {}
Parser::~Parser() = default;
diff --git a/src/reader/wgsl/parser.h b/src/reader/wgsl/parser.h
index ddff63f..110fafc 100644
--- a/src/reader/wgsl/parser.h
+++ b/src/reader/wgsl/parser.h
@@ -18,6 +18,7 @@
#include <memory>
#include <string>
+#include "src/context.h"
#include "src/reader/reader.h"
#include "src/source.h"
@@ -31,6 +32,10 @@
class Parser : public Reader {
public:
/// Creates a new parser from the given file.
+ /// @param file the input source file to parse
+ explicit Parser(Source::File const* file);
+ /// Creates a new parser from the given file.
+ /// DEPRECATED
/// @param ctx the non-null context object
/// @param file the input source file to parse
Parser(Context* ctx, Source::File const* file);
diff --git a/src/reader/wgsl/parser_impl.cc b/src/reader/wgsl/parser_impl.cc
index fcbba85..0e7e9d7 100644
--- a/src/reader/wgsl/parser_impl.cc
+++ b/src/reader/wgsl/parser_impl.cc
@@ -186,7 +186,7 @@
} // namespace
-ParserImpl::ParserImpl(Context*, Source::File const* file)
+ParserImpl::ParserImpl(Source::File const* file)
: lexer_(std::make_unique<Lexer>(file)) {}
ParserImpl::~ParserImpl() = default;
diff --git a/src/reader/wgsl/parser_impl.h b/src/reader/wgsl/parser_impl.h
index 760a1cd..5ee8fe2 100644
--- a/src/reader/wgsl/parser_impl.h
+++ b/src/reader/wgsl/parser_impl.h
@@ -55,7 +55,6 @@
#include "src/ast/variable.h"
#include "src/ast/variable_decl_statement.h"
#include "src/ast/variable_decoration.h"
-#include "src/context.h"
#include "src/diagnostic/diagnostic.h"
#include "src/diagnostic/formatter.h"
#include "src/reader/wgsl/parser_impl_detail.h"
@@ -231,9 +230,8 @@
};
/// Creates a new parser using the given file
- /// @param ctx the non-null context object
/// @param file the input source file to parse
- ParserImpl(Context* ctx, Source::File const* file);
+ explicit ParserImpl(Source::File const* file);
~ParserImpl();
/// Run the parser
diff --git a/src/reader/wgsl/parser_impl_test_helper.h b/src/reader/wgsl/parser_impl_test_helper.h
index 73d2900..f1bdf3b 100644
--- a/src/reader/wgsl/parser_impl_test_helper.h
+++ b/src/reader/wgsl/parser_impl_test_helper.h
@@ -40,14 +40,13 @@
/// @returns the parser implementation
std::unique_ptr<ParserImpl> parser(const std::string& str) {
auto file = std::make_unique<Source::File>("test.wgsl", str);
- auto impl = std::make_unique<ParserImpl>(&ctx_, file.get());
+ auto impl = std::make_unique<ParserImpl>(file.get());
files_.emplace_back(std::move(file));
return impl;
}
private:
std::vector<std::unique_ptr<Source::File>> files_;
- Context ctx_;
};
/// WGSL Parser test class with param
@@ -63,14 +62,13 @@
/// @returns the parser implementation
std::unique_ptr<ParserImpl> parser(const std::string& str) {
auto file = std::make_unique<Source::File>("test.wgsl", str);
- auto impl = std::make_unique<ParserImpl>(&ctx_, file.get());
+ auto impl = std::make_unique<ParserImpl>(file.get());
files_.emplace_back(std::move(file));
return impl;
}
private:
std::vector<std::unique_ptr<Source::File>> files_;
- Context ctx_;
};
} // namespace wgsl
diff --git a/src/transform/bound_array_accessors_transform.cc b/src/transform/bound_array_accessors_transform.cc
index f1ecc64..e13ecee 100644
--- a/src/transform/bound_array_accessors_transform.cc
+++ b/src/transform/bound_array_accessors_transform.cc
@@ -49,9 +49,12 @@
namespace tint {
namespace transform {
-BoundArrayAccessorsTransform::BoundArrayAccessorsTransform(Context* ctx,
+BoundArrayAccessorsTransform::BoundArrayAccessorsTransform(ast::Module* mod)
+ : Transformer(mod) {}
+
+BoundArrayAccessorsTransform::BoundArrayAccessorsTransform(Context*,
ast::Module* mod)
- : Transformer(ctx, mod) {}
+ : BoundArrayAccessorsTransform(mod) {}
BoundArrayAccessorsTransform::~BoundArrayAccessorsTransform() = default;
diff --git a/src/transform/bound_array_accessors_transform.h b/src/transform/bound_array_accessors_transform.h
index fb20428..5da26b2 100644
--- a/src/transform/bound_array_accessors_transform.h
+++ b/src/transform/bound_array_accessors_transform.h
@@ -35,9 +35,13 @@
class BoundArrayAccessorsTransform : public Transformer {
public:
/// Constructor
+ /// @param mod the module transform
+ explicit BoundArrayAccessorsTransform(ast::Module* mod);
+ /// Constructor
+ /// DEPRECATED
/// @param ctx the Tint context object
/// @param mod the module transform
- explicit BoundArrayAccessorsTransform(Context* ctx, ast::Module* mod);
+ BoundArrayAccessorsTransform(Context* ctx, ast::Module* mod);
~BoundArrayAccessorsTransform() override;
/// Users of Tint should register the transform with transform manager and
diff --git a/src/transform/bound_array_accessors_transform_test.cc b/src/transform/bound_array_accessors_transform_test.cc
index 8df7a7c..e483082 100644
--- a/src/transform/bound_array_accessors_transform_test.cc
+++ b/src/transform/bound_array_accessors_transform_test.cc
@@ -40,7 +40,6 @@
#include "src/ast/uint_literal.h"
#include "src/ast/variable.h"
#include "src/ast/variable_decl_statement.h"
-#include "src/context.h"
#include "src/transform/manager.h"
#include "src/type_determiner.h"
@@ -50,12 +49,10 @@
class BoundArrayAccessorsTest : public testing::Test {
public:
- BoundArrayAccessorsTest() : td_(&ctx_, &mod_) {
- auto transform =
- std::make_unique<BoundArrayAccessorsTransform>(&ctx_, &mod_);
+ BoundArrayAccessorsTest() : td_(&mod_) {
+ auto transform = std::make_unique<BoundArrayAccessorsTransform>(&mod_);
transform_ = transform.get();
- manager_ = std::make_unique<Manager>(&ctx_, &mod_);
- manager_->append(std::move(transform));
+ manager_.append(std::move(transform));
}
ast::BlockStatement* SetupFunctionAndBody() {
@@ -74,7 +71,7 @@
TypeDeterminer* td() { return &td_; }
- Manager* manager() { return manager_.get(); }
+ bool Run() { return manager_.Run(&mod_); }
/// Creates a new `ast::Node` owned by the Module. When the Module is
/// destructed, the `ast::Node` will also be destructed.
@@ -86,11 +83,10 @@
}
private:
- Context ctx_;
ast::Module mod_;
TypeDeterminer td_;
ast::type::Void void_type_;
- std::unique_ptr<Manager> manager_;
+ Manager manager_;
BoundArrayAccessorsTransform* transform_;
ast::BlockStatement* body_ = nullptr;
};
@@ -128,7 +124,7 @@
ASSERT_TRUE(td()->Determine()) << td()->error();
- ASSERT_TRUE(manager()->Run());
+ ASSERT_TRUE(Run());
ASSERT_TRUE(ptr->Is<ast::ArrayAccessorExpression>());
ASSERT_TRUE(ptr->idx_expr()->Is<ast::CallExpression>());
@@ -191,7 +187,7 @@
ASSERT_TRUE(td()->Determine()) << td()->error();
- ASSERT_TRUE(manager()->Run());
+ ASSERT_TRUE(Run());
ASSERT_TRUE(ptr->Is<ast::ArrayAccessorExpression>());
ASSERT_TRUE(ptr->idx_expr()->Is<ast::CallExpression>());
@@ -268,7 +264,7 @@
ASSERT_TRUE(td()->Determine()) << td()->error();
- ASSERT_TRUE(manager()->Run());
+ ASSERT_TRUE(Run());
ASSERT_TRUE(ptr->Is<ast::ArrayAccessorExpression>());
ASSERT_TRUE(ptr->idx_expr()->Is<ast::ConstructorExpression>());
ASSERT_TRUE(ptr->idx_expr()->Is<ast::ScalarConstructorExpression>());
@@ -316,7 +312,7 @@
ASSERT_TRUE(td()->Determine()) << td()->error();
- ASSERT_TRUE(manager()->Run());
+ ASSERT_TRUE(Run());
ASSERT_TRUE(ptr->Is<ast::ArrayAccessorExpression>());
ASSERT_TRUE(ptr->idx_expr()->Is<ast::CallExpression>());
@@ -369,7 +365,7 @@
ASSERT_TRUE(td()->Determine()) << td()->error();
- ASSERT_TRUE(manager()->Run());
+ ASSERT_TRUE(Run());
ASSERT_TRUE(ptr->Is<ast::ArrayAccessorExpression>());
ASSERT_TRUE(ptr->idx_expr()->Is<ast::ConstructorExpression>());
ASSERT_TRUE(ptr->idx_expr()->Is<ast::ScalarConstructorExpression>());
@@ -408,7 +404,7 @@
ASSERT_TRUE(td()->Determine()) << td()->error();
- ASSERT_TRUE(manager()->Run());
+ ASSERT_TRUE(Run());
ASSERT_TRUE(ptr->Is<ast::ArrayAccessorExpression>());
ASSERT_TRUE(ptr->idx_expr()->Is<ast::ConstructorExpression>());
ASSERT_TRUE(ptr->idx_expr()->Is<ast::ScalarConstructorExpression>());
@@ -447,7 +443,7 @@
ASSERT_TRUE(td()->Determine()) << td()->error();
- ASSERT_TRUE(manager()->Run());
+ ASSERT_TRUE(Run());
ASSERT_TRUE(ptr->Is<ast::ArrayAccessorExpression>());
ASSERT_TRUE(ptr->idx_expr()->Is<ast::ConstructorExpression>());
ASSERT_TRUE(ptr->idx_expr()->Is<ast::ScalarConstructorExpression>());
@@ -495,7 +491,7 @@
ASSERT_TRUE(td()->Determine()) << td()->error();
- ASSERT_TRUE(manager()->Run());
+ ASSERT_TRUE(Run());
ASSERT_TRUE(ptr->Is<ast::ArrayAccessorExpression>());
ASSERT_TRUE(ptr->idx_expr()->Is<ast::CallExpression>());
@@ -547,7 +543,7 @@
ASSERT_TRUE(td()->Determine()) << td()->error();
- ASSERT_TRUE(manager()->Run());
+ ASSERT_TRUE(Run());
ASSERT_TRUE(ptr->Is<ast::ArrayAccessorExpression>());
ASSERT_TRUE(ptr->idx_expr()->Is<ast::ConstructorExpression>());
ASSERT_TRUE(ptr->idx_expr()->Is<ast::ScalarConstructorExpression>());
@@ -586,7 +582,7 @@
ASSERT_TRUE(td()->Determine()) << td()->error();
- ASSERT_TRUE(manager()->Run());
+ ASSERT_TRUE(Run());
ASSERT_TRUE(ptr->Is<ast::ArrayAccessorExpression>());
ASSERT_TRUE(ptr->idx_expr()->Is<ast::ConstructorExpression>());
ASSERT_TRUE(ptr->idx_expr()->Is<ast::ScalarConstructorExpression>());
@@ -628,7 +624,7 @@
ASSERT_TRUE(td()->Determine()) << td()->error();
- ASSERT_TRUE(manager()->Run());
+ ASSERT_TRUE(Run());
ASSERT_TRUE(ptr->Is<ast::ArrayAccessorExpression>());
ASSERT_TRUE(ptr->array()->Is<ast::ArrayAccessorExpression>());
@@ -692,7 +688,7 @@
ASSERT_TRUE(td()->Determine()) << td()->error();
- ASSERT_TRUE(manager()->Run());
+ ASSERT_TRUE(Run());
ASSERT_TRUE(ptr->Is<ast::ArrayAccessorExpression>());
ASSERT_TRUE(ptr->array()->Is<ast::ArrayAccessorExpression>());
@@ -771,7 +767,7 @@
ASSERT_TRUE(td()->Determine()) << td()->error();
- ASSERT_TRUE(manager()->Run());
+ ASSERT_TRUE(Run());
ASSERT_TRUE(ptr->Is<ast::ArrayAccessorExpression>());
ASSERT_TRUE(ptr->array()->Is<ast::ArrayAccessorExpression>());
@@ -839,7 +835,7 @@
ASSERT_TRUE(td()->Determine()) << td()->error();
- ASSERT_TRUE(manager()->Run());
+ ASSERT_TRUE(Run());
ASSERT_TRUE(ptr->Is<ast::ArrayAccessorExpression>());
ASSERT_TRUE(ptr->array()->Is<ast::ArrayAccessorExpression>());
@@ -893,7 +889,7 @@
ASSERT_TRUE(td()->Determine()) << td()->error();
- ASSERT_TRUE(manager()->Run());
+ ASSERT_TRUE(Run());
ASSERT_TRUE(ptr->Is<ast::ArrayAccessorExpression>());
ASSERT_TRUE(ptr->array()->Is<ast::ArrayAccessorExpression>());
@@ -948,7 +944,7 @@
ASSERT_TRUE(td()->Determine()) << td()->error();
- ASSERT_TRUE(manager()->Run());
+ ASSERT_TRUE(Run());
ASSERT_TRUE(ptr->Is<ast::ArrayAccessorExpression>());
ASSERT_TRUE(ptr->array()->Is<ast::ArrayAccessorExpression>());
@@ -1003,7 +999,7 @@
ASSERT_TRUE(td()->Determine()) << td()->error();
- ASSERT_TRUE(manager()->Run());
+ ASSERT_TRUE(Run());
ASSERT_TRUE(ptr->Is<ast::ArrayAccessorExpression>());
ASSERT_TRUE(ptr->array()->Is<ast::ArrayAccessorExpression>());
diff --git a/src/transform/manager.cc b/src/transform/manager.cc
index 0cf8a55..8b30c2a 100644
--- a/src/transform/manager.cc
+++ b/src/transform/manager.cc
@@ -19,12 +19,19 @@
namespace tint {
namespace transform {
-Manager::Manager(Context* context, ast::Module* module)
- : context_(context), module_(module) {}
+Manager::Manager() = default;
+
+Manager::Manager(Context*, ast::Module* module) : module_(module) {}
Manager::~Manager() = default;
bool Manager::Run() {
+ return Run(module_);
+}
+
+bool Manager::Run(ast::Module* module) {
+ error_ = "";
+
for (auto& transform : transforms_) {
if (!transform->Run()) {
error_ = transform->error();
@@ -32,10 +39,10 @@
}
}
- if (context_ != nullptr && module_ != nullptr) {
+ if (module != nullptr) {
// The transformed have potentially inserted nodes into the AST, so the type
// determinater needs to be run.
- TypeDeterminer td(context_, module_);
+ TypeDeterminer td(module);
if (!td.Determine()) {
error_ = td.error();
return false;
diff --git a/src/transform/manager.h b/src/transform/manager.h
index 2ce8ca3..c0b3abc 100644
--- a/src/transform/manager.h
+++ b/src/transform/manager.h
@@ -20,6 +20,7 @@
#include <utility>
#include <vector>
+#include "src/context.h"
#include "src/transform/transformer.h"
namespace tint {
@@ -31,6 +32,9 @@
class Manager {
public:
/// Constructor
+ Manager();
+ /// Constructor
+ /// DEPRECATED
/// @param context the tint context
/// @param module the module to transform
Manager(Context* context, ast::Module* module);
@@ -43,6 +47,11 @@
}
/// Runs the transforms
+ /// @param module the module to run the transforms on
+ /// @returns true on success; false otherwise
+ bool Run(ast::Module* module);
+ /// Runs the transforms
+ /// DEPRECATED
/// @returns true on success; false otherwise
bool Run();
@@ -50,9 +59,8 @@
std::string error() const { return error_; }
private:
- Context* context_;
- ast::Module* module_;
std::vector<std::unique_ptr<Transformer>> transforms_;
+ ast::Module* module_ = nullptr;
std::string error_;
};
diff --git a/src/transform/transformer.cc b/src/transform/transformer.cc
index c3b7770..cb48de3 100644
--- a/src/transform/transformer.cc
+++ b/src/transform/transformer.cc
@@ -17,8 +17,7 @@
namespace tint {
namespace transform {
-Transformer::Transformer(Context* ctx, ast::Module* mod)
- : ctx_(ctx), mod_(mod) {}
+Transformer::Transformer(ast::Module* mod) : mod_(mod) {}
Transformer::~Transformer() = default;
diff --git a/src/transform/transformer.h b/src/transform/transformer.h
index d1ec990..60f10aa 100644
--- a/src/transform/transformer.h
+++ b/src/transform/transformer.h
@@ -29,9 +29,8 @@
class Transformer {
public:
/// Constructor
- /// @param ctx the Tint context
/// @param mod the module to transform
- Transformer(Context* ctx, ast::Module* mod);
+ explicit Transformer(ast::Module* mod);
virtual ~Transformer();
/// Users of Tint should register the transform with transform manager and
@@ -53,8 +52,6 @@
return mod_->create<T>(std::forward<ARGS>(args)...);
}
- /// The context
- Context* ctx_ = nullptr;
/// The module
ast::Module* mod_ = nullptr;
/// Any error messages, or blank if no error
diff --git a/src/transform/vertex_pulling_transform.cc b/src/transform/vertex_pulling_transform.cc
index 49b8ba6..588bbfa 100644
--- a/src/transform/vertex_pulling_transform.cc
+++ b/src/transform/vertex_pulling_transform.cc
@@ -52,8 +52,11 @@
} // namespace
-VertexPullingTransform::VertexPullingTransform(Context* ctx, ast::Module* mod)
- : Transformer(ctx, mod) {}
+VertexPullingTransform::VertexPullingTransform(ast::Module* mod)
+ : Transformer(mod) {}
+
+VertexPullingTransform::VertexPullingTransform(Context*, ast::Module* mod)
+ : VertexPullingTransform(mod) {}
VertexPullingTransform::~VertexPullingTransform() = default;
diff --git a/src/transform/vertex_pulling_transform.h b/src/transform/vertex_pulling_transform.h
index ac19f4f..3ce7db9 100644
--- a/src/transform/vertex_pulling_transform.h
+++ b/src/transform/vertex_pulling_transform.h
@@ -25,7 +25,6 @@
#include "src/ast/module.h"
#include "src/ast/statement.h"
#include "src/ast/variable.h"
-#include "src/context.h"
#include "src/transform/transformer.h"
namespace tint {
@@ -147,6 +146,10 @@
class VertexPullingTransform : public Transformer {
public:
/// Constructor
+ /// @param mod the module to convert to vertex pulling
+ explicit VertexPullingTransform(ast::Module* mod);
+ /// Constructor
+ /// DEPRECATED
/// @param ctx the tint context
/// @param mod the module to convert to vertex pulling
VertexPullingTransform(Context* ctx, ast::Module* mod);
diff --git a/src/type_determiner.cc b/src/type_determiner.cc
index 6b46f9e..41e143a 100644
--- a/src/type_determiner.cc
+++ b/src/type_determiner.cc
@@ -58,8 +58,10 @@
namespace tint {
-TypeDeterminer::TypeDeterminer(Context* ctx, ast::Module* mod)
- : ctx_(*ctx), mod_(mod) {}
+TypeDeterminer::TypeDeterminer(ast::Module* mod) : mod_(mod) {}
+
+TypeDeterminer::TypeDeterminer(Context*, ast::Module* mod)
+ : TypeDeterminer(mod) {}
TypeDeterminer::~TypeDeterminer() = default;
diff --git a/src/type_determiner.h b/src/type_determiner.h
index 98e1f23..1632af2 100644
--- a/src/type_determiner.h
+++ b/src/type_determiner.h
@@ -44,6 +44,10 @@
class TypeDeterminer {
public:
/// Constructor
+ /// @param mod the module to update with typing information
+ explicit TypeDeterminer(ast::Module* mod);
+ /// Constructor
+ /// DEPRECATED
/// @param ctx the tint context, must be non-null
/// @param mod the module to update with typing information
TypeDeterminer(Context* ctx, ast::Module* mod);
@@ -128,7 +132,6 @@
bool DetermineMemberAccessor(ast::MemberAccessorExpression* expr);
bool DetermineUnaryOp(ast::UnaryOpExpression* expr);
- Context& ctx_;
ast::Module* mod_;
std::string error_;
ScopeStack<ast::Variable*> variable_stack_;
diff --git a/src/type_determiner_test.cc b/src/type_determiner_test.cc
index 2d240f0..af76cee 100644
--- a/src/type_determiner_test.cc
+++ b/src/type_determiner_test.cc
@@ -84,9 +84,9 @@
void to_str(std::ostream&, size_t) const override {}
};
-class TypeDeterminerHelper : public ast::BuilderWithContextAndModule {
+class TypeDeterminerHelper : public ast::BuilderWithModule {
public:
- TypeDeterminerHelper() : td_(std::make_unique<TypeDeterminer>(ctx, mod)) {}
+ TypeDeterminerHelper() : td_(std::make_unique<TypeDeterminer>(mod)) {}
TypeDeterminer* td() const { return td_.get(); }
diff --git a/src/writer/hlsl/generator.cc b/src/writer/hlsl/generator.cc
index fa76960..437d0d5 100644
--- a/src/writer/hlsl/generator.cc
+++ b/src/writer/hlsl/generator.cc
@@ -22,18 +22,17 @@
Generator::Generator(ast::Module module)
: Text(std::move(module)),
- impl_(std::make_unique<GeneratorImpl>(ctx_, &module_)) {}
+ impl_(std::make_unique<GeneratorImpl>(&module_)) {}
-Generator::Generator(Context* ctx, ast::Module module)
- : Text(ctx, std::move(module)),
- impl_(std::make_unique<GeneratorImpl>(ctx_, &module_)) {}
+Generator::Generator(Context*, ast::Module module)
+ : Generator(std::move(module)) {}
Generator::~Generator() = default;
void Generator::Reset() {
set_error("");
out_ = std::ostringstream();
- impl_ = std::make_unique<GeneratorImpl>(ctx_, &module_);
+ impl_ = std::make_unique<GeneratorImpl>(&module_);
}
bool Generator::Generate() {
diff --git a/src/writer/hlsl/generator.h b/src/writer/hlsl/generator.h
index 93213e6..6f4fa1b 100644
--- a/src/writer/hlsl/generator.h
+++ b/src/writer/hlsl/generator.h
@@ -30,10 +30,10 @@
class Generator : public Text {
public:
/// Constructor
- /// DEPRECATED
/// @param module the module to convert
explicit Generator(ast::Module module);
/// Constructor
+ /// DEPRECATED
/// @param ctx the context, must be non-null
/// @param module the module to convert
Generator(Context* ctx, ast::Module module);
diff --git a/src/writer/hlsl/generator_impl.cc b/src/writer/hlsl/generator_impl.cc
index dc91175..3bde2da 100644
--- a/src/writer/hlsl/generator_impl.cc
+++ b/src/writer/hlsl/generator_impl.cc
@@ -113,10 +113,7 @@
} // namespace
-GeneratorImpl::GeneratorImpl(Context* ctx, ast::Module* module)
- : ctx_(ctx), module_(module) {
- assert(ctx);
-}
+GeneratorImpl::GeneratorImpl(ast::Module* module) : module_(module) {}
GeneratorImpl::~GeneratorImpl() = default;
diff --git a/src/writer/hlsl/generator_impl.h b/src/writer/hlsl/generator_impl.h
index 44b4dd4..6694e26 100644
--- a/src/writer/hlsl/generator_impl.h
+++ b/src/writer/hlsl/generator_impl.h
@@ -41,7 +41,6 @@
#include "src/ast/type/struct_type.h"
#include "src/ast/type_constructor_expression.h"
#include "src/ast/unary_op_expression.h"
-#include "src/context.h"
#include "src/scope_stack.h"
#include "src/writer/hlsl/namer.h"
@@ -53,9 +52,8 @@
class GeneratorImpl {
public:
/// Constructor
- /// @param ctx the context object, must be non-null
/// @param module the module to generate
- GeneratorImpl(Context* ctx, ast::Module* module);
+ explicit GeneratorImpl(ast::Module* module);
~GeneratorImpl();
/// Increment the emitter indent level
@@ -398,7 +396,6 @@
size_t indent_ = 0;
Namer namer_;
- Context* ctx_ = nullptr;
ast::Module* module_ = nullptr;
std::string current_ep_name_;
bool generating_entry_point_ = false;
diff --git a/src/writer/hlsl/generator_impl_intrinsic_texture_test.cc b/src/writer/hlsl/generator_impl_intrinsic_texture_test.cc
index 9da97e1..cd385c4 100644
--- a/src/writer/hlsl/generator_impl_intrinsic_texture_test.cc
+++ b/src/writer/hlsl/generator_impl_intrinsic_texture_test.cc
@@ -141,7 +141,7 @@
} // LINT - Ignore the length of this function
class HlslGeneratorIntrinsicTextureTest
- : public ast::BuilderWithContextAndModule,
+ : public ast::BuilderWithModule,
public testing::TestWithParam<ast::intrinsic::test::TextureOverloadCase> {
protected:
void OnVariableBuilt(ast::Variable* var) override {
@@ -154,9 +154,9 @@
std::string pre_result() const { return pre.str(); }
/// The type determiner
- TypeDeterminer td{ctx, mod};
+ TypeDeterminer td{mod};
/// The generator
- GeneratorImpl gen{ctx, mod};
+ GeneratorImpl gen{mod};
/// The output stream
std::ostringstream out;
/// The pre-output stream
diff --git a/src/writer/hlsl/test_helper.h b/src/writer/hlsl/test_helper.h
index aea3938..7f5386c 100644
--- a/src/writer/hlsl/test_helper.h
+++ b/src/writer/hlsl/test_helper.h
@@ -22,7 +22,6 @@
#include "gtest/gtest.h"
#include "src/ast/module.h"
-#include "src/context.h"
#include "src/type_determiner.h"
#include "src/writer/hlsl/generator_impl.h"
@@ -34,7 +33,7 @@
template <typename BODY>
class TestHelperBase : public BODY {
public:
- TestHelperBase() : td(&ctx, &mod), gen(&ctx, &mod) {}
+ TestHelperBase() : td(&mod), gen(&mod) {}
~TestHelperBase() = default;
/// @returns the result string
@@ -52,8 +51,6 @@
return mod.create<T>(std::forward<ARGS>(args)...);
}
- /// The context
- Context ctx;
/// The module
ast::Module mod;
/// The type determiner
diff --git a/src/writer/msl/generator.cc b/src/writer/msl/generator.cc
index 418735e..5a9e810 100644
--- a/src/writer/msl/generator.cc
+++ b/src/writer/msl/generator.cc
@@ -22,17 +22,16 @@
Generator::Generator(ast::Module module)
: Text(std::move(module)),
- impl_(std::make_unique<GeneratorImpl>(ctx_, &module_)) {}
+ impl_(std::make_unique<GeneratorImpl>(&module_)) {}
-Generator::Generator(Context* ctx, ast::Module module)
- : Text(ctx, std::move(module)),
- impl_(std::make_unique<GeneratorImpl>(ctx_, &module_)) {}
+Generator::Generator(Context*, ast::Module module)
+ : Generator(std::move(module)) {}
Generator::~Generator() = default;
void Generator::Reset() {
set_error("");
- impl_ = std::make_unique<GeneratorImpl>(ctx_, &module_);
+ impl_ = std::make_unique<GeneratorImpl>(&module_);
}
bool Generator::Generate() {
diff --git a/src/writer/msl/generator.h b/src/writer/msl/generator.h
index 19bf085..9675223 100644
--- a/src/writer/msl/generator.h
+++ b/src/writer/msl/generator.h
@@ -29,10 +29,10 @@
class Generator : public Text {
public:
/// Constructor
- /// DEPRECATED
/// @param module the module to convert
explicit Generator(ast::Module module);
/// Constructor
+ /// DEPRECATED
/// @param ctx the context object, must be non-null
/// @param module the module to convert
Generator(Context* ctx, ast::Module module);
diff --git a/src/writer/msl/generator_impl.cc b/src/writer/msl/generator_impl.cc
index 6fa0c6a..003401f 100644
--- a/src/writer/msl/generator_impl.cc
+++ b/src/writer/msl/generator_impl.cc
@@ -95,8 +95,8 @@
} // namespace
-GeneratorImpl::GeneratorImpl(Context* ctx, ast::Module* module)
- : TextGenerator(ctx), module_(module) {}
+GeneratorImpl::GeneratorImpl(ast::Module* module)
+ : TextGenerator(), module_(module) {}
GeneratorImpl::~GeneratorImpl() = default;
diff --git a/src/writer/msl/generator_impl.h b/src/writer/msl/generator_impl.h
index 111ce81..0e4ef7d 100644
--- a/src/writer/msl/generator_impl.h
+++ b/src/writer/msl/generator_impl.h
@@ -54,9 +54,8 @@
class GeneratorImpl : public TextGenerator {
public:
/// Constructor
- /// @param ctx the context, must be non-null
/// @param module the module to generate
- GeneratorImpl(Context* ctx, ast::Module* module);
+ explicit GeneratorImpl(ast::Module* module);
~GeneratorImpl();
/// @returns true on successful generation; false otherwise
diff --git a/src/writer/msl/generator_impl_intrinsic_texture_test.cc b/src/writer/msl/generator_impl_intrinsic_texture_test.cc
index f38e3aa..d3ece25 100644
--- a/src/writer/msl/generator_impl_intrinsic_texture_test.cc
+++ b/src/writer/msl/generator_impl_intrinsic_texture_test.cc
@@ -141,7 +141,7 @@
} // LINT - Ignore the length of this function
class MslGeneratorIntrinsicTextureTest
- : public ast::BuilderWithContextAndModule,
+ : public ast::BuilderWithModule,
public testing::TestWithParam<ast::intrinsic::test::TextureOverloadCase> {
protected:
void OnVariableBuilt(ast::Variable* var) override {
@@ -149,9 +149,9 @@
}
/// The type determiner
- TypeDeterminer td{ctx, mod};
+ TypeDeterminer td{mod};
/// The generator
- GeneratorImpl gen{ctx, mod};
+ GeneratorImpl gen{mod};
};
TEST_P(MslGeneratorIntrinsicTextureTest, Call) {
diff --git a/src/writer/msl/test_helper.h b/src/writer/msl/test_helper.h
index b336a47..853b51a 100644
--- a/src/writer/msl/test_helper.h
+++ b/src/writer/msl/test_helper.h
@@ -20,7 +20,6 @@
#include "gtest/gtest.h"
#include "src/ast/module.h"
-#include "src/context.h"
#include "src/type_determiner.h"
#include "src/writer/msl/generator_impl.h"
@@ -32,7 +31,7 @@
template <typename BASE>
class TestHelperBase : public BASE {
public:
- TestHelperBase() : td(&ctx, &mod), gen(&ctx, &mod) {}
+ TestHelperBase() : td(&mod), gen(&mod) {}
~TestHelperBase() = default;
/// Creates a new `ast::Node` owned by the Module. When the Module is
@@ -44,8 +43,6 @@
return mod.create<T>(std::forward<ARGS>(args)...);
}
- /// The context
- Context ctx;
/// The module
ast::Module mod;
/// The type determiner
diff --git a/src/writer/spirv/builder.cc b/src/writer/spirv/builder.cc
index 14f8398..dd7e1c1 100644
--- a/src/writer/spirv/builder.cc
+++ b/src/writer/spirv/builder.cc
@@ -277,10 +277,9 @@
Builder::AccessorInfo::~AccessorInfo() {}
-Builder::Builder(Context* ctx, ast::Module* mod)
- : ctx_(ctx), mod_(mod), scope_stack_({}) {
- assert(ctx_);
-}
+Builder::Builder(ast::Module* mod) : mod_(mod), scope_stack_({}) {}
+
+Builder::Builder(Context*, ast::Module* mod) : Builder(mod) {}
Builder::~Builder() = default;
@@ -437,7 +436,7 @@
// the inspector and land the same change in MSL / HLSL to all roll into Dawn
// at the same time.
// OperandList operands = {Operand::Int(stage), Operand::Int(id),
- // Operand::String(ctx_.namer()->NameFor(func->name()))};
+ // Operand::String(func->name())};
OperandList operands = {Operand::Int(stage), Operand::Int(id),
Operand::String(func->name())};
@@ -522,8 +521,7 @@
auto func_id = func_op.to_i();
push_debug(spv::Op::OpName,
- {Operand::Int(func_id),
- Operand::String(ctx_->namer()->NameFor(func->name()))});
+ {Operand::Int(func_id), Operand::String(func->name())});
auto ret_id = GenerateTypeIfNeeded(func->return_type());
if (ret_id == 0) {
@@ -548,8 +546,7 @@
}
push_debug(spv::Op::OpName,
- {Operand::Int(param_id),
- Operand::String(ctx_->namer()->NameFor(param->name()))});
+ {Operand::Int(param_id), Operand::String(param->name())});
params.push_back(Instruction{spv::Op::OpFunctionParameter,
{Operand::Int(param_type_id), param_op}});
@@ -640,8 +637,7 @@
}
push_debug(spv::Op::OpName,
- {Operand::Int(var_id),
- Operand::String(ctx_->namer()->NameFor(var->name()))});
+ {Operand::Int(var_id), Operand::String(var->name())});
// TODO(dsinclair) We could detect if the constructor is fully const and emit
// an initializer value for the variable instead of doing the OpLoad.
@@ -689,8 +685,7 @@
return false;
}
push_debug(spv::Op::OpName,
- {Operand::Int(init_id),
- Operand::String(ctx_->namer()->NameFor(var->name()))});
+ {Operand::Int(init_id), Operand::String(var->name())});
scope_stack_.set_global(var->name(), init_id);
spirv_id_to_variable_[init_id] = var;
@@ -711,8 +706,7 @@
}
push_debug(spv::Op::OpName,
- {Operand::Int(var_id),
- Operand::String(ctx_->namer()->NameFor(var->name()))});
+ {Operand::Int(var_id), Operand::String(var->name())});
auto* type = var->type()->UnwrapAll();
@@ -2633,8 +2627,7 @@
if (!struct_type->name().empty()) {
push_debug(spv::Op::OpName,
- {Operand::Int(struct_id),
- Operand::String(ctx_->namer()->NameFor(struct_type->name()))});
+ {Operand::Int(struct_id), Operand::String(struct_type->name())});
}
OperandList ops;
@@ -2675,9 +2668,8 @@
uint32_t Builder::GenerateStructMember(uint32_t struct_id,
uint32_t idx,
ast::StructMember* member) {
- push_debug(spv::Op::OpMemberName,
- {Operand::Int(struct_id), Operand::Int(idx),
- Operand::String(ctx_->namer()->NameFor(member->name()))});
+ push_debug(spv::Op::OpMemberName, {Operand::Int(struct_id), Operand::Int(idx),
+ Operand::String(member->name())});
bool has_layout = false;
for (auto* deco : member->decorations()) {
diff --git a/src/writer/spirv/builder.h b/src/writer/spirv/builder.h
index f32db12..57ca018 100644
--- a/src/writer/spirv/builder.h
+++ b/src/writer/spirv/builder.h
@@ -83,6 +83,10 @@
};
/// Constructor
+ /// @param mod the module to generate from
+ explicit Builder(ast::Module* mod);
+ /// Constructor
+ /// DEPRECATED
/// @param ctx the context, must be non-null
/// @param mod the module to generate from
Builder(Context* ctx, ast::Module* mod);
@@ -495,7 +499,6 @@
return func_name_to_id_[name];
}
- Context* ctx_ = nullptr;
ast::Module* mod_;
std::string error_;
uint32_t next_id_ = 1;
diff --git a/src/writer/spirv/builder_call_test.cc b/src/writer/spirv/builder_call_test.cc
index 67447cf..af7ec5b 100644
--- a/src/writer/spirv/builder_call_test.cc
+++ b/src/writer/spirv/builder_call_test.cc
@@ -74,10 +74,10 @@
ASSERT_TRUE(b.GenerateFunction(&func)) << b.error();
EXPECT_EQ(b.GenerateCallExpression(&expr), 14u) << b.error();
- EXPECT_EQ(DumpBuilder(b), R"(OpName %3 "tint_615f66756e63"
-OpName %4 "tint_61"
-OpName %5 "tint_62"
-OpName %12 "tint_6d61696e"
+ EXPECT_EQ(DumpBuilder(b), R"(OpName %3 "a_func"
+OpName %4 "a"
+OpName %5 "b"
+OpName %12 "main"
%2 = OpTypeFloat 32
%1 = OpTypeFunction %2 %2 %2
%11 = OpTypeVoid
@@ -136,10 +136,10 @@
ASSERT_TRUE(b.GenerateFunction(&func)) << b.error();
EXPECT_TRUE(b.GenerateStatement(&expr)) << b.error();
- EXPECT_EQ(DumpBuilder(b), R"(OpName %4 "tint_615f66756e63"
-OpName %5 "tint_61"
-OpName %6 "tint_62"
-OpName %12 "tint_6d61696e"
+ EXPECT_EQ(DumpBuilder(b), R"(OpName %4 "a_func"
+OpName %5 "a"
+OpName %6 "b"
+OpName %12 "main"
%2 = OpTypeVoid
%3 = OpTypeFloat 32
%1 = OpTypeFunction %2 %3 %3
diff --git a/src/writer/spirv/builder_function_decoration_test.cc b/src/writer/spirv/builder_function_decoration_test.cc
index e7ad94a..179432d 100644
--- a/src/writer/spirv/builder_function_decoration_test.cc
+++ b/src/writer/spirv/builder_function_decoration_test.cc
@@ -110,10 +110,10 @@
mod->AddGlobalVariable(v_wg);
ASSERT_TRUE(b.GenerateFunction(&func)) << b.error();
- EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %1 "tint_6d795f696e"
-OpName %4 "tint_6d795f6f7574"
-OpName %7 "tint_6d795f7767"
-OpName %11 "tint_6d61696e"
+ EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %1 "my_in"
+OpName %4 "my_out"
+OpName %7 "my_wg"
+OpName %11 "main"
)");
EXPECT_EQ(DumpInstructions(b.types()), R"(%3 = OpTypeFloat 32
%2 = OpTypePointer Input %3
@@ -173,10 +173,10 @@
mod->AddGlobalVariable(v_wg);
ASSERT_TRUE(b.GenerateFunction(&func)) << b.error();
- EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %1 "tint_6d795f696e"
-OpName %4 "tint_6d795f6f7574"
-OpName %7 "tint_6d795f7767"
-OpName %11 "tint_6d61696e"
+ EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %1 "my_in"
+OpName %4 "my_out"
+OpName %7 "my_wg"
+OpName %11 "main"
)");
EXPECT_EQ(DumpInstructions(b.types()), R"(%3 = OpTypeFloat 32
%2 = OpTypePointer Input %3
@@ -252,8 +252,8 @@
OpEntryPoint Fragment %5 "main2"
OpExecutionMode %3 OriginUpperLeft
OpExecutionMode %5 OriginUpperLeft
-OpName %3 "tint_6d61696e31"
-OpName %5 "tint_6d61696e32"
+OpName %3 "main1"
+OpName %5 "main2"
%2 = OpTypeVoid
%1 = OpTypeFunction %2
%3 = OpFunction %2 None %1
diff --git a/src/writer/spirv/builder_function_test.cc b/src/writer/spirv/builder_function_test.cc
index 9e195c2..d9fb3c8 100644
--- a/src/writer/spirv/builder_function_test.cc
+++ b/src/writer/spirv/builder_function_test.cc
@@ -52,7 +52,7 @@
ast::Function func("a_func", {}, &void_type, create<ast::BlockStatement>());
ASSERT_TRUE(b.GenerateFunction(&func));
- EXPECT_EQ(DumpBuilder(b), R"(OpName %3 "tint_615f66756e63"
+ EXPECT_EQ(DumpBuilder(b), R"(OpName %3 "a_func"
%2 = OpTypeVoid
%1 = OpTypeFunction %2
%3 = OpFunction %2 None %1
@@ -71,7 +71,7 @@
ast::Function func("a_func", {}, &void_type, body);
ASSERT_TRUE(b.GenerateFunction(&func));
- EXPECT_EQ(DumpBuilder(b), R"(OpName %3 "tint_615f66756e63"
+ EXPECT_EQ(DumpBuilder(b), R"(OpName %3 "a_func"
%2 = OpTypeVoid
%1 = OpTypeFunction %2
%3 = OpFunction %2 None %1
@@ -97,8 +97,8 @@
ASSERT_TRUE(b.GenerateGlobalVariable(var_a)) << b.error();
ASSERT_TRUE(b.GenerateFunction(&func)) << b.error();
- EXPECT_EQ(DumpBuilder(b), R"(OpName %1 "tint_61"
-OpName %7 "tint_615f66756e63"
+ EXPECT_EQ(DumpBuilder(b), R"(OpName %1 "a"
+OpName %7 "a_func"
%3 = OpTypeFloat 32
%2 = OpTypePointer Private %3
%4 = OpConstantNull %3
@@ -122,7 +122,7 @@
ast::Function func("a_func", {}, &void_type, body);
ASSERT_TRUE(b.GenerateFunction(&func));
- EXPECT_EQ(DumpBuilder(b), R"(OpName %3 "tint_615f66756e63"
+ EXPECT_EQ(DumpBuilder(b), R"(OpName %3 "a_func"
%2 = OpTypeVoid
%1 = OpTypeFunction %2
%3 = OpFunction %2 None %1
@@ -155,9 +155,9 @@
EXPECT_TRUE(td.DetermineFunction(&func));
ASSERT_TRUE(b.GenerateFunction(&func));
- EXPECT_EQ(DumpBuilder(b), R"(OpName %4 "tint_615f66756e63"
-OpName %5 "tint_61"
-OpName %6 "tint_62"
+ EXPECT_EQ(DumpBuilder(b), R"(OpName %4 "a_func"
+OpName %5 "a"
+OpName %6 "b"
%2 = OpTypeFloat 32
%3 = OpTypeInt 32 1
%1 = OpTypeFunction %2 %2 %3
@@ -179,7 +179,7 @@
ast::Function func("a_func", {}, &void_type, body);
ASSERT_TRUE(b.GenerateFunction(&func));
- EXPECT_EQ(DumpBuilder(b), R"(OpName %3 "tint_615f66756e63"
+ EXPECT_EQ(DumpBuilder(b), R"(OpName %3 "a_func"
%2 = OpTypeVoid
%1 = OpTypeFunction %2
%3 = OpFunction %2 None %1
@@ -302,13 +302,13 @@
OpEntryPoint GLCompute %17 "b"
OpExecutionMode %7 LocalSize 1 1 1
OpExecutionMode %17 LocalSize 1 1 1
-OpName %3 "tint_44617461"
-OpMemberName %3 0 "tint_64"
-OpName %1 "tint_64617461"
-OpName %7 "tint_61"
-OpName %14 "tint_76"
-OpName %17 "tint_62"
-OpName %21 "tint_76"
+OpName %3 "Data"
+OpMemberName %3 0 "d"
+OpName %1 "data"
+OpName %7 "a"
+OpName %14 "v"
+OpName %17 "b"
+OpName %21 "v"
OpDecorate %3 Block
OpMemberDecorate %3 0 Offset 0
OpDecorate %1 Binding 0
diff --git a/src/writer/spirv/builder_function_variable_test.cc b/src/writer/spirv/builder_function_variable_test.cc
index b28e73b..ebc092f 100644
--- a/src/writer/spirv/builder_function_variable_test.cc
+++ b/src/writer/spirv/builder_function_variable_test.cc
@@ -52,7 +52,7 @@
b.push_function(Function{});
EXPECT_TRUE(b.GenerateFunctionVariable(&v)) << b.error();
- EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %1 "tint_766172"
+ EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %1 "var"
)");
EXPECT_EQ(DumpInstructions(b.types()), R"(%3 = OpTypeFloat 32
%2 = OpTypePointer Function %3
@@ -90,7 +90,7 @@
EXPECT_TRUE(b.GenerateFunctionVariable(&v)) << b.error();
ASSERT_FALSE(b.has_error()) << b.error();
- EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %6 "tint_766172"
+ EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %6 "var"
)");
EXPECT_EQ(DumpInstructions(b.types()), R"(%2 = OpTypeFloat 32
%1 = OpTypeVector %2 3
@@ -135,7 +135,7 @@
EXPECT_TRUE(b.GenerateFunctionVariable(&v)) << b.error();
ASSERT_FALSE(b.has_error()) << b.error();
- EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %7 "tint_766172"
+ EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %7 "var"
)");
EXPECT_EQ(DumpInstructions(b.types()), R"(%2 = OpTypeFloat 32
%1 = OpTypeVector %2 2
@@ -180,8 +180,8 @@
EXPECT_TRUE(b.GenerateFunctionVariable(&v2)) << b.error();
ASSERT_FALSE(b.has_error()) << b.error();
- EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %3 "tint_76"
-OpName %7 "tint_7632"
+ EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %3 "v"
+OpName %7 "v2"
)");
EXPECT_EQ(DumpInstructions(b.types()), R"(%1 = OpTypeFloat 32
%2 = OpConstant %1 1
@@ -226,7 +226,7 @@
EXPECT_TRUE(b.GenerateFunctionVariable(&v2)) << b.error();
ASSERT_FALSE(b.has_error()) << b.error();
- EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %3 "tint_76"
+ EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %3 "v"
)");
EXPECT_EQ(DumpInstructions(b.types()), R"(%1 = OpTypeFloat 32
%2 = OpConstant %1 1
diff --git a/src/writer/spirv/builder_global_variable_test.cc b/src/writer/spirv/builder_global_variable_test.cc
index 0b4782c..da997b1 100644
--- a/src/writer/spirv/builder_global_variable_test.cc
+++ b/src/writer/spirv/builder_global_variable_test.cc
@@ -56,7 +56,7 @@
ast::Variable v("var", ast::StorageClass::kNone, &f32);
EXPECT_TRUE(b.GenerateGlobalVariable(&v)) << b.error();
- EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %1 "tint_766172"
+ EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %1 "var"
)");
EXPECT_EQ(DumpInstructions(b.types()), R"(%3 = OpTypeFloat 32
%2 = OpTypePointer Private %3
@@ -70,7 +70,7 @@
ast::Variable v("var", ast::StorageClass::kOutput, &f32);
EXPECT_TRUE(b.GenerateGlobalVariable(&v)) << b.error();
- EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %1 "tint_766172"
+ EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %1 "var"
)");
EXPECT_EQ(DumpInstructions(b.types()), R"(%3 = OpTypeFloat 32
%2 = OpTypePointer Output %3
@@ -84,7 +84,7 @@
ast::Variable v("var", ast::StorageClass::kInput, &f32);
EXPECT_TRUE(b.GenerateGlobalVariable(&v)) << b.error();
- EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %1 "tint_766172"
+ EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %1 "var"
)");
EXPECT_EQ(DumpInstructions(b.types()), R"(%3 = OpTypeFloat 32
%2 = OpTypePointer Input %3
@@ -115,7 +115,7 @@
EXPECT_TRUE(b.GenerateGlobalVariable(&v)) << b.error();
ASSERT_FALSE(b.has_error()) << b.error();
- EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %6 "tint_766172"
+ EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %6 "var"
)");
EXPECT_EQ(DumpInstructions(b.types()), R"(%2 = OpTypeFloat 32
%1 = OpTypeVector %2 3
@@ -151,7 +151,7 @@
EXPECT_TRUE(b.GenerateGlobalVariable(&v)) << b.error();
ASSERT_FALSE(b.has_error()) << b.error();
- EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %5 "tint_766172"
+ EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %5 "var"
)");
EXPECT_EQ(DumpInstructions(b.types()), R"(%2 = OpTypeFloat 32
%1 = OpTypeVector %2 3
@@ -249,7 +249,7 @@
dv.set_decorations(decos);
EXPECT_TRUE(b.GenerateGlobalVariable(&dv)) << b.error();
- EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %1 "tint_766172"
+ EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %1 "var"
)");
EXPECT_EQ(DumpInstructions(b.annots()), R"(OpDecorate %1 Location 5
)");
@@ -271,7 +271,7 @@
dv.set_decorations(decos);
EXPECT_TRUE(b.GenerateGlobalVariable(&dv)) << b.error();
- EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %1 "tint_766172"
+ EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %1 "var"
)");
EXPECT_EQ(DumpInstructions(b.annots()), R"(OpDecorate %1 Binding 2
OpDecorate %1 DescriptorSet 3
@@ -294,7 +294,7 @@
dv.set_decorations(decos);
EXPECT_TRUE(b.GenerateGlobalVariable(&dv)) << b.error();
- EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %1 "tint_766172"
+ EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %1 "var"
)");
EXPECT_EQ(DumpInstructions(b.annots()), R"(OpDecorate %1 BuiltIn Position
)");
@@ -318,7 +318,7 @@
create<ast::BoolLiteral>(&bool_type, true)));
EXPECT_TRUE(b.GenerateGlobalVariable(&v)) << b.error();
- EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %3 "tint_766172"
+ EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %3 "var"
)");
EXPECT_EQ(DumpInstructions(b.annots()), R"(OpDecorate %2 SpecId 1200
)");
@@ -340,7 +340,7 @@
v.set_decorations(decos);
EXPECT_TRUE(b.GenerateGlobalVariable(&v)) << b.error();
- EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %1 "tint_766172"
+ EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %1 "var"
)");
EXPECT_EQ(DumpInstructions(b.annots()), R"(OpDecorate %4 SpecId 1200
)");
@@ -364,7 +364,7 @@
create<ast::FloatLiteral>(&f32, 2.0)));
EXPECT_TRUE(b.GenerateGlobalVariable(&v)) << b.error();
- EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %3 "tint_766172"
+ EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %3 "var"
)");
EXPECT_EQ(DumpInstructions(b.annots()), R"(OpDecorate %2 SpecId 0
)");
@@ -386,7 +386,7 @@
v.set_decorations(decos);
EXPECT_TRUE(b.GenerateGlobalVariable(&v)) << b.error();
- EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %1 "tint_766172"
+ EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %1 "var"
)");
EXPECT_EQ(DumpInstructions(b.annots()), R"(OpDecorate %4 SpecId 0
)");
@@ -408,7 +408,7 @@
v.set_decorations(decos);
EXPECT_TRUE(b.GenerateGlobalVariable(&v)) << b.error();
- EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %1 "tint_766172"
+ EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %1 "var"
)");
EXPECT_EQ(DumpInstructions(b.annots()), R"(OpDecorate %4 SpecId 0
)");
@@ -430,7 +430,7 @@
v.set_decorations(decos);
EXPECT_TRUE(b.GenerateGlobalVariable(&v)) << b.error();
- EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %1 "tint_766172"
+ EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %1 "var"
)");
EXPECT_EQ(DumpInstructions(b.annots()), R"(OpDecorate %4 SpecId 0
)");
@@ -498,10 +498,10 @@
EXPECT_EQ(DumpInstructions(b.annots()), R"(OpMemberDecorate %3 0 NonWritable
OpMemberDecorate %3 1 NonWritable
)");
- EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %3 "tint_41"
-OpMemberName %3 0 "tint_61"
-OpMemberName %3 1 "tint_62"
-OpName %1 "tint_62"
+ EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %3 "A"
+OpMemberName %3 0 "a"
+OpMemberName %3 1 "b"
+OpName %1 "b"
)");
EXPECT_EQ(DumpInstructions(b.types()), R"(%4 = OpTypeInt 32 1
%3 = OpTypeStruct %4 %4
@@ -533,9 +533,9 @@
EXPECT_EQ(DumpInstructions(b.annots()), R"(OpMemberDecorate %3 0 NonWritable
)");
- EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %3 "tint_41"
-OpMemberName %3 0 "tint_61"
-OpName %1 "tint_62"
+ EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %3 "A"
+OpMemberName %3 0 "a"
+OpName %1 "b"
)");
EXPECT_EQ(DumpInstructions(b.types()), R"(%4 = OpTypeInt 32 1
%3 = OpTypeStruct %4
@@ -567,9 +567,9 @@
EXPECT_EQ(DumpInstructions(b.annots()), R"(OpMemberDecorate %3 0 NonWritable
)");
- EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %3 "tint_41"
-OpMemberName %3 0 "tint_61"
-OpName %1 "tint_62"
+ EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %3 "A"
+OpMemberName %3 0 "a"
+OpName %1 "b"
)");
EXPECT_EQ(DumpInstructions(b.types()), R"(%4 = OpTypeInt 32 1
%3 = OpTypeStruct %4
@@ -603,12 +603,12 @@
EXPECT_EQ(DumpInstructions(b.annots()), R"(OpMemberDecorate %3 0 NonWritable
)");
- EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %3 "tint_41"
-OpMemberName %3 0 "tint_61"
-OpName %1 "tint_62"
-OpName %7 "tint_41"
-OpMemberName %7 0 "tint_61"
-OpName %5 "tint_63"
+ EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %3 "A"
+OpMemberName %3 0 "a"
+OpName %1 "b"
+OpName %7 "A"
+OpMemberName %7 0 "a"
+OpName %5 "c"
)");
EXPECT_EQ(DumpInstructions(b.types()), R"(%4 = OpTypeInt 32 1
%3 = OpTypeStruct %4
diff --git a/src/writer/spirv/builder_ident_expression_test.cc b/src/writer/spirv/builder_ident_expression_test.cc
index 7be7907..dd6b7e4 100644
--- a/src/writer/spirv/builder_ident_expression_test.cc
+++ b/src/writer/spirv/builder_ident_expression_test.cc
@@ -84,7 +84,7 @@
b.push_function(Function{});
EXPECT_TRUE(b.GenerateGlobalVariable(&v)) << b.error();
- EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %1 "tint_766172"
+ EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %1 "var"
)");
EXPECT_EQ(DumpInstructions(b.types()), R"(%3 = OpTypeFloat 32
%2 = OpTypePointer Output %3
@@ -141,7 +141,7 @@
b.push_function(Function{});
EXPECT_TRUE(b.GenerateFunctionVariable(&v)) << b.error();
- EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %1 "tint_766172"
+ EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %1 "var"
)");
EXPECT_EQ(DumpInstructions(b.types()), R"(%3 = OpTypeFloat 32
%2 = OpTypePointer Function %3
diff --git a/src/writer/spirv/builder_intrinsic_test.cc b/src/writer/spirv/builder_intrinsic_test.cc
index 2f9c33d..37f18a9 100644
--- a/src/writer/spirv/builder_intrinsic_test.cc
+++ b/src/writer/spirv/builder_intrinsic_test.cc
@@ -52,15 +52,15 @@
namespace spirv {
namespace {
-class IntrinsicBuilderTest : public ast::BuilderWithContextAndModule,
+class IntrinsicBuilderTest : public ast::BuilderWithModule,
public testing::Test {
protected:
void OnVariableBuilt(ast::Variable* var) override {
td.RegisterVariableForTesting(var);
}
- TypeDeterminer td{ctx, mod};
- spirv::Builder b{ctx, mod};
+ TypeDeterminer td{mod};
+ spirv::Builder b{mod};
};
template <typename T>
@@ -646,8 +646,8 @@
EXPECT_EQ(b.GenerateCallExpression(&expr), 9u) << b.error();
EXPECT_EQ(DumpBuilder(b), R"(%10 = OpExtInstImport "GLSL.std.450"
-OpName %1 "tint_6964656e74"
-OpName %7 "tint_615f66756e63"
+OpName %1 "ident"
+OpName %7 "a_func"
%3 = OpTypeFloat 32
%2 = OpTypePointer Private %3
%4 = OpConstantNull %3
@@ -677,7 +677,7 @@
EXPECT_EQ(b.GenerateCallExpression(&expr), 5u) << b.error();
EXPECT_EQ(DumpBuilder(b), R"(%7 = OpExtInstImport "GLSL.std.450"
-OpName %3 "tint_615f66756e63"
+OpName %3 "a_func"
%2 = OpTypeVoid
%1 = OpTypeFunction %2
%6 = OpTypeFloat 32
@@ -703,7 +703,7 @@
EXPECT_EQ(b.GenerateCallExpression(&expr), 5u) << b.error();
EXPECT_EQ(DumpBuilder(b), R"(%8 = OpExtInstImport "GLSL.std.450"
-OpName %3 "tint_615f66756e63"
+OpName %3 "a_func"
%2 = OpTypeVoid
%1 = OpTypeFunction %2
%7 = OpTypeFloat 32
@@ -755,7 +755,7 @@
EXPECT_EQ(b.GenerateCallExpression(&expr), 5u) << b.error();
EXPECT_EQ(DumpBuilder(b), R"(%7 = OpExtInstImport "GLSL.std.450"
-OpName %3 "tint_615f66756e63"
+OpName %3 "a_func"
%2 = OpTypeVoid
%1 = OpTypeFunction %2
%6 = OpTypeFloat 32
@@ -778,7 +778,7 @@
EXPECT_EQ(b.GenerateCallExpression(&expr), 5u) << b.error();
EXPECT_EQ(DumpBuilder(b), R"(%7 = OpExtInstImport "GLSL.std.450"
-OpName %3 "tint_615f66756e63"
+OpName %3 "a_func"
%2 = OpTypeVoid
%1 = OpTypeFunction %2
%6 = OpTypeFloat 32
@@ -803,7 +803,7 @@
EXPECT_EQ(b.GenerateCallExpression(&expr), 5u) << b.error();
EXPECT_EQ(DumpBuilder(b), R"(%8 = OpExtInstImport "GLSL.std.450"
-OpName %3 "tint_615f66756e63"
+OpName %3 "a_func"
%2 = OpTypeVoid
%1 = OpTypeFunction %2
%7 = OpTypeFloat 32
@@ -833,7 +833,7 @@
EXPECT_EQ(b.GenerateCallExpression(&expr), 5u) << b.error();
EXPECT_EQ(DumpBuilder(b), R"(%7 = OpExtInstImport "GLSL.std.450"
-OpName %3 "tint_615f66756e63"
+OpName %3 "a_func"
%2 = OpTypeVoid
%1 = OpTypeFunction %2
%6 = OpTypeFloat 32
@@ -860,7 +860,7 @@
EXPECT_EQ(b.GenerateCallExpression(&expr), 5u) << b.error();
EXPECT_EQ(DumpBuilder(b), R"(%8 = OpExtInstImport "GLSL.std.450"
-OpName %3 "tint_615f66756e63"
+OpName %3 "a_func"
%2 = OpTypeVoid
%1 = OpTypeFunction %2
%7 = OpTypeFloat 32
@@ -895,7 +895,7 @@
EXPECT_EQ(b.GenerateCallExpression(&expr), 5u) << b.error();
EXPECT_EQ(DumpBuilder(b), R"(%7 = OpExtInstImport "GLSL.std.450"
-OpName %3 "tint_615f66756e63"
+OpName %3 "a_func"
%2 = OpTypeVoid
%1 = OpTypeFunction %2
%6 = OpTypeFloat 32
@@ -919,7 +919,7 @@
EXPECT_EQ(b.GenerateCallExpression(&expr), 5u) << b.error();
EXPECT_EQ(DumpBuilder(b), R"(%7 = OpExtInstImport "GLSL.std.450"
-OpName %3 "tint_615f66756e63"
+OpName %3 "a_func"
%2 = OpTypeVoid
%1 = OpTypeFunction %2
%6 = OpTypeFloat 32
@@ -946,7 +946,7 @@
EXPECT_EQ(b.GenerateCallExpression(&expr), 5u) << b.error();
EXPECT_EQ(DumpBuilder(b), R"(%8 = OpExtInstImport "GLSL.std.450"
-OpName %3 "tint_615f66756e63"
+OpName %3 "a_func"
%2 = OpTypeVoid
%1 = OpTypeFunction %2
%7 = OpTypeFloat 32
@@ -975,7 +975,7 @@
EXPECT_EQ(b.GenerateCallExpression(&expr), 5u) << b.error();
EXPECT_EQ(DumpBuilder(b), R"(%7 = OpExtInstImport "GLSL.std.450"
-OpName %3 "tint_615f66756e63"
+OpName %3 "a_func"
%2 = OpTypeVoid
%1 = OpTypeFunction %2
%6 = OpTypeFloat 32
@@ -1003,7 +1003,7 @@
EXPECT_EQ(b.GenerateCallExpression(&expr), 5u) << b.error();
EXPECT_EQ(DumpBuilder(b), R"(%8 = OpExtInstImport "GLSL.std.450"
-OpName %3 "tint_615f66756e63"
+OpName %3 "a_func"
%2 = OpTypeVoid
%1 = OpTypeFunction %2
%7 = OpTypeFloat 32
@@ -1042,7 +1042,7 @@
EXPECT_EQ(b.GenerateCallExpression(&expr), 5u) << b.error();
EXPECT_EQ(DumpBuilder(b), R"(%7 = OpExtInstImport "GLSL.std.450"
-OpName %3 "tint_615f66756e63"
+OpName %3 "a_func"
%2 = OpTypeVoid
%1 = OpTypeFunction %2
%6 = OpTypeInt 32 1
@@ -1068,7 +1068,7 @@
EXPECT_EQ(b.GenerateCallExpression(&expr), 5u) << b.error();
EXPECT_EQ(DumpBuilder(b), R"(%8 = OpExtInstImport "GLSL.std.450"
-OpName %3 "tint_615f66756e63"
+OpName %3 "a_func"
%2 = OpTypeVoid
%1 = OpTypeFunction %2
%7 = OpTypeInt 32 1
@@ -1101,7 +1101,7 @@
EXPECT_EQ(b.GenerateCallExpression(&expr), 5u) << b.error();
EXPECT_EQ(DumpBuilder(b), R"(%7 = OpExtInstImport "GLSL.std.450"
-OpName %3 "tint_615f66756e63"
+OpName %3 "a_func"
%2 = OpTypeVoid
%1 = OpTypeFunction %2
%6 = OpTypeInt 32 0
@@ -1127,7 +1127,7 @@
EXPECT_EQ(b.GenerateCallExpression(&expr), 5u) << b.error();
EXPECT_EQ(DumpBuilder(b), R"(%8 = OpExtInstImport "GLSL.std.450"
-OpName %3 "tint_615f66756e63"
+OpName %3 "a_func"
%2 = OpTypeVoid
%1 = OpTypeFunction %2
%7 = OpTypeInt 32 0
@@ -1160,7 +1160,7 @@
EXPECT_EQ(b.GenerateCallExpression(&expr), 5u) << b.error();
EXPECT_EQ(DumpBuilder(b), R"(%7 = OpExtInstImport "GLSL.std.450"
-OpName %3 "tint_615f66756e63"
+OpName %3 "a_func"
%2 = OpTypeVoid
%1 = OpTypeFunction %2
%6 = OpTypeInt 32 1
@@ -1186,7 +1186,7 @@
EXPECT_EQ(b.GenerateCallExpression(&expr), 5u) << b.error();
EXPECT_EQ(DumpBuilder(b), R"(%8 = OpExtInstImport "GLSL.std.450"
-OpName %3 "tint_615f66756e63"
+OpName %3 "a_func"
%2 = OpTypeVoid
%1 = OpTypeFunction %2
%7 = OpTypeInt 32 1
@@ -1220,7 +1220,7 @@
EXPECT_EQ(b.GenerateCallExpression(&expr), 5u) << b.error();
EXPECT_EQ(DumpBuilder(b), R"(%7 = OpExtInstImport "GLSL.std.450"
-OpName %3 "tint_615f66756e63"
+OpName %3 "a_func"
%2 = OpTypeVoid
%1 = OpTypeFunction %2
%6 = OpTypeInt 32 0
@@ -1246,7 +1246,7 @@
EXPECT_EQ(b.GenerateCallExpression(&expr), 5u) << b.error();
EXPECT_EQ(DumpBuilder(b), R"(%8 = OpExtInstImport "GLSL.std.450"
-OpName %3 "tint_615f66756e63"
+OpName %3 "a_func"
%2 = OpTypeVoid
%1 = OpTypeFunction %2
%7 = OpTypeInt 32 0
@@ -1280,7 +1280,7 @@
EXPECT_EQ(b.GenerateCallExpression(&expr), 5u) << b.error();
EXPECT_EQ(DumpBuilder(b), R"(%7 = OpExtInstImport "GLSL.std.450"
-OpName %3 "tint_615f66756e63"
+OpName %3 "a_func"
%2 = OpTypeVoid
%1 = OpTypeFunction %2
%6 = OpTypeInt 32 1
@@ -1308,7 +1308,7 @@
EXPECT_EQ(b.GenerateCallExpression(&expr), 5u) << b.error();
EXPECT_EQ(DumpBuilder(b), R"(%8 = OpExtInstImport "GLSL.std.450"
-OpName %3 "tint_615f66756e63"
+OpName %3 "a_func"
%2 = OpTypeVoid
%1 = OpTypeFunction %2
%7 = OpTypeInt 32 1
@@ -1341,7 +1341,7 @@
EXPECT_EQ(b.GenerateCallExpression(&expr), 5u) << b.error();
EXPECT_EQ(DumpBuilder(b), R"(%7 = OpExtInstImport "GLSL.std.450"
-OpName %3 "tint_615f66756e63"
+OpName %3 "a_func"
%2 = OpTypeVoid
%1 = OpTypeFunction %2
%6 = OpTypeInt 32 0
@@ -1369,7 +1369,7 @@
EXPECT_EQ(b.GenerateCallExpression(&expr), 5u) << b.error();
EXPECT_EQ(DumpBuilder(b), R"(%8 = OpExtInstImport "GLSL.std.450"
-OpName %3 "tint_615f66756e63"
+OpName %3 "a_func"
%2 = OpTypeVoid
%1 = OpTypeFunction %2
%7 = OpTypeInt 32 0
@@ -1402,8 +1402,8 @@
EXPECT_EQ(b.GenerateCallExpression(&expr), 11u) << b.error();
EXPECT_EQ(DumpBuilder(b), R"(%12 = OpExtInstImport "GLSL.std.450"
-OpName %3 "tint_615f66756e63"
-OpName %5 "tint_766172"
+OpName %3 "a_func"
+OpName %5 "var"
%2 = OpTypeVoid
%1 = OpTypeFunction %2
%9 = OpTypeFloat 32
diff --git a/src/writer/spirv/builder_intrinsic_texture_test.cc b/src/writer/spirv/builder_intrinsic_texture_test.cc
index f5c8c06..c065cfc 100644
--- a/src/writer/spirv/builder_intrinsic_texture_test.cc
+++ b/src/writer/spirv/builder_intrinsic_texture_test.cc
@@ -1491,15 +1491,15 @@
} // NOLINT - Ignore the length of this function
class IntrinsicTextureTest
- : public ast::BuilderWithContextAndModule,
+ : public ast::BuilderWithModule,
public testing::TestWithParam<ast::intrinsic::test::TextureOverloadCase> {
protected:
void OnVariableBuilt(ast::Variable* var) override {
td.RegisterVariableForTesting(var);
}
- TypeDeterminer td{ctx, mod};
- spirv::Builder b{ctx, mod};
+ TypeDeterminer td{mod};
+ spirv::Builder b{mod};
};
INSTANTIATE_TEST_SUITE_P(
diff --git a/src/writer/spirv/builder_switch_test.cc b/src/writer/spirv/builder_switch_test.cc
index 25158f3..fb99a2a 100644
--- a/src/writer/spirv/builder_switch_test.cc
+++ b/src/writer/spirv/builder_switch_test.cc
@@ -116,9 +116,9 @@
EXPECT_TRUE(b.GenerateSwitchStatement(&expr)) << b.error();
- EXPECT_EQ(DumpBuilder(b), R"(OpName %1 "tint_76"
-OpName %5 "tint_61"
-OpName %7 "tint_615f66756e63"
+ EXPECT_EQ(DumpBuilder(b), R"(OpName %1 "v"
+OpName %5 "a"
+OpName %7 "a_func"
%3 = OpTypeInt 32 1
%2 = OpTypePointer Private %3
%4 = OpConstantNull %3
@@ -180,9 +180,9 @@
EXPECT_TRUE(b.GenerateSwitchStatement(&expr)) << b.error();
- EXPECT_EQ(DumpBuilder(b), R"(OpName %1 "tint_76"
-OpName %5 "tint_61"
-OpName %7 "tint_615f66756e63"
+ EXPECT_EQ(DumpBuilder(b), R"(OpName %1 "v"
+OpName %5 "a"
+OpName %7 "a_func"
%3 = OpTypeInt 32 1
%2 = OpTypePointer Private %3
%4 = OpConstantNull %3
@@ -263,9 +263,9 @@
EXPECT_TRUE(b.GenerateSwitchStatement(&expr)) << b.error();
- EXPECT_EQ(DumpBuilder(b), R"(OpName %1 "tint_76"
-OpName %5 "tint_61"
-OpName %7 "tint_615f66756e63"
+ EXPECT_EQ(DumpBuilder(b), R"(OpName %1 "v"
+OpName %5 "a"
+OpName %7 "a_func"
%3 = OpTypeInt 32 1
%2 = OpTypePointer Private %3
%4 = OpConstantNull %3
@@ -355,9 +355,9 @@
EXPECT_TRUE(b.GenerateSwitchStatement(&expr)) << b.error();
- EXPECT_EQ(DumpBuilder(b), R"(OpName %1 "tint_76"
-OpName %5 "tint_61"
-OpName %7 "tint_615f66756e63"
+ EXPECT_EQ(DumpBuilder(b), R"(OpName %1 "v"
+OpName %5 "a"
+OpName %7 "a_func"
%3 = OpTypeInt 32 1
%2 = OpTypePointer Private %3
%4 = OpConstantNull %3
@@ -477,9 +477,9 @@
EXPECT_TRUE(b.GenerateSwitchStatement(&expr)) << b.error();
- EXPECT_EQ(DumpBuilder(b), R"(OpName %1 "tint_76"
-OpName %5 "tint_61"
-OpName %7 "tint_615f66756e63"
+ EXPECT_EQ(DumpBuilder(b), R"(OpName %1 "v"
+OpName %5 "a"
+OpName %7 "a_func"
%3 = OpTypeInt 32 1
%2 = OpTypePointer Private %3
%4 = OpConstantNull %3
diff --git a/src/writer/spirv/builder_type_test.cc b/src/writer/spirv/builder_type_test.cc
index 219fbe1..0a1c200 100644
--- a/src/writer/spirv/builder_type_test.cc
+++ b/src/writer/spirv/builder_type_test.cc
@@ -287,7 +287,7 @@
EXPECT_EQ(id, 1u);
EXPECT_EQ(b.types().size(), 1u);
- EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %1 "tint_53"
+ EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %1 "S"
)");
EXPECT_EQ(DumpInstructions(b.types()), R"(%1 = OpTypeStruct
)");
@@ -310,8 +310,8 @@
EXPECT_EQ(DumpInstructions(b.types()), R"(%2 = OpTypeFloat 32
%1 = OpTypeStruct %2
)");
- EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %1 "tint_6d795f737472756374"
-OpMemberName %1 0 "tint_61"
+ EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %1 "my_struct"
+OpMemberName %1 0 "a"
)");
}
@@ -335,8 +335,8 @@
EXPECT_EQ(DumpInstructions(b.types()), R"(%2 = OpTypeFloat 32
%1 = OpTypeStruct %2
)");
- EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %1 "tint_6d795f737472756374"
-OpMemberName %1 0 "tint_61"
+ EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %1 "my_struct"
+OpMemberName %1 0 "a"
)");
EXPECT_EQ(DumpInstructions(b.annots()), R"(OpDecorate %1 Block
)");
@@ -364,9 +364,9 @@
EXPECT_EQ(DumpInstructions(b.types()), R"(%2 = OpTypeFloat 32
%1 = OpTypeStruct %2 %2
)");
- EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %1 "tint_53"
-OpMemberName %1 0 "tint_61"
-OpMemberName %1 1 "tint_62"
+ EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %1 "S"
+OpMemberName %1 0 "a"
+OpMemberName %1 1 "b"
)");
EXPECT_EQ(DumpInstructions(b.annots()), R"(OpMemberDecorate %1 0 Offset 0
OpMemberDecorate %1 1 Offset 8
@@ -404,10 +404,10 @@
%7 = OpTypeMatrix %8 4
%1 = OpTypeStruct %2 %5 %7
)");
- EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %1 "tint_53"
-OpMemberName %1 0 "tint_61"
-OpMemberName %1 1 "tint_62"
-OpMemberName %1 2 "tint_63"
+ EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %1 "S"
+OpMemberName %1 0 "a"
+OpMemberName %1 1 "b"
+OpMemberName %1 2 "c"
)");
EXPECT_EQ(DumpInstructions(b.annots()), "");
}
@@ -447,10 +447,10 @@
%7 = OpTypeMatrix %8 4
%1 = OpTypeStruct %2 %5 %7
)");
- EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %1 "tint_53"
-OpMemberName %1 0 "tint_61"
-OpMemberName %1 1 "tint_62"
-OpMemberName %1 2 "tint_63"
+ EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %1 "S"
+OpMemberName %1 0 "a"
+OpMemberName %1 1 "b"
+OpMemberName %1 2 "c"
)");
EXPECT_EQ(DumpInstructions(b.annots()), R"(OpMemberDecorate %1 0 Offset 0
OpMemberDecorate %1 0 ColMajor
@@ -508,10 +508,10 @@
%7 = OpTypeMatrix %8 4
%1 = OpTypeStruct %2 %5 %7
)");
- EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %1 "tint_53"
-OpMemberName %1 0 "tint_61"
-OpMemberName %1 1 "tint_62"
-OpMemberName %1 2 "tint_63"
+ EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %1 "S"
+OpMemberName %1 0 "a"
+OpMemberName %1 1 "b"
+OpMemberName %1 2 "c"
)");
EXPECT_EQ(DumpInstructions(b.annots()), R"(OpMemberDecorate %1 0 Offset 0
OpMemberDecorate %1 0 ColMajor
diff --git a/src/writer/spirv/generator.cc b/src/writer/spirv/generator.cc
index 495ddd0..1fac75e 100644
--- a/src/writer/spirv/generator.cc
+++ b/src/writer/spirv/generator.cc
@@ -22,18 +22,16 @@
Generator::Generator(ast::Module module)
: writer::Writer(std::move(module)),
- builder_(std::make_unique<Builder>(ctx_, &module_)),
+ builder_(std::make_unique<Builder>(&module_)),
writer_(std::make_unique<BinaryWriter>()) {}
-Generator::Generator(Context* ctx, ast::Module module)
- : writer::Writer(ctx, std::move(module)),
- builder_(std::make_unique<Builder>(ctx, &module_)),
- writer_(std::make_unique<BinaryWriter>()) {}
+Generator::Generator(Context*, ast::Module module)
+ : Generator(std::move(module)) {}
Generator::~Generator() = default;
void Generator::Reset() {
- builder_ = std::make_unique<Builder>(ctx_, &module_);
+ builder_ = std::make_unique<Builder>(&module_);
writer_ = std::make_unique<BinaryWriter>();
}
diff --git a/src/writer/spirv/generator.h b/src/writer/spirv/generator.h
index 9687969..97825eb 100644
--- a/src/writer/spirv/generator.h
+++ b/src/writer/spirv/generator.h
@@ -32,10 +32,10 @@
class Generator : public writer::Writer {
public:
/// Constructor
- /// DEPRECATED
/// @param module the module to convert
explicit Generator(ast::Module module);
/// Constructor
+ /// DEPRECATED
/// @param ctx the context, must be non-null
/// @param module the module to convert
Generator(Context* ctx, ast::Module module);
diff --git a/src/writer/spirv/test_helper.h b/src/writer/spirv/test_helper.h
index c8194b4..cbc3d0e 100644
--- a/src/writer/spirv/test_helper.h
+++ b/src/writer/spirv/test_helper.h
@@ -21,7 +21,6 @@
#include "gtest/gtest.h"
#include "src/ast/builder.h"
#include "src/ast/module.h"
-#include "src/context.h"
#include "src/type_determiner.h"
#include "src/writer/spirv/builder.h"
@@ -31,9 +30,9 @@
/// Helper class for testing
template <typename BASE>
-class TestHelperBase : public ast::BuilderWithContextAndModule, public BASE {
+class TestHelperBase : public ast::BuilderWithModule, public BASE {
public:
- TestHelperBase() : td(ctx, mod), b(ctx, mod) {}
+ TestHelperBase() : td(mod), b(mod) {}
~TestHelperBase() override = default;
/// The type determiner
diff --git a/src/writer/text.cc b/src/writer/text.cc
index 52929cc..319f32e 100644
--- a/src/writer/text.cc
+++ b/src/writer/text.cc
@@ -21,8 +21,6 @@
Text::Text(ast::Module module) : Writer(std::move(module)) {}
-Text::Text(Context* ctx, ast::Module module) : Writer(ctx, std::move(module)) {}
-
Text::~Text() = default;
} // namespace writer
diff --git a/src/writer/text.h b/src/writer/text.h
index 5f7bb1c..7e4fffc 100644
--- a/src/writer/text.h
+++ b/src/writer/text.h
@@ -26,13 +26,8 @@
class Text : public Writer {
public:
/// Constructor
- /// DEPRECATED
/// @param module the module to convert
explicit Text(ast::Module module);
- /// Constructor
- /// @param ctx the context object, must be non-null
- /// @param module the module to convert
- Text(Context* ctx, ast::Module module);
~Text() override;
/// @returns the result data
diff --git a/src/writer/text_generator.cc b/src/writer/text_generator.cc
index 52f60e8..e057abe 100644
--- a/src/writer/text_generator.cc
+++ b/src/writer/text_generator.cc
@@ -21,9 +21,7 @@
namespace tint {
namespace writer {
-TextGenerator::TextGenerator(Context* ctx) : ctx_(ctx) {
- assert(ctx_);
-}
+TextGenerator::TextGenerator() = default;
TextGenerator::~TextGenerator() = default;
diff --git a/src/writer/text_generator.h b/src/writer/text_generator.h
index d38d3ed..46da1bc 100644
--- a/src/writer/text_generator.h
+++ b/src/writer/text_generator.h
@@ -18,8 +18,6 @@
#include <sstream>
#include <string>
-#include "src/context.h"
-
namespace tint {
namespace writer {
@@ -27,8 +25,7 @@
class TextGenerator {
public:
/// Constructor
- /// @param ctx the context object, must be non-null
- explicit TextGenerator(Context* ctx);
+ TextGenerator();
~TextGenerator();
/// Increment the emitter indent level
@@ -52,8 +49,6 @@
std::string error() const { return error_; }
protected:
- /// The context
- Context* ctx_ = nullptr;
/// The text output stream
std::ostringstream out_;
/// Error generated by the generator
diff --git a/src/writer/wgsl/generator.cc b/src/writer/wgsl/generator.cc
index 93816ed..c96cafd 100644
--- a/src/writer/wgsl/generator.cc
+++ b/src/writer/wgsl/generator.cc
@@ -21,17 +21,16 @@
namespace wgsl {
Generator::Generator(ast::Module module)
- : Text(std::move(module)), impl_(std::make_unique<GeneratorImpl>(ctx_)) {}
+ : Text(std::move(module)), impl_(std::make_unique<GeneratorImpl>()) {}
-Generator::Generator(Context* ctx, ast::Module module)
- : Text(ctx, std::move(module)),
- impl_(std::make_unique<GeneratorImpl>(ctx_)) {}
+Generator::Generator(Context*, ast::Module module)
+ : Generator(std::move(module)) {}
Generator::~Generator() = default;
void Generator::Reset() {
set_error("");
- impl_ = std::make_unique<GeneratorImpl>(ctx_);
+ impl_ = std::make_unique<GeneratorImpl>();
}
bool Generator::Generate() {
diff --git a/src/writer/wgsl/generator.h b/src/writer/wgsl/generator.h
index 685f7cf..e269ec9 100644
--- a/src/writer/wgsl/generator.h
+++ b/src/writer/wgsl/generator.h
@@ -29,10 +29,10 @@
class Generator : public Text {
public:
/// Constructor
- /// DEPRECATED
/// @param module the module to convert
explicit Generator(ast::Module module);
/// Constructor
+ /// DEPRECATED
/// @param ctx the context, must be non-null
/// @param module the module to convert
Generator(Context* ctx, ast::Module module);
diff --git a/src/writer/wgsl/generator_impl.cc b/src/writer/wgsl/generator_impl.cc
index 24d51a0..1257e7b 100644
--- a/src/writer/wgsl/generator_impl.cc
+++ b/src/writer/wgsl/generator_impl.cc
@@ -78,7 +78,7 @@
namespace writer {
namespace wgsl {
-GeneratorImpl::GeneratorImpl(Context* ctx) : TextGenerator(ctx) {}
+GeneratorImpl::GeneratorImpl() : TextGenerator() {}
GeneratorImpl::~GeneratorImpl() = default;
diff --git a/src/writer/wgsl/generator_impl.h b/src/writer/wgsl/generator_impl.h
index 3bc921a..ba0544f 100644
--- a/src/writer/wgsl/generator_impl.h
+++ b/src/writer/wgsl/generator_impl.h
@@ -54,8 +54,7 @@
class GeneratorImpl : public TextGenerator {
public:
/// Constructor
- /// @param ctx the context, must be non-null
- explicit GeneratorImpl(Context* ctx);
+ GeneratorImpl();
~GeneratorImpl();
/// Generates the result data
diff --git a/src/writer/wgsl/test_helper.h b/src/writer/wgsl/test_helper.h
index 57b14ce..4b8055e 100644
--- a/src/writer/wgsl/test_helper.h
+++ b/src/writer/wgsl/test_helper.h
@@ -20,7 +20,6 @@
#include "gtest/gtest.h"
#include "src/ast/module.h"
-#include "src/context.h"
#include "src/type_determiner.h"
#include "src/writer/wgsl/generator_impl.h"
@@ -32,7 +31,7 @@
template <typename BASE>
class TestHelperBase : public BASE {
public:
- TestHelperBase() : td(&ctx, &mod), gen(&ctx) {}
+ TestHelperBase() : td(&mod), gen() {}
~TestHelperBase() = default;
@@ -45,8 +44,6 @@
return mod.create<T>(std::forward<ARGS>(args)...);
}
- /// The context
- Context ctx;
/// The module
ast::Module mod;
/// The type determiner
diff --git a/src/writer/writer.cc b/src/writer/writer.cc
index c41b556..545ed3b 100644
--- a/src/writer/writer.cc
+++ b/src/writer/writer.cc
@@ -19,18 +19,9 @@
namespace tint {
namespace writer {
-Writer::Writer(ast::Module module)
- : ctx_(new Context()),
- context_is_owned_(true),
- module_(std::move(module)) {}
+Writer::Writer(ast::Module module) : module_(std::move(module)) {}
-Writer::Writer(Context* ctx, ast::Module module)
- : ctx_(ctx), context_is_owned_(false), module_(std::move(module)) {}
-
-Writer::~Writer() {
- if (context_is_owned_)
- delete ctx_;
-}
+Writer::~Writer() = default;
} // namespace writer
} // namespace tint
diff --git a/src/writer/writer.h b/src/writer/writer.h
index 3caf73e..46d8801 100644
--- a/src/writer/writer.h
+++ b/src/writer/writer.h
@@ -50,25 +50,15 @@
protected:
/// Constructor
- /// DEPRECATED
/// @param module the tint module to convert
explicit Writer(ast::Module module);
- /// Constructor
- /// @param ctx the context object, must be non-null
- /// @param module the tint module to convert
- Writer(Context* ctx, ast::Module module);
-
/// Sets the error string
/// @param msg the error message
void set_error(const std::string& msg) { error_ = msg; }
/// An error message, if an error was encountered
std::string error_;
- /// The context
- Context* ctx_ = nullptr;
- /// Tracks if we own the context
- bool context_is_owned_ = false;
/// The module being converted
ast::Module module_;
};