ast: Remove Variable constructor that doesn't take a source
set_source() will be removed, so sources will only be specifiable at construction time.
Bug: tint:390
Change-Id: I5c79efd3fa501ebd9308f7f93cfb77bc12198047
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/35009
Commit-Queue: Ben Clayton <bclayton@google.com>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
diff --git a/src/ast/builder.cc b/src/ast/builder.cc
index 7fa5bd2..6045083 100644
--- a/src/ast/builder.cc
+++ b/src/ast/builder.cc
@@ -32,7 +32,7 @@
Variable* Builder::Var(const std::string& name,
StorageClass storage,
type::Type* type) {
- auto* var = create<Variable>(name, storage, type);
+ auto* var = create<Variable>(Source{}, name, storage, type);
OnVariableBuilt(var);
return var;
}
@@ -40,7 +40,7 @@
Variable* Builder::Const(const std::string& name,
StorageClass storage,
type::Type* type) {
- auto* var = create<Variable>(name, storage, type);
+ auto* var = create<Variable>(Source{}, name, storage, type);
var->set_is_const(true);
OnVariableBuilt(var);
return var;
diff --git a/src/ast/decorated_variable_test.cc b/src/ast/decorated_variable_test.cc
index d31a7cf..31ac563 100644
--- a/src/ast/decorated_variable_test.cc
+++ b/src/ast/decorated_variable_test.cc
@@ -34,7 +34,7 @@
TEST_F(DecoratedVariableTest, Creation) {
type::I32 t;
- auto* var = create<Variable>("my_var", StorageClass::kFunction, &t);
+ auto* var = create<Variable>(Source{}, "my_var", StorageClass::kFunction, &t);
DecoratedVariable dv(var);
EXPECT_EQ(dv.name(), "my_var");
@@ -63,7 +63,7 @@
TEST_F(DecoratedVariableTest, NoDecorations) {
type::I32 t;
- auto* var = create<Variable>("my_var", StorageClass::kFunction, &t);
+ auto* var = create<Variable>(Source{}, "my_var", StorageClass::kFunction, &t);
DecoratedVariable dv(var);
EXPECT_FALSE(dv.HasLocationDecoration());
EXPECT_FALSE(dv.HasBuiltinDecoration());
@@ -72,7 +72,7 @@
TEST_F(DecoratedVariableTest, WithDecorations) {
type::F32 t;
- auto* var = create<Variable>("my_var", StorageClass::kFunction, &t);
+ auto* var = create<Variable>(Source{}, "my_var", StorageClass::kFunction, &t);
DecoratedVariable dv(var);
VariableDecorationList decos;
@@ -89,7 +89,7 @@
TEST_F(DecoratedVariableTest, ConstantId) {
type::F32 t;
- auto* var = create<Variable>("my_var", StorageClass::kFunction, &t);
+ auto* var = create<Variable>(Source{}, "my_var", StorageClass::kFunction, &t);
DecoratedVariable dv(var);
VariableDecorationList decos;
@@ -101,20 +101,21 @@
TEST_F(DecoratedVariableTest, IsValid) {
type::I32 t;
- auto* var = create<Variable>("my_var", StorageClass::kNone, &t);
+ auto* var = create<Variable>(Source{}, "my_var", StorageClass::kNone, &t);
DecoratedVariable dv(var);
EXPECT_TRUE(dv.IsValid());
}
TEST_F(DecoratedVariableTest, IsDecorated) {
type::I32 t;
- DecoratedVariable dv(create<Variable>("my_var", StorageClass::kNone, &t));
+ DecoratedVariable dv(
+ create<Variable>(Source{}, "my_var", StorageClass::kNone, &t));
EXPECT_TRUE(dv.Is<DecoratedVariable>());
}
TEST_F(DecoratedVariableTest, to_str) {
type::F32 t;
- auto* var = create<Variable>("my_var", StorageClass::kFunction, &t);
+ auto* var = create<Variable>(Source{}, "my_var", StorageClass::kFunction, &t);
DecoratedVariable dv(var);
dv.set_constructor(create<IdentifierExpression>("expr"));
diff --git a/src/ast/function_test.cc b/src/ast/function_test.cc
index 08b0e44..db0e995 100644
--- a/src/ast/function_test.cc
+++ b/src/ast/function_test.cc
@@ -37,7 +37,8 @@
type::I32 i32;
VariableList params;
- params.push_back(create<Variable>("var", StorageClass::kNone, &i32));
+ params.push_back(
+ create<Variable>(Source{}, "var", StorageClass::kNone, &i32));
auto* var = params[0];
Function f(Source{}, "func", params, &void_type, create<BlockStatement>(),
@@ -53,7 +54,8 @@
type::I32 i32;
VariableList params;
- params.push_back(create<Variable>("var", StorageClass::kNone, &i32));
+ params.push_back(
+ create<Variable>(Source{}, "var", StorageClass::kNone, &i32));
Function f(Source{Source::Location{20, 2}}, "func", params, &void_type,
create<BlockStatement>(), FunctionDecorationList{});
@@ -66,7 +68,7 @@
type::Void void_type;
type::I32 i32;
- Variable v("var", StorageClass::kInput, &i32);
+ Variable v(Source{}, "var", StorageClass::kInput, &i32);
Function f(Source{}, "func", VariableList{}, &void_type,
create<BlockStatement>(), FunctionDecorationList{});
@@ -77,7 +79,7 @@
f.add_referenced_module_variable(&v);
ASSERT_EQ(f.referenced_module_variables().size(), 1u);
- Variable v2("var2", StorageClass::kOutput, &i32);
+ Variable v2(Source{}, "var2", StorageClass::kOutput, &i32);
f.add_referenced_module_variable(&v2);
ASSERT_EQ(f.referenced_module_variables().size(), 2u);
EXPECT_EQ(f.referenced_module_variables()[1], &v2);
@@ -87,19 +89,21 @@
type::Void void_type;
type::I32 i32;
- DecoratedVariable loc1(create<Variable>("loc1", StorageClass::kInput, &i32));
+ DecoratedVariable loc1(
+ create<Variable>(Source{}, "loc1", StorageClass::kInput, &i32));
loc1.set_decorations({create<LocationDecoration>(0, Source{})});
- DecoratedVariable loc2(create<Variable>("loc2", StorageClass::kInput, &i32));
+ DecoratedVariable loc2(
+ create<Variable>(Source{}, "loc2", StorageClass::kInput, &i32));
loc2.set_decorations({create<LocationDecoration>(1, Source{})});
DecoratedVariable builtin1(
- create<Variable>("builtin1", StorageClass::kInput, &i32));
+ create<Variable>(Source{}, "builtin1", StorageClass::kInput, &i32));
builtin1.set_decorations(
{create<BuiltinDecoration>(Builtin::kPosition, Source{})});
DecoratedVariable builtin2(
- create<Variable>("builtin2", StorageClass::kInput, &i32));
+ create<Variable>(Source{}, "builtin2", StorageClass::kInput, &i32));
builtin2.set_decorations(
{create<BuiltinDecoration>(Builtin::kFragDepth, Source{})});
@@ -124,19 +128,21 @@
type::Void void_type;
type::I32 i32;
- DecoratedVariable loc1(create<Variable>("loc1", StorageClass::kInput, &i32));
+ DecoratedVariable loc1(
+ create<Variable>(Source{}, "loc1", StorageClass::kInput, &i32));
loc1.set_decorations({create<LocationDecoration>(0, Source{})});
- DecoratedVariable loc2(create<Variable>("loc2", StorageClass::kInput, &i32));
+ DecoratedVariable loc2(
+ create<Variable>(Source{}, "loc2", StorageClass::kInput, &i32));
loc2.set_decorations({create<LocationDecoration>(1, Source{})});
DecoratedVariable builtin1(
- create<Variable>("builtin1", StorageClass::kInput, &i32));
+ create<Variable>(Source{}, "builtin1", StorageClass::kInput, &i32));
builtin1.set_decorations(
{create<BuiltinDecoration>(Builtin::kPosition, Source{})});
DecoratedVariable builtin2(
- create<Variable>("builtin2", StorageClass::kInput, &i32));
+ create<Variable>(Source{}, "builtin2", StorageClass::kInput, &i32));
builtin2.set_decorations(
{create<BuiltinDecoration>(Builtin::kFragDepth, Source{})});
@@ -176,7 +182,8 @@
type::I32 i32;
VariableList params;
- params.push_back(create<Variable>("var", StorageClass::kNone, &i32));
+ params.push_back(
+ create<Variable>(Source{}, "var", StorageClass::kNone, &i32));
auto* block = create<BlockStatement>();
block->append(create<DiscardStatement>());
@@ -192,7 +199,8 @@
type::I32 i32;
VariableList params;
- params.push_back(create<Variable>("var", StorageClass::kNone, &i32));
+ params.push_back(
+ create<Variable>(Source{}, "var", StorageClass::kNone, &i32));
Function f(Source{}, "", params, &void_type, create<BlockStatement>(),
FunctionDecorationList{});
@@ -203,7 +211,8 @@
type::I32 i32;
VariableList params;
- params.push_back(create<Variable>("var", StorageClass::kNone, &i32));
+ params.push_back(
+ create<Variable>(Source{}, "var", StorageClass::kNone, &i32));
Function f(Source{}, "func", params, nullptr, create<BlockStatement>(),
FunctionDecorationList{});
@@ -215,7 +224,8 @@
type::I32 i32;
VariableList params;
- params.push_back(create<Variable>("var", StorageClass::kNone, &i32));
+ params.push_back(
+ create<Variable>(Source{}, "var", StorageClass::kNone, &i32));
params.push_back(nullptr);
Function f(Source{}, "func", params, &void_type, create<BlockStatement>(),
@@ -227,7 +237,8 @@
type::Void void_type;
VariableList params;
- params.push_back(create<Variable>("var", StorageClass::kNone, nullptr));
+ params.push_back(
+ create<Variable>(Source{}, "var", StorageClass::kNone, nullptr));
Function f(Source{}, "func", params, &void_type, create<BlockStatement>(),
FunctionDecorationList{});
@@ -239,7 +250,8 @@
type::I32 i32;
VariableList params;
- params.push_back(create<Variable>("var", StorageClass::kNone, &i32));
+ params.push_back(
+ create<Variable>(Source{}, "var", StorageClass::kNone, &i32));
auto* block = create<BlockStatement>();
block->append(create<DiscardStatement>());
@@ -256,7 +268,8 @@
type::I32 i32;
VariableList params;
- params.push_back(create<Variable>("var", StorageClass::kNone, &i32));
+ params.push_back(
+ create<Variable>(Source{}, "var", StorageClass::kNone, &i32));
auto* block = create<BlockStatement>();
block->append(create<DiscardStatement>());
@@ -316,7 +329,8 @@
type::I32 i32;
VariableList params;
- params.push_back(create<Variable>("var", StorageClass::kNone, &i32));
+ params.push_back(
+ create<Variable>(Source{}, "var", StorageClass::kNone, &i32));
auto* block = create<BlockStatement>();
block->append(create<DiscardStatement>());
@@ -355,8 +369,10 @@
type::F32 f32;
VariableList params;
- params.push_back(create<Variable>("var1", StorageClass::kNone, &i32));
- params.push_back(create<Variable>("var2", StorageClass::kNone, &f32));
+ params.push_back(
+ create<Variable>(Source{}, "var1", StorageClass::kNone, &i32));
+ params.push_back(
+ create<Variable>(Source{}, "var2", StorageClass::kNone, &f32));
Function f(Source{}, "func", params, &void_type, create<BlockStatement>(),
FunctionDecorationList{});
diff --git a/src/ast/module_test.cc b/src/ast/module_test.cc
index c5ff933..6a1978a 100644
--- a/src/ast/module_test.cc
+++ b/src/ast/module_test.cc
@@ -67,7 +67,7 @@
TEST_F(ModuleTest, IsValid_GlobalVariable) {
type::F32 f32;
- auto* var = create<Variable>("var", StorageClass::kInput, &f32);
+ auto* var = create<Variable>(Source{}, "var", StorageClass::kInput, &f32);
Module m;
m.AddGlobalVariable(var);
@@ -81,7 +81,7 @@
}
TEST_F(ModuleTest, IsValid_Invalid_GlobalVariable) {
- auto* var = create<Variable>("var", StorageClass::kInput, nullptr);
+ auto* var = create<Variable>(Source{}, "var", StorageClass::kInput, nullptr);
Module m;
m.AddGlobalVariable(var);
diff --git a/src/ast/variable.cc b/src/ast/variable.cc
index dbfe7d5..d97253e 100644
--- a/src/ast/variable.cc
+++ b/src/ast/variable.cc
@@ -27,9 +27,6 @@
Variable::Variable() = default;
-Variable::Variable(const std::string& name, StorageClass sc, type::Type* type)
- : Base(), name_(name), storage_class_(sc), type_(type) {}
-
Variable::Variable(const Source& source,
const std::string& name,
StorageClass sc,
@@ -41,9 +38,8 @@
Variable::~Variable() = default;
Variable* Variable::Clone(CloneContext* ctx) const {
- auto* cloned =
- ctx->mod->create<Variable>(name(), storage_class(), ctx->Clone(type()));
- cloned->set_source(ctx->Clone(source()));
+ auto* cloned = ctx->mod->create<Variable>(
+ ctx->Clone(source()), name(), storage_class(), ctx->Clone(type()));
cloned->set_constructor(ctx->Clone(constructor()));
cloned->set_is_const(is_const());
return cloned;
diff --git a/src/ast/variable.h b/src/ast/variable.h
index 72de0f1..a226bdd 100644
--- a/src/ast/variable.h
+++ b/src/ast/variable.h
@@ -79,11 +79,6 @@
class Variable : public Castable<Variable, Node> {
public:
/// Create a variable
- /// @param name the variables name
- /// @param sc the variable storage class
- /// @param type the value type
- Variable(const std::string& name, StorageClass sc, type::Type* type);
- /// Create a variable
/// @param source the variable source
/// @param name the variables name
/// @param sc the variable storage class
diff --git a/src/ast/variable_decl_statement_test.cc b/src/ast/variable_decl_statement_test.cc
index daa7c2a..c7e08be 100644
--- a/src/ast/variable_decl_statement_test.cc
+++ b/src/ast/variable_decl_statement_test.cc
@@ -26,7 +26,7 @@
TEST_F(VariableDeclStatementTest, Creation) {
type::F32 f32;
- auto* var = create<Variable>("a", StorageClass::kNone, &f32);
+ auto* var = create<Variable>(Source{}, "a", StorageClass::kNone, &f32);
VariableDeclStatement stmt(var);
EXPECT_EQ(stmt.variable(), var);
@@ -34,7 +34,7 @@
TEST_F(VariableDeclStatementTest, Creation_WithSource) {
type::F32 f32;
- auto* var = create<Variable>("a", StorageClass::kNone, &f32);
+ auto* var = create<Variable>(Source{}, "a", StorageClass::kNone, &f32);
VariableDeclStatement stmt(Source{Source::Location{20, 2}}, var);
auto src = stmt.source();
@@ -44,7 +44,7 @@
TEST_F(VariableDeclStatementTest, IsVariableDecl) {
type::F32 f32;
- auto* var = create<Variable>("a", StorageClass::kNone, &f32);
+ auto* var = create<Variable>(Source{}, "a", StorageClass::kNone, &f32);
VariableDeclStatement s(var);
EXPECT_TRUE(s.Is<VariableDeclStatement>());
@@ -52,14 +52,14 @@
TEST_F(VariableDeclStatementTest, IsValid) {
type::F32 f32;
- auto* var = create<Variable>("a", StorageClass::kNone, &f32);
+ auto* var = create<Variable>(Source{}, "a", StorageClass::kNone, &f32);
VariableDeclStatement stmt(var);
EXPECT_TRUE(stmt.IsValid());
}
TEST_F(VariableDeclStatementTest, IsValid_InvalidVariable) {
type::F32 f32;
- auto* var = create<Variable>("", StorageClass::kNone, &f32);
+ auto* var = create<Variable>(Source{}, "", StorageClass::kNone, &f32);
VariableDeclStatement stmt(var);
EXPECT_FALSE(stmt.IsValid());
}
@@ -71,7 +71,7 @@
TEST_F(VariableDeclStatementTest, ToStr) {
type::F32 f32;
- auto* var = create<Variable>("a", StorageClass::kNone, &f32);
+ auto* var = create<Variable>(Source{}, "a", StorageClass::kNone, &f32);
VariableDeclStatement stmt(Source{Source::Location{20, 2}}, var);
std::ostringstream out;
diff --git a/src/ast/variable_test.cc b/src/ast/variable_test.cc
index 9f22a94..39dc9f6 100644
--- a/src/ast/variable_test.cc
+++ b/src/ast/variable_test.cc
@@ -27,7 +27,7 @@
TEST_F(VariableTest, Creation) {
type::I32 t;
- Variable v("my_var", StorageClass::kFunction, &t);
+ Variable v(Source{}, "my_var", StorageClass::kFunction, &t);
EXPECT_EQ(v.name(), "my_var");
EXPECT_EQ(v.storage_class(), StorageClass::kFunction);
@@ -68,43 +68,43 @@
TEST_F(VariableTest, IsValid) {
type::I32 t;
- Variable v{"my_var", StorageClass::kNone, &t};
+ Variable v{Source{}, "my_var", StorageClass::kNone, &t};
EXPECT_TRUE(v.IsValid());
}
TEST_F(VariableTest, IsValid_WithConstructor) {
type::I32 t;
- Variable v{"my_var", StorageClass::kNone, &t};
+ Variable v{Source{}, "my_var", StorageClass::kNone, &t};
v.set_constructor(create<IdentifierExpression>("ident"));
EXPECT_TRUE(v.IsValid());
}
TEST_F(VariableTest, IsValid_MissinName) {
type::I32 t;
- Variable v{"", StorageClass::kNone, &t};
+ Variable v{Source{}, "", StorageClass::kNone, &t};
EXPECT_FALSE(v.IsValid());
}
TEST_F(VariableTest, IsValid_MissingType) {
- Variable v{"x", StorageClass::kNone, nullptr};
+ Variable v{Source{}, "x", StorageClass::kNone, nullptr};
EXPECT_FALSE(v.IsValid());
}
TEST_F(VariableTest, IsValid_MissingBoth) {
- Variable v("", StorageClass::kNone, nullptr);
+ Variable v{Source{}, "", StorageClass::kNone, nullptr};
EXPECT_FALSE(v.IsValid());
}
TEST_F(VariableTest, IsValid_InvalidConstructor) {
type::I32 t;
- Variable v{"my_var", StorageClass::kNone, &t};
+ Variable v{Source{}, "my_var", StorageClass::kNone, &t};
v.set_constructor(create<IdentifierExpression>(""));
EXPECT_FALSE(v.IsValid());
}
TEST_F(VariableTest, to_str) {
type::F32 t;
- Variable v{"my_var", StorageClass::kFunction, &t};
+ Variable v{Source{}, "my_var", StorageClass::kFunction, &t};
std::ostringstream out;
v.to_str(out, 2);
EXPECT_EQ(out.str(), R"( Variable{
diff --git a/src/inspector/inspector_test.cc b/src/inspector/inspector_test.cc
index 50d9d1f..9cddc87 100644
--- a/src/inspector/inspector_test.cc
+++ b/src/inspector/inspector_test.cc
@@ -114,10 +114,10 @@
for (auto inout : inout_vars) {
std::string in, out;
std::tie(in, out) = inout;
- auto* in_var =
- create<ast::Variable>(in, ast::StorageClass::kInput, u32_type());
- auto* out_var =
- create<ast::Variable>(out, ast::StorageClass::kOutput, u32_type());
+ auto* in_var = create<ast::Variable>(
+ Source{}, in, ast::StorageClass::kInput, u32_type());
+ auto* out_var = create<ast::Variable>(
+ Source{}, out, ast::StorageClass::kOutput, u32_type());
mod()->AddGlobalVariable(in_var);
mod()->AddGlobalVariable(out_var);
}
@@ -188,7 +188,7 @@
ast::type::Type* type,
T* val) {
auto* dvar = create<ast::DecoratedVariable>(
- create<ast::Variable>(name, ast::StorageClass::kNone, type));
+ create<ast::Variable>(Source{}, name, ast::StorageClass::kNone, type));
dvar->set_is_const(true);
ast::VariableDecorationList decos;
decos.push_back(create<ast::ConstantIdDecoration>(id, Source{}));
@@ -349,7 +349,7 @@
uint32_t set,
uint32_t binding) {
auto* var = create<ast::DecoratedVariable>(
- create<ast::Variable>(name, storage_class, type));
+ create<ast::Variable>(Source{}, name, storage_class, type));
ast::VariableDecorationList decorations;
decorations.push_back(create<ast::BindingDecoration>(binding, Source{}));
@@ -399,8 +399,9 @@
ast::type::Type* member_type;
std::tie(member_idx, member_type) = member;
std::string member_name = StructMemberName(member_idx, member_type);
- body->append(create<ast::VariableDeclStatement>(create<ast::Variable>(
- "local" + member_name, ast::StorageClass::kNone, member_type)));
+ body->append(create<ast::VariableDeclStatement>(
+ create<ast::Variable>(Source{}, "local" + member_name,
+ ast::StorageClass::kNone, member_type)));
}
for (auto member : members) {
@@ -494,16 +495,16 @@
}
void AddGlobalVariable(const std::string& name, ast::type::Type* type) {
- mod()->AddGlobalVariable(
- create<ast::Variable>(name, ast::StorageClass::kUniformConstant, type));
+ mod()->AddGlobalVariable(create<ast::Variable>(
+ Source{}, name, ast::StorageClass::kUniformConstant, type));
}
/// Adds a depth texture variable to the module
/// @param name the name of the variable
/// @param type the type to use
void AddDepthTexture(const std::string& name, ast::type::Type* type) {
- mod()->AddGlobalVariable(
- create<ast::Variable>(name, ast::StorageClass::kUniformConstant, type));
+ mod()->AddGlobalVariable(create<ast::Variable>(
+ Source{}, name, ast::StorageClass::kUniformConstant, type));
}
/// Generates a function that references a specific sampler variable
@@ -525,8 +526,9 @@
auto* body = create<ast::BlockStatement>();
- auto* call_result = create<ast::Variable>(
- "sampler_result", ast::StorageClass::kFunction, vec_type(base_type, 4));
+ auto* call_result = create<ast::Variable>(Source{}, "sampler_result",
+ ast::StorageClass::kFunction,
+ vec_type(base_type, 4));
body->append(create<ast::VariableDeclStatement>(call_result));
ast::ExpressionList call_params;
@@ -565,8 +567,9 @@
auto* body = create<ast::BlockStatement>();
- auto* call_result = create<ast::Variable>(
- "sampler_result", ast::StorageClass::kFunction, vec_type(base_type, 4));
+ auto* call_result = create<ast::Variable>(Source{}, "sampler_result",
+ ast::StorageClass::kFunction,
+ vec_type(base_type, 4));
body->append(create<ast::VariableDeclStatement>(call_result));
ast::ExpressionList call_params;
@@ -608,7 +611,7 @@
auto* body = create<ast::BlockStatement>();
auto* call_result = create<ast::Variable>(
- "sampler_result", ast::StorageClass::kFunction, base_type);
+ Source{}, "sampler_result", ast::StorageClass::kFunction, base_type);
body->append(create<ast::VariableDeclStatement>(call_result));
ast::ExpressionList call_params;
diff --git a/src/reader/spirv/function.cc b/src/reader/spirv/function.cc
index ee09c41..03be176 100644
--- a/src/reader/spirv/function.cc
+++ b/src/reader/spirv/function.cc
@@ -2094,8 +2094,9 @@
const std::string guard_name = block_info.flow_guard_name;
if (!guard_name.empty()) {
// Declare the guard variable just before the "if", initialized to true.
- auto* guard_var = create<ast::Variable>(
- guard_name, ast::StorageClass::kFunction, parser_impl_.Bool());
+ auto* guard_var = create<ast::Variable>(Source{}, guard_name,
+ ast::StorageClass::kFunction,
+ parser_impl_.Bool());
guard_var->set_constructor(MakeTrue());
auto* guard_decl = create<ast::VariableDeclStatement>(guard_var);
AddStatement(guard_decl);
@@ -2637,9 +2638,9 @@
assert(def_inst);
const auto phi_var_name = GetDefInfo(id)->phi_var;
assert(!phi_var_name.empty());
- auto* var =
- create<ast::Variable>(phi_var_name, ast::StorageClass::kFunction,
- parser_impl_.ConvertType(def_inst->type_id()));
+ auto* var = create<ast::Variable>(
+ Source{}, phi_var_name, ast::StorageClass::kFunction,
+ parser_impl_.ConvertType(def_inst->type_id()));
AddStatement(create<ast::VariableDeclStatement>(var));
}
diff --git a/src/reader/spirv/parser_impl.cc b/src/reader/spirv/parser_impl.cc
index b0c01a9..202293d 100644
--- a/src/reader/spirv/parser_impl.cc
+++ b/src/reader/spirv/parser_impl.cc
@@ -1171,7 +1171,7 @@
type = ast_module_.create<ast::type::AccessControl>(access, type);
}
- auto* ast_var = create<ast::Variable>(namer_.Name(id), sc, type);
+ auto* ast_var = create<ast::Variable>(Source{}, namer_.Name(id), sc, type);
ast::VariableDecorationList ast_decorations;
for (auto& deco : GetDecorationsFor(id)) {
diff --git a/src/scope_stack_test.cc b/src/scope_stack_test.cc
index f1d8153..55ecb5d 100644
--- a/src/scope_stack_test.cc
+++ b/src/scope_stack_test.cc
@@ -33,7 +33,7 @@
TEST_F(ScopeStackTest, Global_SetWithPointer) {
ast::type::F32 f32;
- ast::Variable v("test", ast::StorageClass::kNone, &f32);
+ ast::Variable v(Source{}, "test", ast::StorageClass::kNone, &f32);
v.set_name("my_var");
ScopeStack<ast::Variable*> s;
diff --git a/src/transform/emit_vertex_point_size.cc b/src/transform/emit_vertex_point_size.cc
index 32ac992..7d69cb5 100644
--- a/src/transform/emit_vertex_point_size.cc
+++ b/src/transform/emit_vertex_point_size.cc
@@ -52,7 +52,7 @@
// Declare the pointsize builtin output variable.
auto* pointsize_var =
mod->create<ast::DecoratedVariable>(mod->create<ast::Variable>(
- kPointSizeVar, ast::StorageClass::kOutput, f32));
+ Source{}, kPointSizeVar, ast::StorageClass::kOutput, f32));
pointsize_var->set_decorations({
mod->create<ast::BuiltinDecoration>(ast::Builtin::kPointSize, Source{}),
});
diff --git a/src/transform/vertex_pulling.cc b/src/transform/vertex_pulling.cc
index 4e71303..5614ba4 100644
--- a/src/transform/vertex_pulling.cc
+++ b/src/transform/vertex_pulling.cc
@@ -159,7 +159,7 @@
vertex_index_name = kDefaultVertexIndexName;
auto* var = mod->create<ast::DecoratedVariable>(mod->create<ast::Variable>(
- vertex_index_name, ast::StorageClass::kInput, GetI32Type()));
+ Source{}, vertex_index_name, ast::StorageClass::kInput, GetI32Type()));
ast::VariableDecorationList decorations;
decorations.push_back(
@@ -203,7 +203,7 @@
instance_index_name = kDefaultInstanceIndexName;
auto* var = mod->create<ast::DecoratedVariable>(mod->create<ast::Variable>(
- instance_index_name, ast::StorageClass::kInput, GetI32Type()));
+ Source{}, instance_index_name, ast::StorageClass::kInput, GetI32Type()));
ast::VariableDecorationList decorations;
decorations.push_back(mod->create<ast::BuiltinDecoration>(
@@ -226,8 +226,8 @@
// This is where the replacement happens. Expressions use identifier
// strings instead of pointers, so we don't need to update any other
// place in the AST.
- v = mod->create<ast::Variable>(v->name(), ast::StorageClass::kPrivate,
- v->type());
+ v = mod->create<ast::Variable>(
+ Source{}, v->name(), ast::StorageClass::kPrivate, v->type());
location_to_var[location] = v;
break;
}
@@ -265,7 +265,7 @@
for (uint32_t i = 0; i < cfg.vertex_state.size(); ++i) {
// The decorated variable with struct type
auto* var = mod->create<ast::DecoratedVariable>(mod->create<ast::Variable>(
- GetVertexBufferName(i), ast::StorageClass::kStorageBuffer,
+ Source{}, GetVertexBufferName(i), ast::StorageClass::kStorageBuffer,
struct_type));
// Add decorations
@@ -289,9 +289,9 @@
auto* block = mod->create<ast::BlockStatement>();
// Declare the |kPullingPosVarName| variable in the shader
- auto* pos_declaration =
- mod->create<ast::VariableDeclStatement>(mod->create<ast::Variable>(
- kPullingPosVarName, ast::StorageClass::kFunction, GetI32Type()));
+ auto* pos_declaration = mod->create<ast::VariableDeclStatement>(
+ mod->create<ast::Variable>(Source{}, kPullingPosVarName,
+ ast::StorageClass::kFunction, GetI32Type()));
// |kPullingPosVarName| refers to the byte location of the current read. We
// declare a variable in the shader to avoid having to reuse Expression
diff --git a/src/transform/vertex_pulling_test.cc b/src/transform/vertex_pulling_test.cc
index a2eb2c9..820d1e0 100644
--- a/src/transform/vertex_pulling_test.cc
+++ b/src/transform/vertex_pulling_test.cc
@@ -70,7 +70,7 @@
std::string name,
ast::type::Type* type) {
auto* var = create<ast::DecoratedVariable>(
- create<ast::Variable>(name, ast::StorageClass::kInput, type));
+ create<ast::Variable>(Source{}, name, ast::StorageClass::kInput, type));
ast::VariableDecorationList decorations;
decorations.push_back(create<ast::LocationDecoration>(location, Source{}));
@@ -419,7 +419,7 @@
{
auto* vertex_index_var =
create<ast::DecoratedVariable>(create<ast::Variable>(
- "custom_vertex_index", ast::StorageClass::kInput, &i32));
+ Source{}, "custom_vertex_index", ast::StorageClass::kInput, &i32));
ast::VariableDecorationList decorations;
decorations.push_back(
@@ -430,9 +430,9 @@
}
{
- auto* instance_index_var =
- create<ast::DecoratedVariable>(create<ast::Variable>(
- "custom_instance_index", ast::StorageClass::kInput, &i32));
+ auto* instance_index_var = create<ast::DecoratedVariable>(
+ create<ast::Variable>(Source{}, "custom_instance_index",
+ ast::StorageClass::kInput, &i32));
ast::VariableDecorationList decorations;
decorations.push_back(
diff --git a/src/type_determiner_test.cc b/src/type_determiner_test.cc
index 8af4a49..f9a21ad 100644
--- a/src/type_determiner_test.cc
+++ b/src/type_determiner_test.cc
@@ -389,7 +389,8 @@
TEST_F(TypeDeterminerTest, Stmt_VariableDecl) {
ast::type::I32 i32;
- auto* var = create<ast::Variable>("my_var", ast::StorageClass::kNone, &i32);
+ auto* var =
+ create<ast::Variable>(Source{}, "my_var", ast::StorageClass::kNone, &i32);
var->set_constructor(create<ast::ScalarConstructorExpression>(
create<ast::SintLiteral>(&i32, 2)));
auto* init = var->constructor();
@@ -403,7 +404,8 @@
TEST_F(TypeDeterminerTest, Stmt_VariableDecl_ModuleScope) {
ast::type::I32 i32;
- auto* var = create<ast::Variable>("my_var", ast::StorageClass::kNone, &i32);
+ auto* var =
+ create<ast::Variable>(Source{}, "my_var", ast::StorageClass::kNone, &i32);
var->set_constructor(create<ast::ScalarConstructorExpression>(
create<ast::SintLiteral>(&i32, 2)));
auto* init = var->constructor();
@@ -430,8 +432,8 @@
auto* idx = create<ast::ScalarConstructorExpression>(
create<ast::SintLiteral>(&i32, 2));
- auto* var =
- create<ast::Variable>("my_var", ast::StorageClass::kFunction, &ary);
+ auto* var = create<ast::Variable>(Source{}, "my_var",
+ ast::StorageClass::kFunction, &ary);
mod->AddGlobalVariable(var);
// Register the global
@@ -455,8 +457,8 @@
auto* idx = create<ast::ScalarConstructorExpression>(
create<ast::SintLiteral>(&i32, 2));
- auto* var =
- create<ast::Variable>("my_var", ast::StorageClass::kFunction, &aary);
+ auto* var = create<ast::Variable>(Source{}, "my_var",
+ ast::StorageClass::kFunction, &aary);
mod->AddGlobalVariable(var);
// Register the global
@@ -479,8 +481,8 @@
auto* idx = create<ast::ScalarConstructorExpression>(
create<ast::SintLiteral>(&i32, 2));
- auto* var =
- create<ast::Variable>("my_var", ast::StorageClass::kFunction, &ary);
+ auto* var = create<ast::Variable>(Source{}, "my_var",
+ ast::StorageClass::kFunction, &ary);
var->set_is_const(true);
mod->AddGlobalVariable(var);
@@ -502,7 +504,8 @@
auto* idx = create<ast::ScalarConstructorExpression>(
create<ast::SintLiteral>(&i32, 2));
- auto* var = create<ast::Variable>("my_var", ast::StorageClass::kNone, &mat);
+ auto* var =
+ create<ast::Variable>(Source{}, "my_var", ast::StorageClass::kNone, &mat);
mod->AddGlobalVariable(var);
// Register the global
@@ -528,7 +531,8 @@
create<ast::SintLiteral>(&i32, 2));
auto* idx2 = create<ast::ScalarConstructorExpression>(
create<ast::SintLiteral>(&i32, 1));
- auto* var = create<ast::Variable>("my_var", ast::StorageClass::kNone, &mat);
+ auto* var =
+ create<ast::Variable>(Source{}, "my_var", ast::StorageClass::kNone, &mat);
mod->AddGlobalVariable(var);
// Register the global
@@ -554,7 +558,8 @@
auto* idx = create<ast::ScalarConstructorExpression>(
create<ast::SintLiteral>(&i32, 2));
- auto* var = create<ast::Variable>("my_var", ast::StorageClass::kNone, &vec);
+ auto* var =
+ create<ast::Variable>(Source{}, "my_var", ast::StorageClass::kNone, &vec);
mod->AddGlobalVariable(var);
// Register the global
@@ -575,7 +580,7 @@
ast::BitcastExpression bitcast(&f32,
create<ast::IdentifierExpression>("name"));
- ast::Variable v("name", ast::StorageClass::kPrivate, &f32);
+ ast::Variable v(Source{}, "name", ast::StorageClass::kPrivate, &f32);
td()->RegisterVariableForTesting(&v);
EXPECT_TRUE(td()->DetermineResultType(&bitcast));
@@ -653,7 +658,7 @@
params.push_back(create<ast::IdentifierExpression>("name"));
ast::TypeConstructorExpression cast(&f32, params);
- ast::Variable v("name", ast::StorageClass::kPrivate, &f32);
+ ast::Variable v(Source{}, "name", ast::StorageClass::kPrivate, &f32);
td()->RegisterVariableForTesting(&v);
EXPECT_TRUE(td()->DetermineResultType(&cast));
@@ -694,7 +699,8 @@
TEST_F(TypeDeterminerTest, Expr_Identifier_GlobalVariable) {
ast::type::F32 f32;
- auto* var = create<ast::Variable>("my_var", ast::StorageClass::kNone, &f32);
+ auto* var =
+ create<ast::Variable>(Source{}, "my_var", ast::StorageClass::kNone, &f32);
mod->AddGlobalVariable(var);
// Register the global
@@ -712,7 +718,8 @@
TEST_F(TypeDeterminerTest, Expr_Identifier_GlobalConstant) {
ast::type::F32 f32;
- auto* var = create<ast::Variable>("my_var", ast::StorageClass::kNone, &f32);
+ auto* var =
+ create<ast::Variable>(Source{}, "my_var", ast::StorageClass::kNone, &f32);
var->set_is_const(true);
mod->AddGlobalVariable(var);
@@ -730,7 +737,8 @@
auto* my_var = create<ast::IdentifierExpression>("my_var");
- auto* var = create<ast::Variable>("my_var", ast::StorageClass::kNone, &f32);
+ auto* var =
+ create<ast::Variable>(Source{}, "my_var", ast::StorageClass::kNone, &f32);
var->set_is_const(true);
auto* body = create<ast::BlockStatement>();
@@ -753,8 +761,8 @@
auto* my_var = create<ast::IdentifierExpression>("my_var");
auto* body = create<ast::BlockStatement>();
- body->append(create<ast::VariableDeclStatement>(
- create<ast::Variable>("my_var", ast::StorageClass::kNone, &f32)));
+ body->append(create<ast::VariableDeclStatement>(create<ast::Variable>(
+ Source{}, "my_var", ast::StorageClass::kNone, &f32)));
body->append(create<ast::AssignmentStatement>(
my_var, create<ast::IdentifierExpression>("my_var")));
@@ -779,8 +787,8 @@
auto* my_var = create<ast::IdentifierExpression>("my_var");
auto* body = create<ast::BlockStatement>();
- body->append(create<ast::VariableDeclStatement>(
- create<ast::Variable>("my_var", ast::StorageClass::kNone, &ptr)));
+ body->append(create<ast::VariableDeclStatement>(create<ast::Variable>(
+ Source{}, "my_var", ast::StorageClass::kNone, &ptr)));
body->append(create<ast::AssignmentStatement>(
my_var, create<ast::IdentifierExpression>("my_var")));
@@ -824,16 +832,16 @@
TEST_F(TypeDeterminerTest, Function_RegisterInputOutputVariables) {
ast::type::F32 f32;
- auto* in_var =
- create<ast::Variable>("in_var", ast::StorageClass::kInput, &f32);
- auto* out_var =
- create<ast::Variable>("out_var", ast::StorageClass::kOutput, &f32);
- auto* sb_var =
- create<ast::Variable>("sb_var", ast::StorageClass::kStorageBuffer, &f32);
- auto* wg_var =
- create<ast::Variable>("wg_var", ast::StorageClass::kWorkgroup, &f32);
- auto* priv_var =
- create<ast::Variable>("priv_var", ast::StorageClass::kPrivate, &f32);
+ auto* in_var = create<ast::Variable>(Source{}, "in_var",
+ ast::StorageClass::kInput, &f32);
+ auto* out_var = create<ast::Variable>(Source{}, "out_var",
+ ast::StorageClass::kOutput, &f32);
+ auto* sb_var = create<ast::Variable>(Source{}, "sb_var",
+ ast::StorageClass::kStorageBuffer, &f32);
+ auto* wg_var = create<ast::Variable>(Source{}, "wg_var",
+ ast::StorageClass::kWorkgroup, &f32);
+ auto* priv_var = create<ast::Variable>(Source{}, "priv_var",
+ ast::StorageClass::kPrivate, &f32);
mod->AddGlobalVariable(in_var);
mod->AddGlobalVariable(out_var);
@@ -875,16 +883,16 @@
TEST_F(TypeDeterminerTest, Function_RegisterInputOutputVariables_SubFunction) {
ast::type::F32 f32;
- auto* in_var =
- create<ast::Variable>("in_var", ast::StorageClass::kInput, &f32);
- auto* out_var =
- create<ast::Variable>("out_var", ast::StorageClass::kOutput, &f32);
- auto* sb_var =
- create<ast::Variable>("sb_var", ast::StorageClass::kStorageBuffer, &f32);
- auto* wg_var =
- create<ast::Variable>("wg_var", ast::StorageClass::kWorkgroup, &f32);
- auto* priv_var =
- create<ast::Variable>("priv_var", ast::StorageClass::kPrivate, &f32);
+ auto* in_var = create<ast::Variable>(Source{}, "in_var",
+ ast::StorageClass::kInput, &f32);
+ auto* out_var = create<ast::Variable>(Source{}, "out_var",
+ ast::StorageClass::kOutput, &f32);
+ auto* sb_var = create<ast::Variable>(Source{}, "sb_var",
+ ast::StorageClass::kStorageBuffer, &f32);
+ auto* wg_var = create<ast::Variable>(Source{}, "wg_var",
+ ast::StorageClass::kWorkgroup, &f32);
+ auto* priv_var = create<ast::Variable>(Source{}, "priv_var",
+ ast::StorageClass::kPrivate, &f32);
mod->AddGlobalVariable(in_var);
mod->AddGlobalVariable(out_var);
@@ -936,8 +944,8 @@
TEST_F(TypeDeterminerTest, Function_NotRegisterFunctionVariable) {
ast::type::F32 f32;
- auto* var =
- create<ast::Variable>("in_var", ast::StorageClass::kFunction, &f32);
+ auto* var = create<ast::Variable>(Source{}, "in_var",
+ ast::StorageClass::kFunction, &f32);
auto* body = create<ast::BlockStatement>();
body->append(create<ast::VariableDeclStatement>(var));
@@ -952,7 +960,7 @@
mod->AddFunction(func);
- ast::Variable v("var", ast::StorageClass::kFunction, &f32);
+ ast::Variable v(Source{}, "var", ast::StorageClass::kFunction, &f32);
td()->RegisterVariableForTesting(&v);
// Register the function
@@ -974,7 +982,8 @@
ast::type::Struct st("S", strct);
- auto* var = create<ast::Variable>("my_struct", ast::StorageClass::kNone, &st);
+ auto* var = create<ast::Variable>(Source{}, "my_struct",
+ ast::StorageClass::kNone, &st);
mod->AddGlobalVariable(var);
@@ -1007,8 +1016,8 @@
auto st = std::make_unique<ast::type::Struct>("alias", strct);
ast::type::Alias alias("alias", st.get());
- auto* var =
- create<ast::Variable>("my_struct", ast::StorageClass::kNone, &alias);
+ auto* var = create<ast::Variable>(Source{}, "my_struct",
+ ast::StorageClass::kNone, &alias);
mod->AddGlobalVariable(var);
@@ -1031,7 +1040,8 @@
ast::type::F32 f32;
ast::type::Vector vec3(&f32, 3);
- auto* var = create<ast::Variable>("my_vec", ast::StorageClass::kNone, &vec3);
+ auto* var = create<ast::Variable>(Source{}, "my_vec",
+ ast::StorageClass::kNone, &vec3);
mod->AddGlobalVariable(var);
// Register the global
@@ -1053,7 +1063,8 @@
ast::type::F32 f32;
ast::type::Vector vec3(&f32, 3);
- auto* var = create<ast::Variable>("my_vec", ast::StorageClass::kNone, &vec3);
+ auto* var = create<ast::Variable>(Source{}, "my_vec",
+ ast::StorageClass::kNone, &vec3);
mod->AddGlobalVariable(var);
// Register the global
@@ -1117,7 +1128,8 @@
ast::type::Struct stA("A", strctA);
- auto* var = create<ast::Variable>("c", ast::StorageClass::kNone, &stA);
+ auto* var =
+ create<ast::Variable>(Source{}, "c", ast::StorageClass::kNone, &stA);
mod->AddGlobalVariable(var);
// Register the global
@@ -1151,7 +1163,8 @@
ast::type::I32 i32;
- auto* var = create<ast::Variable>("val", ast::StorageClass::kNone, &i32);
+ auto* var =
+ create<ast::Variable>(Source{}, "val", ast::StorageClass::kNone, &i32);
mod->AddGlobalVariable(var);
// Register the global
@@ -1171,7 +1184,8 @@
ast::type::I32 i32;
ast::type::Vector vec3(&i32, 3);
- auto* var = create<ast::Variable>("val", ast::StorageClass::kNone, &vec3);
+ auto* var =
+ create<ast::Variable>(Source{}, "val", ast::StorageClass::kNone, &vec3);
mod->AddGlobalVariable(var);
// Register the global
@@ -1207,8 +1221,8 @@
ast::type::Bool bool_type;
- auto* var =
- create<ast::Variable>("val", ast::StorageClass::kNone, &bool_type);
+ auto* var = create<ast::Variable>(Source{}, "val", ast::StorageClass::kNone,
+ &bool_type);
mod->AddGlobalVariable(var);
// Register the global
@@ -1228,7 +1242,8 @@
ast::type::Bool bool_type;
ast::type::Vector vec3(&bool_type, 3);
- auto* var = create<ast::Variable>("val", ast::StorageClass::kNone, &vec3);
+ auto* var =
+ create<ast::Variable>(Source{}, "val", ast::StorageClass::kNone, &vec3);
mod->AddGlobalVariable(var);
// Register the global
@@ -1257,7 +1272,8 @@
ast::type::I32 i32;
- auto* var = create<ast::Variable>("val", ast::StorageClass::kNone, &i32);
+ auto* var =
+ create<ast::Variable>(Source{}, "val", ast::StorageClass::kNone, &i32);
mod->AddGlobalVariable(var);
// Register the global
@@ -1277,7 +1293,8 @@
ast::type::I32 i32;
ast::type::Vector vec3(&i32, 3);
- auto* var = create<ast::Variable>("val", ast::StorageClass::kNone, &vec3);
+ auto* var =
+ create<ast::Variable>(Source{}, "val", ast::StorageClass::kNone, &vec3);
mod->AddGlobalVariable(var);
// Register the global
@@ -1307,7 +1324,8 @@
TEST_F(TypeDeterminerTest, Expr_Binary_Multiply_Scalar_Scalar) {
ast::type::I32 i32;
- auto* var = create<ast::Variable>("val", ast::StorageClass::kNone, &i32);
+ auto* var =
+ create<ast::Variable>(Source{}, "val", ast::StorageClass::kNone, &i32);
mod->AddGlobalVariable(var);
// Register the global
@@ -1327,9 +1345,9 @@
ast::type::Vector vec3(&f32, 3);
auto* scalar =
- create<ast::Variable>("scalar", ast::StorageClass::kNone, &f32);
- auto* vector =
- create<ast::Variable>("vector", ast::StorageClass::kNone, &vec3);
+ create<ast::Variable>(Source{}, "scalar", ast::StorageClass::kNone, &f32);
+ auto* vector = create<ast::Variable>(Source{}, "vector",
+ ast::StorageClass::kNone, &vec3);
mod->AddGlobalVariable(scalar);
mod->AddGlobalVariable(vector);
@@ -1355,9 +1373,9 @@
ast::type::Vector vec3(&f32, 3);
auto* scalar =
- create<ast::Variable>("scalar", ast::StorageClass::kNone, &f32);
- auto* vector =
- create<ast::Variable>("vector", ast::StorageClass::kNone, &vec3);
+ create<ast::Variable>(Source{}, "scalar", ast::StorageClass::kNone, &f32);
+ auto* vector = create<ast::Variable>(Source{}, "vector",
+ ast::StorageClass::kNone, &vec3);
mod->AddGlobalVariable(scalar);
mod->AddGlobalVariable(vector);
@@ -1382,8 +1400,8 @@
ast::type::F32 f32;
ast::type::Vector vec3(&f32, 3);
- auto* vector =
- create<ast::Variable>("vector", ast::StorageClass::kNone, &vec3);
+ auto* vector = create<ast::Variable>(Source{}, "vector",
+ ast::StorageClass::kNone, &vec3);
mod->AddGlobalVariable(vector);
// Register the global
@@ -1408,9 +1426,9 @@
ast::type::Matrix mat3x2(&f32, 3, 2);
auto* scalar =
- create<ast::Variable>("scalar", ast::StorageClass::kNone, &f32);
- auto* matrix =
- create<ast::Variable>("matrix", ast::StorageClass::kNone, &mat3x2);
+ create<ast::Variable>(Source{}, "scalar", ast::StorageClass::kNone, &f32);
+ auto* matrix = create<ast::Variable>(Source{}, "matrix",
+ ast::StorageClass::kNone, &mat3x2);
mod->AddGlobalVariable(scalar);
mod->AddGlobalVariable(matrix);
@@ -1436,9 +1454,9 @@
ast::type::Matrix mat3x2(&f32, 3, 2);
auto* scalar =
- create<ast::Variable>("scalar", ast::StorageClass::kNone, &f32);
- auto* matrix =
- create<ast::Variable>("matrix", ast::StorageClass::kNone, &mat3x2);
+ create<ast::Variable>(Source{}, "scalar", ast::StorageClass::kNone, &f32);
+ auto* matrix = create<ast::Variable>(Source{}, "matrix",
+ ast::StorageClass::kNone, &mat3x2);
mod->AddGlobalVariable(scalar);
mod->AddGlobalVariable(matrix);
@@ -1464,10 +1482,10 @@
ast::type::Vector vec3(&f32, 2);
ast::type::Matrix mat3x2(&f32, 3, 2);
- auto* vector =
- create<ast::Variable>("vector", ast::StorageClass::kNone, &vec3);
- auto* matrix =
- create<ast::Variable>("matrix", ast::StorageClass::kNone, &mat3x2);
+ auto* vector = create<ast::Variable>(Source{}, "vector",
+ ast::StorageClass::kNone, &vec3);
+ auto* matrix = create<ast::Variable>(Source{}, "matrix",
+ ast::StorageClass::kNone, &mat3x2);
mod->AddGlobalVariable(vector);
mod->AddGlobalVariable(matrix);
@@ -1493,10 +1511,10 @@
ast::type::Vector vec3(&f32, 3);
ast::type::Matrix mat3x2(&f32, 3, 2);
- auto* vector =
- create<ast::Variable>("vector", ast::StorageClass::kNone, &vec3);
- auto* matrix =
- create<ast::Variable>("matrix", ast::StorageClass::kNone, &mat3x2);
+ auto* vector = create<ast::Variable>(Source{}, "vector",
+ ast::StorageClass::kNone, &vec3);
+ auto* matrix = create<ast::Variable>(Source{}, "matrix",
+ ast::StorageClass::kNone, &mat3x2);
mod->AddGlobalVariable(vector);
mod->AddGlobalVariable(matrix);
@@ -1522,10 +1540,10 @@
ast::type::Matrix mat4x3(&f32, 4, 3);
ast::type::Matrix mat3x4(&f32, 3, 4);
- auto* matrix1 =
- create<ast::Variable>("mat4x3", ast::StorageClass::kNone, &mat4x3);
- auto* matrix2 =
- create<ast::Variable>("mat3x4", ast::StorageClass::kNone, &mat3x4);
+ auto* matrix1 = create<ast::Variable>(Source{}, "mat4x3",
+ ast::StorageClass::kNone, &mat4x3);
+ auto* matrix2 = create<ast::Variable>(Source{}, "mat3x4",
+ ast::StorageClass::kNone, &mat3x4);
mod->AddGlobalVariable(matrix1);
mod->AddGlobalVariable(matrix2);
@@ -1552,7 +1570,8 @@
ast::type::F32 f32;
- auto* var = create<ast::Variable>("ident", ast::StorageClass::kNone, &f32);
+ auto* var =
+ create<ast::Variable>(Source{}, "ident", ast::StorageClass::kNone, &f32);
mod->AddGlobalVariable(var);
// Register the global
@@ -1575,7 +1594,8 @@
ast::type::F32 f32;
ast::type::Vector vec4(&f32, 4);
- auto* var = create<ast::Variable>("ident", ast::StorageClass::kNone, &vec4);
+ auto* var =
+ create<ast::Variable>(Source{}, "ident", ast::StorageClass::kNone, &vec4);
mod->AddGlobalVariable(var);
// Register the global
@@ -1619,8 +1639,10 @@
ast::type::F32 f32;
ast::type::Vector vec4(&f32, 4);
- auto* var1 = create<ast::Variable>("ident1", ast::StorageClass::kNone, &vec4);
- auto* var2 = create<ast::Variable>("ident2", ast::StorageClass::kNone, &vec4);
+ auto* var1 = create<ast::Variable>(Source{}, "ident1",
+ ast::StorageClass::kNone, &vec4);
+ auto* var2 = create<ast::Variable>(Source{}, "ident2",
+ ast::StorageClass::kNone, &vec4);
mod->AddGlobalVariable(var1);
mod->AddGlobalVariable(var2);
@@ -1655,7 +1677,8 @@
ast::type::Bool bool_type;
ast::type::Vector vec3(&bool_type, 3);
- auto* var = create<ast::Variable>("my_var", ast::StorageClass::kNone, &vec3);
+ auto* var = create<ast::Variable>(Source{}, "my_var",
+ ast::StorageClass::kNone, &vec3);
mod->AddGlobalVariable(var);
ast::ExpressionList call_params;
@@ -1682,7 +1705,8 @@
ast::type::F32 f32;
ast::type::Vector vec3(&f32, 3);
- auto* var = create<ast::Variable>("my_var", ast::StorageClass::kNone, &vec3);
+ auto* var = create<ast::Variable>(Source{}, "my_var",
+ ast::StorageClass::kNone, &vec3);
mod->AddGlobalVariable(var);
ast::ExpressionList call_params;
@@ -1709,7 +1733,8 @@
ast::type::F32 f32;
- auto* var = create<ast::Variable>("my_var", ast::StorageClass::kNone, &f32);
+ auto* var =
+ create<ast::Variable>(Source{}, "my_var", ast::StorageClass::kNone, &f32);
mod->AddGlobalVariable(var);
ast::ExpressionList call_params;
@@ -1730,7 +1755,8 @@
ast::type::F32 f32;
- auto* var = create<ast::Variable>("my_var", ast::StorageClass::kNone, &f32);
+ auto* var =
+ create<ast::Variable>(Source{}, "my_var", ast::StorageClass::kNone, &f32);
mod->AddGlobalVariable(var);
ast::ExpressionList call_params;
@@ -1748,7 +1774,8 @@
ast::type::F32 f32;
- auto* var = create<ast::Variable>("my_var", ast::StorageClass::kNone, &f32);
+ auto* var =
+ create<ast::Variable>(Source{}, "my_var", ast::StorageClass::kNone, &f32);
mod->AddGlobalVariable(var);
ast::ExpressionList call_params;
@@ -1817,7 +1844,8 @@
void add_call_param(std::string name,
ast::type::Type* type,
ast::ExpressionList* call_params) {
- auto* var = create<ast::Variable>(name, ast::StorageClass::kNone, type);
+ auto* var =
+ create<ast::Variable>(Source{}, name, ast::StorageClass::kNone, type);
mod->AddGlobalVariable(var);
call_params->push_back(create<ast::IdentifierExpression>(name));
}
@@ -1969,7 +1997,8 @@
ast::type::F32 f32;
ast::type::Vector vec3(&f32, 3);
- auto* var = create<ast::Variable>("my_var", ast::StorageClass::kNone, &vec3);
+ auto* var = create<ast::Variable>(Source{}, "my_var",
+ ast::StorageClass::kNone, &vec3);
mod->AddGlobalVariable(var);
ast::ExpressionList call_params;
@@ -1992,9 +2021,10 @@
ast::type::Vector vec3(&f32, 3);
ast::type::Vector bool_vec3(&bool_type, 3);
- auto* var = create<ast::Variable>("my_var", ast::StorageClass::kNone, &vec3);
- auto* bool_var =
- create<ast::Variable>("bool_var", ast::StorageClass::kNone, &bool_vec3);
+ auto* var = create<ast::Variable>(Source{}, "my_var",
+ ast::StorageClass::kNone, &vec3);
+ auto* bool_var = create<ast::Variable>(Source{}, "bool_var",
+ ast::StorageClass::kNone, &bool_vec3);
mod->AddGlobalVariable(var);
mod->AddGlobalVariable(bool_var);
@@ -2022,7 +2052,8 @@
ast::type::F32 f32;
ast::type::Vector vec3(&f32, 3);
- auto* var = create<ast::Variable>("v", ast::StorageClass::kNone, &vec3);
+ auto* var =
+ create<ast::Variable>(Source{}, "v", ast::StorageClass::kNone, &vec3);
mod->AddGlobalVariable(var);
ast::ExpressionList call_params;
@@ -2042,7 +2073,8 @@
ast::type::F32 f32;
ast::type::Vector vec3(&f32, 3);
- auto* var = create<ast::Variable>("v", ast::StorageClass::kNone, &vec3);
+ auto* var =
+ create<ast::Variable>(Source{}, "v", ast::StorageClass::kNone, &vec3);
mod->AddGlobalVariable(var);
ast::ExpressionList call_params;
@@ -2066,8 +2098,10 @@
ast::type::Vector vec3(&f32, 3);
ast::type::Vector vec2(&f32, 2);
- auto* var1 = create<ast::Variable>("v3", ast::StorageClass::kNone, &vec3);
- auto* var2 = create<ast::Variable>("v2", ast::StorageClass::kNone, &vec2);
+ auto* var1 =
+ create<ast::Variable>(Source{}, "v3", ast::StorageClass::kNone, &vec3);
+ auto* var2 =
+ create<ast::Variable>(Source{}, "v2", ast::StorageClass::kNone, &vec2);
mod->AddGlobalVariable(var1);
mod->AddGlobalVariable(var2);
@@ -2096,7 +2130,8 @@
ast::type::Vector vec3(&f32, 3);
ast::type::Vector vec2(&f32, 2);
- auto* var2 = create<ast::Variable>("v2", ast::StorageClass::kNone, &vec2);
+ auto* var2 =
+ create<ast::Variable>(Source{}, "v2", ast::StorageClass::kNone, &vec2);
mod->AddGlobalVariable(var2);
ast::ExpressionList call_params;
@@ -2116,7 +2151,8 @@
ast::type::Vector vec3(&f32, 3);
ast::type::Vector vec2(&f32, 2);
- auto* var2 = create<ast::Variable>("v2", ast::StorageClass::kNone, &vec2);
+ auto* var2 =
+ create<ast::Variable>(Source{}, "v2", ast::StorageClass::kNone, &vec2);
mod->AddGlobalVariable(var2);
ast::ExpressionList call_params;
@@ -2141,7 +2177,8 @@
ast::type::Vector vec4(&f32, 4);
- auto* var = create<ast::Variable>("ident", ast::StorageClass::kNone, &vec4);
+ auto* var =
+ create<ast::Variable>(Source{}, "ident", ast::StorageClass::kNone, &vec4);
mod->AddGlobalVariable(var);
// Register the global
@@ -2163,7 +2200,8 @@
TEST_F(TypeDeterminerTest, StorageClass_SetsIfMissing) {
ast::type::I32 i32;
- auto* var = create<ast::Variable>("var", ast::StorageClass::kNone, &i32);
+ auto* var =
+ create<ast::Variable>(Source{}, "var", ast::StorageClass::kNone, &i32);
auto* stmt = create<ast::VariableDeclStatement>(var);
auto* body = create<ast::BlockStatement>();
@@ -2180,7 +2218,8 @@
TEST_F(TypeDeterminerTest, StorageClass_DoesNotSetOnConst) {
ast::type::I32 i32;
- auto* var = create<ast::Variable>("var", ast::StorageClass::kNone, &i32);
+ auto* var =
+ create<ast::Variable>(Source{}, "var", ast::StorageClass::kNone, &i32);
var->set_is_const(true);
auto* stmt = create<ast::VariableDeclStatement>(var);
@@ -2198,7 +2237,8 @@
TEST_F(TypeDeterminerTest, StorageClass_NonFunctionClassError) {
ast::type::I32 i32;
- auto* var = create<ast::Variable>("var", ast::StorageClass::kWorkgroup, &i32);
+ auto* var = create<ast::Variable>(Source{}, "var",
+ ast::StorageClass::kWorkgroup, &i32);
auto* stmt = create<ast::VariableDeclStatement>(var);
auto* body = create<ast::BlockStatement>();
@@ -4255,7 +4295,8 @@
ast::type::F32 f32;
ast::type::Matrix mat(&f32, 3, 3);
- auto* var = create<ast::Variable>("var", ast::StorageClass::kFunction, &mat);
+ auto* var = create<ast::Variable>(Source{}, "var",
+ ast::StorageClass::kFunction, &mat);
mod->AddGlobalVariable(var);
// Register the global
@@ -4280,7 +4321,8 @@
ast::type::F32 f32;
- auto* var = create<ast::Variable>("var", ast::StorageClass::kFunction, &f32);
+ auto* var = create<ast::Variable>(Source{}, "var",
+ ast::StorageClass::kFunction, &f32);
mod->AddGlobalVariable(var);
// Register the global
@@ -4316,7 +4358,8 @@
ast::type::F32 f32;
ast::type::Matrix mat(&f32, 3, 3);
- auto* var = create<ast::Variable>("var", ast::StorageClass::kFunction, &mat);
+ auto* var = create<ast::Variable>(Source{}, "var",
+ ast::StorageClass::kFunction, &mat);
mod->AddGlobalVariable(var);
// Register the global
@@ -4406,16 +4449,16 @@
mod->AddFunction(ep_1);
mod->AddFunction(ep_2);
- mod->AddGlobalVariable(
- create<ast::Variable>("first", ast::StorageClass::kPrivate, &f32));
- mod->AddGlobalVariable(
- create<ast::Variable>("second", ast::StorageClass::kPrivate, &f32));
- mod->AddGlobalVariable(
- create<ast::Variable>("call_a", ast::StorageClass::kPrivate, &f32));
- mod->AddGlobalVariable(
- create<ast::Variable>("call_b", ast::StorageClass::kPrivate, &f32));
- mod->AddGlobalVariable(
- create<ast::Variable>("call_c", ast::StorageClass::kPrivate, &f32));
+ mod->AddGlobalVariable(create<ast::Variable>(
+ Source{}, "first", ast::StorageClass::kPrivate, &f32));
+ mod->AddGlobalVariable(create<ast::Variable>(
+ Source{}, "second", ast::StorageClass::kPrivate, &f32));
+ mod->AddGlobalVariable(create<ast::Variable>(
+ Source{}, "call_a", ast::StorageClass::kPrivate, &f32));
+ mod->AddGlobalVariable(create<ast::Variable>(
+ Source{}, "call_b", ast::StorageClass::kPrivate, &f32));
+ mod->AddGlobalVariable(create<ast::Variable>(
+ Source{}, "call_c", ast::StorageClass::kPrivate, &f32));
// Register the functions and calculate the callers
ASSERT_TRUE(td()->Determine()) << td()->error();
diff --git a/src/validator/validator_control_block_test.cc b/src/validator/validator_control_block_test.cc
index 7e4fef2..08f59b9 100644
--- a/src/validator/validator_control_block_test.cc
+++ b/src/validator/validator_control_block_test.cc
@@ -43,7 +43,8 @@
// default: {}
// }
ast::type::F32 f32;
- auto* var = create<ast::Variable>("a", ast::StorageClass::kNone, &f32);
+ auto* var =
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kNone, &f32);
var->set_constructor(create<ast::ScalarConstructorExpression>(
create<ast::SintLiteral>(&f32, 3.14f)));
@@ -71,7 +72,8 @@
// case 1: {}
// }
ast::type::I32 i32;
- auto* var = create<ast::Variable>("a", ast::StorageClass::kNone, &i32);
+ auto* var =
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kNone, &i32);
var->set_constructor(create<ast::ScalarConstructorExpression>(
create<ast::SintLiteral>(&i32, 2)));
@@ -102,7 +104,8 @@
// default: {}
// }
ast::type::I32 i32;
- auto* var = create<ast::Variable>("a", ast::StorageClass::kNone, &i32);
+ auto* var =
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kNone, &i32);
var->set_constructor(create<ast::ScalarConstructorExpression>(
create<ast::SintLiteral>(&i32, 2)));
@@ -145,7 +148,8 @@
// }
ast::type::U32 u32;
ast::type::I32 i32;
- auto* var = create<ast::Variable>("a", ast::StorageClass::kNone, &i32);
+ auto* var =
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kNone, &i32);
var->set_constructor(create<ast::ScalarConstructorExpression>(
create<ast::SintLiteral>(&i32, 2)));
@@ -181,7 +185,8 @@
// }
ast::type::U32 u32;
ast::type::I32 i32;
- auto* var = create<ast::Variable>("a", ast::StorageClass::kNone, &u32);
+ auto* var =
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kNone, &u32);
var->set_constructor(create<ast::ScalarConstructorExpression>(
create<ast::UintLiteral>(&u32, 2)));
@@ -216,7 +221,8 @@
// default: {}
// }
ast::type::U32 u32;
- auto* var = create<ast::Variable>("a", ast::StorageClass::kNone, &u32);
+ auto* var =
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kNone, &u32);
var->set_constructor(create<ast::ScalarConstructorExpression>(
create<ast::UintLiteral>(&u32, 3)));
@@ -257,7 +263,8 @@
// default: {}
// }
ast::type::I32 i32;
- auto* var = create<ast::Variable>("a", ast::StorageClass::kNone, &i32);
+ auto* var =
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kNone, &i32);
var->set_constructor(create<ast::ScalarConstructorExpression>(
create<ast::SintLiteral>(&i32, 2)));
@@ -298,7 +305,8 @@
// default: { fallthrough; }
// }
ast::type::I32 i32;
- auto* var = create<ast::Variable>("a", ast::StorageClass::kNone, &i32);
+ auto* var =
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kNone, &i32);
var->set_constructor(create<ast::ScalarConstructorExpression>(
create<ast::SintLiteral>(&i32, 2)));
@@ -328,7 +336,8 @@
// case 5: {}
// }
ast::type::I32 i32;
- auto* var = create<ast::Variable>("a", ast::StorageClass::kNone, &i32);
+ auto* var =
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kNone, &i32);
var->set_constructor(create<ast::ScalarConstructorExpression>(
create<ast::SintLiteral>(&i32, 2)));
@@ -361,7 +370,8 @@
ast::type::U32 u32;
ast::type::Alias my_int{"MyInt", &u32};
- auto* var = create<ast::Variable>("a", ast::StorageClass::kNone, &my_int);
+ auto* var =
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kNone, &my_int);
var->set_constructor(create<ast::ScalarConstructorExpression>(
create<ast::SintLiteral>(&u32, 2)));
diff --git a/src/validator/validator_function_test.cc b/src/validator/validator_function_test.cc
index c767789..4911941 100644
--- a/src/validator/validator_function_test.cc
+++ b/src/validator/validator_function_test.cc
@@ -39,7 +39,8 @@
// [[stage(vertex)]]
// fn func -> void { var a:i32 = 2; }
ast::type::I32 i32;
- auto* var = create<ast::Variable>("a", ast::StorageClass::kNone, &i32);
+ auto* var =
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kNone, &i32);
var->set_constructor(create<ast::ScalarConstructorExpression>(
create<ast::SintLiteral>(&i32, 2)));
@@ -80,7 +81,8 @@
// fn func -> int { var a:i32 = 2; }
ast::type::I32 i32;
- auto* var = create<ast::Variable>("a", ast::StorageClass::kNone, &i32);
+ auto* var =
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kNone, &i32);
var->set_constructor(create<ast::ScalarConstructorExpression>(
create<ast::SintLiteral>(&i32, 2)));
@@ -237,7 +239,8 @@
TEST_F(ValidateFunctionTest, RecursionIsNotAllowedExpr_Fail) {
// fn func() -> i32 {var a: i32 = func(); return 2; }
ast::type::I32 i32;
- auto* var = create<ast::Variable>("a", ast::StorageClass::kNone, &i32);
+ auto* var =
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kNone, &i32);
ast::ExpressionList call_params;
auto* call_expr = create<ast::CallExpression>(
Source{Source::Location{12, 34}},
@@ -288,7 +291,8 @@
ast::type::I32 i32;
ast::type::Void void_type;
ast::VariableList params;
- params.push_back(create<ast::Variable>("a", ast::StorageClass::kNone, &i32));
+ params.push_back(
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kNone, &i32));
auto* body = create<ast::BlockStatement>();
body->append(create<ast::ReturnStatement>());
auto* func = create<ast::Function>(
diff --git a/src/validator/validator_test.cc b/src/validator/validator_test.cc
index 6c5871b..49a8d2f 100644
--- a/src/validator/validator_test.cc
+++ b/src/validator/validator_test.cc
@@ -115,7 +115,8 @@
// var a :i32 = 2;
// a = 2
ast::type::I32 i32;
- auto* var = create<ast::Variable>("a", ast::StorageClass::kNone, &i32);
+ auto* var =
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kNone, &i32);
var->set_constructor(create<ast::ScalarConstructorExpression>(
create<ast::SintLiteral>(&i32, 2)));
@@ -139,7 +140,8 @@
ast::type::F32 f32;
ast::type::I32 i32;
- auto* var = create<ast::Variable>("a", ast::StorageClass::kNone, &i32);
+ auto* var =
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kNone, &i32);
var->set_constructor(create<ast::ScalarConstructorExpression>(
create<ast::SintLiteral>(&i32, 2)));
auto* lhs = create<ast::IdentifierExpression>("a");
@@ -165,7 +167,8 @@
// a = 2
// }
ast::type::I32 i32;
- auto* var = create<ast::Variable>("a", ast::StorageClass::kNone, &i32);
+ auto* var =
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kNone, &i32);
var->set_constructor(create<ast::ScalarConstructorExpression>(
create<ast::SintLiteral>(&i32, 2)));
@@ -193,7 +196,8 @@
ast::type::F32 f32;
ast::type::I32 i32;
- auto* var = create<ast::Variable>("a", ast::StorageClass::kNone, &i32);
+ auto* var =
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kNone, &i32);
var->set_constructor(create<ast::ScalarConstructorExpression>(
create<ast::SintLiteral>(&i32, 2)));
auto* lhs = create<ast::IdentifierExpression>("a");
@@ -274,8 +278,8 @@
// not_global_var = 3.14f;
// }
ast::type::F32 f32;
- auto* global_var =
- create<ast::Variable>("global_var", ast::StorageClass::kPrivate, &f32);
+ auto* global_var = create<ast::Variable>(Source{}, "global_var",
+ ast::StorageClass::kPrivate, &f32);
global_var->set_constructor(create<ast::ScalarConstructorExpression>(
create<ast::FloatLiteral>(&f32, 2.1)));
mod()->AddGlobalVariable(global_var);
@@ -307,8 +311,8 @@
ast::type::F32 f32;
ast::type::Void void_type;
- auto* global_var =
- create<ast::Variable>("global_var", ast::StorageClass::kPrivate, &f32);
+ auto* global_var = create<ast::Variable>(Source{}, "global_var",
+ ast::StorageClass::kPrivate, &f32);
global_var->set_constructor(create<ast::ScalarConstructorExpression>(
create<ast::FloatLiteral>(&f32, 2.1)));
mod()->AddGlobalVariable(global_var);
@@ -340,7 +344,8 @@
// a = 3.14;
// }
ast::type::F32 f32;
- auto* var = create<ast::Variable>("a", ast::StorageClass::kNone, &f32);
+ auto* var =
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kNone, &f32);
var->set_constructor(create<ast::ScalarConstructorExpression>(
create<ast::FloatLiteral>(&f32, 2.0)));
@@ -374,7 +379,8 @@
// if (true) { a = 3.14; }
// }
ast::type::F32 f32;
- auto* var = create<ast::Variable>("a", ast::StorageClass::kNone, &f32);
+ auto* var =
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kNone, &f32);
var->set_constructor(create<ast::ScalarConstructorExpression>(
create<ast::FloatLiteral>(&f32, 2.0)));
@@ -405,8 +411,8 @@
// var global_var1 : i32 = 0;
ast::type::F32 f32;
ast::type::I32 i32;
- auto* var0 =
- create<ast::Variable>("global_var0", ast::StorageClass::kPrivate, &f32);
+ auto* var0 = create<ast::Variable>(Source{}, "global_var0",
+ ast::StorageClass::kPrivate, &f32);
var0->set_constructor(create<ast::ScalarConstructorExpression>(
create<ast::FloatLiteral>(&f32, 0.1)));
mod()->AddGlobalVariable(var0);
@@ -427,8 +433,8 @@
// var global_var : i32 = 0;
ast::type::F32 f32;
ast::type::I32 i32;
- auto* var0 =
- create<ast::Variable>("global_var", ast::StorageClass::kPrivate, &f32);
+ auto* var0 = create<ast::Variable>(Source{}, "global_var",
+ ast::StorageClass::kPrivate, &f32);
var0->set_constructor(create<ast::ScalarConstructorExpression>(
create<ast::FloatLiteral>(&f32, 0.1)));
mod()->AddGlobalVariable(var0);
@@ -451,7 +457,8 @@
// a = 2
// }
ast::type::I32 i32;
- auto* var = create<ast::Variable>("a", ast::StorageClass::kNone, &i32);
+ auto* var =
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kNone, &i32);
var->set_constructor(create<ast::ScalarConstructorExpression>(
create<ast::SintLiteral>(&i32, 2)));
var->set_is_const(true);
@@ -483,12 +490,13 @@
ast::type::Void void_type;
ast::type::F32 f32;
auto* global_var =
- create<ast::Variable>("a", ast::StorageClass::kPrivate, &f32);
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kPrivate, &f32);
global_var->set_constructor(create<ast::ScalarConstructorExpression>(
create<ast::FloatLiteral>(&f32, 2.1)));
mod()->AddGlobalVariable(global_var);
- auto* var = create<ast::Variable>("a", ast::StorageClass::kNone, &f32);
+ auto* var =
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kNone, &f32);
var->set_constructor(create<ast::ScalarConstructorExpression>(
create<ast::FloatLiteral>(&f32, 2.0)));
ast::VariableList params;
@@ -514,12 +522,13 @@
ast::type::Void void_type;
ast::type::I32 i32;
ast::type::F32 f32;
- auto* var = create<ast::Variable>("a", ast::StorageClass::kNone, &i32);
+ auto* var =
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kNone, &i32);
var->set_constructor(create<ast::ScalarConstructorExpression>(
create<ast::SintLiteral>(&i32, 2)));
auto* var_a_float =
- create<ast::Variable>("a", ast::StorageClass::kNone, &f32);
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kNone, &f32);
var_a_float->set_constructor(create<ast::ScalarConstructorExpression>(
create<ast::FloatLiteral>(&f32, 0.1)));
@@ -545,7 +554,8 @@
// var a : f32 = 3.14;
// }
ast::type::F32 f32;
- auto* var = create<ast::Variable>("a", ast::StorageClass::kNone, &f32);
+ auto* var =
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kNone, &f32);
var->set_constructor(create<ast::ScalarConstructorExpression>(
create<ast::FloatLiteral>(&f32, 2.0)));
@@ -556,7 +566,7 @@
body->append(create<ast::VariableDeclStatement>(var));
auto* var_a_float =
- create<ast::Variable>("a", ast::StorageClass::kNone, &f32);
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kNone, &f32);
var_a_float->set_constructor(create<ast::ScalarConstructorExpression>(
create<ast::FloatLiteral>(&f32, 3.14)));
@@ -579,11 +589,12 @@
// }
ast::type::F32 f32;
auto* var_a_float =
- create<ast::Variable>("a", ast::StorageClass::kNone, &f32);
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kNone, &f32);
var_a_float->set_constructor(create<ast::ScalarConstructorExpression>(
create<ast::FloatLiteral>(&f32, 3.14)));
- auto* var = create<ast::Variable>("a", ast::StorageClass::kNone, &f32);
+ auto* var =
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kNone, &f32);
var->set_constructor(create<ast::ScalarConstructorExpression>(
create<ast::FloatLiteral>(&f32, 2.0)));
@@ -609,11 +620,13 @@
// func1 { var a : f32 = 3.0; return; }
ast::type::F32 f32;
ast::type::Void void_type;
- auto* var0 = create<ast::Variable>("a", ast::StorageClass::kNone, &f32);
+ auto* var0 =
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kNone, &f32);
var0->set_constructor(create<ast::ScalarConstructorExpression>(
create<ast::FloatLiteral>(&f32, 2.0)));
- auto* var1 = create<ast::Variable>("a", ast::StorageClass::kNone, &void_type);
+ auto* var1 = create<ast::Variable>(Source{}, "a", ast::StorageClass::kNone,
+ &void_type);
var1->set_constructor(create<ast::ScalarConstructorExpression>(
create<ast::FloatLiteral>(&f32, 1.0)));
@@ -649,7 +662,8 @@
// a = 2;
// }
ast::type::I32 i32;
- auto* var = create<ast::Variable>("a", ast::StorageClass::kNone, &i32);
+ auto* var =
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kNone, &i32);
td()->RegisterVariableForTesting(var);
auto* lhs = create<ast::IdentifierExpression>("a");
diff --git a/src/validator/validator_type_test.cc b/src/validator/validator_type_test.cc
index 48bbc33..fbec490 100644
--- a/src/validator/validator_type_test.cc
+++ b/src/validator/validator_type_test.cc
@@ -193,7 +193,8 @@
ast::type::I32 i32;
ast::type::Array array(&i32);
- auto* var = create<ast::Variable>("a", ast::StorageClass::kNone, &array);
+ auto* var =
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kNone, &array);
ast::VariableList params;
ast::type::Void void_type;
auto* body = create<ast::BlockStatement>();
diff --git a/src/writer/hlsl/generator_impl_binary_test.cc b/src/writer/hlsl/generator_impl_binary_test.cc
index 37bc11a..4dd592f 100644
--- a/src/writer/hlsl/generator_impl_binary_test.cc
+++ b/src/writer/hlsl/generator_impl_binary_test.cc
@@ -62,10 +62,10 @@
auto params = GetParam();
- auto* left_var =
- create<ast::Variable>("left", ast::StorageClass::kFunction, &f32);
- auto* right_var =
- create<ast::Variable>("right", ast::StorageClass::kFunction, &f32);
+ auto* left_var = create<ast::Variable>(Source{}, "left",
+ ast::StorageClass::kFunction, &f32);
+ auto* right_var = create<ast::Variable>(Source{}, "right",
+ ast::StorageClass::kFunction, &f32);
auto* left = create<ast::IdentifierExpression>("left");
auto* right = create<ast::IdentifierExpression>("right");
@@ -84,10 +84,10 @@
auto params = GetParam();
- auto* left_var =
- create<ast::Variable>("left", ast::StorageClass::kFunction, &u32);
- auto* right_var =
- create<ast::Variable>("right", ast::StorageClass::kFunction, &u32);
+ auto* left_var = create<ast::Variable>(Source{}, "left",
+ ast::StorageClass::kFunction, &u32);
+ auto* right_var = create<ast::Variable>(Source{}, "right",
+ ast::StorageClass::kFunction, &u32);
auto* left = create<ast::IdentifierExpression>("left");
auto* right = create<ast::IdentifierExpression>("right");
@@ -106,10 +106,10 @@
auto params = GetParam();
- auto* left_var =
- create<ast::Variable>("left", ast::StorageClass::kFunction, &i32);
- auto* right_var =
- create<ast::Variable>("right", ast::StorageClass::kFunction, &i32);
+ auto* left_var = create<ast::Variable>(Source{}, "left",
+ ast::StorageClass::kFunction, &i32);
+ auto* right_var = create<ast::Variable>(Source{}, "right",
+ ast::StorageClass::kFunction, &i32);
auto* left = create<ast::IdentifierExpression>("left");
auto* right = create<ast::IdentifierExpression>("right");
@@ -199,7 +199,8 @@
ast::type::F32 f32;
ast::type::Matrix mat3(&f32, 3, 3);
- auto* var = create<ast::Variable>("mat", ast::StorageClass::kFunction, &mat3);
+ auto* var = create<ast::Variable>(Source{}, "mat",
+ ast::StorageClass::kFunction, &mat3);
auto* lhs = create<ast::IdentifierExpression>("mat");
auto* rhs = create<ast::ScalarConstructorExpression>(
create<ast::FloatLiteral>(&f32, 1.f));
@@ -217,7 +218,8 @@
ast::type::F32 f32;
ast::type::Matrix mat3(&f32, 3, 3);
- auto* var = create<ast::Variable>("mat", ast::StorageClass::kFunction, &mat3);
+ auto* var = create<ast::Variable>(Source{}, "mat",
+ ast::StorageClass::kFunction, &mat3);
auto* lhs = create<ast::ScalarConstructorExpression>(
create<ast::FloatLiteral>(&f32, 1.f));
auto* rhs = create<ast::IdentifierExpression>("mat");
@@ -236,7 +238,8 @@
ast::type::Vector vec3(&f32, 3);
ast::type::Matrix mat3(&f32, 3, 3);
- auto* var = create<ast::Variable>("mat", ast::StorageClass::kFunction, &mat3);
+ auto* var = create<ast::Variable>(Source{}, "mat",
+ ast::StorageClass::kFunction, &mat3);
auto* lhs = create<ast::IdentifierExpression>("mat");
ast::ExpressionList vals;
@@ -262,7 +265,8 @@
ast::type::Vector vec3(&f32, 3);
ast::type::Matrix mat3(&f32, 3, 3);
- auto* var = create<ast::Variable>("mat", ast::StorageClass::kFunction, &mat3);
+ auto* var = create<ast::Variable>(Source{}, "mat",
+ ast::StorageClass::kFunction, &mat3);
ast::ExpressionList vals;
vals.push_back(create<ast::ScalarConstructorExpression>(
@@ -289,7 +293,8 @@
ast::type::Vector vec3(&f32, 3);
ast::type::Matrix mat3(&f32, 3, 3);
- auto* var = create<ast::Variable>("mat", ast::StorageClass::kFunction, &mat3);
+ auto* var = create<ast::Variable>(Source{}, "mat",
+ ast::StorageClass::kFunction, &mat3);
auto* lhs = create<ast::IdentifierExpression>("mat");
auto* rhs = create<ast::IdentifierExpression>("mat");
@@ -482,8 +487,8 @@
auto* c = create<ast::IdentifierExpression>("c");
auto* d = create<ast::IdentifierExpression>("d");
- auto* var =
- create<ast::Variable>("a", ast::StorageClass::kFunction, &bool_type);
+ auto* var = create<ast::Variable>(Source{}, "a", ast::StorageClass::kFunction,
+ &bool_type);
var->set_constructor(create<ast::BinaryExpression>(
ast::BinaryOp::kLogicalOr,
create<ast::BinaryExpression>(ast::BinaryOp::kLogicalAnd, b, c), d));
diff --git a/src/writer/hlsl/generator_impl_function_entry_point_data_test.cc b/src/writer/hlsl/generator_impl_function_entry_point_data_test.cc
index 38e5cfd..96b9044 100644
--- a/src/writer/hlsl/generator_impl_function_entry_point_data_test.cc
+++ b/src/writer/hlsl/generator_impl_function_entry_point_data_test.cc
@@ -53,11 +53,11 @@
ast::type::I32 i32;
auto* foo_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("foo", ast::StorageClass::kInput, &f32));
+ create<ast::Variable>(Source{}, "foo", ast::StorageClass::kInput, &f32));
foo_var->set_decorations({create<ast::LocationDecoration>(0, Source{})});
auto* bar_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("bar", ast::StorageClass::kInput, &i32));
+ create<ast::Variable>(Source{}, "bar", ast::StorageClass::kInput, &i32));
bar_var->set_decorations({create<ast::LocationDecoration>(1, Source{})});
td.RegisterVariableForTesting(foo_var);
@@ -109,11 +109,11 @@
ast::type::I32 i32;
auto* foo_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("foo", ast::StorageClass::kOutput, &f32));
+ create<ast::Variable>(Source{}, "foo", ast::StorageClass::kOutput, &f32));
foo_var->set_decorations({create<ast::LocationDecoration>(0, Source{})});
auto* bar_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("bar", ast::StorageClass::kOutput, &i32));
+ create<ast::Variable>(Source{}, "bar", ast::StorageClass::kOutput, &i32));
bar_var->set_decorations({create<ast::LocationDecoration>(1, Source{})});
td.RegisterVariableForTesting(foo_var);
@@ -166,11 +166,11 @@
ast::type::I32 i32;
auto* foo_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("foo", ast::StorageClass::kInput, &f32));
+ create<ast::Variable>(Source{}, "foo", ast::StorageClass::kInput, &f32));
foo_var->set_decorations({create<ast::LocationDecoration>(0, Source{})});
auto* bar_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("bar", ast::StorageClass::kInput, &i32));
+ create<ast::Variable>(Source{}, "bar", ast::StorageClass::kInput, &i32));
bar_var->set_decorations({create<ast::LocationDecoration>(1, Source{})});
td.RegisterVariableForTesting(foo_var);
@@ -223,11 +223,11 @@
ast::type::I32 i32;
auto* foo_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("foo", ast::StorageClass::kOutput, &f32));
+ create<ast::Variable>(Source{}, "foo", ast::StorageClass::kOutput, &f32));
foo_var->set_decorations({create<ast::LocationDecoration>(0, Source{})});
auto* bar_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("bar", ast::StorageClass::kOutput, &i32));
+ create<ast::Variable>(Source{}, "bar", ast::StorageClass::kOutput, &i32));
bar_var->set_decorations({create<ast::LocationDecoration>(1, Source{})});
td.RegisterVariableForTesting(foo_var);
@@ -276,14 +276,14 @@
ast::type::I32 i32;
auto* foo_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("foo", ast::StorageClass::kInput, &f32));
+ create<ast::Variable>(Source{}, "foo", ast::StorageClass::kInput, &f32));
ast::VariableDecorationList decos;
decos.push_back(create<ast::LocationDecoration>(0, Source{}));
foo_var->set_decorations(decos);
auto* bar_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("bar", ast::StorageClass::kInput, &i32));
+ create<ast::Variable>(Source{}, "bar", ast::StorageClass::kInput, &i32));
decos.push_back(create<ast::LocationDecoration>(1, Source{}));
bar_var->set_decorations(decos);
@@ -328,14 +328,14 @@
ast::type::I32 i32;
auto* foo_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("foo", ast::StorageClass::kOutput, &f32));
+ create<ast::Variable>(Source{}, "foo", ast::StorageClass::kOutput, &f32));
ast::VariableDecorationList decos;
decos.push_back(create<ast::LocationDecoration>(0, Source{}));
foo_var->set_decorations(decos);
auto* bar_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("bar", ast::StorageClass::kOutput, &i32));
+ create<ast::Variable>(Source{}, "bar", ast::StorageClass::kOutput, &i32));
decos.push_back(create<ast::LocationDecoration>(1, Source{}));
bar_var->set_decorations(decos);
@@ -386,13 +386,13 @@
ast::type::Void void_type;
ast::type::Vector vec4(&f32, 4);
- auto* coord_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("coord", ast::StorageClass::kInput, &vec4));
+ auto* coord_var = create<ast::DecoratedVariable>(create<ast::Variable>(
+ Source{}, "coord", ast::StorageClass::kInput, &vec4));
coord_var->set_decorations(
{create<ast::BuiltinDecoration>(ast::Builtin::kFragCoord, Source{})});
- auto* depth_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("depth", ast::StorageClass::kOutput, &f32));
+ auto* depth_var = create<ast::DecoratedVariable>(create<ast::Variable>(
+ Source{}, "depth", ast::StorageClass::kOutput, &f32));
depth_var->set_decorations(
{create<ast::BuiltinDecoration>(ast::Builtin::kFragDepth, Source{})});
diff --git a/src/writer/hlsl/generator_impl_function_test.cc b/src/writer/hlsl/generator_impl_function_test.cc
index c8ac19f..2f107ef 100644
--- a/src/writer/hlsl/generator_impl_function_test.cc
+++ b/src/writer/hlsl/generator_impl_function_test.cc
@@ -98,8 +98,10 @@
ast::type::I32 i32;
ast::VariableList params;
- params.push_back(create<ast::Variable>("a", ast::StorageClass::kNone, &f32));
- params.push_back(create<ast::Variable>("b", ast::StorageClass::kNone, &i32));
+ params.push_back(
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kNone, &f32));
+ params.push_back(
+ create<ast::Variable>(Source{}, "b", ast::StorageClass::kNone, &i32));
ast::type::Void void_type;
@@ -125,11 +127,11 @@
ast::type::F32 f32;
auto* foo_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("foo", ast::StorageClass::kInput, &f32));
+ create<ast::Variable>(Source{}, "foo", ast::StorageClass::kInput, &f32));
foo_var->set_decorations({create<ast::LocationDecoration>(0, Source{})});
auto* bar_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("bar", ast::StorageClass::kOutput, &f32));
+ create<ast::Variable>(Source{}, "bar", ast::StorageClass::kOutput, &f32));
bar_var->set_decorations({create<ast::LocationDecoration>(1, Source{})});
td.RegisterVariableForTesting(foo_var);
@@ -177,14 +179,14 @@
ast::type::F32 f32;
ast::type::Vector vec4(&f32, 4);
- auto* coord_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("coord", ast::StorageClass::kInput, &vec4));
+ auto* coord_var = create<ast::DecoratedVariable>(create<ast::Variable>(
+ Source{}, "coord", ast::StorageClass::kInput, &vec4));
coord_var->set_decorations(
{create<ast::BuiltinDecoration>(ast::Builtin::kFragCoord, Source{})});
- auto* depth_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("depth", ast::StorageClass::kOutput, &f32));
+ auto* depth_var = create<ast::DecoratedVariable>(create<ast::Variable>(
+ Source{}, "depth", ast::StorageClass::kOutput, &f32));
depth_var->set_decorations(
{create<ast::BuiltinDecoration>(ast::Builtin::kFragDepth, Source{})});
@@ -235,8 +237,8 @@
ast::type::F32 f32;
ast::type::Vector vec4(&f32, 4);
- auto* coord_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("coord", ast::StorageClass::kUniform, &vec4));
+ auto* coord_var = create<ast::DecoratedVariable>(create<ast::Variable>(
+ Source{}, "coord", ast::StorageClass::kUniform, &vec4));
ast::VariableDecorationList decos;
decos.push_back(create<ast::BindingDecoration>(0, Source{}));
@@ -247,7 +249,8 @@
mod.AddGlobalVariable(coord_var);
ast::VariableList params;
- auto* var = create<ast::Variable>("v", ast::StorageClass::kFunction, &f32);
+ auto* var =
+ create<ast::Variable>(Source{}, "v", ast::StorageClass::kFunction, &f32);
var->set_constructor(create<ast::MemberAccessorExpression>(
create<ast::IdentifierExpression>("coord"),
create<ast::IdentifierExpression>("x")));
@@ -291,8 +294,8 @@
ast::type::Struct s("Uniforms", str);
- auto* coord_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("uniforms", ast::StorageClass::kUniform, &s));
+ auto* coord_var = create<ast::DecoratedVariable>(create<ast::Variable>(
+ Source{}, "uniforms", ast::StorageClass::kUniform, &s));
mod.AddConstructedType(&s);
@@ -305,7 +308,8 @@
mod.AddGlobalVariable(coord_var);
ast::VariableList params;
- auto* var = create<ast::Variable>("v", ast::StorageClass::kFunction, &f32);
+ auto* var =
+ create<ast::Variable>(Source{}, "v", ast::StorageClass::kFunction, &f32);
var->set_constructor(create<ast::MemberAccessorExpression>(
create<ast::MemberAccessorExpression>(
create<ast::IdentifierExpression>("uniforms"),
@@ -359,8 +363,8 @@
ast::type::Struct s("Data", str);
ast::type::AccessControl ac(ast::AccessControl::kReadWrite, &s);
- auto* coord_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("coord", ast::StorageClass::kStorageBuffer, &ac));
+ auto* coord_var = create<ast::DecoratedVariable>(create<ast::Variable>(
+ Source{}, "coord", ast::StorageClass::kStorageBuffer, &ac));
ast::VariableDecorationList decos;
decos.push_back(create<ast::BindingDecoration>(0, Source{}));
@@ -371,7 +375,8 @@
mod.AddGlobalVariable(coord_var);
ast::VariableList params;
- auto* var = create<ast::Variable>("v", ast::StorageClass::kFunction, &f32);
+ auto* var =
+ create<ast::Variable>(Source{}, "v", ast::StorageClass::kFunction, &f32);
var->set_constructor(create<ast::MemberAccessorExpression>(
create<ast::IdentifierExpression>("coord"),
create<ast::IdentifierExpression>("b")));
@@ -419,8 +424,8 @@
ast::type::Struct s("Data", str);
ast::type::AccessControl ac(ast::AccessControl::kReadOnly, &s);
- auto* coord_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("coord", ast::StorageClass::kStorageBuffer, &ac));
+ auto* coord_var = create<ast::DecoratedVariable>(create<ast::Variable>(
+ Source{}, "coord", ast::StorageClass::kStorageBuffer, &ac));
ast::VariableDecorationList decos;
decos.push_back(create<ast::BindingDecoration>(0, Source{}));
@@ -431,7 +436,8 @@
mod.AddGlobalVariable(coord_var);
ast::VariableList params;
- auto* var = create<ast::Variable>("v", ast::StorageClass::kFunction, &f32);
+ auto* var =
+ create<ast::Variable>(Source{}, "v", ast::StorageClass::kFunction, &f32);
var->set_constructor(create<ast::MemberAccessorExpression>(
create<ast::IdentifierExpression>("coord"),
create<ast::IdentifierExpression>("b")));
@@ -479,8 +485,8 @@
ast::type::Struct s("Data", str);
ast::type::AccessControl ac(ast::AccessControl::kReadWrite, &s);
- auto* coord_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("coord", ast::StorageClass::kStorageBuffer, &ac));
+ auto* coord_var = create<ast::DecoratedVariable>(create<ast::Variable>(
+ Source{}, "coord", ast::StorageClass::kStorageBuffer, &ac));
ast::VariableDecorationList decos;
decos.push_back(create<ast::BindingDecoration>(0, Source{}));
@@ -529,15 +535,15 @@
ast::type::F32 f32;
auto* foo_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("foo", ast::StorageClass::kInput, &f32));
+ create<ast::Variable>(Source{}, "foo", ast::StorageClass::kInput, &f32));
foo_var->set_decorations({create<ast::LocationDecoration>(0, Source{})});
auto* bar_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("bar", ast::StorageClass::kOutput, &f32));
+ create<ast::Variable>(Source{}, "bar", ast::StorageClass::kOutput, &f32));
bar_var->set_decorations({create<ast::LocationDecoration>(1, Source{})});
auto* val_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("val", ast::StorageClass::kOutput, &f32));
+ create<ast::Variable>(Source{}, "val", ast::StorageClass::kOutput, &f32));
val_var->set_decorations({create<ast::LocationDecoration>(0, Source{})});
td.RegisterVariableForTesting(foo_var);
@@ -549,8 +555,8 @@
mod.AddGlobalVariable(val_var);
ast::VariableList params;
- params.push_back(
- create<ast::Variable>("param", ast::StorageClass::kFunction, &f32));
+ params.push_back(create<ast::Variable>(Source{}, "param",
+ ast::StorageClass::kFunction, &f32));
auto* body = create<ast::BlockStatement>();
body->append(create<ast::AssignmentStatement>(
@@ -616,8 +622,8 @@
ast::type::F32 f32;
ast::type::Vector vec4(&f32, 4);
- auto* depth_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("depth", ast::StorageClass::kOutput, &f32));
+ auto* depth_var = create<ast::DecoratedVariable>(create<ast::Variable>(
+ Source{}, "depth", ast::StorageClass::kOutput, &f32));
ast::VariableDecorationList decos;
decos.push_back(
@@ -629,8 +635,8 @@
mod.AddGlobalVariable(depth_var);
ast::VariableList params;
- params.push_back(
- create<ast::Variable>("param", ast::StorageClass::kFunction, &f32));
+ params.push_back(create<ast::Variable>(Source{}, "param",
+ ast::StorageClass::kFunction, &f32));
auto* body = create<ast::BlockStatement>();
body->append(
@@ -684,13 +690,13 @@
ast::type::F32 f32;
ast::type::Vector vec4(&f32, 4);
- auto* coord_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("coord", ast::StorageClass::kInput, &vec4));
+ auto* coord_var = create<ast::DecoratedVariable>(create<ast::Variable>(
+ Source{}, "coord", ast::StorageClass::kInput, &vec4));
coord_var->set_decorations(
{create<ast::BuiltinDecoration>(ast::Builtin::kFragCoord, Source{})});
- auto* depth_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("depth", ast::StorageClass::kOutput, &f32));
+ auto* depth_var = create<ast::DecoratedVariable>(create<ast::Variable>(
+ Source{}, "depth", ast::StorageClass::kOutput, &f32));
depth_var->set_decorations(
{create<ast::BuiltinDecoration>(ast::Builtin::kFragDepth, Source{})});
@@ -701,8 +707,8 @@
mod.AddGlobalVariable(depth_var);
ast::VariableList params;
- params.push_back(
- create<ast::Variable>("param", ast::StorageClass::kFunction, &f32));
+ params.push_back(create<ast::Variable>(Source{}, "param",
+ ast::StorageClass::kFunction, &f32));
auto* body = create<ast::BlockStatement>();
body->append(create<ast::AssignmentStatement>(
@@ -765,8 +771,8 @@
ast::type::F32 f32;
ast::type::Vector vec4(&f32, 4);
- auto* coord_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("coord", ast::StorageClass::kUniform, &vec4));
+ auto* coord_var = create<ast::DecoratedVariable>(create<ast::Variable>(
+ Source{}, "coord", ast::StorageClass::kUniform, &vec4));
ast::VariableDecorationList decos;
decos.push_back(create<ast::BindingDecoration>(0, Source{}));
@@ -778,8 +784,8 @@
mod.AddGlobalVariable(coord_var);
ast::VariableList params;
- params.push_back(
- create<ast::Variable>("param", ast::StorageClass::kFunction, &f32));
+ params.push_back(create<ast::Variable>(Source{}, "param",
+ ast::StorageClass::kFunction, &f32));
auto* body = create<ast::BlockStatement>();
body->append(
@@ -795,7 +801,8 @@
expr.push_back(create<ast::ScalarConstructorExpression>(
create<ast::FloatLiteral>(&f32, 1.0f)));
- auto* var = create<ast::Variable>("v", ast::StorageClass::kFunction, &f32);
+ auto* var =
+ create<ast::Variable>(Source{}, "v", ast::StorageClass::kFunction, &f32);
var->set_constructor(create<ast::CallExpression>(
create<ast::IdentifierExpression>("sub_func"), expr));
@@ -834,8 +841,8 @@
ast::type::F32 f32;
ast::type::Vector vec4(&f32, 4);
ast::type::AccessControl ac(ast::AccessControl::kReadWrite, &vec4);
- auto* coord_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("coord", ast::StorageClass::kStorageBuffer, &ac));
+ auto* coord_var = create<ast::DecoratedVariable>(create<ast::Variable>(
+ Source{}, "coord", ast::StorageClass::kStorageBuffer, &ac));
ast::VariableDecorationList decos;
decos.push_back(create<ast::BindingDecoration>(0, Source{}));
@@ -847,8 +854,8 @@
mod.AddGlobalVariable(coord_var);
ast::VariableList params;
- params.push_back(
- create<ast::Variable>("param", ast::StorageClass::kFunction, &f32));
+ params.push_back(create<ast::Variable>(Source{}, "param",
+ ast::StorageClass::kFunction, &f32));
auto* body = create<ast::BlockStatement>();
body->append(
@@ -864,7 +871,8 @@
expr.push_back(create<ast::ScalarConstructorExpression>(
create<ast::FloatLiteral>(&f32, 1.0f)));
- auto* var = create<ast::Variable>("v", ast::StorageClass::kFunction, &f32);
+ auto* var =
+ create<ast::Variable>(Source{}, "v", ast::StorageClass::kFunction, &f32);
var->set_constructor(create<ast::CallExpression>(
create<ast::IdentifierExpression>("sub_func"), expr));
@@ -902,7 +910,7 @@
ast::type::I32 i32;
auto* bar_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("bar", ast::StorageClass::kOutput, &f32));
+ create<ast::Variable>(Source{}, "bar", ast::StorageClass::kOutput, &f32));
ast::VariableDecorationList decos;
decos.push_back(create<ast::LocationDecoration>(1, Source{}));
bar_var->set_decorations(decos);
@@ -1032,7 +1040,8 @@
ast::type::Array ary(&f32, 5);
ast::VariableList params;
- params.push_back(create<ast::Variable>("a", ast::StorageClass::kNone, &ary));
+ params.push_back(
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kNone, &ary));
ast::type::Void void_type;
@@ -1086,8 +1095,8 @@
ast::type::Struct s("Data", str);
ast::type::AccessControl ac(ast::AccessControl::kReadWrite, &s);
- auto* data_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("data", ast::StorageClass::kStorageBuffer, &ac));
+ auto* data_var = create<ast::DecoratedVariable>(create<ast::Variable>(
+ Source{}, "data", ast::StorageClass::kStorageBuffer, &ac));
ast::VariableDecorationList decos;
decos.push_back(create<ast::BindingDecoration>(0, Source{}));
@@ -1100,7 +1109,8 @@
{
ast::VariableList params;
- auto* var = create<ast::Variable>("v", ast::StorageClass::kFunction, &f32);
+ auto* var = create<ast::Variable>(Source{}, "v",
+ ast::StorageClass::kFunction, &f32);
var->set_constructor(create<ast::MemberAccessorExpression>(
create<ast::IdentifierExpression>("data"),
create<ast::IdentifierExpression>("d")));
@@ -1120,7 +1130,8 @@
{
ast::VariableList params;
- auto* var = create<ast::Variable>("v", ast::StorageClass::kFunction, &f32);
+ auto* var = create<ast::Variable>(Source{}, "v",
+ ast::StorageClass::kFunction, &f32);
var->set_constructor(create<ast::MemberAccessorExpression>(
create<ast::IdentifierExpression>("data"),
create<ast::IdentifierExpression>("d")));
diff --git a/src/writer/hlsl/generator_impl_import_test.cc b/src/writer/hlsl/generator_impl_import_test.cc
index 6cec975..fafcd69 100644
--- a/src/writer/hlsl/generator_impl_import_test.cc
+++ b/src/writer/hlsl/generator_impl_import_test.cc
@@ -268,7 +268,8 @@
ast::type::F32 f32;
ast::type::Matrix mat(&f32, 3, 3);
- auto* var = create<ast::Variable>("var", ast::StorageClass::kFunction, &mat);
+ auto* var = create<ast::Variable>(Source{}, "var",
+ ast::StorageClass::kFunction, &mat);
ast::ExpressionList params;
params.push_back(create<ast::IdentifierExpression>("var"));
diff --git a/src/writer/hlsl/generator_impl_intrinsic_test.cc b/src/writer/hlsl/generator_impl_intrinsic_test.cc
index fb019f0..9a00a3a 100644
--- a/src/writer/hlsl/generator_impl_intrinsic_test.cc
+++ b/src/writer/hlsl/generator_impl_intrinsic_test.cc
@@ -75,8 +75,10 @@
ast::type::Vector vec2(&f32, 2);
ast::type::Vector vec3(&f32, 3);
- auto* a = create<ast::Variable>("a", ast::StorageClass::kNone, &vec2);
- auto* b = create<ast::Variable>("b", ast::StorageClass::kNone, &vec3);
+ auto* a =
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kNone, &vec2);
+ auto* b =
+ create<ast::Variable>(Source{}, "b", ast::StorageClass::kNone, &vec3);
ast::ExpressionList params;
params.push_back(create<ast::IdentifierExpression>("a"));
@@ -113,8 +115,8 @@
ast::CallExpression call(create<ast::IdentifierExpression>("dot"), params);
- ast::Variable v1("param1", ast::StorageClass::kFunction, &vec);
- ast::Variable v2("param2", ast::StorageClass::kFunction, &vec);
+ ast::Variable v1(Source{}, "param1", ast::StorageClass::kFunction, &vec);
+ ast::Variable v2(Source{}, "param2", ast::StorageClass::kFunction, &vec);
td.RegisterVariableForTesting(&v1);
td.RegisterVariableForTesting(&v2);
diff --git a/src/writer/hlsl/generator_impl_loop_test.cc b/src/writer/hlsl/generator_impl_loop_test.cc
index e180180..00dec1f 100644
--- a/src/writer/hlsl/generator_impl_loop_test.cc
+++ b/src/writer/hlsl/generator_impl_loop_test.cc
@@ -144,14 +144,15 @@
ast::type::F32 f32;
- auto* var = create<ast::Variable>("lhs", ast::StorageClass::kFunction, &f32);
+ auto* var = create<ast::Variable>(Source{}, "lhs",
+ ast::StorageClass::kFunction, &f32);
var->set_constructor(create<ast::ScalarConstructorExpression>(
create<ast::FloatLiteral>(&f32, 2.4)));
auto* body = create<ast::BlockStatement>();
body->append(create<ast::VariableDeclStatement>(var));
- body->append(create<ast::VariableDeclStatement>(
- create<ast::Variable>("other", ast::StorageClass::kFunction, &f32)));
+ body->append(create<ast::VariableDeclStatement>(create<ast::Variable>(
+ Source{}, "other", ast::StorageClass::kFunction, &f32)));
auto* lhs = create<ast::IdentifierExpression>("lhs");
auto* rhs = create<ast::IdentifierExpression>("rhs");
diff --git a/src/writer/hlsl/generator_impl_member_accessor_test.cc b/src/writer/hlsl/generator_impl_member_accessor_test.cc
index dab22e1..648d38c 100644
--- a/src/writer/hlsl/generator_impl_member_accessor_test.cc
+++ b/src/writer/hlsl/generator_impl_member_accessor_test.cc
@@ -58,7 +58,7 @@
ast::type::Struct s("Str", strct);
auto* str_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("str", ast::StorageClass::kPrivate, &s));
+ create<ast::Variable>(Source{}, "str", ast::StorageClass::kPrivate, &s));
auto* str = create<ast::IdentifierExpression>("str");
auto* mem = create<ast::IdentifierExpression>("mem");
@@ -100,8 +100,8 @@
ast::type::Struct s("Data", str);
- auto* coord_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("data", ast::StorageClass::kStorageBuffer, &s));
+ auto* coord_var = create<ast::DecoratedVariable>(create<ast::Variable>(
+ Source{}, "data", ast::StorageClass::kStorageBuffer, &s));
ast::MemberAccessorExpression expr(create<ast::IdentifierExpression>("data"),
create<ast::IdentifierExpression>("b"));
@@ -143,8 +143,8 @@
ast::type::Struct s("Data", str);
- auto* coord_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("data", ast::StorageClass::kStorageBuffer, &s));
+ auto* coord_var = create<ast::DecoratedVariable>(create<ast::Variable>(
+ Source{}, "data", ast::StorageClass::kStorageBuffer, &s));
ast::MemberAccessorExpression expr(create<ast::IdentifierExpression>("data"),
create<ast::IdentifierExpression>("a"));
@@ -189,10 +189,11 @@
ast::type::Struct s("Data", str);
- auto* b_var = create<ast::Variable>("b", ast::StorageClass::kPrivate, &mat);
+ auto* b_var =
+ create<ast::Variable>(Source{}, "b", ast::StorageClass::kPrivate, &mat);
- auto* coord_var =
- create<ast::Variable>("data", ast::StorageClass::kStorageBuffer, &s);
+ auto* coord_var = create<ast::Variable>(
+ Source{}, "data", ast::StorageClass::kStorageBuffer, &s);
auto* lhs = create<ast::MemberAccessorExpression>(
create<ast::IdentifierExpression>("data"),
@@ -248,8 +249,8 @@
ast::type::Struct s("Data", str);
- auto* coord_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("data", ast::StorageClass::kStorageBuffer, &s));
+ auto* coord_var = create<ast::DecoratedVariable>(create<ast::Variable>(
+ Source{}, "data", ast::StorageClass::kStorageBuffer, &s));
auto* lhs = create<ast::MemberAccessorExpression>(
create<ast::IdentifierExpression>("data"),
@@ -303,8 +304,8 @@
ast::type::Struct s("Data", str);
- auto* coord_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("data", ast::StorageClass::kStorageBuffer, &s));
+ auto* coord_var = create<ast::DecoratedVariable>(create<ast::Variable>(
+ Source{}, "data", ast::StorageClass::kStorageBuffer, &s));
ast::MemberAccessorExpression expr(create<ast::IdentifierExpression>("data"),
create<ast::IdentifierExpression>("a"));
@@ -353,8 +354,8 @@
ast::type::Struct s("Data", str);
- auto* coord_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("data", ast::StorageClass::kStorageBuffer, &s));
+ auto* coord_var = create<ast::DecoratedVariable>(create<ast::Variable>(
+ Source{}, "data", ast::StorageClass::kStorageBuffer, &s));
ast::MemberAccessorExpression expr(create<ast::IdentifierExpression>("data"),
create<ast::IdentifierExpression>("a"));
@@ -395,8 +396,8 @@
ast::type::Struct s("Data", str);
- auto* coord_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("data", ast::StorageClass::kStorageBuffer, &s));
+ auto* coord_var = create<ast::DecoratedVariable>(create<ast::Variable>(
+ Source{}, "data", ast::StorageClass::kStorageBuffer, &s));
ast::MemberAccessorExpression expr(create<ast::IdentifierExpression>("data"),
create<ast::IdentifierExpression>("a"));
@@ -441,8 +442,8 @@
ast::type::Struct s("Data", str);
- auto* coord_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("data", ast::StorageClass::kStorageBuffer, &s));
+ auto* coord_var = create<ast::DecoratedVariable>(create<ast::Variable>(
+ Source{}, "data", ast::StorageClass::kStorageBuffer, &s));
ast::ArrayAccessorExpression expr(
create<ast::ArrayAccessorExpression>(
@@ -488,8 +489,8 @@
ast::type::Struct s("Data", str);
- auto* coord_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("data", ast::StorageClass::kStorageBuffer, &s));
+ auto* coord_var = create<ast::DecoratedVariable>(create<ast::Variable>(
+ Source{}, "data", ast::StorageClass::kStorageBuffer, &s));
ast::ArrayAccessorExpression expr(
create<ast::MemberAccessorExpression>(
@@ -532,8 +533,8 @@
ast::type::Struct s("Data", str);
- auto* coord_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("data", ast::StorageClass::kStorageBuffer, &s));
+ auto* coord_var = create<ast::DecoratedVariable>(create<ast::Variable>(
+ Source{}, "data", ast::StorageClass::kStorageBuffer, &s));
ast::ArrayAccessorExpression expr(
create<ast::MemberAccessorExpression>(
@@ -588,8 +589,8 @@
ast::type::Struct s("Data", str);
- auto* coord_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("data", ast::StorageClass::kStorageBuffer, &s));
+ auto* coord_var = create<ast::DecoratedVariable>(create<ast::Variable>(
+ Source{}, "data", ast::StorageClass::kStorageBuffer, &s));
td.RegisterVariableForTesting(coord_var);
gen.register_global(coord_var);
@@ -634,8 +635,8 @@
ast::type::Struct s("Data", str);
- auto* coord_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("data", ast::StorageClass::kStorageBuffer, &s));
+ auto* coord_var = create<ast::DecoratedVariable>(create<ast::Variable>(
+ Source{}, "data", ast::StorageClass::kStorageBuffer, &s));
td.RegisterVariableForTesting(coord_var);
gen.register_global(coord_var);
@@ -686,8 +687,8 @@
ast::type::Struct s("Data", str);
- auto* coord_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("data", ast::StorageClass::kStorageBuffer, &s));
+ auto* coord_var = create<ast::DecoratedVariable>(create<ast::Variable>(
+ Source{}, "data", ast::StorageClass::kStorageBuffer, &s));
td.RegisterVariableForTesting(coord_var);
gen.register_global(coord_var);
@@ -737,8 +738,8 @@
ast::type::Struct s("Data", str);
- auto* coord_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("data", ast::StorageClass::kStorageBuffer, &s));
+ auto* coord_var = create<ast::DecoratedVariable>(create<ast::Variable>(
+ Source{}, "data", ast::StorageClass::kStorageBuffer, &s));
td.RegisterVariableForTesting(coord_var);
gen.register_global(coord_var);
@@ -783,8 +784,8 @@
ast::type::Struct s("Data", str);
- auto* coord_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("data", ast::StorageClass::kStorageBuffer, &s));
+ auto* coord_var = create<ast::DecoratedVariable>(create<ast::Variable>(
+ Source{}, "data", ast::StorageClass::kStorageBuffer, &s));
td.RegisterVariableForTesting(coord_var);
gen.register_global(coord_var);
@@ -860,7 +861,7 @@
ast::type::Struct pre_struct("Pre", pre_str);
auto* coord_var = create<ast::DecoratedVariable>(create<ast::Variable>(
- "data", ast::StorageClass::kStorageBuffer, &pre_struct));
+ Source{}, "data", ast::StorageClass::kStorageBuffer, &pre_struct));
td.RegisterVariableForTesting(coord_var);
gen.register_global(coord_var);
@@ -930,7 +931,7 @@
ast::type::Struct pre_struct("Pre", pre_str);
auto* coord_var = create<ast::DecoratedVariable>(create<ast::Variable>(
- "data", ast::StorageClass::kStorageBuffer, &pre_struct));
+ Source{}, "data", ast::StorageClass::kStorageBuffer, &pre_struct));
td.RegisterVariableForTesting(coord_var);
gen.register_global(coord_var);
@@ -1000,7 +1001,7 @@
ast::type::Struct pre_struct("Pre", pre_str);
auto* coord_var = create<ast::DecoratedVariable>(create<ast::Variable>(
- "data", ast::StorageClass::kStorageBuffer, &pre_struct));
+ Source{}, "data", ast::StorageClass::kStorageBuffer, &pre_struct));
td.RegisterVariableForTesting(coord_var);
gen.register_global(coord_var);
@@ -1069,7 +1070,7 @@
ast::type::Struct pre_struct("Pre", pre_str);
auto* coord_var = create<ast::DecoratedVariable>(create<ast::Variable>(
- "data", ast::StorageClass::kStorageBuffer, &pre_struct));
+ Source{}, "data", ast::StorageClass::kStorageBuffer, &pre_struct));
td.RegisterVariableForTesting(coord_var);
gen.register_global(coord_var);
@@ -1139,7 +1140,7 @@
ast::type::Struct pre_struct("Pre", pre_str);
auto* coord_var = create<ast::DecoratedVariable>(create<ast::Variable>(
- "data", ast::StorageClass::kStorageBuffer, &pre_struct));
+ Source{}, "data", ast::StorageClass::kStorageBuffer, &pre_struct));
td.RegisterVariableForTesting(coord_var);
gen.register_global(coord_var);
@@ -1220,7 +1221,7 @@
ast::type::Struct pre_struct("Pre", pre_str);
auto* coord_var = create<ast::DecoratedVariable>(create<ast::Variable>(
- "data", ast::StorageClass::kStorageBuffer, &pre_struct));
+ Source{}, "data", ast::StorageClass::kStorageBuffer, &pre_struct));
td.RegisterVariableForTesting(coord_var);
gen.register_global(coord_var);
diff --git a/src/writer/hlsl/generator_impl_module_constant_test.cc b/src/writer/hlsl/generator_impl_module_constant_test.cc
index 2e96034..884b754 100644
--- a/src/writer/hlsl/generator_impl_module_constant_test.cc
+++ b/src/writer/hlsl/generator_impl_module_constant_test.cc
@@ -45,7 +45,8 @@
exprs.push_back(create<ast::ScalarConstructorExpression>(
create<ast::FloatLiteral>(&f32, 3.0f)));
- auto* var = create<ast::Variable>("pos", ast::StorageClass::kNone, &ary);
+ auto* var =
+ create<ast::Variable>(Source{}, "pos", ast::StorageClass::kNone, &ary);
var->set_is_const(true);
var->set_constructor(create<ast::TypeConstructorExpression>(&ary, exprs));
@@ -60,7 +61,7 @@
decos.push_back(create<ast::ConstantIdDecoration>(23, Source{}));
auto* var = create<ast::DecoratedVariable>(
- create<ast::Variable>("pos", ast::StorageClass::kNone, &f32));
+ create<ast::Variable>(Source{}, "pos", ast::StorageClass::kNone, &f32));
var->set_decorations(decos);
var->set_is_const(true);
var->set_constructor(create<ast::ScalarConstructorExpression>(
@@ -82,7 +83,7 @@
decos.push_back(create<ast::ConstantIdDecoration>(23, Source{}));
auto* var = create<ast::DecoratedVariable>(
- create<ast::Variable>("pos", ast::StorageClass::kNone, &f32));
+ create<ast::Variable>(Source{}, "pos", ast::StorageClass::kNone, &f32));
var->set_decorations(decos);
var->set_is_const(true);
diff --git a/src/writer/hlsl/generator_impl_variable_decl_statement_test.cc b/src/writer/hlsl/generator_impl_variable_decl_statement_test.cc
index 4638cf6..b4e389f 100644
--- a/src/writer/hlsl/generator_impl_variable_decl_statement_test.cc
+++ b/src/writer/hlsl/generator_impl_variable_decl_statement_test.cc
@@ -34,7 +34,8 @@
TEST_F(HlslGeneratorImplTest_VariableDecl, Emit_VariableDeclStatement) {
ast::type::F32 f32;
- auto* var = create<ast::Variable>("a", ast::StorageClass::kNone, &f32);
+ auto* var =
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kNone, &f32);
ast::VariableDeclStatement stmt(var);
gen.increment_indent();
@@ -45,7 +46,8 @@
TEST_F(HlslGeneratorImplTest_VariableDecl, Emit_VariableDeclStatement_Const) {
ast::type::F32 f32;
- auto* var = create<ast::Variable>("a", ast::StorageClass::kNone, &f32);
+ auto* var =
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kNone, &f32);
var->set_is_const(true);
ast::VariableDeclStatement stmt(var);
@@ -59,7 +61,8 @@
ast::type::F32 f32;
ast::type::Array ary(&f32, 5);
- auto* var = create<ast::Variable>("a", ast::StorageClass::kNone, &ary);
+ auto* var =
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kNone, &ary);
ast::VariableDeclStatement stmt(var);
gen.increment_indent();
@@ -71,7 +74,8 @@
TEST_F(HlslGeneratorImplTest_VariableDecl,
Emit_VariableDeclStatement_Function) {
ast::type::F32 f32;
- auto* var = create<ast::Variable>("a", ast::StorageClass::kFunction, &f32);
+ auto* var =
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kFunction, &f32);
ast::VariableDeclStatement stmt(var);
gen.increment_indent();
@@ -82,7 +86,8 @@
TEST_F(HlslGeneratorImplTest_VariableDecl, Emit_VariableDeclStatement_Private) {
ast::type::F32 f32;
- auto* var = create<ast::Variable>("a", ast::StorageClass::kPrivate, &f32);
+ auto* var =
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kPrivate, &f32);
ast::VariableDeclStatement stmt(var);
gen.increment_indent();
@@ -96,7 +101,8 @@
auto* ident = create<ast::IdentifierExpression>("initializer");
ast::type::F32 f32;
- auto* var = create<ast::Variable>("a", ast::StorageClass::kNone, &f32);
+ auto* var =
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kNone, &f32);
var->set_constructor(ident);
ast::VariableDeclStatement stmt(var);
@@ -113,7 +119,8 @@
ast::ExpressionList values;
auto* zero_vec = create<ast::TypeConstructorExpression>(&vec, values);
- auto* var = create<ast::Variable>("a", ast::StorageClass::kNone, &vec);
+ auto* var =
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kNone, &vec);
var->set_constructor(zero_vec);
ast::VariableDeclStatement stmt(var);
@@ -130,7 +137,8 @@
ast::ExpressionList values;
auto* zero_mat = create<ast::TypeConstructorExpression>(&mat, values);
- auto* var = create<ast::Variable>("a", ast::StorageClass::kNone, &mat);
+ auto* var =
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kNone, &mat);
var->set_constructor(zero_mat);
ast::VariableDeclStatement stmt(var);
diff --git a/src/writer/msl/generator_impl_function_entry_point_data_test.cc b/src/writer/msl/generator_impl_function_entry_point_data_test.cc
index 62f6286..8614c9f 100644
--- a/src/writer/msl/generator_impl_function_entry_point_data_test.cc
+++ b/src/writer/msl/generator_impl_function_entry_point_data_test.cc
@@ -52,11 +52,11 @@
ast::type::I32 i32;
auto* foo_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("foo", ast::StorageClass::kInput, &f32));
+ create<ast::Variable>(Source{}, "foo", ast::StorageClass::kInput, &f32));
foo_var->set_decorations({create<ast::LocationDecoration>(0, Source{})});
auto* bar_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("bar", ast::StorageClass::kInput, &i32));
+ create<ast::Variable>(Source{}, "bar", ast::StorageClass::kInput, &i32));
bar_var->set_decorations({create<ast::LocationDecoration>(1, Source{})});
td.RegisterVariableForTesting(foo_var);
@@ -106,11 +106,11 @@
ast::type::I32 i32;
auto* foo_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("foo", ast::StorageClass::kOutput, &f32));
+ create<ast::Variable>(Source{}, "foo", ast::StorageClass::kOutput, &f32));
foo_var->set_decorations({create<ast::LocationDecoration>(0, Source{})});
auto* bar_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("bar", ast::StorageClass::kOutput, &i32));
+ create<ast::Variable>(Source{}, "bar", ast::StorageClass::kOutput, &i32));
bar_var->set_decorations({create<ast::LocationDecoration>(1, Source{})});
td.RegisterVariableForTesting(foo_var);
@@ -160,11 +160,11 @@
ast::type::I32 i32;
auto* foo_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("foo", ast::StorageClass::kInput, &f32));
+ create<ast::Variable>(Source{}, "foo", ast::StorageClass::kInput, &f32));
foo_var->set_decorations({create<ast::LocationDecoration>(0, Source{})});
auto* bar_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("bar", ast::StorageClass::kInput, &i32));
+ create<ast::Variable>(Source{}, "bar", ast::StorageClass::kInput, &i32));
bar_var->set_decorations({create<ast::LocationDecoration>(1, Source{})});
td.RegisterVariableForTesting(foo_var);
@@ -213,11 +213,11 @@
ast::type::I32 i32;
auto* foo_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("foo", ast::StorageClass::kOutput, &f32));
+ create<ast::Variable>(Source{}, "foo", ast::StorageClass::kOutput, &f32));
foo_var->set_decorations({create<ast::LocationDecoration>(0, Source{})});
auto* bar_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("bar", ast::StorageClass::kOutput, &i32));
+ create<ast::Variable>(Source{}, "bar", ast::StorageClass::kOutput, &i32));
bar_var->set_decorations({create<ast::LocationDecoration>(1, Source{})});
td.RegisterVariableForTesting(foo_var);
@@ -264,14 +264,14 @@
ast::type::I32 i32;
auto* foo_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("foo", ast::StorageClass::kInput, &f32));
+ create<ast::Variable>(Source{}, "foo", ast::StorageClass::kInput, &f32));
ast::VariableDecorationList decos;
decos.push_back(create<ast::LocationDecoration>(0, Source{}));
foo_var->set_decorations(decos);
auto* bar_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("bar", ast::StorageClass::kInput, &i32));
+ create<ast::Variable>(Source{}, "bar", ast::StorageClass::kInput, &i32));
decos.push_back(create<ast::LocationDecoration>(1, Source{}));
bar_var->set_decorations(decos);
@@ -314,14 +314,14 @@
ast::type::I32 i32;
auto* foo_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("foo", ast::StorageClass::kOutput, &f32));
+ create<ast::Variable>(Source{}, "foo", ast::StorageClass::kOutput, &f32));
ast::VariableDecorationList decos;
decos.push_back(create<ast::LocationDecoration>(0, Source{}));
foo_var->set_decorations(decos);
auto* bar_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("bar", ast::StorageClass::kOutput, &i32));
+ create<ast::Variable>(Source{}, "bar", ast::StorageClass::kOutput, &i32));
decos.push_back(create<ast::LocationDecoration>(1, Source{}));
bar_var->set_decorations(decos);
@@ -369,13 +369,13 @@
ast::type::Void void_type;
ast::type::Vector vec4(&f32, 4);
- auto* coord_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("coord", ast::StorageClass::kInput, &vec4));
+ auto* coord_var = create<ast::DecoratedVariable>(create<ast::Variable>(
+ Source{}, "coord", ast::StorageClass::kInput, &vec4));
coord_var->set_decorations(
{create<ast::BuiltinDecoration>(ast::Builtin::kFragCoord, Source{})});
- auto* depth_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("depth", ast::StorageClass::kOutput, &f32));
+ auto* depth_var = create<ast::DecoratedVariable>(create<ast::Variable>(
+ Source{}, "depth", ast::StorageClass::kOutput, &f32));
depth_var->set_decorations(
{create<ast::BuiltinDecoration>(ast::Builtin::kFragDepth, Source{})});
diff --git a/src/writer/msl/generator_impl_function_test.cc b/src/writer/msl/generator_impl_function_test.cc
index 453aaa8..22eb889 100644
--- a/src/writer/msl/generator_impl_function_test.cc
+++ b/src/writer/msl/generator_impl_function_test.cc
@@ -105,8 +105,10 @@
ast::type::I32 i32;
ast::VariableList params;
- params.push_back(create<ast::Variable>("a", ast::StorageClass::kNone, &f32));
- params.push_back(create<ast::Variable>("b", ast::StorageClass::kNone, &i32));
+ params.push_back(
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kNone, &f32));
+ params.push_back(
+ create<ast::Variable>(Source{}, "b", ast::StorageClass::kNone, &i32));
ast::type::Void void_type;
@@ -133,11 +135,11 @@
ast::type::F32 f32;
auto* foo_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("foo", ast::StorageClass::kInput, &f32));
+ create<ast::Variable>(Source{}, "foo", ast::StorageClass::kInput, &f32));
foo_var->set_decorations({create<ast::LocationDecoration>(0, Source{})});
auto* bar_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("bar", ast::StorageClass::kOutput, &f32));
+ create<ast::Variable>(Source{}, "bar", ast::StorageClass::kOutput, &f32));
bar_var->set_decorations({create<ast::LocationDecoration>(1, Source{})});
td.RegisterVariableForTesting(foo_var);
@@ -188,13 +190,13 @@
ast::type::F32 f32;
ast::type::Vector vec4(&f32, 4);
- auto* coord_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("coord", ast::StorageClass::kInput, &vec4));
+ auto* coord_var = create<ast::DecoratedVariable>(create<ast::Variable>(
+ Source{}, "coord", ast::StorageClass::kInput, &vec4));
coord_var->set_decorations(
{create<ast::BuiltinDecoration>(ast::Builtin::kFragCoord, Source{})});
- auto* depth_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("depth", ast::StorageClass::kOutput, &f32));
+ auto* depth_var = create<ast::DecoratedVariable>(create<ast::Variable>(
+ Source{}, "depth", ast::StorageClass::kOutput, &f32));
depth_var->set_decorations(
{create<ast::BuiltinDecoration>(ast::Builtin::kFragDepth, Source{})});
@@ -244,8 +246,8 @@
ast::type::F32 f32;
ast::type::Vector vec4(&f32, 4);
- auto* coord_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("coord", ast::StorageClass::kUniform, &vec4));
+ auto* coord_var = create<ast::DecoratedVariable>(create<ast::Variable>(
+ Source{}, "coord", ast::StorageClass::kUniform, &vec4));
ast::VariableDecorationList decos;
decos.push_back(create<ast::BindingDecoration>(0, Source{}));
@@ -257,7 +259,8 @@
mod.AddGlobalVariable(coord_var);
ast::VariableList params;
- auto* var = create<ast::Variable>("v", ast::StorageClass::kFunction, &f32);
+ auto* var =
+ create<ast::Variable>(Source{}, "v", ast::StorageClass::kFunction, &f32);
var->set_constructor(create<ast::MemberAccessorExpression>(
create<ast::IdentifierExpression>("coord"),
create<ast::IdentifierExpression>("x")));
@@ -309,8 +312,8 @@
mod.AddConstructedType(&s);
- auto* coord_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("coord", ast::StorageClass::kStorageBuffer, &ac));
+ auto* coord_var = create<ast::DecoratedVariable>(create<ast::Variable>(
+ Source{}, "coord", ast::StorageClass::kStorageBuffer, &ac));
ast::VariableDecorationList decos;
decos.push_back(create<ast::BindingDecoration>(0, Source{}));
@@ -322,7 +325,8 @@
mod.AddGlobalVariable(coord_var);
ast::VariableList params;
- auto* var = create<ast::Variable>("v", ast::StorageClass::kFunction, &f32);
+ auto* var =
+ create<ast::Variable>(Source{}, "v", ast::StorageClass::kFunction, &f32);
var->set_constructor(create<ast::MemberAccessorExpression>(
create<ast::IdentifierExpression>("coord"),
create<ast::IdentifierExpression>("b")));
@@ -378,8 +382,8 @@
mod.AddConstructedType(&s);
- auto* coord_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("coord", ast::StorageClass::kStorageBuffer, &ac));
+ auto* coord_var = create<ast::DecoratedVariable>(create<ast::Variable>(
+ Source{}, "coord", ast::StorageClass::kStorageBuffer, &ac));
ast::VariableDecorationList decos;
decos.push_back(create<ast::BindingDecoration>(0, Source{}));
@@ -392,7 +396,8 @@
ast::VariableList params;
- auto* var = create<ast::Variable>("v", ast::StorageClass::kFunction, &f32);
+ auto* var =
+ create<ast::Variable>(Source{}, "v", ast::StorageClass::kFunction, &f32);
var->set_constructor(create<ast::MemberAccessorExpression>(
create<ast::IdentifierExpression>("coord"),
create<ast::IdentifierExpression>("b")));
@@ -434,15 +439,15 @@
ast::type::F32 f32;
auto* foo_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("foo", ast::StorageClass::kInput, &f32));
+ create<ast::Variable>(Source{}, "foo", ast::StorageClass::kInput, &f32));
foo_var->set_decorations({create<ast::LocationDecoration>(0, Source{})});
auto* bar_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("bar", ast::StorageClass::kOutput, &f32));
+ create<ast::Variable>(Source{}, "bar", ast::StorageClass::kOutput, &f32));
bar_var->set_decorations({create<ast::LocationDecoration>(1, Source{})});
auto* val_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("val", ast::StorageClass::kOutput, &f32));
+ create<ast::Variable>(Source{}, "val", ast::StorageClass::kOutput, &f32));
val_var->set_decorations({create<ast::LocationDecoration>(0, Source{})});
td.RegisterVariableForTesting(foo_var);
@@ -454,8 +459,8 @@
mod.AddGlobalVariable(val_var);
ast::VariableList params;
- params.push_back(
- create<ast::Variable>("param", ast::StorageClass::kFunction, &f32));
+ params.push_back(create<ast::Variable>(Source{}, "param",
+ ast::StorageClass::kFunction, &f32));
auto* body = create<ast::BlockStatement>();
body->append(create<ast::AssignmentStatement>(
@@ -524,8 +529,8 @@
ast::type::F32 f32;
ast::type::Vector vec4(&f32, 4);
- auto* depth_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("depth", ast::StorageClass::kOutput, &f32));
+ auto* depth_var = create<ast::DecoratedVariable>(create<ast::Variable>(
+ Source{}, "depth", ast::StorageClass::kOutput, &f32));
ast::VariableDecorationList decos;
decos.push_back(
@@ -537,8 +542,8 @@
mod.AddGlobalVariable(depth_var);
ast::VariableList params;
- params.push_back(
- create<ast::Variable>("param", ast::StorageClass::kFunction, &f32));
+ params.push_back(create<ast::Variable>(Source{}, "param",
+ ast::StorageClass::kFunction, &f32));
auto* body = create<ast::BlockStatement>();
body->append(
@@ -596,13 +601,13 @@
ast::type::F32 f32;
ast::type::Vector vec4(&f32, 4);
- auto* coord_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("coord", ast::StorageClass::kInput, &vec4));
+ auto* coord_var = create<ast::DecoratedVariable>(create<ast::Variable>(
+ Source{}, "coord", ast::StorageClass::kInput, &vec4));
coord_var->set_decorations(
{create<ast::BuiltinDecoration>(ast::Builtin::kFragCoord, Source{})});
- auto* depth_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("depth", ast::StorageClass::kOutput, &f32));
+ auto* depth_var = create<ast::DecoratedVariable>(create<ast::Variable>(
+ Source{}, "depth", ast::StorageClass::kOutput, &f32));
depth_var->set_decorations(
{create<ast::BuiltinDecoration>(ast::Builtin::kFragDepth, Source{})});
@@ -613,8 +618,8 @@
mod.AddGlobalVariable(depth_var);
ast::VariableList params;
- params.push_back(
- create<ast::Variable>("param", ast::StorageClass::kFunction, &f32));
+ params.push_back(create<ast::Variable>(Source{}, "param",
+ ast::StorageClass::kFunction, &f32));
auto* body = create<ast::BlockStatement>();
body->append(create<ast::AssignmentStatement>(
@@ -675,8 +680,8 @@
ast::type::F32 f32;
ast::type::Vector vec4(&f32, 4);
- auto* coord_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("coord", ast::StorageClass::kUniform, &vec4));
+ auto* coord_var = create<ast::DecoratedVariable>(create<ast::Variable>(
+ Source{}, "coord", ast::StorageClass::kUniform, &vec4));
ast::VariableDecorationList decos;
decos.push_back(create<ast::BindingDecoration>(0, Source{}));
@@ -688,8 +693,8 @@
mod.AddGlobalVariable(coord_var);
ast::VariableList params;
- params.push_back(
- create<ast::Variable>("param", ast::StorageClass::kFunction, &f32));
+ params.push_back(create<ast::Variable>(Source{}, "param",
+ ast::StorageClass::kFunction, &f32));
auto* body = create<ast::BlockStatement>();
body->append(
@@ -705,7 +710,8 @@
expr.push_back(create<ast::ScalarConstructorExpression>(
create<ast::FloatLiteral>(&f32, 1.0f)));
- auto* var = create<ast::Variable>("v", ast::StorageClass::kFunction, &f32);
+ auto* var =
+ create<ast::Variable>(Source{}, "v", ast::StorageClass::kFunction, &f32);
var->set_constructor(create<ast::CallExpression>(
create<ast::IdentifierExpression>("sub_func"), expr));
@@ -759,8 +765,8 @@
mod.AddConstructedType(&s);
- auto* coord_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("coord", ast::StorageClass::kStorageBuffer, &ac));
+ auto* coord_var = create<ast::DecoratedVariable>(create<ast::Variable>(
+ Source{}, "coord", ast::StorageClass::kStorageBuffer, &ac));
ast::VariableDecorationList decos;
decos.push_back(create<ast::BindingDecoration>(0, Source{}));
@@ -771,8 +777,8 @@
mod.AddGlobalVariable(coord_var);
ast::VariableList params;
- params.push_back(
- create<ast::Variable>("param", ast::StorageClass::kFunction, &f32));
+ params.push_back(create<ast::Variable>(Source{}, "param",
+ ast::StorageClass::kFunction, &f32));
auto* body = create<ast::BlockStatement>();
body->append(
@@ -788,7 +794,8 @@
expr.push_back(create<ast::ScalarConstructorExpression>(
create<ast::FloatLiteral>(&f32, 1.0f)));
- auto* var = create<ast::Variable>("v", ast::StorageClass::kFunction, &f32);
+ auto* var =
+ create<ast::Variable>(Source{}, "v", ast::StorageClass::kFunction, &f32);
var->set_constructor(create<ast::CallExpression>(
create<ast::IdentifierExpression>("sub_func"), expr));
@@ -848,8 +855,8 @@
mod.AddConstructedType(&s);
- auto* coord_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("coord", ast::StorageClass::kStorageBuffer, &ac));
+ auto* coord_var = create<ast::DecoratedVariable>(create<ast::Variable>(
+ Source{}, "coord", ast::StorageClass::kStorageBuffer, &ac));
ast::VariableDecorationList decos;
decos.push_back(create<ast::BindingDecoration>(0, Source{}));
@@ -860,8 +867,8 @@
mod.AddGlobalVariable(coord_var);
ast::VariableList params;
- params.push_back(
- create<ast::Variable>("param", ast::StorageClass::kFunction, &f32));
+ params.push_back(create<ast::Variable>(Source{}, "param",
+ ast::StorageClass::kFunction, &f32));
auto* body = create<ast::BlockStatement>();
body->append(
@@ -877,7 +884,8 @@
expr.push_back(create<ast::ScalarConstructorExpression>(
create<ast::FloatLiteral>(&f32, 1.0f)));
- auto* var = create<ast::Variable>("v", ast::StorageClass::kFunction, &f32);
+ auto* var =
+ create<ast::Variable>(Source{}, "v", ast::StorageClass::kFunction, &f32);
var->set_constructor(create<ast::CallExpression>(
create<ast::IdentifierExpression>("sub_func"), expr));
@@ -922,7 +930,7 @@
ast::type::I32 i32;
auto* bar_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("bar", ast::StorageClass::kOutput, &f32));
+ create<ast::Variable>(Source{}, "bar", ast::StorageClass::kOutput, &f32));
ast::VariableDecorationList decos;
decos.push_back(create<ast::LocationDecoration>(1, Source{}));
bar_var->set_decorations(decos);
@@ -1006,7 +1014,8 @@
ast::type::Array ary(&f32, 5);
ast::VariableList params;
- params.push_back(create<ast::Variable>("a", ast::StorageClass::kNone, &ary));
+ params.push_back(
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kNone, &ary));
ast::type::Void void_type;
@@ -1063,8 +1072,8 @@
ast::type::Struct s("Data", str);
ast::type::AccessControl ac(ast::AccessControl::kReadWrite, &s);
- auto* data_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("data", ast::StorageClass::kStorageBuffer, &ac));
+ auto* data_var = create<ast::DecoratedVariable>(create<ast::Variable>(
+ Source{}, "data", ast::StorageClass::kStorageBuffer, &ac));
ast::VariableDecorationList decos;
decos.push_back(create<ast::BindingDecoration>(0, Source{}));
@@ -1078,7 +1087,8 @@
{
ast::VariableList params;
- auto* var = create<ast::Variable>("v", ast::StorageClass::kFunction, &f32);
+ auto* var = create<ast::Variable>(Source{}, "v",
+ ast::StorageClass::kFunction, &f32);
var->set_constructor(create<ast::MemberAccessorExpression>(
create<ast::IdentifierExpression>("data"),
create<ast::IdentifierExpression>("d")));
@@ -1099,7 +1109,8 @@
{
ast::VariableList params;
- auto* var = create<ast::Variable>("v", ast::StorageClass::kFunction, &f32);
+ auto* var = create<ast::Variable>(Source{}, "v",
+ ast::StorageClass::kFunction, &f32);
var->set_constructor(create<ast::MemberAccessorExpression>(
create<ast::IdentifierExpression>("data"),
create<ast::IdentifierExpression>("d")));
diff --git a/src/writer/msl/generator_impl_import_test.cc b/src/writer/msl/generator_impl_import_test.cc
index c36bf3c..b25f6ab 100644
--- a/src/writer/msl/generator_impl_import_test.cc
+++ b/src/writer/msl/generator_impl_import_test.cc
@@ -267,7 +267,8 @@
ast::type::F32 f32;
ast::type::Matrix mat(&f32, 3, 3);
- auto* var = create<ast::Variable>("var", ast::StorageClass::kFunction, &mat);
+ auto* var = create<ast::Variable>(Source{}, "var",
+ ast::StorageClass::kFunction, &mat);
ast::ExpressionList params;
params.push_back(create<ast::IdentifierExpression>("var"));
diff --git a/src/writer/msl/generator_impl_intrinsic_test.cc b/src/writer/msl/generator_impl_intrinsic_test.cc
index ca69fc0..164cee6 100644
--- a/src/writer/msl/generator_impl_intrinsic_test.cc
+++ b/src/writer/msl/generator_impl_intrinsic_test.cc
@@ -70,8 +70,10 @@
ast::type::Vector vec2(&f32, 2);
ast::type::Vector vec3(&f32, 3);
- auto* a = create<ast::Variable>("a", ast::StorageClass::kNone, &vec2);
- auto* b = create<ast::Variable>("b", ast::StorageClass::kNone, &vec3);
+ auto* a =
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kNone, &vec2);
+ auto* b =
+ create<ast::Variable>(Source{}, "b", ast::StorageClass::kNone, &vec3);
ast::ExpressionList params;
params.push_back(create<ast::IdentifierExpression>("a"));
@@ -108,8 +110,8 @@
ast::CallExpression call(create<ast::IdentifierExpression>("dot"), params);
- ast::Variable v1("param1", ast::StorageClass::kFunction, &vec);
- ast::Variable v2("param2", ast::StorageClass::kFunction, &vec);
+ ast::Variable v1(Source{}, "param1", ast::StorageClass::kFunction, &vec);
+ ast::Variable v2(Source{}, "param2", ast::StorageClass::kFunction, &vec);
td.RegisterVariableForTesting(&v1);
td.RegisterVariableForTesting(&v2);
diff --git a/src/writer/msl/generator_impl_loop_test.cc b/src/writer/msl/generator_impl_loop_test.cc
index bd46e63..c4ef258 100644
--- a/src/writer/msl/generator_impl_loop_test.cc
+++ b/src/writer/msl/generator_impl_loop_test.cc
@@ -149,14 +149,15 @@
ast::type::F32 f32;
- auto* var = create<ast::Variable>("lhs", ast::StorageClass::kFunction, &f32);
+ auto* var = create<ast::Variable>(Source{}, "lhs",
+ ast::StorageClass::kFunction, &f32);
var->set_constructor(create<ast::ScalarConstructorExpression>(
create<ast::FloatLiteral>(&f32, 2.4)));
auto* body = create<ast::BlockStatement>();
body->append(create<ast::VariableDeclStatement>(var));
- body->append(create<ast::VariableDeclStatement>(
- create<ast::Variable>("other", ast::StorageClass::kFunction, &f32)));
+ body->append(create<ast::VariableDeclStatement>(create<ast::Variable>(
+ Source{}, "other", ast::StorageClass::kFunction, &f32)));
auto* lhs = create<ast::IdentifierExpression>("lhs");
auto* rhs = create<ast::IdentifierExpression>("rhs");
diff --git a/src/writer/msl/generator_impl_module_constant_test.cc b/src/writer/msl/generator_impl_module_constant_test.cc
index ae03c77..97007b7 100644
--- a/src/writer/msl/generator_impl_module_constant_test.cc
+++ b/src/writer/msl/generator_impl_module_constant_test.cc
@@ -47,7 +47,8 @@
exprs.push_back(create<ast::ScalarConstructorExpression>(
create<ast::FloatLiteral>(&f32, 3.0f)));
- auto* var = create<ast::Variable>("pos", ast::StorageClass::kNone, &ary);
+ auto* var =
+ create<ast::Variable>(Source{}, "pos", ast::StorageClass::kNone, &ary);
var->set_is_const(true);
var->set_constructor(create<ast::TypeConstructorExpression>(&ary, exprs));
@@ -62,7 +63,7 @@
decos.push_back(create<ast::ConstantIdDecoration>(23, Source{}));
auto* var = create<ast::DecoratedVariable>(
- create<ast::Variable>("pos", ast::StorageClass::kNone, &f32));
+ create<ast::Variable>(Source{}, "pos", ast::StorageClass::kNone, &f32));
var->set_decorations(decos);
var->set_is_const(true);
var->set_constructor(create<ast::ScalarConstructorExpression>(
diff --git a/src/writer/msl/generator_impl_variable_decl_statement_test.cc b/src/writer/msl/generator_impl_variable_decl_statement_test.cc
index 03a20b5..dcaf542 100644
--- a/src/writer/msl/generator_impl_variable_decl_statement_test.cc
+++ b/src/writer/msl/generator_impl_variable_decl_statement_test.cc
@@ -42,7 +42,8 @@
TEST_F(MslGeneratorImplTest, Emit_VariableDeclStatement) {
ast::type::F32 f32;
- auto* var = create<ast::Variable>("a", ast::StorageClass::kNone, &f32);
+ auto* var =
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kNone, &f32);
ast::VariableDeclStatement stmt(var);
@@ -54,7 +55,8 @@
TEST_F(MslGeneratorImplTest, Emit_VariableDeclStatement_Const) {
ast::type::F32 f32;
- auto* var = create<ast::Variable>("a", ast::StorageClass::kNone, &f32);
+ auto* var =
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kNone, &f32);
var->set_is_const(true);
ast::VariableDeclStatement stmt(var);
@@ -69,7 +71,8 @@
ast::type::F32 f32;
ast::type::Array ary(&f32, 5);
- auto* var = create<ast::Variable>("a", ast::StorageClass::kNone, &ary);
+ auto* var =
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kNone, &ary);
ast::VariableDeclStatement stmt(var);
@@ -94,7 +97,8 @@
ast::type::Struct s("S", str);
- auto* var = create<ast::Variable>("a", ast::StorageClass::kNone, &s);
+ auto* var =
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kNone, &s);
ast::VariableDeclStatement stmt(var);
@@ -109,7 +113,8 @@
ast::type::F32 f32;
ast::type::Vector vec(&f32, 2);
- auto* var = create<ast::Variable>("a", ast::StorageClass::kFunction, &vec);
+ auto* var =
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kFunction, &vec);
ast::VariableDeclStatement stmt(var);
@@ -122,7 +127,8 @@
TEST_F(MslGeneratorImplTest, Emit_VariableDeclStatement_Matrix) {
ast::type::F32 f32;
ast::type::Matrix mat(&f32, 2, 3);
- auto* var = create<ast::Variable>("a", ast::StorageClass::kFunction, &mat);
+ auto* var =
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kFunction, &mat);
ast::VariableDeclStatement stmt(var);
@@ -134,7 +140,8 @@
TEST_F(MslGeneratorImplTest, Emit_VariableDeclStatement_Private) {
ast::type::F32 f32;
- auto* var = create<ast::Variable>("a", ast::StorageClass::kPrivate, &f32);
+ auto* var =
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kPrivate, &f32);
ast::VariableDeclStatement stmt(var);
@@ -148,7 +155,8 @@
auto* ident = create<ast::IdentifierExpression>("initializer");
ast::type::F32 f32;
- auto* var = create<ast::Variable>("a", ast::StorageClass::kNone, &f32);
+ auto* var =
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kNone, &f32);
var->set_constructor(ident);
ast::VariableDeclStatement stmt(var);
@@ -165,7 +173,8 @@
ast::ExpressionList values;
auto* zero_vec = create<ast::TypeConstructorExpression>(&vec, values);
- auto* var = create<ast::Variable>("a", ast::StorageClass::kNone, &vec);
+ auto* var =
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kNone, &vec);
var->set_constructor(zero_vec);
ast::VariableDeclStatement stmt(var);
diff --git a/src/writer/spirv/builder_accessor_expression_test.cc b/src/writer/spirv/builder_accessor_expression_test.cc
index a834a90..65b66c4 100644
--- a/src/writer/spirv/builder_accessor_expression_test.cc
+++ b/src/writer/spirv/builder_accessor_expression_test.cc
@@ -53,7 +53,7 @@
// vec3<f32> ary;
// ary[1] -> ptr<f32>
- ast::Variable var("ary", ast::StorageClass::kFunction, &vec3);
+ ast::Variable var(Source{}, "ary", ast::StorageClass::kFunction, &vec3);
auto* ary = create<ast::IdentifierExpression>("ary");
auto* idx_expr = create<ast::ScalarConstructorExpression>(
@@ -94,8 +94,8 @@
// idx : i32;
// ary[idx] -> ptr<f32>
- ast::Variable var("ary", ast::StorageClass::kFunction, &vec3);
- ast::Variable idx("idx", ast::StorageClass::kFunction, &i32);
+ ast::Variable var(Source{}, "ary", ast::StorageClass::kFunction, &vec3);
+ ast::Variable idx(Source{}, "idx", ast::StorageClass::kFunction, &i32);
auto* ary = create<ast::IdentifierExpression>("ary");
auto* idx_expr = create<ast::IdentifierExpression>("idx");
@@ -139,7 +139,7 @@
// vec3<f32> ary;
// ary[1 + 2] -> ptr<f32>
- ast::Variable var("ary", ast::StorageClass::kFunction, &vec3);
+ ast::Variable var(Source{}, "ary", ast::StorageClass::kFunction, &vec3);
auto* ary = create<ast::IdentifierExpression>("ary");
@@ -186,7 +186,7 @@
// ary = array<vec3<f32>, 4>
// ary[3][2];
- ast::Variable var("ary", ast::StorageClass::kFunction, &ary4);
+ ast::Variable var(Source{}, "ary", ast::StorageClass::kFunction, &ary4);
ast::ArrayAccessorExpression expr(
create<ast::ArrayAccessorExpression>(
@@ -233,7 +233,7 @@
// var a : array<vec3<f32>, 4>;
// a[2].xy;
- ast::Variable var("ary", ast::StorageClass::kFunction, &ary4);
+ ast::Variable var(Source{}, "ary", ast::StorageClass::kFunction, &ary4);
ast::MemberAccessorExpression expr(
create<ast::ArrayAccessorExpression>(
@@ -289,7 +289,7 @@
auto* s = create<ast::Struct>(members);
ast::type::Struct s_type("my_struct", s);
- ast::Variable var("ident", ast::StorageClass::kFunction, &s_type);
+ ast::Variable var(Source{}, "ident", ast::StorageClass::kFunction, &s_type);
ast::MemberAccessorExpression expr(create<ast::IdentifierExpression>("ident"),
create<ast::IdentifierExpression>("b"));
@@ -343,7 +343,7 @@
ast::type::Struct s_type("my_struct", create<ast::Struct>(outer_members));
- ast::Variable var("ident", ast::StorageClass::kFunction, &s_type);
+ ast::Variable var(Source{}, "ident", ast::StorageClass::kFunction, &s_type);
ast::MemberAccessorExpression expr(
create<ast::MemberAccessorExpression>(
@@ -403,7 +403,7 @@
ast::type::Struct s_type("Outer", create<ast::Struct>(outer_members));
- ast::Variable var("ident", ast::StorageClass::kFunction, &s_type);
+ ast::Variable var(Source{}, "ident", ast::StorageClass::kFunction, &s_type);
ast::MemberAccessorExpression expr(
create<ast::MemberAccessorExpression>(
@@ -462,7 +462,7 @@
ast::type::Struct s_type("my_struct", create<ast::Struct>(outer_members));
- ast::Variable var("ident", ast::StorageClass::kFunction, &s_type);
+ ast::Variable var(Source{}, "ident", ast::StorageClass::kFunction, &s_type);
auto* lhs = create<ast::MemberAccessorExpression>(
create<ast::MemberAccessorExpression>(
@@ -528,8 +528,8 @@
ast::type::Struct s_type("my_struct", create<ast::Struct>(outer_members));
- ast::Variable var("ident", ast::StorageClass::kFunction, &s_type);
- ast::Variable store("store", ast::StorageClass::kFunction, &f32);
+ ast::Variable var(Source{}, "ident", ast::StorageClass::kFunction, &s_type);
+ ast::Variable store(Source{}, "store", ast::StorageClass::kFunction, &f32);
auto* lhs = create<ast::IdentifierExpression>("store");
@@ -578,7 +578,7 @@
// ident.y
- ast::Variable var("ident", ast::StorageClass::kFunction, &vec3);
+ ast::Variable var(Source{}, "ident", ast::StorageClass::kFunction, &vec3);
ast::MemberAccessorExpression expr(create<ast::IdentifierExpression>("ident"),
create<ast::IdentifierExpression>("y"));
@@ -613,7 +613,7 @@
// ident.yx
- ast::Variable var("ident", ast::StorageClass::kFunction, &vec3);
+ ast::Variable var(Source{}, "ident", ast::StorageClass::kFunction, &vec3);
ast::MemberAccessorExpression expr(create<ast::IdentifierExpression>("ident"),
create<ast::IdentifierExpression>("yx"));
@@ -647,7 +647,7 @@
// ident.yxz.xz
- ast::Variable var("ident", ast::StorageClass::kFunction, &vec3);
+ ast::Variable var(Source{}, "ident", ast::StorageClass::kFunction, &vec3);
ast::MemberAccessorExpression expr(
create<ast::MemberAccessorExpression>(
@@ -685,7 +685,7 @@
// ident.yxz.x
- ast::Variable var("ident", ast::StorageClass::kFunction, &vec3);
+ ast::Variable var(Source{}, "ident", ast::StorageClass::kFunction, &vec3);
ast::MemberAccessorExpression expr(
create<ast::MemberAccessorExpression>(
@@ -723,7 +723,7 @@
// index.yxz[1]
- ast::Variable var("ident", ast::StorageClass::kFunction, &vec3);
+ ast::Variable var(Source{}, "ident", ast::StorageClass::kFunction, &vec3);
ast::ArrayAccessorExpression expr(
create<ast::MemberAccessorExpression>(
@@ -792,7 +792,8 @@
ast::type::Array a_ary_type(&a_type, 2);
- ast::Variable var("index", ast::StorageClass::kFunction, &a_ary_type);
+ ast::Variable var(Source{}, "index", ast::StorageClass::kFunction,
+ &a_ary_type);
ast::MemberAccessorExpression expr(
create<ast::MemberAccessorExpression>(
@@ -884,7 +885,7 @@
create<ast::FloatLiteral>(&f32, -0.5)),
}));
- ast::Variable var("pos", ast::StorageClass::kPrivate, &arr);
+ ast::Variable var(Source{}, "pos", ast::StorageClass::kPrivate, &arr);
var.set_is_const(true);
var.set_constructor(create<ast::TypeConstructorExpression>(&arr, ary_params));
@@ -940,7 +941,7 @@
vec_params.push_back(create<ast::ScalarConstructorExpression>(
create<ast::FloatLiteral>(&f32, 0.5)));
- ast::Variable var("pos", ast::StorageClass::kPrivate, &vec);
+ ast::Variable var(Source{}, "pos", ast::StorageClass::kPrivate, &vec);
var.set_is_const(true);
var.set_constructor(
create<ast::TypeConstructorExpression>(&vec, std::move(vec_params)));
diff --git a/src/writer/spirv/builder_assign_test.cc b/src/writer/spirv/builder_assign_test.cc
index c8ee307..5a6d44c 100644
--- a/src/writer/spirv/builder_assign_test.cc
+++ b/src/writer/spirv/builder_assign_test.cc
@@ -44,7 +44,7 @@
TEST_F(BuilderTest, Assign_Var) {
ast::type::F32 f32;
- ast::Variable v("var", ast::StorageClass::kOutput, &f32);
+ ast::Variable v(Source{}, "var", ast::StorageClass::kOutput, &f32);
auto* ident = create<ast::IdentifierExpression>("var");
auto* val = create<ast::ScalarConstructorExpression>(
@@ -78,7 +78,7 @@
ast::type::F32 f32;
ast::type::Vector vec(&f32, 3);
- ast::Variable v("var", ast::StorageClass::kOutput, &vec);
+ ast::Variable v(Source{}, "var", ast::StorageClass::kOutput, &vec);
auto* ident = create<ast::IdentifierExpression>("var");
ast::ExpressionList vals;
@@ -128,7 +128,7 @@
create<ast::FloatLiteral>(&f32, 3.0f)),
});
- ast::Variable v("var", ast::StorageClass::kOutput, &vec3);
+ ast::Variable v(Source{}, "var", ast::StorageClass::kOutput, &vec3);
ast::AssignmentStatement assign(create<ast::IdentifierExpression>("var"),
init);
@@ -176,7 +176,7 @@
auto* init = create<ast::TypeConstructorExpression>(&vec3, vals);
- ast::Variable v("var", ast::StorageClass::kOutput, &vec3);
+ ast::Variable v(Source{}, "var", ast::StorageClass::kOutput, &vec3);
ast::AssignmentStatement assign(create<ast::IdentifierExpression>("var"),
init);
@@ -223,7 +223,7 @@
auto* s = create<ast::Struct>(members);
ast::type::Struct s_type("my_struct", s);
- ast::Variable v("ident", ast::StorageClass::kFunction, &s_type);
+ ast::Variable v(Source{}, "ident", ast::StorageClass::kFunction, &s_type);
auto* ident = create<ast::MemberAccessorExpression>(
create<ast::IdentifierExpression>("ident"),
@@ -265,7 +265,7 @@
ast::type::F32 f32;
ast::type::Vector vec3(&f32, 3);
- ast::Variable v("var", ast::StorageClass::kOutput, &vec3);
+ ast::Variable v(Source{}, "var", ast::StorageClass::kOutput, &vec3);
auto* ident = create<ast::IdentifierExpression>("var");
@@ -312,7 +312,7 @@
// var.y = 1
- ast::Variable v("var", ast::StorageClass::kOutput, &vec3);
+ ast::Variable v(Source{}, "var", ast::StorageClass::kOutput, &vec3);
auto* ident = create<ast::MemberAccessorExpression>(
create<ast::IdentifierExpression>("var"),
@@ -357,7 +357,7 @@
// var[1] = 1
- ast::Variable v("var", ast::StorageClass::kOutput, &vec3);
+ ast::Variable v(Source{}, "var", ast::StorageClass::kOutput, &vec3);
auto* ident = create<ast::ArrayAccessorExpression>(
create<ast::IdentifierExpression>("var"),
diff --git a/src/writer/spirv/builder_binary_expression_test.cc b/src/writer/spirv/builder_binary_expression_test.cc
index 89e9af8..8920a66 100644
--- a/src/writer/spirv/builder_binary_expression_test.cc
+++ b/src/writer/spirv/builder_binary_expression_test.cc
@@ -121,7 +121,7 @@
ast::type::I32 i32;
- ast::Variable var("param", ast::StorageClass::kFunction, &i32);
+ ast::Variable var(Source{}, "param", ast::StorageClass::kFunction, &i32);
auto* lhs = create<ast::IdentifierExpression>("param");
auto* rhs = create<ast::IdentifierExpression>("param");
@@ -633,7 +633,8 @@
ast::type::F32 f32;
ast::type::Matrix mat3(&f32, 3, 3);
- auto* var = create<ast::Variable>("mat", ast::StorageClass::kFunction, &mat3);
+ auto* var = create<ast::Variable>(Source{}, "mat",
+ ast::StorageClass::kFunction, &mat3);
auto* lhs = create<ast::IdentifierExpression>("mat");
auto* rhs = create<ast::ScalarConstructorExpression>(
create<ast::FloatLiteral>(&f32, 1.f));
@@ -665,7 +666,8 @@
ast::type::F32 f32;
ast::type::Matrix mat3(&f32, 3, 3);
- auto* var = create<ast::Variable>("mat", ast::StorageClass::kFunction, &mat3);
+ auto* var = create<ast::Variable>(Source{}, "mat",
+ ast::StorageClass::kFunction, &mat3);
auto* lhs = create<ast::ScalarConstructorExpression>(
create<ast::FloatLiteral>(&f32, 1.f));
auto* rhs = create<ast::IdentifierExpression>("mat");
@@ -698,7 +700,8 @@
ast::type::Vector vec3(&f32, 3);
ast::type::Matrix mat3(&f32, 3, 3);
- auto* var = create<ast::Variable>("mat", ast::StorageClass::kFunction, &mat3);
+ auto* var = create<ast::Variable>(Source{}, "mat",
+ ast::StorageClass::kFunction, &mat3);
auto* lhs = create<ast::IdentifierExpression>("mat");
ast::ExpressionList vals;
@@ -739,7 +742,8 @@
ast::type::Vector vec3(&f32, 3);
ast::type::Matrix mat3(&f32, 3, 3);
- auto* var = create<ast::Variable>("mat", ast::StorageClass::kFunction, &mat3);
+ auto* var = create<ast::Variable>(Source{}, "mat",
+ ast::StorageClass::kFunction, &mat3);
ast::ExpressionList vals;
vals.push_back(create<ast::ScalarConstructorExpression>(
@@ -781,7 +785,8 @@
ast::type::Vector vec3(&f32, 3);
ast::type::Matrix mat3(&f32, 3, 3);
- auto* var = create<ast::Variable>("mat", ast::StorageClass::kFunction, &mat3);
+ auto* var = create<ast::Variable>(Source{}, "mat",
+ ast::StorageClass::kFunction, &mat3);
auto* lhs = create<ast::IdentifierExpression>("mat");
auto* rhs = create<ast::IdentifierExpression>("mat");
@@ -856,12 +861,12 @@
TEST_F(BuilderTest, Binary_LogicalAnd_WithLoads) {
ast::type::Bool bool_type;
- auto* a_var =
- create<ast::Variable>("a", ast::StorageClass::kFunction, &bool_type);
+ auto* a_var = create<ast::Variable>(Source{}, "a",
+ ast::StorageClass::kFunction, &bool_type);
a_var->set_constructor(create<ast::ScalarConstructorExpression>(
create<ast::BoolLiteral>(&bool_type, true)));
- auto* b_var =
- create<ast::Variable>("b", ast::StorageClass::kFunction, &bool_type);
+ auto* b_var = create<ast::Variable>(Source{}, "b",
+ ast::StorageClass::kFunction, &bool_type);
b_var->set_constructor(create<ast::ScalarConstructorExpression>(
create<ast::BoolLiteral>(&bool_type, false)));
@@ -1042,12 +1047,12 @@
TEST_F(BuilderTest, Binary_LogicalOr_WithLoads) {
ast::type::Bool bool_type;
- auto* a_var =
- create<ast::Variable>("a", ast::StorageClass::kFunction, &bool_type);
+ auto* a_var = create<ast::Variable>(Source{}, "a",
+ ast::StorageClass::kFunction, &bool_type);
a_var->set_constructor(create<ast::ScalarConstructorExpression>(
create<ast::BoolLiteral>(&bool_type, true)));
- auto* b_var =
- create<ast::Variable>("b", ast::StorageClass::kFunction, &bool_type);
+ auto* b_var = create<ast::Variable>(Source{}, "b",
+ ast::StorageClass::kFunction, &bool_type);
b_var->set_constructor(create<ast::ScalarConstructorExpression>(
create<ast::BoolLiteral>(&bool_type, false)));
diff --git a/src/writer/spirv/builder_block_test.cc b/src/writer/spirv/builder_block_test.cc
index 192a0d2..8be8d5e 100644
--- a/src/writer/spirv/builder_block_test.cc
+++ b/src/writer/spirv/builder_block_test.cc
@@ -41,16 +41,16 @@
// serves to prove the block code is pushing new scopes as needed.
ast::BlockStatement outer;
- outer.append(create<ast::VariableDeclStatement>(
- create<ast::Variable>("var", ast::StorageClass::kFunction, &f32)));
+ outer.append(create<ast::VariableDeclStatement>(create<ast::Variable>(
+ Source{}, "var", ast::StorageClass::kFunction, &f32)));
outer.append(create<ast::AssignmentStatement>(
create<ast::IdentifierExpression>("var"),
create<ast::ScalarConstructorExpression>(
create<ast::FloatLiteral>(&f32, 1.0f))));
auto* inner = create<ast::BlockStatement>();
- inner->append(create<ast::VariableDeclStatement>(
- create<ast::Variable>("var", ast::StorageClass::kFunction, &f32)));
+ inner->append(create<ast::VariableDeclStatement>(create<ast::Variable>(
+ Source{}, "var", ast::StorageClass::kFunction, &f32)));
inner->append(create<ast::AssignmentStatement>(
create<ast::IdentifierExpression>("var"),
create<ast::ScalarConstructorExpression>(
diff --git a/src/writer/spirv/builder_call_test.cc b/src/writer/spirv/builder_call_test.cc
index b0c3b82..fff29bf 100644
--- a/src/writer/spirv/builder_call_test.cc
+++ b/src/writer/spirv/builder_call_test.cc
@@ -44,9 +44,9 @@
ast::VariableList func_params;
func_params.push_back(
- create<ast::Variable>("a", ast::StorageClass::kFunction, &f32));
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kFunction, &f32));
func_params.push_back(
- create<ast::Variable>("b", ast::StorageClass::kFunction, &f32));
+ create<ast::Variable>(Source{}, "b", ast::StorageClass::kFunction, &f32));
auto* body = create<ast::BlockStatement>();
body->append(create<ast::ReturnStatement>(create<ast::BinaryExpression>(
@@ -108,9 +108,9 @@
ast::VariableList func_params;
func_params.push_back(
- create<ast::Variable>("a", ast::StorageClass::kFunction, &f32));
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kFunction, &f32));
func_params.push_back(
- create<ast::Variable>("b", ast::StorageClass::kFunction, &f32));
+ create<ast::Variable>(Source{}, "b", ast::StorageClass::kFunction, &f32));
auto* body = create<ast::BlockStatement>();
body->append(create<ast::ReturnStatement>(create<ast::BinaryExpression>(
diff --git a/src/writer/spirv/builder_function_decoration_test.cc b/src/writer/spirv/builder_function_decoration_test.cc
index 2aa4cc5..cb5da8a 100644
--- a/src/writer/spirv/builder_function_decoration_test.cc
+++ b/src/writer/spirv/builder_function_decoration_test.cc
@@ -102,11 +102,12 @@
create<ast::StageDecoration>(ast::PipelineStage::kVertex, Source{}),
});
- auto* v_in = create<ast::Variable>("my_in", ast::StorageClass::kInput, &f32);
- auto* v_out =
- create<ast::Variable>("my_out", ast::StorageClass::kOutput, &f32);
- auto* v_wg =
- create<ast::Variable>("my_wg", ast::StorageClass::kWorkgroup, &f32);
+ auto* v_in =
+ create<ast::Variable>(Source{}, "my_in", ast::StorageClass::kInput, &f32);
+ auto* v_out = create<ast::Variable>(Source{}, "my_out",
+ ast::StorageClass::kOutput, &f32);
+ auto* v_wg = create<ast::Variable>(Source{}, "my_wg",
+ ast::StorageClass::kWorkgroup, &f32);
EXPECT_TRUE(b.GenerateGlobalVariable(v_in)) << b.error();
EXPECT_TRUE(b.GenerateGlobalVariable(v_out)) << b.error();
@@ -161,11 +162,12 @@
create<ast::IdentifierExpression>("my_in")));
func.set_body(body);
- auto* v_in = create<ast::Variable>("my_in", ast::StorageClass::kInput, &f32);
- auto* v_out =
- create<ast::Variable>("my_out", ast::StorageClass::kOutput, &f32);
- auto* v_wg =
- create<ast::Variable>("my_wg", ast::StorageClass::kWorkgroup, &f32);
+ auto* v_in =
+ create<ast::Variable>(Source{}, "my_in", ast::StorageClass::kInput, &f32);
+ auto* v_out = create<ast::Variable>(Source{}, "my_out",
+ ast::StorageClass::kOutput, &f32);
+ auto* v_wg = create<ast::Variable>(Source{}, "my_wg",
+ ast::StorageClass::kWorkgroup, &f32);
td.RegisterVariableForTesting(v_in);
td.RegisterVariableForTesting(v_out);
diff --git a/src/writer/spirv/builder_function_test.cc b/src/writer/spirv/builder_function_test.cc
index 6121675..82de2af 100644
--- a/src/writer/spirv/builder_function_test.cc
+++ b/src/writer/spirv/builder_function_test.cc
@@ -87,7 +87,8 @@
ast::type::Void void_type;
ast::type::F32 f32;
- auto* var_a = create<ast::Variable>("a", ast::StorageClass::kPrivate, &f32);
+ auto* var_a =
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kPrivate, &f32);
td.RegisterVariableForTesting(var_a);
auto* body = create<ast::BlockStatement>();
@@ -142,10 +143,12 @@
ast::type::I32 i32;
ast::VariableList params;
- auto* var_a = create<ast::Variable>("a", ast::StorageClass::kFunction, &f32);
+ auto* var_a =
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kFunction, &f32);
var_a->set_is_const(true);
params.push_back(var_a);
- auto* var_b = create<ast::Variable>("b", ast::StorageClass::kFunction, &i32);
+ auto* var_b =
+ create<ast::Variable>(Source{}, "b", ast::StorageClass::kFunction, &i32);
var_b->set_is_const(true);
params.push_back(var_b);
@@ -256,8 +259,8 @@
ast::type::Struct s("Data", str);
ast::type::AccessControl ac(ast::AccessControl::kReadWrite, &s);
- auto* data_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("data", ast::StorageClass::kStorageBuffer, &ac));
+ auto* data_var = create<ast::DecoratedVariable>(create<ast::Variable>(
+ Source{}, "data", ast::StorageClass::kStorageBuffer, &ac));
ast::VariableDecorationList decos;
decos.push_back(create<ast::BindingDecoration>(0, Source{}));
@@ -271,7 +274,8 @@
{
ast::VariableList params;
- auto* var = create<ast::Variable>("v", ast::StorageClass::kFunction, &f32);
+ auto* var = create<ast::Variable>(Source{}, "v",
+ ast::StorageClass::kFunction, &f32);
var->set_constructor(create<ast::MemberAccessorExpression>(
create<ast::IdentifierExpression>("data"),
create<ast::IdentifierExpression>("d")));
@@ -292,7 +296,8 @@
{
ast::VariableList params;
- auto* var = create<ast::Variable>("v", ast::StorageClass::kFunction, &f32);
+ auto* var = create<ast::Variable>(Source{}, "v",
+ ast::StorageClass::kFunction, &f32);
var->set_constructor(create<ast::MemberAccessorExpression>(
create<ast::IdentifierExpression>("data"),
create<ast::IdentifierExpression>("d")));
diff --git a/src/writer/spirv/builder_function_variable_test.cc b/src/writer/spirv/builder_function_variable_test.cc
index 163f66e..2ff1a23 100644
--- a/src/writer/spirv/builder_function_variable_test.cc
+++ b/src/writer/spirv/builder_function_variable_test.cc
@@ -47,7 +47,7 @@
TEST_F(BuilderTest, FunctionVar_NoStorageClass) {
ast::type::F32 f32;
- ast::Variable v("var", ast::StorageClass::kNone, &f32);
+ ast::Variable v(Source{}, "var", ast::StorageClass::kNone, &f32);
b.push_function(Function{});
EXPECT_TRUE(b.GenerateFunctionVariable(&v)) << b.error();
@@ -80,7 +80,7 @@
EXPECT_TRUE(td.DetermineResultType(init)) << td.error();
- ast::Variable v("var", ast::StorageClass::kOutput, &f32);
+ ast::Variable v(Source{}, "var", ast::StorageClass::kOutput, &f32);
v.set_constructor(init);
td.RegisterVariableForTesting(&v);
@@ -126,7 +126,7 @@
EXPECT_TRUE(td.DetermineResultType(init)) << td.error();
- ast::Variable v("var", ast::StorageClass::kFunction, &vec);
+ ast::Variable v(Source{}, "var", ast::StorageClass::kFunction, &vec);
v.set_constructor(init);
td.RegisterVariableForTesting(&v);
@@ -164,11 +164,11 @@
ASSERT_TRUE(td.DetermineResultType(init)) << td.error();
- ast::Variable v("v", ast::StorageClass::kFunction, &f32);
+ ast::Variable v(Source{}, "v", ast::StorageClass::kFunction, &f32);
v.set_constructor(init);
td.RegisterVariableForTesting(&v);
- ast::Variable v2("v2", ast::StorageClass::kFunction, &f32);
+ ast::Variable v2(Source{}, "v2", ast::StorageClass::kFunction, &f32);
v2.set_constructor(create<ast::IdentifierExpression>("v"));
td.RegisterVariableForTesting(&v2);
@@ -209,11 +209,11 @@
EXPECT_TRUE(td.DetermineResultType(init)) << td.error();
- ast::Variable v("v", ast::StorageClass::kFunction, &f32);
+ ast::Variable v(Source{}, "v", ast::StorageClass::kFunction, &f32);
v.set_constructor(init);
td.RegisterVariableForTesting(&v);
- ast::Variable v2("v2", ast::StorageClass::kFunction, &f32);
+ ast::Variable v2(Source{}, "v2", ast::StorageClass::kFunction, &f32);
v2.set_is_const(true);
v2.set_constructor(create<ast::IdentifierExpression>("v"));
td.RegisterVariableForTesting(&v2);
@@ -257,7 +257,7 @@
EXPECT_TRUE(td.DetermineResultType(init)) << td.error();
- ast::Variable v("var", ast::StorageClass::kOutput, &f32);
+ ast::Variable v(Source{}, "var", ast::StorageClass::kOutput, &f32);
v.set_constructor(init);
v.set_is_const(true);
diff --git a/src/writer/spirv/builder_global_variable_test.cc b/src/writer/spirv/builder_global_variable_test.cc
index 5a3bd8c..71408bb 100644
--- a/src/writer/spirv/builder_global_variable_test.cc
+++ b/src/writer/spirv/builder_global_variable_test.cc
@@ -52,7 +52,7 @@
TEST_F(BuilderTest, GlobalVar_NoStorageClass) {
ast::type::F32 f32;
- ast::Variable v("var", ast::StorageClass::kNone, &f32);
+ ast::Variable v(Source{}, "var", ast::StorageClass::kNone, &f32);
EXPECT_TRUE(b.GenerateGlobalVariable(&v)) << b.error();
EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %1 "var"
@@ -66,7 +66,7 @@
TEST_F(BuilderTest, GlobalVar_WithStorageClass) {
ast::type::F32 f32;
- ast::Variable v("var", ast::StorageClass::kOutput, &f32);
+ ast::Variable v(Source{}, "var", ast::StorageClass::kOutput, &f32);
EXPECT_TRUE(b.GenerateGlobalVariable(&v)) << b.error();
EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %1 "var"
@@ -80,7 +80,7 @@
TEST_F(BuilderTest, GlobalVar_WithStorageClass_Input) {
ast::type::F32 f32;
- ast::Variable v("var", ast::StorageClass::kInput, &f32);
+ ast::Variable v(Source{}, "var", ast::StorageClass::kInput, &f32);
EXPECT_TRUE(b.GenerateGlobalVariable(&v)) << b.error();
EXPECT_EQ(DumpInstructions(b.debug()), R"(OpName %1 "var"
@@ -107,7 +107,7 @@
EXPECT_TRUE(td.DetermineResultType(init)) << td.error();
- ast::Variable v("var", ast::StorageClass::kOutput, &f32);
+ ast::Variable v(Source{}, "var", ast::StorageClass::kOutput, &f32);
v.set_constructor(init);
td.RegisterVariableForTesting(&v);
@@ -142,7 +142,7 @@
EXPECT_TRUE(td.DetermineResultType(init)) << td.error();
- ast::Variable v("var", ast::StorageClass::kOutput, &f32);
+ ast::Variable v(Source{}, "var", ast::StorageClass::kOutput, &f32);
v.set_constructor(init);
v.set_is_const(true);
td.RegisterVariableForTesting(&v);
@@ -175,7 +175,7 @@
EXPECT_TRUE(td.DetermineResultType(init)) << td.error();
- ast::Variable v("var", ast::StorageClass::kOutput, &f32);
+ ast::Variable v(Source{}, "var", ast::StorageClass::kOutput, &f32);
v.set_constructor(init);
v.set_is_const(true);
td.RegisterVariableForTesting(&v);
@@ -214,7 +214,7 @@
EXPECT_TRUE(td.DetermineResultType(init)) << td.error();
- ast::Variable v("var", ast::StorageClass::kOutput, &f32);
+ ast::Variable v(Source{}, "var", ast::StorageClass::kOutput, &f32);
v.set_constructor(init);
v.set_is_const(true);
td.RegisterVariableForTesting(&v);
@@ -240,7 +240,8 @@
TEST_F(BuilderTest, GlobalVar_WithLocation) {
ast::type::F32 f32;
- auto* v = create<ast::Variable>("var", ast::StorageClass::kOutput, &f32);
+ auto* v =
+ create<ast::Variable>(Source{}, "var", ast::StorageClass::kOutput, &f32);
ast::VariableDecorationList decos;
decos.push_back(create<ast::LocationDecoration>(5, Source{}));
@@ -261,7 +262,8 @@
TEST_F(BuilderTest, GlobalVar_WithBindingAndSet) {
ast::type::F32 f32;
- auto* v = create<ast::Variable>("var", ast::StorageClass::kOutput, &f32);
+ auto* v =
+ create<ast::Variable>(Source{}, "var", ast::StorageClass::kOutput, &f32);
ast::VariableDecorationList decos;
decos.push_back(create<ast::BindingDecoration>(2, Source{}));
decos.push_back(create<ast::SetDecoration>(3, Source{}));
@@ -284,7 +286,8 @@
TEST_F(BuilderTest, GlobalVar_WithBuiltin) {
ast::type::F32 f32;
- auto* v = create<ast::Variable>("var", ast::StorageClass::kOutput, &f32);
+ auto* v =
+ create<ast::Variable>(Source{}, "var", ast::StorageClass::kOutput, &f32);
ast::VariableDecorationList decos;
decos.push_back(
create<ast::BuiltinDecoration>(ast::Builtin::kPosition, Source{}));
@@ -310,8 +313,8 @@
ast::VariableDecorationList decos;
decos.push_back(create<ast::ConstantIdDecoration>(1200, Source{}));
- ast::DecoratedVariable v(
- create<ast::Variable>("var", ast::StorageClass::kNone, &bool_type));
+ ast::DecoratedVariable v(create<ast::Variable>(
+ Source{}, "var", ast::StorageClass::kNone, &bool_type));
v.set_decorations(decos);
v.set_constructor(create<ast::ScalarConstructorExpression>(
create<ast::BoolLiteral>(&bool_type, true)));
@@ -334,8 +337,8 @@
ast::VariableDecorationList decos;
decos.push_back(create<ast::ConstantIdDecoration>(1200, Source{}));
- ast::DecoratedVariable v(
- create<ast::Variable>("var", ast::StorageClass::kNone, &bool_type));
+ ast::DecoratedVariable v(create<ast::Variable>(
+ Source{}, "var", ast::StorageClass::kNone, &bool_type));
v.set_decorations(decos);
EXPECT_TRUE(b.GenerateGlobalVariable(&v)) << b.error();
@@ -357,7 +360,7 @@
decos.push_back(create<ast::ConstantIdDecoration>(0, Source{}));
ast::DecoratedVariable v(
- create<ast::Variable>("var", ast::StorageClass::kNone, &f32));
+ create<ast::Variable>(Source{}, "var", ast::StorageClass::kNone, &f32));
v.set_decorations(decos);
v.set_constructor(create<ast::ScalarConstructorExpression>(
create<ast::FloatLiteral>(&f32, 2.0)));
@@ -381,7 +384,7 @@
decos.push_back(create<ast::ConstantIdDecoration>(0, Source{}));
ast::DecoratedVariable v(
- create<ast::Variable>("var", ast::StorageClass::kNone, &f32));
+ create<ast::Variable>(Source{}, "var", ast::StorageClass::kNone, &f32));
v.set_decorations(decos);
EXPECT_TRUE(b.GenerateGlobalVariable(&v)) << b.error();
@@ -403,7 +406,7 @@
decos.push_back(create<ast::ConstantIdDecoration>(0, Source{}));
ast::DecoratedVariable v(
- create<ast::Variable>("var", ast::StorageClass::kNone, &i32));
+ create<ast::Variable>(Source{}, "var", ast::StorageClass::kNone, &i32));
v.set_decorations(decos);
EXPECT_TRUE(b.GenerateGlobalVariable(&v)) << b.error();
@@ -425,7 +428,7 @@
decos.push_back(create<ast::ConstantIdDecoration>(0, Source{}));
ast::DecoratedVariable v(
- create<ast::Variable>("var", ast::StorageClass::kNone, &u32));
+ create<ast::Variable>(Source{}, "var", ast::StorageClass::kNone, &u32));
v.set_decorations(decos);
EXPECT_TRUE(b.GenerateGlobalVariable(&v)) << b.error();
@@ -490,7 +493,7 @@
ast::type::Struct A("A", create<ast::Struct>(members));
ast::type::AccessControl ac{ast::AccessControl::kReadOnly, &A};
- ast::Variable var("b", ast::StorageClass::kStorageBuffer, &ac);
+ ast::Variable var(Source{}, "b", ast::StorageClass::kStorageBuffer, &ac);
EXPECT_TRUE(b.GenerateGlobalVariable(&var)) << b.error();
@@ -526,7 +529,7 @@
ast::type::Alias B("B", &A);
ast::type::AccessControl ac{ast::AccessControl::kReadOnly, &B};
- ast::Variable var("b", ast::StorageClass::kStorageBuffer, &ac);
+ ast::Variable var(Source{}, "b", ast::StorageClass::kStorageBuffer, &ac);
EXPECT_TRUE(b.GenerateGlobalVariable(&var)) << b.error();
@@ -560,7 +563,7 @@
ast::type::AccessControl ac{ast::AccessControl::kReadOnly, &A};
ast::type::Alias B("B", &ac);
- ast::Variable var("b", ast::StorageClass::kStorageBuffer, &B);
+ ast::Variable var(Source{}, "b", ast::StorageClass::kStorageBuffer, &B);
EXPECT_TRUE(b.GenerateGlobalVariable(&var)) << b.error();
@@ -594,8 +597,8 @@
ast::type::AccessControl read{ast::AccessControl::kReadOnly, &A};
ast::type::AccessControl rw{ast::AccessControl::kReadWrite, &A};
- ast::Variable var_b("b", ast::StorageClass::kStorageBuffer, &read);
- ast::Variable var_c("c", ast::StorageClass::kStorageBuffer, &rw);
+ ast::Variable var_b(Source{}, "b", ast::StorageClass::kStorageBuffer, &read);
+ ast::Variable var_c(Source{}, "c", ast::StorageClass::kStorageBuffer, &rw);
EXPECT_TRUE(b.GenerateGlobalVariable(&var_b)) << b.error();
EXPECT_TRUE(b.GenerateGlobalVariable(&var_c)) << b.error();
@@ -626,7 +629,8 @@
ast::type::ImageFormat::kR32Uint);
ASSERT_TRUE(td.DetermineStorageTextureSubtype(&type)) << td.error();
- ast::Variable var_a("a", ast::StorageClass::kUniformConstant, &type);
+ ast::Variable var_a(Source{}, "a", ast::StorageClass::kUniformConstant,
+ &type);
EXPECT_TRUE(b.GenerateGlobalVariable(&var_a)) << b.error();
@@ -646,7 +650,8 @@
ast::type::ImageFormat::kR32Uint);
ASSERT_TRUE(td.DetermineStorageTextureSubtype(&type)) << td.error();
- ast::Variable var_a("a", ast::StorageClass::kUniformConstant, &type);
+ ast::Variable var_a(Source{}, "a", ast::StorageClass::kUniformConstant,
+ &type);
EXPECT_TRUE(b.GenerateGlobalVariable(&var_a)) << b.error();
diff --git a/src/writer/spirv/builder_ident_expression_test.cc b/src/writer/spirv/builder_ident_expression_test.cc
index 661082b..2a48e53 100644
--- a/src/writer/spirv/builder_ident_expression_test.cc
+++ b/src/writer/spirv/builder_ident_expression_test.cc
@@ -53,7 +53,7 @@
EXPECT_TRUE(td.DetermineResultType(init)) << td.error();
- ast::Variable v("var", ast::StorageClass::kOutput, &f32);
+ ast::Variable v(Source{}, "var", ast::StorageClass::kOutput, &f32);
v.set_constructor(init);
v.set_is_const(true);
@@ -77,7 +77,7 @@
TEST_F(BuilderTest, IdentifierExpression_GlobalVar) {
ast::type::F32 f32;
- ast::Variable v("var", ast::StorageClass::kOutput, &f32);
+ ast::Variable v(Source{}, "var", ast::StorageClass::kOutput, &f32);
td.RegisterVariableForTesting(&v);
@@ -112,7 +112,7 @@
EXPECT_TRUE(td.DetermineResultType(init)) << td.error();
- ast::Variable v("var", ast::StorageClass::kOutput, &f32);
+ ast::Variable v(Source{}, "var", ast::StorageClass::kOutput, &f32);
v.set_constructor(init);
v.set_is_const(true);
td.RegisterVariableForTesting(&v);
@@ -134,7 +134,7 @@
TEST_F(BuilderTest, IdentifierExpression_FunctionVar) {
ast::type::F32 f32;
- ast::Variable v("var", ast::StorageClass::kNone, &f32);
+ ast::Variable v(Source{}, "var", ast::StorageClass::kNone, &f32);
td.RegisterVariableForTesting(&v);
@@ -160,7 +160,7 @@
TEST_F(BuilderTest, IdentifierExpression_Load) {
ast::type::I32 i32;
- ast::Variable var("var", ast::StorageClass::kPrivate, &i32);
+ ast::Variable var(Source{}, "var", ast::StorageClass::kPrivate, &i32);
td.RegisterVariableForTesting(&var);
@@ -190,7 +190,7 @@
TEST_F(BuilderTest, IdentifierExpression_NoLoadConst) {
ast::type::I32 i32;
- ast::Variable var("var", ast::StorageClass::kNone, &i32);
+ ast::Variable var(Source{}, "var", ast::StorageClass::kNone, &i32);
var.set_constructor(create<ast::ScalarConstructorExpression>(
create<ast::SintLiteral>(&i32, 2)));
var.set_is_const(true);
diff --git a/src/writer/spirv/builder_if_test.cc b/src/writer/spirv/builder_if_test.cc
index 768604a..4ad6d01 100644
--- a/src/writer/spirv/builder_if_test.cc
+++ b/src/writer/spirv/builder_if_test.cc
@@ -75,7 +75,8 @@
// if (true) {
// v = 2;
// }
- auto* var = create<ast::Variable>("v", ast::StorageClass::kPrivate, &i32);
+ auto* var =
+ create<ast::Variable>(Source{}, "v", ast::StorageClass::kPrivate, &i32);
auto* body = create<ast::BlockStatement>();
body->append(
@@ -122,7 +123,8 @@
// } else {
// v = 3;
// }
- auto* var = create<ast::Variable>("v", ast::StorageClass::kPrivate, &i32);
+ auto* var =
+ create<ast::Variable>(Source{}, "v", ast::StorageClass::kPrivate, &i32);
auto* body = create<ast::BlockStatement>();
body->append(
@@ -181,7 +183,8 @@
// } elseif (true) {
// v = 3;
// }
- auto* var = create<ast::Variable>("v", ast::StorageClass::kPrivate, &i32);
+ auto* var =
+ create<ast::Variable>(Source{}, "v", ast::StorageClass::kPrivate, &i32);
auto* body = create<ast::BlockStatement>();
body->append(
@@ -252,7 +255,8 @@
// } else {
// v = 5;
// }
- auto* var = create<ast::Variable>("v", ast::StorageClass::kPrivate, &i32);
+ auto* var =
+ create<ast::Variable>(Source{}, "v", ast::StorageClass::kPrivate, &i32);
auto* body = create<ast::BlockStatement>();
body->append(
@@ -605,8 +609,8 @@
// }
ast::type::Bool bool_type;
- auto* var =
- create<ast::Variable>("a", ast::StorageClass::kFunction, &bool_type);
+ auto* var = create<ast::Variable>(Source{}, "a", ast::StorageClass::kFunction,
+ &bool_type);
td.RegisterVariableForTesting(var);
ast::IfStatement expr(Source{}, create<ast::IdentifierExpression>("a"),
diff --git a/src/writer/spirv/builder_loop_test.cc b/src/writer/spirv/builder_loop_test.cc
index 66ced50..dbaa6bc 100644
--- a/src/writer/spirv/builder_loop_test.cc
+++ b/src/writer/spirv/builder_loop_test.cc
@@ -65,7 +65,8 @@
// loop {
// v = 2;
// }
- auto* var = create<ast::Variable>("v", ast::StorageClass::kPrivate, &i32);
+ auto* var =
+ create<ast::Variable>(Source{}, "v", ast::StorageClass::kPrivate, &i32);
auto* body = create<ast::BlockStatement>();
body->append(
@@ -111,7 +112,8 @@
// }
// }
- auto* var = create<ast::Variable>("v", ast::StorageClass::kPrivate, &i32);
+ auto* var =
+ create<ast::Variable>(Source{}, "v", ast::StorageClass::kPrivate, &i32);
auto* body = create<ast::BlockStatement>();
body->append(
diff --git a/src/writer/spirv/builder_return_test.cc b/src/writer/spirv/builder_return_test.cc
index b7912bb..db18f85 100644
--- a/src/writer/spirv/builder_return_test.cc
+++ b/src/writer/spirv/builder_return_test.cc
@@ -81,7 +81,7 @@
TEST_F(BuilderTest, Return_WithValue_GeneratesLoad) {
ast::type::F32 f32;
- ast::Variable var("param", ast::StorageClass::kFunction, &f32);
+ ast::Variable var(Source{}, "param", ast::StorageClass::kFunction, &f32);
ast::ReturnStatement ret(create<ast::IdentifierExpression>("param"));
diff --git a/src/writer/spirv/builder_switch_test.cc b/src/writer/spirv/builder_switch_test.cc
index e95cd6c..5497511 100644
--- a/src/writer/spirv/builder_switch_test.cc
+++ b/src/writer/spirv/builder_switch_test.cc
@@ -76,8 +76,10 @@
// v = 2;
// }
- auto* v = create<ast::Variable>("v", ast::StorageClass::kPrivate, &i32);
- auto* a = create<ast::Variable>("a", ast::StorageClass::kPrivate, &i32);
+ auto* v =
+ create<ast::Variable>(Source{}, "v", ast::StorageClass::kPrivate, &i32);
+ auto* a =
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kPrivate, &i32);
auto* case_1_body = create<ast::BlockStatement>();
case_1_body->append(
@@ -155,8 +157,10 @@
// v = 1;
// }
- auto* v = create<ast::Variable>("v", ast::StorageClass::kPrivate, &i32);
- auto* a = create<ast::Variable>("a", ast::StorageClass::kPrivate, &i32);
+ auto* v =
+ create<ast::Variable>(Source{}, "v", ast::StorageClass::kPrivate, &i32);
+ auto* a =
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kPrivate, &i32);
auto* default_body = create<ast::BlockStatement>();
default_body->append(
@@ -219,8 +223,10 @@
// v = 3;
// }
- auto* v = create<ast::Variable>("v", ast::StorageClass::kPrivate, &i32);
- auto* a = create<ast::Variable>("a", ast::StorageClass::kPrivate, &i32);
+ auto* v =
+ create<ast::Variable>(Source{}, "v", ast::StorageClass::kPrivate, &i32);
+ auto* a =
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kPrivate, &i32);
auto* case_1_body = create<ast::BlockStatement>();
case_1_body->append(
@@ -313,8 +319,10 @@
// v = 3;
// }
- auto* v = create<ast::Variable>("v", ast::StorageClass::kPrivate, &i32);
- auto* a = create<ast::Variable>("a", ast::StorageClass::kPrivate, &i32);
+ auto* v =
+ create<ast::Variable>(Source{}, "v", ast::StorageClass::kPrivate, &i32);
+ auto* a =
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kPrivate, &i32);
auto* case_1_body = create<ast::BlockStatement>();
case_1_body->append(
@@ -403,8 +411,10 @@
// fallthrough;
// }
- auto* v = create<ast::Variable>("v", ast::StorageClass::kPrivate, &i32);
- auto* a = create<ast::Variable>("a", ast::StorageClass::kPrivate, &i32);
+ auto* v =
+ create<ast::Variable>(Source{}, "v", ast::StorageClass::kPrivate, &i32);
+ auto* a =
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kPrivate, &i32);
auto* case_1_body = create<ast::BlockStatement>();
case_1_body->append(
@@ -449,8 +459,10 @@
// v = 1;
// }
- auto* v = create<ast::Variable>("v", ast::StorageClass::kPrivate, &i32);
- auto* a = create<ast::Variable>("a", ast::StorageClass::kPrivate, &i32);
+ auto* v =
+ create<ast::Variable>(Source{}, "v", ast::StorageClass::kPrivate, &i32);
+ auto* a =
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kPrivate, &i32);
auto* if_body = create<ast::BlockStatement>();
if_body->append(create<ast::BreakStatement>());
diff --git a/src/writer/spirv/builder_unary_op_expression_test.cc b/src/writer/spirv/builder_unary_op_expression_test.cc
index 7fabad8..ef8da21 100644
--- a/src/writer/spirv/builder_unary_op_expression_test.cc
+++ b/src/writer/spirv/builder_unary_op_expression_test.cc
@@ -98,7 +98,7 @@
ast::type::F32 f32;
ast::type::Vector vec(&f32, 3);
- ast::Variable var("param", ast::StorageClass::kFunction, &vec);
+ ast::Variable var(Source{}, "param", ast::StorageClass::kFunction, &vec);
ast::UnaryOpExpression expr(ast::UnaryOp::kNegation,
create<ast::IdentifierExpression>("param"));
diff --git a/src/writer/wgsl/generator_impl_function_test.cc b/src/writer/wgsl/generator_impl_function_test.cc
index bb443c9..f93836d 100644
--- a/src/writer/wgsl/generator_impl_function_test.cc
+++ b/src/writer/wgsl/generator_impl_function_test.cc
@@ -68,8 +68,10 @@
ast::type::F32 f32;
ast::type::I32 i32;
ast::VariableList params;
- params.push_back(create<ast::Variable>("a", ast::StorageClass::kNone, &f32));
- params.push_back(create<ast::Variable>("b", ast::StorageClass::kNone, &i32));
+ params.push_back(
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kNone, &f32));
+ params.push_back(
+ create<ast::Variable>(Source{}, "b", ast::StorageClass::kNone, &i32));
ast::type::Void void_type;
ast::Function func(Source{}, "my_func", params, &void_type, body,
@@ -189,8 +191,8 @@
ast::type::Struct s("Data", str);
ast::type::AccessControl ac(ast::AccessControl::kReadWrite, &s);
- auto* data_var = create<ast::DecoratedVariable>(
- create<ast::Variable>("data", ast::StorageClass::kStorageBuffer, &ac));
+ auto* data_var = create<ast::DecoratedVariable>(create<ast::Variable>(
+ Source{}, "data", ast::StorageClass::kStorageBuffer, &ac));
ast::VariableDecorationList decos;
decos.push_back(create<ast::BindingDecoration>(0, Source{}));
@@ -204,7 +206,8 @@
{
ast::VariableList params;
- auto* var = create<ast::Variable>("v", ast::StorageClass::kFunction, &f32);
+ auto* var = create<ast::Variable>(Source{}, "v",
+ ast::StorageClass::kFunction, &f32);
var->set_constructor(create<ast::MemberAccessorExpression>(
create<ast::IdentifierExpression>("data"),
create<ast::IdentifierExpression>("d")));
@@ -225,7 +228,8 @@
{
ast::VariableList params;
- auto* var = create<ast::Variable>("v", ast::StorageClass::kFunction, &f32);
+ auto* var = create<ast::Variable>(Source{}, "v",
+ ast::StorageClass::kFunction, &f32);
var->set_constructor(create<ast::MemberAccessorExpression>(
create<ast::IdentifierExpression>("data"),
create<ast::IdentifierExpression>("d")));
diff --git a/src/writer/wgsl/generator_impl_variable_decl_statement_test.cc b/src/writer/wgsl/generator_impl_variable_decl_statement_test.cc
index 375e238..cd25fb6 100644
--- a/src/writer/wgsl/generator_impl_variable_decl_statement_test.cc
+++ b/src/writer/wgsl/generator_impl_variable_decl_statement_test.cc
@@ -32,7 +32,8 @@
TEST_F(WgslGeneratorImplTest, Emit_VariableDeclStatement) {
ast::type::F32 f32;
- auto* var = create<ast::Variable>("a", ast::StorageClass::kNone, &f32);
+ auto* var =
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kNone, &f32);
ast::VariableDeclStatement stmt(var);
@@ -47,7 +48,8 @@
// storage class. Rely on defaulting.
// https://github.com/gpuweb/gpuweb/issues/654
ast::type::F32 f32;
- auto* var = create<ast::Variable>("a", ast::StorageClass::kFunction, &f32);
+ auto* var =
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kFunction, &f32);
ast::VariableDeclStatement stmt(var);
@@ -59,7 +61,8 @@
TEST_F(WgslGeneratorImplTest, Emit_VariableDeclStatement_Private) {
ast::type::F32 f32;
- auto* var = create<ast::Variable>("a", ast::StorageClass::kPrivate, &f32);
+ auto* var =
+ create<ast::Variable>(Source{}, "a", ast::StorageClass::kPrivate, &f32);
ast::VariableDeclStatement stmt(var);
diff --git a/src/writer/wgsl/generator_impl_variable_test.cc b/src/writer/wgsl/generator_impl_variable_test.cc
index d342ba4..05b3dde 100644
--- a/src/writer/wgsl/generator_impl_variable_test.cc
+++ b/src/writer/wgsl/generator_impl_variable_test.cc
@@ -35,7 +35,7 @@
TEST_F(WgslGeneratorImplTest, EmitVariable) {
ast::type::F32 f32;
- ast::Variable v("a", ast::StorageClass::kNone, &f32);
+ ast::Variable v(Source{}, "a", ast::StorageClass::kNone, &f32);
ASSERT_TRUE(gen.EmitVariable(&v)) << gen.error();
EXPECT_EQ(gen.result(), R"(var a : f32;
@@ -44,7 +44,7 @@
TEST_F(WgslGeneratorImplTest, EmitVariable_StorageClass) {
ast::type::F32 f32;
- ast::Variable v("a", ast::StorageClass::kInput, &f32);
+ ast::Variable v(Source{}, "a", ast::StorageClass::kInput, &f32);
ASSERT_TRUE(gen.EmitVariable(&v)) << gen.error();
EXPECT_EQ(gen.result(), R"(var<in> a : f32;
@@ -94,7 +94,7 @@
auto* ident = create<ast::IdentifierExpression>("initializer");
ast::type::F32 f32;
- ast::Variable v("a", ast::StorageClass::kNone, &f32);
+ ast::Variable v(Source{}, "a", ast::StorageClass::kNone, &f32);
v.set_constructor(ident);
ASSERT_TRUE(gen.EmitVariable(&v)) << gen.error();
@@ -106,7 +106,7 @@
auto* ident = create<ast::IdentifierExpression>("initializer");
ast::type::F32 f32;
- ast::Variable v("a", ast::StorageClass::kNone, &f32);
+ ast::Variable v(Source{}, "a", ast::StorageClass::kNone, &f32);
v.set_constructor(ident);
v.set_is_const(true);