ast: Remove statement constructors that don't take a Source
Parsers need fixing up.
Bug: tint:396
Bug: tint:390
Change-Id: I137f1017ca56125cf3d52ecbef2ff46d0574338b
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/35161
Commit-Queue: Ben Clayton <bclayton@google.com>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
diff --git a/src/ast/assignment_statement.cc b/src/ast/assignment_statement.cc
index 67d0b30..4561263 100644
--- a/src/ast/assignment_statement.cc
+++ b/src/ast/assignment_statement.cc
@@ -22,9 +22,6 @@
namespace tint {
namespace ast {
-AssignmentStatement::AssignmentStatement(Expression* lhs, Expression* rhs)
- : Base(), lhs_(lhs), rhs_(rhs) {}
-
AssignmentStatement::AssignmentStatement(const Source& source,
Expression* lhs,
Expression* rhs)
diff --git a/src/ast/assignment_statement.h b/src/ast/assignment_statement.h
index 558ae42..a91b000 100644
--- a/src/ast/assignment_statement.h
+++ b/src/ast/assignment_statement.h
@@ -29,10 +29,6 @@
class AssignmentStatement : public Castable<AssignmentStatement, Statement> {
public:
/// Constructor
- /// @param lhs the left side of the expression
- /// @param rhs the right side of the expression
- AssignmentStatement(Expression* lhs, Expression* rhs);
- /// Constructor
/// @param source the assignment statement source
/// @param lhs the left side of the expression
/// @param rhs the right side of the expression
diff --git a/src/ast/assignment_statement_test.cc b/src/ast/assignment_statement_test.cc
index 5cb5954..951e32c 100644
--- a/src/ast/assignment_statement_test.cc
+++ b/src/ast/assignment_statement_test.cc
@@ -29,7 +29,7 @@
auto* rhs =
create<IdentifierExpression>(Source{}, mod.RegisterSymbol("rhs"), "rhs");
- AssignmentStatement stmt(lhs, rhs);
+ AssignmentStatement stmt(Source{}, lhs, rhs);
EXPECT_EQ(stmt.lhs(), lhs);
EXPECT_EQ(stmt.rhs(), rhs);
}
@@ -52,7 +52,7 @@
auto* rhs =
create<IdentifierExpression>(Source{}, mod.RegisterSymbol("rhs"), "rhs");
- AssignmentStatement stmt(lhs, rhs);
+ AssignmentStatement stmt(Source{}, lhs, rhs);
EXPECT_TRUE(stmt.Is<AssignmentStatement>());
}
@@ -62,7 +62,7 @@
auto* rhs =
create<IdentifierExpression>(Source{}, mod.RegisterSymbol("rhs"), "rhs");
- AssignmentStatement stmt(lhs, rhs);
+ AssignmentStatement stmt(Source{}, lhs, rhs);
EXPECT_TRUE(stmt.IsValid());
}
@@ -70,7 +70,7 @@
auto* rhs =
create<IdentifierExpression>(Source{}, mod.RegisterSymbol("rhs"), "rhs");
- AssignmentStatement stmt(nullptr, rhs);
+ AssignmentStatement stmt(Source{}, nullptr, rhs);
EXPECT_FALSE(stmt.IsValid());
}
@@ -78,7 +78,7 @@
auto* lhs =
create<IdentifierExpression>(Source{}, mod.RegisterSymbol("lhs"), "lhs");
- AssignmentStatement stmt(lhs, nullptr);
+ AssignmentStatement stmt(Source{}, lhs, nullptr);
EXPECT_FALSE(stmt.IsValid());
}
@@ -87,7 +87,7 @@
create<IdentifierExpression>(Source{}, mod.RegisterSymbol(""), "");
auto* rhs =
create<IdentifierExpression>(Source{}, mod.RegisterSymbol("rhs"), "rhs");
- AssignmentStatement stmt(lhs, rhs);
+ AssignmentStatement stmt(Source{}, lhs, rhs);
EXPECT_FALSE(stmt.IsValid());
}
@@ -96,7 +96,7 @@
create<IdentifierExpression>(Source{}, mod.RegisterSymbol("lhs"), "lhs");
auto* rhs =
create<IdentifierExpression>(Source{}, mod.RegisterSymbol(""), "");
- AssignmentStatement stmt(lhs, rhs);
+ AssignmentStatement stmt(Source{}, lhs, rhs);
EXPECT_FALSE(stmt.IsValid());
}
@@ -106,7 +106,7 @@
auto* rhs =
create<IdentifierExpression>(Source{}, mod.RegisterSymbol("rhs"), "rhs");
- AssignmentStatement stmt(lhs, rhs);
+ AssignmentStatement stmt(Source{}, lhs, rhs);
std::ostringstream out;
stmt.to_str(out, 2);
diff --git a/src/ast/block_statement.cc b/src/ast/block_statement.cc
index a851e37..b0e5f4b 100644
--- a/src/ast/block_statement.cc
+++ b/src/ast/block_statement.cc
@@ -22,8 +22,6 @@
namespace tint {
namespace ast {
-BlockStatement::BlockStatement() : Base() {}
-
BlockStatement::BlockStatement(const Source& source) : Base(source) {}
BlockStatement::BlockStatement(BlockStatement&&) = default;
diff --git a/src/ast/block_statement.h b/src/ast/block_statement.h
index 95290f9..faa7aaa 100644
--- a/src/ast/block_statement.h
+++ b/src/ast/block_statement.h
@@ -28,8 +28,6 @@
class BlockStatement : public Castable<BlockStatement, Statement> {
public:
/// Constructor
- BlockStatement();
- /// Constructor
/// @param source the block statement source
explicit BlockStatement(const Source& source);
/// Move constructor
diff --git a/src/ast/block_statement_test.cc b/src/ast/block_statement_test.cc
index fc2cb92..086931c 100644
--- a/src/ast/block_statement_test.cc
+++ b/src/ast/block_statement_test.cc
@@ -28,10 +28,10 @@
using BlockStatementTest = TestHelper;
TEST_F(BlockStatementTest, Creation) {
- auto* d = create<DiscardStatement>();
+ auto* d = create<DiscardStatement>(Source{});
auto* ptr = d;
- BlockStatement b;
+ BlockStatement b(Source{});
b.append(d);
ASSERT_EQ(b.size(), 1u);
@@ -39,11 +39,11 @@
}
TEST_F(BlockStatementTest, Creation_WithInsert) {
- auto* s1 = create<DiscardStatement>();
- auto* s2 = create<DiscardStatement>();
- auto* s3 = create<DiscardStatement>();
+ auto* s1 = create<DiscardStatement>(Source{});
+ auto* s2 = create<DiscardStatement>(Source{});
+ auto* s3 = create<DiscardStatement>(Source{});
- BlockStatement b;
+ BlockStatement b(Source{});
b.insert(0, s1);
b.insert(0, s2);
b.insert(1, s3);
@@ -64,38 +64,39 @@
}
TEST_F(BlockStatementTest, IsBlock) {
- BlockStatement b;
+ BlockStatement b(Source{});
EXPECT_TRUE(b.Is<BlockStatement>());
}
TEST_F(BlockStatementTest, IsValid) {
- BlockStatement b;
- b.append(create<DiscardStatement>());
+ BlockStatement b(Source{});
+ b.append(create<DiscardStatement>(Source{}));
EXPECT_TRUE(b.IsValid());
}
TEST_F(BlockStatementTest, IsValid_Empty) {
- BlockStatement b;
+ BlockStatement b(Source{});
EXPECT_TRUE(b.IsValid());
}
TEST_F(BlockStatementTest, IsValid_NullBodyStatement) {
- BlockStatement b;
- b.append(create<DiscardStatement>());
+ BlockStatement b(Source{});
+ b.append(create<DiscardStatement>(Source{}));
b.append(nullptr);
EXPECT_FALSE(b.IsValid());
}
TEST_F(BlockStatementTest, IsValid_InvalidBodyStatement) {
- BlockStatement b;
- b.append(create<IfStatement>(Source{}, nullptr, create<BlockStatement>(),
+ BlockStatement b(Source{});
+ b.append(create<IfStatement>(Source{}, nullptr,
+ create<BlockStatement>(Source{}),
ElseStatementList{}));
EXPECT_FALSE(b.IsValid());
}
TEST_F(BlockStatementTest, ToStr) {
- BlockStatement b;
- b.append(create<DiscardStatement>());
+ BlockStatement b(Source{});
+ b.append(create<DiscardStatement>(Source{}));
std::ostringstream out;
b.to_str(out, 2);
diff --git a/src/ast/break_statement.cc b/src/ast/break_statement.cc
index 1affc27..eba613e 100644
--- a/src/ast/break_statement.cc
+++ b/src/ast/break_statement.cc
@@ -22,8 +22,6 @@
namespace tint {
namespace ast {
-BreakStatement::BreakStatement() : Base() {}
-
BreakStatement::BreakStatement(const Source& source) : Base(source) {}
BreakStatement::BreakStatement(BreakStatement&&) = default;
diff --git a/src/ast/break_statement.h b/src/ast/break_statement.h
index 83d902e..7c9bd91 100644
--- a/src/ast/break_statement.h
+++ b/src/ast/break_statement.h
@@ -24,8 +24,6 @@
class BreakStatement : public Castable<BreakStatement, Statement> {
public:
/// Constructor
- BreakStatement();
- /// Constructor
/// @param source the break statement source
explicit BreakStatement(const Source& source);
/// Move constructor
diff --git a/src/ast/break_statement_test.cc b/src/ast/break_statement_test.cc
index 8021348..27a7a8f 100644
--- a/src/ast/break_statement_test.cc
+++ b/src/ast/break_statement_test.cc
@@ -30,17 +30,17 @@
}
TEST_F(BreakStatementTest, IsBreak) {
- BreakStatement stmt;
+ BreakStatement stmt(Source{});
EXPECT_TRUE(stmt.Is<BreakStatement>());
}
TEST_F(BreakStatementTest, IsValid) {
- BreakStatement stmt;
+ BreakStatement stmt(Source{});
EXPECT_TRUE(stmt.IsValid());
}
TEST_F(BreakStatementTest, ToStr) {
- BreakStatement stmt;
+ BreakStatement stmt(Source{});
std::ostringstream out;
stmt.to_str(out, 2);
EXPECT_EQ(out.str(), R"( Break{}
diff --git a/src/ast/call_statement.cc b/src/ast/call_statement.cc
index d74df3d..43670f7 100644
--- a/src/ast/call_statement.cc
+++ b/src/ast/call_statement.cc
@@ -23,14 +23,16 @@
namespace tint {
namespace ast {
-CallStatement::CallStatement(CallExpression* call) : Base(), call_(call) {}
+CallStatement::CallStatement(const Source& source, CallExpression* call)
+ : Base(source), call_(call) {}
CallStatement::CallStatement(CallStatement&&) = default;
CallStatement::~CallStatement() = default;
CallStatement* CallStatement::Clone(CloneContext* ctx) const {
- return ctx->mod->create<CallStatement>(ctx->Clone(call_));
+ return ctx->mod->create<CallStatement>(ctx->Clone(source()),
+ ctx->Clone(call_));
}
bool CallStatement::IsValid() const {
diff --git a/src/ast/call_statement.h b/src/ast/call_statement.h
index 2af7582..59f7bed 100644
--- a/src/ast/call_statement.h
+++ b/src/ast/call_statement.h
@@ -28,8 +28,9 @@
class CallStatement : public Castable<CallStatement, Statement> {
public:
/// Constructor
+ /// @param source the input source for the statement
/// @param call the function
- explicit CallStatement(CallExpression* call);
+ CallStatement(const Source& source, CallExpression* call);
/// Move constructor
CallStatement(CallStatement&&);
~CallStatement() override;
diff --git a/src/ast/call_statement_test.cc b/src/ast/call_statement_test.cc
index dae79dc..b6fcee2 100644
--- a/src/ast/call_statement_test.cc
+++ b/src/ast/call_statement_test.cc
@@ -31,17 +31,18 @@
Source{}, mod.RegisterSymbol("func"), "func"),
ExpressionList{});
- CallStatement c(expr);
+ CallStatement c(Source{}, expr);
EXPECT_EQ(c.expr(), expr);
}
TEST_F(CallStatementTest, IsCall) {
- CallStatement c(nullptr);
+ CallStatement c(Source{}, nullptr);
EXPECT_TRUE(c.Is<CallStatement>());
}
TEST_F(CallStatementTest, IsValid) {
CallStatement c(
+ Source{},
create<CallExpression>(Source{},
create<IdentifierExpression>(
Source{}, mod.RegisterSymbol("func"), "func"),
@@ -50,18 +51,19 @@
}
TEST_F(CallStatementTest, IsValid_MissingExpr) {
- CallStatement c(nullptr);
+ CallStatement c(Source{}, nullptr);
EXPECT_FALSE(c.IsValid());
}
TEST_F(CallStatementTest, IsValid_InvalidExpr) {
CallExpression stmt(Source{}, nullptr, {});
- CallStatement c(&stmt);
+ CallStatement c(Source{}, &stmt);
EXPECT_FALSE(c.IsValid());
}
TEST_F(CallStatementTest, ToStr) {
CallStatement c(
+ Source{},
create<CallExpression>(Source{},
create<IdentifierExpression>(
Source{}, mod.RegisterSymbol("func"), "func"),
diff --git a/src/ast/case_statement.cc b/src/ast/case_statement.cc
index 03c803e..181a263 100644
--- a/src/ast/case_statement.cc
+++ b/src/ast/case_statement.cc
@@ -22,11 +22,6 @@
namespace tint {
namespace ast {
-CaseStatement::CaseStatement(BlockStatement* body) : Base(), body_(body) {}
-
-CaseStatement::CaseStatement(CaseSelectorList selectors, BlockStatement* body)
- : Base(), selectors_(selectors), body_(body) {}
-
CaseStatement::CaseStatement(const Source& source,
CaseSelectorList selectors,
BlockStatement* body)
diff --git a/src/ast/case_statement.h b/src/ast/case_statement.h
index 35cb495..c9c424e 100644
--- a/src/ast/case_statement.h
+++ b/src/ast/case_statement.h
@@ -34,14 +34,6 @@
class CaseStatement : public Castable<CaseStatement, Statement> {
public:
/// Constructor
- /// Creates a default case statement
- /// @param body the case body
- explicit CaseStatement(BlockStatement* body);
- /// Constructor
- /// @param selectors the case selectors
- /// @param body the case body
- CaseStatement(CaseSelectorList selectors, BlockStatement* body);
- /// Constructor
/// @param source the source information
/// @param selectors the case selectors
/// @param body the case body
diff --git a/src/ast/case_statement_test.cc b/src/ast/case_statement_test.cc
index 9ecf1bb..0473418 100644
--- a/src/ast/case_statement_test.cc
+++ b/src/ast/case_statement_test.cc
@@ -35,11 +35,11 @@
auto* selector = create<SintLiteral>(Source{}, &i32, 2);
b.push_back(selector);
- auto* body = create<BlockStatement>();
- auto* discard = create<DiscardStatement>();
+ auto* body = create<BlockStatement>(Source{});
+ auto* discard = create<DiscardStatement>(Source{});
body->append(discard);
- CaseStatement c(b, body);
+ CaseStatement c(Source{}, b, body);
ASSERT_EQ(c.selectors().size(), 1u);
EXPECT_EQ(c.selectors()[0], selector);
ASSERT_EQ(c.body()->size(), 1u);
@@ -53,11 +53,11 @@
auto* selector = create<SintLiteral>(Source{}, &u32, 2);
b.push_back(selector);
- auto* body = create<BlockStatement>();
- auto* discard = create<DiscardStatement>();
+ auto* body = create<BlockStatement>(Source{});
+ auto* discard = create<DiscardStatement>(Source{});
body->append(discard);
- CaseStatement c(b, body);
+ CaseStatement c(Source{}, b, body);
ASSERT_EQ(c.selectors().size(), 1u);
EXPECT_EQ(c.selectors()[0], selector);
ASSERT_EQ(c.body()->size(), 1u);
@@ -69,8 +69,8 @@
CaseSelectorList b;
b.push_back(create<SintLiteral>(Source{}, &i32, 2));
- auto* body = create<BlockStatement>();
- body->append(create<DiscardStatement>());
+ auto* body = create<BlockStatement>(Source{});
+ body->append(create<DiscardStatement>(Source{}));
CaseStatement c(Source{Source::Location{20, 2}}, b, body);
auto src = c.source();
@@ -79,10 +79,10 @@
}
TEST_F(CaseStatementTest, IsDefault_WithoutSelectors) {
- auto* body = create<BlockStatement>();
- body->append(create<DiscardStatement>());
+ auto* body = create<BlockStatement>(Source{});
+ body->append(create<DiscardStatement>(Source{}));
- CaseStatement c(body);
+ CaseStatement c(Source{}, CaseSelectorList{}, body);
EXPECT_TRUE(c.IsDefault());
}
@@ -91,17 +91,19 @@
CaseSelectorList b;
b.push_back(create<SintLiteral>(Source{}, &i32, 2));
- CaseStatement c(b, create<BlockStatement>());
+ CaseStatement c(Source{}, b, create<BlockStatement>(Source{}));
EXPECT_FALSE(c.IsDefault());
}
TEST_F(CaseStatementTest, IsCase) {
- CaseStatement c(create<BlockStatement>());
+ CaseStatement c(Source{}, CaseSelectorList{},
+ create<BlockStatement>(Source{}));
EXPECT_TRUE(c.Is<CaseStatement>());
}
TEST_F(CaseStatementTest, IsValid) {
- CaseStatement c(create<BlockStatement>());
+ CaseStatement c(Source{}, CaseSelectorList{},
+ create<BlockStatement>(Source{}));
EXPECT_TRUE(c.IsValid());
}
@@ -110,11 +112,11 @@
CaseSelectorList b;
b.push_back(create<SintLiteral>(Source{}, &i32, 2));
- auto* body = create<BlockStatement>();
- body->append(create<DiscardStatement>());
+ auto* body = create<BlockStatement>(Source{});
+ body->append(create<DiscardStatement>(Source{}));
body->append(nullptr);
- CaseStatement c(b, body);
+ CaseStatement c(Source{}, b, body);
EXPECT_FALSE(c.IsValid());
}
@@ -123,11 +125,12 @@
CaseSelectorList b;
b.push_back(create<SintLiteral>(Source{}, &i32, 2));
- auto* body = create<BlockStatement>();
- body->append(create<IfStatement>(Source{}, nullptr, create<BlockStatement>(),
+ auto* body = create<BlockStatement>(Source{});
+ body->append(create<IfStatement>(Source{}, nullptr,
+ create<BlockStatement>(Source{}),
ElseStatementList{}));
- CaseStatement c({b}, body);
+ CaseStatement c(Source{}, {b}, body);
EXPECT_FALSE(c.IsValid());
}
@@ -136,9 +139,9 @@
CaseSelectorList b;
b.push_back(create<SintLiteral>(Source{}, &i32, -2));
- auto* body = create<BlockStatement>();
- body->append(create<DiscardStatement>());
- CaseStatement c({b}, body);
+ auto* body = create<BlockStatement>(Source{});
+ body->append(create<DiscardStatement>(Source{}));
+ CaseStatement c(Source{}, {b}, body);
std::ostringstream out;
c.to_str(out, 2);
@@ -153,9 +156,9 @@
CaseSelectorList b;
b.push_back(create<UintLiteral>(Source{}, &u32, 2));
- auto* body = create<BlockStatement>();
- body->append(create<DiscardStatement>());
- CaseStatement c({b}, body);
+ auto* body = create<BlockStatement>(Source{});
+ body->append(create<DiscardStatement>(Source{}));
+ CaseStatement c(Source{}, {b}, body);
std::ostringstream out;
c.to_str(out, 2);
@@ -172,9 +175,9 @@
b.push_back(create<SintLiteral>(Source{}, &i32, 1));
b.push_back(create<SintLiteral>(Source{}, &i32, 2));
- auto* body = create<BlockStatement>();
- body->append(create<DiscardStatement>());
- CaseStatement c(b, body);
+ auto* body = create<BlockStatement>(Source{});
+ body->append(create<DiscardStatement>(Source{}));
+ CaseStatement c(Source{}, b, body);
std::ostringstream out;
c.to_str(out, 2);
@@ -185,9 +188,9 @@
}
TEST_F(CaseStatementTest, ToStr_WithoutSelectors) {
- auto* body = create<BlockStatement>();
- body->append(create<DiscardStatement>());
- CaseStatement c(CaseSelectorList{}, body);
+ auto* body = create<BlockStatement>(Source{});
+ body->append(create<DiscardStatement>(Source{}));
+ CaseStatement c(Source{}, CaseSelectorList{}, body);
std::ostringstream out;
c.to_str(out, 2);
diff --git a/src/ast/continue_statement.cc b/src/ast/continue_statement.cc
index 77377d4..4d1597b 100644
--- a/src/ast/continue_statement.cc
+++ b/src/ast/continue_statement.cc
@@ -22,8 +22,6 @@
namespace tint {
namespace ast {
-ContinueStatement::ContinueStatement() : Base() {}
-
ContinueStatement::ContinueStatement(const Source& source) : Base(source) {}
ContinueStatement::ContinueStatement(ContinueStatement&&) = default;
diff --git a/src/ast/continue_statement.h b/src/ast/continue_statement.h
index e68f9e6..1d4de24 100644
--- a/src/ast/continue_statement.h
+++ b/src/ast/continue_statement.h
@@ -27,8 +27,6 @@
class ContinueStatement : public Castable<ContinueStatement, Statement> {
public:
/// Constructor
- ContinueStatement();
- /// Constructor
/// @param source the continue statement source
explicit ContinueStatement(const Source& source);
/// Move constructor
diff --git a/src/ast/continue_statement_test.cc b/src/ast/continue_statement_test.cc
index 577d50b..5c15b80 100644
--- a/src/ast/continue_statement_test.cc
+++ b/src/ast/continue_statement_test.cc
@@ -30,17 +30,17 @@
}
TEST_F(ContinueStatementTest, IsContinue) {
- ContinueStatement stmt;
+ ContinueStatement stmt(Source{});
EXPECT_TRUE(stmt.Is<ContinueStatement>());
}
TEST_F(ContinueStatementTest, IsValid) {
- ContinueStatement stmt;
+ ContinueStatement stmt(Source{});
EXPECT_TRUE(stmt.IsValid());
}
TEST_F(ContinueStatementTest, ToStr) {
- ContinueStatement stmt;
+ ContinueStatement stmt(Source{});
std::ostringstream out;
stmt.to_str(out, 2);
EXPECT_EQ(out.str(), R"( Continue{}
diff --git a/src/ast/discard_statement.cc b/src/ast/discard_statement.cc
index 66c0e19..cab164c 100644
--- a/src/ast/discard_statement.cc
+++ b/src/ast/discard_statement.cc
@@ -22,8 +22,6 @@
namespace tint {
namespace ast {
-DiscardStatement::DiscardStatement() : Base() {}
-
DiscardStatement::DiscardStatement(const Source& source) : Base(source) {}
DiscardStatement::DiscardStatement(DiscardStatement&&) = default;
diff --git a/src/ast/discard_statement.h b/src/ast/discard_statement.h
index c5afd77..8f17fd7 100644
--- a/src/ast/discard_statement.h
+++ b/src/ast/discard_statement.h
@@ -24,8 +24,6 @@
class DiscardStatement : public Castable<DiscardStatement, Statement> {
public:
/// Constructor
- DiscardStatement();
- /// Constructor
/// @param source the discard statement source
explicit DiscardStatement(const Source& source);
/// Move constructor
diff --git a/src/ast/discard_statement_test.cc b/src/ast/discard_statement_test.cc
index fdf444f..3cd5256 100644
--- a/src/ast/discard_statement_test.cc
+++ b/src/ast/discard_statement_test.cc
@@ -25,7 +25,7 @@
using DiscardStatementTest = TestHelper;
TEST_F(DiscardStatementTest, Creation) {
- DiscardStatement stmt;
+ DiscardStatement stmt(Source{});
EXPECT_EQ(stmt.source().range.begin.line, 0u);
EXPECT_EQ(stmt.source().range.begin.column, 0u);
EXPECT_EQ(stmt.source().range.end.line, 0u);
@@ -42,17 +42,17 @@
}
TEST_F(DiscardStatementTest, IsDiscard) {
- DiscardStatement stmt;
+ DiscardStatement stmt(Source{});
EXPECT_TRUE(stmt.Is<DiscardStatement>());
}
TEST_F(DiscardStatementTest, IsValid) {
- DiscardStatement stmt;
+ DiscardStatement stmt(Source{});
EXPECT_TRUE(stmt.IsValid());
}
TEST_F(DiscardStatementTest, ToStr) {
- DiscardStatement stmt;
+ DiscardStatement stmt(Source{});
std::ostringstream out;
stmt.to_str(out, 2);
EXPECT_EQ(out.str(), R"( Discard{}
diff --git a/src/ast/else_statement.cc b/src/ast/else_statement.cc
index fbcc2ca..6a1a014 100644
--- a/src/ast/else_statement.cc
+++ b/src/ast/else_statement.cc
@@ -22,14 +22,6 @@
namespace tint {
namespace ast {
-ElseStatement::ElseStatement(BlockStatement* body) : Base(), body_(body) {}
-
-ElseStatement::ElseStatement(Expression* condition, BlockStatement* body)
- : Base(), condition_(condition), body_(body) {}
-
-ElseStatement::ElseStatement(const Source& source, BlockStatement* body)
- : Base(source), body_(body) {}
-
ElseStatement::ElseStatement(const Source& source,
Expression* condition,
BlockStatement* body)
diff --git a/src/ast/else_statement.h b/src/ast/else_statement.h
index f39a1f0..6466720 100644
--- a/src/ast/else_statement.h
+++ b/src/ast/else_statement.h
@@ -30,17 +30,6 @@
class ElseStatement : public Castable<ElseStatement, Statement> {
public:
/// Constructor
- /// @param body the else body
- explicit ElseStatement(BlockStatement* body);
- /// Constructor
- /// @param condition the else condition
- /// @param body the else body
- ElseStatement(Expression* condition, BlockStatement* body);
- /// Constructor
- /// @param source the source information
- /// @param body the else body
- ElseStatement(const Source& source, BlockStatement* body);
- /// Constructor
/// @param source the source information
/// @param condition the else condition
/// @param body the else body
diff --git a/src/ast/else_statement_test.cc b/src/ast/else_statement_test.cc
index 633ae86..c2ea1e8 100644
--- a/src/ast/else_statement_test.cc
+++ b/src/ast/else_statement_test.cc
@@ -31,26 +31,27 @@
type::Bool bool_type;
auto* cond = create<ScalarConstructorExpression>(
Source{}, create<BoolLiteral>(Source{}, &bool_type, true));
- auto* body = create<BlockStatement>();
- body->append(create<DiscardStatement>());
+ auto* body = create<BlockStatement>(Source{});
+ body->append(create<DiscardStatement>(Source{}));
auto* discard = body->get(0);
- ElseStatement e(cond, body);
+ ElseStatement e(Source{}, cond, body);
EXPECT_EQ(e.condition(), cond);
ASSERT_EQ(e.body()->size(), 1u);
EXPECT_EQ(e.body()->get(0), discard);
}
TEST_F(ElseStatementTest, Creation_WithSource) {
- ElseStatement e(Source{Source::Location{20, 2}}, create<BlockStatement>());
+ ElseStatement e(Source{Source::Location{20, 2}}, nullptr,
+ create<BlockStatement>(Source{}));
auto src = e.source();
EXPECT_EQ(src.range.begin.line, 20u);
EXPECT_EQ(src.range.begin.column, 2u);
}
TEST_F(ElseStatementTest, IsElse) {
- ElseStatement e(create<BlockStatement>());
+ ElseStatement e(Source{}, nullptr, create<BlockStatement>(Source{}));
EXPECT_TRUE(e.Is<ElseStatement>());
}
@@ -58,49 +59,50 @@
type::Bool bool_type;
auto* cond = create<ScalarConstructorExpression>(
Source{}, create<BoolLiteral>(Source{}, &bool_type, true));
- ElseStatement e(cond, create<BlockStatement>());
+ ElseStatement e(Source{}, cond, create<BlockStatement>(Source{}));
EXPECT_TRUE(e.HasCondition());
}
TEST_F(ElseStatementTest, HasContition_NullCondition) {
- ElseStatement e(create<BlockStatement>());
+ ElseStatement e(Source{}, nullptr, create<BlockStatement>(Source{}));
EXPECT_FALSE(e.HasCondition());
}
TEST_F(ElseStatementTest, IsValid) {
- ElseStatement e(create<BlockStatement>());
+ ElseStatement e(Source{}, nullptr, create<BlockStatement>(Source{}));
EXPECT_TRUE(e.IsValid());
}
TEST_F(ElseStatementTest, IsValid_WithBody) {
- auto* body = create<BlockStatement>();
- body->append(create<DiscardStatement>());
+ auto* body = create<BlockStatement>(Source{});
+ body->append(create<DiscardStatement>(Source{}));
- ElseStatement e(body);
+ ElseStatement e(Source{}, nullptr, body);
EXPECT_TRUE(e.IsValid());
}
TEST_F(ElseStatementTest, IsValid_WithNullBodyStatement) {
- auto* body = create<BlockStatement>();
- body->append(create<DiscardStatement>());
+ auto* body = create<BlockStatement>(Source{});
+ body->append(create<DiscardStatement>(Source{}));
body->append(nullptr);
- ElseStatement e(body);
+ ElseStatement e(Source{}, nullptr, body);
EXPECT_FALSE(e.IsValid());
}
TEST_F(ElseStatementTest, IsValid_InvalidCondition) {
auto* cond = create<ScalarConstructorExpression>(Source{}, nullptr);
- ElseStatement e(cond, create<BlockStatement>());
+ ElseStatement e(Source{}, cond, create<BlockStatement>(Source{}));
EXPECT_FALSE(e.IsValid());
}
TEST_F(ElseStatementTest, IsValid_InvalidBodyStatement) {
- auto* body = create<BlockStatement>();
- body->append(create<IfStatement>(Source{}, nullptr, create<BlockStatement>(),
+ auto* body = create<BlockStatement>(Source{});
+ body->append(create<IfStatement>(Source{}, nullptr,
+ create<BlockStatement>(Source{}),
ElseStatementList{}));
- ElseStatement e(body);
+ ElseStatement e(Source{}, nullptr, body);
EXPECT_FALSE(e.IsValid());
}
@@ -108,10 +110,10 @@
type::Bool bool_type;
auto* cond = create<ScalarConstructorExpression>(
Source{}, create<BoolLiteral>(Source{}, &bool_type, true));
- auto* body = create<BlockStatement>();
- body->append(create<DiscardStatement>());
+ auto* body = create<BlockStatement>(Source{});
+ body->append(create<DiscardStatement>(Source{}));
- ElseStatement e(cond, body);
+ ElseStatement e(Source{}, cond, body);
std::ostringstream out;
e.to_str(out, 2);
EXPECT_EQ(out.str(), R"( Else{
@@ -126,10 +128,10 @@
}
TEST_F(ElseStatementTest, ToStr_NoCondition) {
- auto* body = create<BlockStatement>();
- body->append(create<DiscardStatement>());
+ auto* body = create<BlockStatement>(Source{});
+ body->append(create<DiscardStatement>(Source{}));
- ElseStatement e(body);
+ ElseStatement e(Source{}, nullptr, body);
std::ostringstream out;
e.to_str(out, 2);
EXPECT_EQ(out.str(), R"( Else{
diff --git a/src/ast/fallthrough_statement.cc b/src/ast/fallthrough_statement.cc
index 5aff216..db51488 100644
--- a/src/ast/fallthrough_statement.cc
+++ b/src/ast/fallthrough_statement.cc
@@ -22,8 +22,6 @@
namespace tint {
namespace ast {
-FallthroughStatement::FallthroughStatement() : Base() {}
-
FallthroughStatement::FallthroughStatement(const Source& source)
: Base(source) {}
diff --git a/src/ast/fallthrough_statement.h b/src/ast/fallthrough_statement.h
index 5f652bd..25d5870 100644
--- a/src/ast/fallthrough_statement.h
+++ b/src/ast/fallthrough_statement.h
@@ -24,8 +24,6 @@
class FallthroughStatement : public Castable<FallthroughStatement, Statement> {
public:
/// Constructor
- FallthroughStatement();
- /// Constructor
/// @param source the source information
explicit FallthroughStatement(const Source& source);
/// Move constructor
diff --git a/src/ast/fallthrough_statement_test.cc b/src/ast/fallthrough_statement_test.cc
index a41f5be..1e926dd 100644
--- a/src/ast/fallthrough_statement_test.cc
+++ b/src/ast/fallthrough_statement_test.cc
@@ -23,7 +23,7 @@
using FallthroughStatementTest = TestHelper;
TEST_F(FallthroughStatementTest, Creation) {
- FallthroughStatement stmt;
+ FallthroughStatement stmt(Source{});
EXPECT_EQ(stmt.source().range.begin.line, 0u);
EXPECT_EQ(stmt.source().range.begin.column, 0u);
EXPECT_EQ(stmt.source().range.end.line, 0u);
@@ -38,17 +38,17 @@
}
TEST_F(FallthroughStatementTest, IsFallthrough) {
- FallthroughStatement stmt;
+ FallthroughStatement stmt(Source{});
EXPECT_TRUE(stmt.Is<FallthroughStatement>());
}
TEST_F(FallthroughStatementTest, IsValid) {
- FallthroughStatement stmt;
+ FallthroughStatement stmt(Source{});
EXPECT_TRUE(stmt.IsValid());
}
TEST_F(FallthroughStatementTest, ToStr) {
- FallthroughStatement stmt;
+ FallthroughStatement stmt(Source{});
std::ostringstream out;
stmt.to_str(out, 2);
EXPECT_EQ(out.str(), R"( Fallthrough{}
diff --git a/src/ast/function_test.cc b/src/ast/function_test.cc
index 89bc80a..f3439cc 100644
--- a/src/ast/function_test.cc
+++ b/src/ast/function_test.cc
@@ -44,7 +44,7 @@
auto* var = params[0];
Function f(Source{}, func_sym, "func", params, &void_type,
- create<BlockStatement>(), FunctionDecorationList{});
+ create<BlockStatement>(Source{}), FunctionDecorationList{});
EXPECT_EQ(f.symbol(), func_sym);
EXPECT_EQ(f.name(), "func");
ASSERT_EQ(f.params().size(), 1u);
@@ -64,7 +64,8 @@
ast::VariableDecorationList{}));
Function f(Source{Source::Location{20, 2}}, func_sym, "func", params,
- &void_type, create<BlockStatement>(), FunctionDecorationList{});
+ &void_type, create<BlockStatement>(Source{}),
+ FunctionDecorationList{});
auto src = f.source();
EXPECT_EQ(src.range.begin.line, 20u);
EXPECT_EQ(src.range.begin.column, 2u);
@@ -79,7 +80,7 @@
Variable v(Source{}, "var", StorageClass::kInput, &i32, false, nullptr,
ast::VariableDecorationList{});
Function f(Source{}, func_sym, "func", VariableList{}, &void_type,
- create<BlockStatement>(), FunctionDecorationList{});
+ create<BlockStatement>(Source{}), FunctionDecorationList{});
f.add_referenced_module_variable(&v);
ASSERT_EQ(f.referenced_module_variables().size(), 1u);
@@ -126,7 +127,7 @@
});
Function f(Source{}, func_sym, "func", VariableList{}, &void_type,
- create<BlockStatement>(), FunctionDecorationList{});
+ create<BlockStatement>(Source{}), FunctionDecorationList{});
f.add_referenced_module_variable(loc1);
f.add_referenced_module_variable(builtin1);
@@ -173,7 +174,7 @@
});
Function f(Source{}, func_sym, "func", VariableList{}, &void_type,
- create<BlockStatement>(), FunctionDecorationList{});
+ create<BlockStatement>(Source{}), FunctionDecorationList{});
f.add_referenced_module_variable(loc1);
f.add_referenced_module_variable(builtin1);
@@ -196,7 +197,7 @@
auto main_sym = mod.RegisterSymbol("main");
Function f(Source{}, func_sym, "func", VariableList{}, &void_type,
- create<BlockStatement>(), FunctionDecorationList{});
+ create<BlockStatement>(Source{}), FunctionDecorationList{});
f.add_ancestor_entry_point(main_sym);
ASSERT_EQ(1u, f.ancestor_entry_points().size());
@@ -218,8 +219,8 @@
false, nullptr,
ast::VariableDecorationList{}));
- auto* body = create<BlockStatement>();
- body->append(create<DiscardStatement>());
+ auto* body = create<BlockStatement>(Source{});
+ body->append(create<DiscardStatement>(Source{}));
Function f(Source{}, func_sym, "func", params, &void_type, body,
FunctionDecorationList{});
@@ -237,8 +238,8 @@
false, nullptr,
ast::VariableDecorationList{}));
- auto* body = create<BlockStatement>();
- body->append(create<DiscardStatement>());
+ auto* body = create<BlockStatement>(Source{});
+ body->append(create<DiscardStatement>(Source{}));
Function f(Source{}, func_sym, "", params, &void_type, body,
FunctionDecorationList{});
@@ -256,7 +257,7 @@
ast::VariableDecorationList{}));
Function f(Source{}, func_sym, "func", params, nullptr,
- create<BlockStatement>(), FunctionDecorationList{});
+ create<BlockStatement>(Source{}), FunctionDecorationList{});
EXPECT_FALSE(f.IsValid());
}
@@ -273,7 +274,7 @@
params.push_back(nullptr);
Function f(Source{}, func_sym, "func", params, &void_type,
- create<BlockStatement>(), FunctionDecorationList{});
+ create<BlockStatement>(Source{}), FunctionDecorationList{});
EXPECT_FALSE(f.IsValid());
}
@@ -288,7 +289,7 @@
ast::VariableDecorationList{}));
Function f(Source{}, func_sym, "func", params, &void_type,
- create<BlockStatement>(), FunctionDecorationList{});
+ create<BlockStatement>(Source{}), FunctionDecorationList{});
EXPECT_FALSE(f.IsValid());
}
@@ -303,8 +304,8 @@
false, nullptr,
ast::VariableDecorationList{}));
- auto* body = create<BlockStatement>();
- body->append(create<DiscardStatement>());
+ auto* body = create<BlockStatement>(Source{});
+ body->append(create<DiscardStatement>(Source{}));
body->append(nullptr);
Function f(Source{}, func_sym, "func", params, &void_type, body,
@@ -324,8 +325,8 @@
false, nullptr,
ast::VariableDecorationList{}));
- auto* body = create<BlockStatement>();
- body->append(create<DiscardStatement>());
+ auto* body = create<BlockStatement>(Source{});
+ body->append(create<DiscardStatement>(Source{}));
body->append(nullptr);
Function f(Source{}, func_sym, "func", params, &void_type, body,
@@ -339,8 +340,8 @@
auto func_sym = mod.RegisterSymbol("func");
- auto* body = create<BlockStatement>();
- body->append(create<DiscardStatement>());
+ auto* body = create<BlockStatement>(Source{});
+ body->append(create<DiscardStatement>(Source{}));
Function f(Source{}, func_sym, "func", {}, &void_type, body,
FunctionDecorationList{});
@@ -361,8 +362,8 @@
auto func_sym = mod.RegisterSymbol("func");
- auto* body = create<BlockStatement>();
- body->append(create<DiscardStatement>());
+ auto* body = create<BlockStatement>(Source{});
+ body->append(create<DiscardStatement>(Source{}));
Function f(
Source{}, func_sym, "func", {}, &void_type, body,
@@ -390,8 +391,8 @@
false, nullptr,
ast::VariableDecorationList{}));
- auto* body = create<BlockStatement>();
- body->append(create<DiscardStatement>());
+ auto* body = create<BlockStatement>(Source{});
+ body->append(create<DiscardStatement>(Source{}));
Function f(Source{}, func_sym, "func", params, &void_type, body,
FunctionDecorationList{});
@@ -418,7 +419,7 @@
auto func_sym = mod.RegisterSymbol("func");
Function f(Source{}, func_sym, "func", {}, &void_type,
- create<BlockStatement>(), FunctionDecorationList{});
+ create<BlockStatement>(Source{}), FunctionDecorationList{});
EXPECT_EQ(f.type_name(), "__func__void");
}
@@ -438,7 +439,7 @@
ast::VariableDecorationList{}));
Function f(Source{}, func_sym, "func", params, &void_type,
- create<BlockStatement>(), FunctionDecorationList{});
+ create<BlockStatement>(Source{}), FunctionDecorationList{});
EXPECT_EQ(f.type_name(), "__func__void__i32__f32");
}
@@ -448,8 +449,8 @@
auto func_sym = mod.RegisterSymbol("func");
VariableList params;
- auto* body = create<BlockStatement>();
- auto* stmt = create<DiscardStatement>();
+ auto* body = create<BlockStatement>(Source{});
+ auto* stmt = create<DiscardStatement>(Source{});
body->append(stmt);
Function f(Source{}, func_sym, "func", params, &void_type, body,
FunctionDecorationList{});
@@ -463,7 +464,7 @@
auto func_sym = mod.RegisterSymbol("func");
VariableList params;
- auto* body = create<BlockStatement>();
+ auto* body = create<BlockStatement>(Source{});
Function f(Source{}, func_sym, "func", params, &void_type, body,
FunctionDecorationList{});
@@ -476,7 +477,7 @@
auto func_sym = mod.RegisterSymbol("func");
Function f(Source{}, func_sym, "func", {}, &void_type,
- create<BlockStatement>(), FunctionDecorationList{});
+ create<BlockStatement>(Source{}), FunctionDecorationList{});
uint32_t x = 0;
uint32_t y = 0;
uint32_t z = 0;
@@ -492,7 +493,7 @@
auto func_sym = mod.RegisterSymbol("func");
Function f(Source{}, func_sym, "func", {}, &void_type,
- create<BlockStatement>(),
+ create<BlockStatement>(Source{}),
{create<WorkgroupDecoration>(2u, 4u, 6u, Source{})});
uint32_t x = 0;
diff --git a/src/ast/if_statement_test.cc b/src/ast/if_statement_test.cc
index b7814e4..7c7c777 100644
--- a/src/ast/if_statement_test.cc
+++ b/src/ast/if_statement_test.cc
@@ -27,8 +27,8 @@
TEST_F(IfStatementTest, Creation) {
auto* cond = create<IdentifierExpression>(Source{},
mod.RegisterSymbol("cond"), "cond");
- auto* body = create<BlockStatement>();
- body->append(create<DiscardStatement>());
+ auto* body = create<BlockStatement>(Source{});
+ body->append(create<DiscardStatement>(Source{}));
IfStatement stmt(Source{Source::Location{20, 2}}, cond, body,
ElseStatementList{});
@@ -38,7 +38,7 @@
}
TEST_F(IfStatementTest, IsIf) {
- IfStatement stmt(Source{}, nullptr, create<BlockStatement>(),
+ IfStatement stmt(Source{}, nullptr, create<BlockStatement>(Source{}),
ElseStatementList{});
EXPECT_TRUE(stmt.Is<IfStatement>());
}
@@ -46,8 +46,8 @@
TEST_F(IfStatementTest, IsValid) {
auto* cond = create<IdentifierExpression>(Source{},
mod.RegisterSymbol("cond"), "cond");
- auto* body = create<BlockStatement>();
- body->append(create<DiscardStatement>());
+ auto* body = create<BlockStatement>(Source{});
+ body->append(create<DiscardStatement>(Source{}));
IfStatement stmt(Source{}, cond, body, ElseStatementList{});
EXPECT_TRUE(stmt.IsValid());
@@ -56,23 +56,25 @@
TEST_F(IfStatementTest, IsValid_WithElseStatements) {
auto* cond = create<IdentifierExpression>(Source{},
mod.RegisterSymbol("cond"), "cond");
- auto* body = create<BlockStatement>();
- body->append(create<DiscardStatement>());
+ auto* body = create<BlockStatement>(Source{});
+ body->append(create<DiscardStatement>(Source{}));
IfStatement stmt(Source{}, cond, body,
{
create<ElseStatement>(
+ Source{},
create<IdentifierExpression>(
Source{}, mod.RegisterSymbol("Ident"), "Ident"),
- create<BlockStatement>()),
- create<ElseStatement>(create<BlockStatement>()),
+ create<BlockStatement>(Source{})),
+ create<ElseStatement>(Source{}, nullptr,
+ create<BlockStatement>(Source{})),
});
EXPECT_TRUE(stmt.IsValid());
}
TEST_F(IfStatementTest, IsValid_MissingCondition) {
- auto* body = create<BlockStatement>();
- body->append(create<DiscardStatement>());
+ auto* body = create<BlockStatement>(Source{});
+ body->append(create<DiscardStatement>(Source{}));
IfStatement stmt(Source{}, nullptr, body, ElseStatementList{});
EXPECT_FALSE(stmt.IsValid());
@@ -81,8 +83,8 @@
TEST_F(IfStatementTest, IsValid_InvalidCondition) {
auto* cond =
create<IdentifierExpression>(Source{}, mod.RegisterSymbol(""), "");
- auto* body = create<BlockStatement>();
- body->append(create<DiscardStatement>());
+ auto* body = create<BlockStatement>(Source{});
+ body->append(create<DiscardStatement>(Source{}));
IfStatement stmt(Source{}, cond, body, ElseStatementList{});
EXPECT_FALSE(stmt.IsValid());
@@ -91,8 +93,8 @@
TEST_F(IfStatementTest, IsValid_NullBodyStatement) {
auto* cond = create<IdentifierExpression>(Source{},
mod.RegisterSymbol("cond"), "cond");
- auto* body = create<BlockStatement>();
- body->append(create<DiscardStatement>());
+ auto* body = create<BlockStatement>(Source{});
+ body->append(create<DiscardStatement>(Source{}));
body->append(nullptr);
IfStatement stmt(Source{}, cond, body, ElseStatementList{});
@@ -102,9 +104,10 @@
TEST_F(IfStatementTest, IsValid_InvalidBodyStatement) {
auto* cond = create<IdentifierExpression>(Source{},
mod.RegisterSymbol("cond"), "cond");
- auto* body = create<BlockStatement>();
- body->append(create<DiscardStatement>());
- body->append(create<IfStatement>(Source{}, nullptr, create<BlockStatement>(),
+ auto* body = create<BlockStatement>(Source{});
+ body->append(create<DiscardStatement>(Source{}));
+ body->append(create<IfStatement>(Source{}, nullptr,
+ create<BlockStatement>(Source{}),
ast::ElseStatementList{}));
IfStatement stmt(Source{}, cond, body, ElseStatementList{});
@@ -114,16 +117,18 @@
TEST_F(IfStatementTest, IsValid_NullElseStatement) {
auto* cond = create<IdentifierExpression>(Source{},
mod.RegisterSymbol("cond"), "cond");
- auto* body = create<BlockStatement>();
- body->append(create<DiscardStatement>());
+ auto* body = create<BlockStatement>(Source{});
+ body->append(create<DiscardStatement>(Source{}));
IfStatement stmt(Source{}, cond, body,
{
create<ElseStatement>(
+ Source{},
create<IdentifierExpression>(
Source{}, mod.RegisterSymbol("Ident"), "Ident"),
- create<BlockStatement>()),
- create<ElseStatement>(create<BlockStatement>()),
+ create<BlockStatement>(Source{})),
+ create<ElseStatement>(Source{}, nullptr,
+ create<BlockStatement>(Source{})),
nullptr,
});
EXPECT_FALSE(stmt.IsValid());
@@ -132,15 +137,16 @@
TEST_F(IfStatementTest, IsValid_InvalidElseStatement) {
auto* cond = create<IdentifierExpression>(Source{},
mod.RegisterSymbol("cond"), "cond");
- auto* body = create<BlockStatement>();
- body->append(create<DiscardStatement>());
+ auto* body = create<BlockStatement>(Source{});
+ body->append(create<DiscardStatement>(Source{}));
IfStatement stmt(
Source{}, cond, body,
{
- create<ElseStatement>(create<IdentifierExpression>(
+ create<ElseStatement>(Source{},
+ create<IdentifierExpression>(
Source{}, mod.RegisterSymbol(""), ""),
- create<BlockStatement>()),
+ create<BlockStatement>(Source{})),
});
EXPECT_FALSE(stmt.IsValid());
}
@@ -148,13 +154,15 @@
TEST_F(IfStatementTest, IsValid_MultipleElseWiththoutCondition) {
auto* cond = create<IdentifierExpression>(Source{},
mod.RegisterSymbol("cond"), "cond");
- auto* body = create<BlockStatement>();
- body->append(create<DiscardStatement>());
+ auto* body = create<BlockStatement>(Source{});
+ body->append(create<DiscardStatement>(Source{}));
IfStatement stmt(Source{}, cond, body,
{
- create<ElseStatement>(create<BlockStatement>()),
- create<ElseStatement>(create<BlockStatement>()),
+ create<ElseStatement>(Source{}, nullptr,
+ create<BlockStatement>(Source{})),
+ create<ElseStatement>(Source{}, nullptr,
+ create<BlockStatement>(Source{})),
});
EXPECT_FALSE(stmt.IsValid());
}
@@ -162,16 +170,18 @@
TEST_F(IfStatementTest, IsValid_ElseNotLast) {
auto* cond = create<IdentifierExpression>(Source{},
mod.RegisterSymbol("cond"), "cond");
- auto* body = create<BlockStatement>();
- body->append(create<DiscardStatement>());
+ auto* body = create<BlockStatement>(Source{});
+ body->append(create<DiscardStatement>(Source{}));
IfStatement stmt(Source{}, cond, body,
{
- create<ElseStatement>(create<BlockStatement>()),
+ create<ElseStatement>(Source{}, nullptr,
+ create<BlockStatement>(Source{})),
create<ElseStatement>(
+ Source{},
create<IdentifierExpression>(
Source{}, mod.RegisterSymbol("ident"), "ident"),
- create<BlockStatement>()),
+ create<BlockStatement>(Source{})),
});
EXPECT_FALSE(stmt.IsValid());
}
@@ -179,8 +189,8 @@
TEST_F(IfStatementTest, ToStr) {
auto* cond = create<IdentifierExpression>(Source{},
mod.RegisterSymbol("cond"), "cond");
- auto* body = create<BlockStatement>();
- body->append(create<DiscardStatement>());
+ auto* body = create<BlockStatement>(Source{});
+ body->append(create<DiscardStatement>(Source{}));
IfStatement stmt(Source{}, cond, body, ElseStatementList{});
@@ -200,23 +210,24 @@
TEST_F(IfStatementTest, ToStr_WithElseStatements) {
auto* cond = create<IdentifierExpression>(Source{},
mod.RegisterSymbol("cond"), "cond");
- auto* body = create<BlockStatement>();
- body->append(create<DiscardStatement>());
+ auto* body = create<BlockStatement>(Source{});
+ body->append(create<DiscardStatement>(Source{}));
- auto* else_if_body = create<BlockStatement>();
- else_if_body->append(create<DiscardStatement>());
+ auto* else_if_body = create<BlockStatement>(Source{});
+ else_if_body->append(create<DiscardStatement>(Source{}));
- auto* else_body = create<BlockStatement>();
- else_body->append(create<DiscardStatement>());
- else_body->append(create<DiscardStatement>());
+ auto* else_body = create<BlockStatement>(Source{});
+ else_body->append(create<DiscardStatement>(Source{}));
+ else_body->append(create<DiscardStatement>(Source{}));
IfStatement stmt(Source{}, cond, body,
{
create<ElseStatement>(
+ Source{},
create<IdentifierExpression>(
Source{}, mod.RegisterSymbol("ident"), "ident"),
else_if_body),
- create<ElseStatement>(else_body),
+ create<ElseStatement>(Source{}, nullptr, else_body),
});
std::ostringstream out;
diff --git a/src/ast/loop_statement.cc b/src/ast/loop_statement.cc
index 014d0ae..9549cc0 100644
--- a/src/ast/loop_statement.cc
+++ b/src/ast/loop_statement.cc
@@ -22,9 +22,6 @@
namespace tint {
namespace ast {
-LoopStatement::LoopStatement(BlockStatement* body, BlockStatement* continuing)
- : Base(), body_(body), continuing_(continuing) {}
-
LoopStatement::LoopStatement(const Source& source,
BlockStatement* body,
BlockStatement* continuing)
diff --git a/src/ast/loop_statement.h b/src/ast/loop_statement.h
index 64e1140..6eb4b39 100644
--- a/src/ast/loop_statement.h
+++ b/src/ast/loop_statement.h
@@ -28,10 +28,6 @@
class LoopStatement : public Castable<LoopStatement, Statement> {
public:
/// Constructor
- /// @param body the body statements
- /// @param continuing the continuing statements
- LoopStatement(BlockStatement* body, BlockStatement* continuing);
- /// Constructor
/// @param source the loop statement source
/// @param body the body statements
/// @param continuing the continuing statements
diff --git a/src/ast/loop_statement_test.cc b/src/ast/loop_statement_test.cc
index 63d4e13..4588d01 100644
--- a/src/ast/loop_statement_test.cc
+++ b/src/ast/loop_statement_test.cc
@@ -28,14 +28,14 @@
using LoopStatementTest = TestHelper;
TEST_F(LoopStatementTest, Creation) {
- auto* body = create<BlockStatement>();
- body->append(create<DiscardStatement>());
+ auto* body = create<BlockStatement>(Source{});
+ body->append(create<DiscardStatement>(Source{}));
auto* b = body->last();
- auto* continuing = create<BlockStatement>();
- continuing->append(create<DiscardStatement>());
+ auto* continuing = create<BlockStatement>(Source{});
+ continuing->append(create<DiscardStatement>(Source{}));
- LoopStatement l(body, continuing);
+ LoopStatement l(Source{}, body, continuing);
ASSERT_EQ(l.body()->size(), 1u);
EXPECT_EQ(l.body()->get(0), b);
ASSERT_EQ(l.continuing()->size(), 1u);
@@ -43,11 +43,11 @@
}
TEST_F(LoopStatementTest, Creation_WithSource) {
- auto* body = create<BlockStatement>();
- body->append(create<DiscardStatement>());
+ auto* body = create<BlockStatement>(Source{});
+ body->append(create<DiscardStatement>(Source{}));
- auto* continuing = create<BlockStatement>();
- continuing->append(create<DiscardStatement>());
+ auto* continuing = create<BlockStatement>(Source{});
+ continuing->append(create<DiscardStatement>(Source{}));
LoopStatement l(Source{Source::Location{20, 2}}, body, continuing);
auto src = l.source();
@@ -56,108 +56,112 @@
}
TEST_F(LoopStatementTest, IsLoop) {
- LoopStatement l(create<BlockStatement>(), create<BlockStatement>());
+ LoopStatement l(Source{}, create<BlockStatement>(Source{}),
+ create<BlockStatement>(Source{}));
EXPECT_TRUE(l.Is<LoopStatement>());
}
TEST_F(LoopStatementTest, HasContinuing_WithoutContinuing) {
- auto* body = create<BlockStatement>();
- body->append(create<DiscardStatement>());
+ auto* body = create<BlockStatement>(Source{});
+ body->append(create<DiscardStatement>(Source{}));
- LoopStatement l(body, {});
+ LoopStatement l(Source{}, body, {});
EXPECT_FALSE(l.has_continuing());
}
TEST_F(LoopStatementTest, HasContinuing_WithContinuing) {
- auto* body = create<BlockStatement>();
- body->append(create<DiscardStatement>());
+ auto* body = create<BlockStatement>(Source{});
+ body->append(create<DiscardStatement>(Source{}));
- auto* continuing = create<BlockStatement>();
- continuing->append(create<DiscardStatement>());
+ auto* continuing = create<BlockStatement>(Source{});
+ continuing->append(create<DiscardStatement>(Source{}));
- LoopStatement l(body, continuing);
+ LoopStatement l(Source{}, body, continuing);
EXPECT_TRUE(l.has_continuing());
}
TEST_F(LoopStatementTest, IsValid) {
- auto* body = create<BlockStatement>();
- body->append(create<DiscardStatement>());
+ auto* body = create<BlockStatement>(Source{});
+ body->append(create<DiscardStatement>(Source{}));
- auto* continuing = create<BlockStatement>();
- continuing->append(create<DiscardStatement>());
+ auto* continuing = create<BlockStatement>(Source{});
+ continuing->append(create<DiscardStatement>(Source{}));
- LoopStatement l(body, continuing);
+ LoopStatement l(Source{}, body, continuing);
EXPECT_TRUE(l.IsValid());
}
TEST_F(LoopStatementTest, IsValid_WithoutContinuing) {
- auto* body = create<BlockStatement>();
- body->append(create<DiscardStatement>());
+ auto* body = create<BlockStatement>(Source{});
+ body->append(create<DiscardStatement>(Source{}));
- LoopStatement l(body, create<BlockStatement>());
+ LoopStatement l(Source{}, body, create<BlockStatement>(Source{}));
EXPECT_TRUE(l.IsValid());
}
TEST_F(LoopStatementTest, IsValid_WithoutBody) {
- LoopStatement l(create<BlockStatement>(), create<BlockStatement>());
+ LoopStatement l(Source{}, create<BlockStatement>(Source{}),
+ create<BlockStatement>(Source{}));
EXPECT_TRUE(l.IsValid());
}
TEST_F(LoopStatementTest, IsValid_NullBodyStatement) {
- auto* body = create<BlockStatement>();
- body->append(create<DiscardStatement>());
+ auto* body = create<BlockStatement>(Source{});
+ body->append(create<DiscardStatement>(Source{}));
body->append(nullptr);
- auto* continuing = create<BlockStatement>();
- continuing->append(create<DiscardStatement>());
+ auto* continuing = create<BlockStatement>(Source{});
+ continuing->append(create<DiscardStatement>(Source{}));
- LoopStatement l(body, continuing);
+ LoopStatement l(Source{}, body, continuing);
EXPECT_FALSE(l.IsValid());
}
TEST_F(LoopStatementTest, IsValid_InvalidBodyStatement) {
- auto* body = create<BlockStatement>();
- body->append(create<DiscardStatement>());
- body->append(create<IfStatement>(Source{}, nullptr, create<BlockStatement>(),
+ auto* body = create<BlockStatement>(Source{});
+ body->append(create<DiscardStatement>(Source{}));
+ body->append(create<IfStatement>(Source{}, nullptr,
+ create<BlockStatement>(Source{}),
ElseStatementList{}));
- auto* continuing = create<BlockStatement>();
- continuing->append(create<DiscardStatement>());
+ auto* continuing = create<BlockStatement>(Source{});
+ continuing->append(create<DiscardStatement>(Source{}));
- LoopStatement l(body, continuing);
+ LoopStatement l(Source{}, body, continuing);
EXPECT_FALSE(l.IsValid());
}
TEST_F(LoopStatementTest, IsValid_NullContinuingStatement) {
- auto* body = create<BlockStatement>();
- body->append(create<DiscardStatement>());
+ auto* body = create<BlockStatement>(Source{});
+ body->append(create<DiscardStatement>(Source{}));
- auto* continuing = create<BlockStatement>();
- continuing->append(create<DiscardStatement>());
+ auto* continuing = create<BlockStatement>(Source{});
+ continuing->append(create<DiscardStatement>(Source{}));
continuing->append(nullptr);
- LoopStatement l(body, continuing);
+ LoopStatement l(Source{}, body, continuing);
EXPECT_FALSE(l.IsValid());
}
TEST_F(LoopStatementTest, IsValid_InvalidContinuingStatement) {
- auto* body = create<BlockStatement>();
- body->append(create<DiscardStatement>());
+ auto* body = create<BlockStatement>(Source{});
+ body->append(create<DiscardStatement>(Source{}));
- auto* continuing = create<BlockStatement>();
- continuing->append(create<DiscardStatement>());
- continuing->append(create<IfStatement>(
- Source{}, nullptr, create<BlockStatement>(), ElseStatementList{}));
+ auto* continuing = create<BlockStatement>(Source{});
+ continuing->append(create<DiscardStatement>(Source{}));
+ continuing->append(create<IfStatement>(Source{}, nullptr,
+ create<BlockStatement>(Source{}),
+ ElseStatementList{}));
- LoopStatement l(body, continuing);
+ LoopStatement l(Source{}, body, continuing);
EXPECT_FALSE(l.IsValid());
}
TEST_F(LoopStatementTest, ToStr) {
- auto* body = create<BlockStatement>();
- body->append(create<DiscardStatement>());
+ auto* body = create<BlockStatement>(Source{});
+ body->append(create<DiscardStatement>(Source{}));
- LoopStatement l(body, {});
+ LoopStatement l(Source{}, body, {});
std::ostringstream out;
l.to_str(out, 2);
EXPECT_EQ(out.str(), R"( Loop{
@@ -167,13 +171,13 @@
}
TEST_F(LoopStatementTest, ToStr_WithContinuing) {
- auto* body = create<BlockStatement>();
- body->append(create<DiscardStatement>());
+ auto* body = create<BlockStatement>(Source{});
+ body->append(create<DiscardStatement>(Source{}));
- auto* continuing = create<BlockStatement>();
- continuing->append(create<DiscardStatement>());
+ auto* continuing = create<BlockStatement>(Source{});
+ continuing->append(create<DiscardStatement>(Source{}));
- LoopStatement l(body, continuing);
+ LoopStatement l(Source{}, body, continuing);
std::ostringstream out;
l.to_str(out, 2);
EXPECT_EQ(out.str(), R"( Loop{
diff --git a/src/ast/module_test.cc b/src/ast/module_test.cc
index 534a258..cab119b 100644
--- a/src/ast/module_test.cc
+++ b/src/ast/module_test.cc
@@ -49,9 +49,9 @@
Module m;
auto func_sym = m.RegisterSymbol("main");
- auto* func =
- create<Function>(Source{}, func_sym, "main", VariableList{}, &f32,
- create<BlockStatement>(), ast::FunctionDecorationList{});
+ auto* func = create<Function>(Source{}, func_sym, "main", VariableList{},
+ &f32, create<BlockStatement>(Source{}),
+ ast::FunctionDecorationList{});
m.AddFunction(func);
EXPECT_EQ(func, m.FindFunctionBySymbol(func_sym));
}
@@ -131,9 +131,9 @@
Module m;
- auto* func = create<Function>(Source{}, m.RegisterSymbol("main"), "main",
- VariableList(), &f32, create<BlockStatement>(),
- ast::FunctionDecorationList{});
+ auto* func = create<Function>(
+ Source{}, m.RegisterSymbol("main"), "main", VariableList(), &f32,
+ create<BlockStatement>(Source{}), ast::FunctionDecorationList{});
m.AddFunction(func);
EXPECT_TRUE(m.IsValid());
}
diff --git a/src/ast/statement.cc b/src/ast/statement.cc
index 9abbba0..cef7a9a 100644
--- a/src/ast/statement.cc
+++ b/src/ast/statement.cc
@@ -36,8 +36,6 @@
namespace tint {
namespace ast {
-Statement::Statement() = default;
-
Statement::Statement(const Source& source) : Base(source) {}
Statement::Statement(Statement&&) = default;
diff --git a/src/ast/statement.h b/src/ast/statement.h
index b38c74c..baff8d9 100644
--- a/src/ast/statement.h
+++ b/src/ast/statement.h
@@ -33,8 +33,6 @@
protected:
/// Constructor
- Statement();
- /// Constructor
/// @param source the source of the expression
explicit Statement(const Source& source);
/// Move constructor
diff --git a/src/ast/switch_statement.cc b/src/ast/switch_statement.cc
index 8634ed4..51cc0bf 100644
--- a/src/ast/switch_statement.cc
+++ b/src/ast/switch_statement.cc
@@ -23,9 +23,6 @@
namespace tint {
namespace ast {
-SwitchStatement::SwitchStatement(Expression* condition, CaseStatementList body)
- : condition_(condition), body_(body) {}
-
SwitchStatement::SwitchStatement(const Source& source,
Expression* condition,
CaseStatementList body)
diff --git a/src/ast/switch_statement.h b/src/ast/switch_statement.h
index 22f0b3e..917d6aa 100644
--- a/src/ast/switch_statement.h
+++ b/src/ast/switch_statement.h
@@ -30,10 +30,6 @@
class SwitchStatement : public Castable<SwitchStatement, Statement> {
public:
/// Constructor
- /// @param condition the switch condition
- /// @param body the switch body
- SwitchStatement(Expression* condition, CaseStatementList body);
- /// Constructor
/// @param source the source information
/// @param condition the switch condition
/// @param body the switch body
diff --git a/src/ast/switch_statement_test.cc b/src/ast/switch_statement_test.cc
index e0746f0..9a73e39 100644
--- a/src/ast/switch_statement_test.cc
+++ b/src/ast/switch_statement_test.cc
@@ -37,10 +37,11 @@
auto* ident = create<IdentifierExpression>(
Source{}, mod.RegisterSymbol("ident"), "ident");
CaseStatementList body;
- auto* case_stmt = create<CaseStatement>(lit, create<BlockStatement>());
+ auto* case_stmt =
+ create<CaseStatement>(Source{}, lit, create<BlockStatement>(Source{}));
body.push_back(case_stmt);
- SwitchStatement stmt(ident, body);
+ SwitchStatement stmt(Source{}, ident, body);
EXPECT_EQ(stmt.condition(), ident);
ASSERT_EQ(stmt.body().size(), 1u);
EXPECT_EQ(stmt.body()[0], case_stmt);
@@ -66,9 +67,10 @@
auto* ident = create<IdentifierExpression>(
Source{}, mod.RegisterSymbol("ident"), "ident");
CaseStatementList body;
- body.push_back(create<CaseStatement>(lit, create<BlockStatement>()));
+ body.push_back(
+ create<CaseStatement>(Source{}, lit, create<BlockStatement>(Source{})));
- SwitchStatement stmt(ident, body);
+ SwitchStatement stmt(Source{}, ident, body);
EXPECT_TRUE(stmt.Is<SwitchStatement>());
}
@@ -81,9 +83,10 @@
auto* ident = create<IdentifierExpression>(
Source{}, mod.RegisterSymbol("ident"), "ident");
CaseStatementList body;
- body.push_back(create<CaseStatement>(lit, create<BlockStatement>()));
+ body.push_back(
+ create<CaseStatement>(Source{}, lit, create<BlockStatement>(Source{})));
- SwitchStatement stmt(ident, body);
+ SwitchStatement stmt(Source{}, ident, body);
EXPECT_TRUE(stmt.IsValid());
}
@@ -94,9 +97,10 @@
lit.push_back(create<SintLiteral>(Source{}, &i32, 2));
CaseStatementList body;
- body.push_back(create<CaseStatement>(lit, create<BlockStatement>()));
+ body.push_back(
+ create<CaseStatement>(Source{}, lit, create<BlockStatement>(Source{})));
- SwitchStatement stmt(nullptr, body);
+ SwitchStatement stmt(Source{}, nullptr, body);
EXPECT_FALSE(stmt.IsValid());
}
@@ -109,9 +113,10 @@
auto* ident =
create<IdentifierExpression>(Source{}, mod.RegisterSymbol(""), "");
CaseStatementList body;
- body.push_back(create<CaseStatement>(lit, create<BlockStatement>()));
+ body.push_back(
+ create<CaseStatement>(Source{}, lit, create<BlockStatement>(Source{})));
- SwitchStatement stmt(ident, body);
+ SwitchStatement stmt(Source{}, ident, body);
EXPECT_FALSE(stmt.IsValid());
}
@@ -124,10 +129,11 @@
auto* ident = create<IdentifierExpression>(
Source{}, mod.RegisterSymbol("ident"), "ident");
CaseStatementList body;
- body.push_back(create<CaseStatement>(lit, create<BlockStatement>()));
+ body.push_back(
+ create<CaseStatement>(Source{}, lit, create<BlockStatement>(Source{})));
body.push_back(nullptr);
- SwitchStatement stmt(ident, body);
+ SwitchStatement stmt(Source{}, ident, body);
EXPECT_FALSE(stmt.IsValid());
}
@@ -135,13 +141,14 @@
auto* ident = create<IdentifierExpression>(
Source{}, mod.RegisterSymbol("ident"), "ident");
- auto* case_body = create<BlockStatement>();
+ auto* case_body = create<BlockStatement>(Source{});
case_body->append(nullptr);
CaseStatementList body;
- body.push_back(create<CaseStatement>(CaseSelectorList{}, case_body));
+ body.push_back(
+ create<CaseStatement>(Source{}, CaseSelectorList{}, case_body));
- SwitchStatement stmt(ident, body);
+ SwitchStatement stmt(Source{}, ident, body);
EXPECT_FALSE(stmt.IsValid());
}
@@ -149,7 +156,7 @@
auto* ident = create<IdentifierExpression>(
Source{}, mod.RegisterSymbol("ident"), "ident");
- SwitchStatement stmt(ident, {});
+ SwitchStatement stmt(Source{}, ident, {});
std::ostringstream out;
stmt.to_str(out, 2);
EXPECT_EQ(demangle(out.str()), R"( Switch{
@@ -169,9 +176,10 @@
auto* ident = create<IdentifierExpression>(
Source{}, mod.RegisterSymbol("ident"), "ident");
CaseStatementList body;
- body.push_back(create<CaseStatement>(lit, create<BlockStatement>()));
+ body.push_back(
+ create<CaseStatement>(Source{}, lit, create<BlockStatement>(Source{})));
- SwitchStatement stmt(ident, body);
+ SwitchStatement stmt(Source{}, ident, body);
std::ostringstream out;
stmt.to_str(out, 2);
EXPECT_EQ(demangle(out.str()), R"( Switch{
diff --git a/src/ast/variable_decl_statement.cc b/src/ast/variable_decl_statement.cc
index 83b4b7c..f5eb50f 100644
--- a/src/ast/variable_decl_statement.cc
+++ b/src/ast/variable_decl_statement.cc
@@ -22,9 +22,6 @@
namespace tint {
namespace ast {
-VariableDeclStatement::VariableDeclStatement(Variable* variable)
- : Base(), variable_(variable) {}
-
VariableDeclStatement::VariableDeclStatement(const Source& source,
Variable* variable)
: Base(source), variable_(variable) {}
diff --git a/src/ast/variable_decl_statement.h b/src/ast/variable_decl_statement.h
index 6ec3748..88bef80 100644
--- a/src/ast/variable_decl_statement.h
+++ b/src/ast/variable_decl_statement.h
@@ -30,9 +30,6 @@
: public Castable<VariableDeclStatement, Statement> {
public:
/// Constructor
- /// @param variable the variable
- explicit VariableDeclStatement(Variable* variable);
- /// Constructor
/// @param source the variable statement source
/// @param variable the variable
VariableDeclStatement(const Source& source, Variable* variable);
diff --git a/src/ast/variable_decl_statement_test.cc b/src/ast/variable_decl_statement_test.cc
index 3ef7a4b..edc7d97 100644
--- a/src/ast/variable_decl_statement_test.cc
+++ b/src/ast/variable_decl_statement_test.cc
@@ -29,7 +29,7 @@
auto* var = create<Variable>(Source{}, "a", StorageClass::kNone, &f32, false,
nullptr, ast::VariableDecorationList{});
- VariableDeclStatement stmt(var);
+ VariableDeclStatement stmt(Source{}, var);
EXPECT_EQ(stmt.variable(), var);
}
@@ -49,15 +49,15 @@
auto* var = create<Variable>(Source{}, "a", StorageClass::kNone, &f32, false,
nullptr, ast::VariableDecorationList{});
- VariableDeclStatement s(var);
- EXPECT_TRUE(s.Is<VariableDeclStatement>());
+ VariableDeclStatement stmt(Source{}, var);
+ EXPECT_TRUE(stmt.Is<VariableDeclStatement>());
}
TEST_F(VariableDeclStatementTest, IsValid) {
type::F32 f32;
auto* var = create<Variable>(Source{}, "a", StorageClass::kNone, &f32, false,
nullptr, ast::VariableDecorationList{});
- VariableDeclStatement stmt(var);
+ VariableDeclStatement stmt(Source{}, var);
EXPECT_TRUE(stmt.IsValid());
}
@@ -65,12 +65,12 @@
type::F32 f32;
auto* var = create<Variable>(Source{}, "", StorageClass::kNone, &f32, false,
nullptr, ast::VariableDecorationList{});
- VariableDeclStatement stmt(var);
+ VariableDeclStatement stmt(Source{}, var);
EXPECT_FALSE(stmt.IsValid());
}
TEST_F(VariableDeclStatementTest, IsValid_NullVariable) {
- VariableDeclStatement stmt(nullptr);
+ VariableDeclStatement stmt(Source{}, nullptr);
EXPECT_FALSE(stmt.IsValid());
}
diff --git a/src/inspector/inspector_test.cc b/src/inspector/inspector_test.cc
index 6600f73..5c7904e 100644
--- a/src/inspector/inspector_test.cc
+++ b/src/inspector/inspector_test.cc
@@ -81,7 +81,7 @@
ast::Function* MakeEmptyBodyFunction(
std::string name,
ast::FunctionDecorationList decorations = {}) {
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::ReturnStatement>(Source{}));
return create<ast::Function>(Source{}, mod()->RegisterSymbol(name), name,
ast::VariableList(), void_type(), body,
@@ -97,12 +97,12 @@
std::string caller,
std::string callee,
ast::FunctionDecorationList decorations = {}) {
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
auto* ident_expr = create<ast::IdentifierExpression>(
Source{}, mod()->RegisterSymbol(callee), callee);
auto* call_expr = create<ast::CallExpression>(Source{}, ident_expr,
ast::ExpressionList());
- body->append(create<ast::CallStatement>(call_expr));
+ body->append(create<ast::CallStatement>(Source{}, call_expr));
body->append(create<ast::ReturnStatement>(Source{}));
return create<ast::Function>(Source{}, mod()->RegisterSymbol(caller),
caller, ast::VariableList(), void_type(), body,
@@ -148,11 +148,12 @@
std::string name,
std::vector<std::tuple<std::string, std::string>> inout_vars,
ast::FunctionDecorationList decorations = {}) {
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
for (auto inout : inout_vars) {
std::string in, out;
std::tie(in, out) = inout;
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{},
mod()->RegisterSymbol(out), out),
create<ast::IdentifierExpression>(Source{}, mod()->RegisterSymbol(in),
@@ -177,11 +178,12 @@
std::string callee,
std::vector<std::tuple<std::string, std::string>> inout_vars,
ast::FunctionDecorationList decorations = {}) {
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
for (auto inout : inout_vars) {
std::string in, out;
std::tie(in, out) = inout;
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{},
mod()->RegisterSymbol(out), out),
create<ast::IdentifierExpression>(Source{}, mod()->RegisterSymbol(in),
@@ -191,7 +193,7 @@
Source{}, mod()->RegisterSymbol(callee), callee);
auto* call_expr = create<ast::CallExpression>(Source{}, ident_expr,
ast::ExpressionList());
- body->append(create<ast::CallStatement>(call_expr));
+ body->append(create<ast::CallStatement>(Source{}, call_expr));
body->append(create<ast::ReturnStatement>(Source{}));
return create<ast::Function>(Source{}, mod()->RegisterSymbol(caller),
caller, ast::VariableList(), void_type(), body,
@@ -425,21 +427,22 @@
std::string func_name,
std::string struct_name,
std::vector<std::tuple<size_t, ast::type::Type*>> members) {
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
for (auto member : members) {
size_t member_idx;
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>(
- Source{}, // source
- "local" + member_name, // name
- ast::StorageClass::kNone, // storage_class
- member_type, // type
- false, // is_const
- nullptr, // constructor
- ast::VariableDecorationList{}))); // decorations
+ body->append(create<ast::VariableDeclStatement>(
+ Source{}, create<ast::Variable>(
+ Source{}, // source
+ "local" + member_name, // name
+ ast::StorageClass::kNone, // storage_class
+ member_type, // type
+ false, // is_const
+ nullptr, // constructor
+ ast::VariableDecorationList{}))); // decorations
}
for (auto member : members) {
@@ -448,10 +451,12 @@
std::tie(member_idx, member_type) = member;
std::string member_name = StructMemberName(member_idx, member_type);
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(
Source{}, mod()->RegisterSymbol("local" + member_name),
"local" + member_name),
- create<ast::MemberAccessorExpression>(Source{},
+ create<ast::MemberAccessorExpression>(
+ Source{},
create<ast::IdentifierExpression>(
Source{}, mod()->RegisterSymbol(struct_name), struct_name),
create<ast::IdentifierExpression>(
@@ -578,7 +583,7 @@
ast::FunctionDecorationList decorations = {}) {
std::string result_name = "sampler_result";
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
auto* call_result =
create<ast::Variable>(Source{}, // source
@@ -588,7 +593,7 @@
false, // is_const
nullptr, // constructor
ast::VariableDecorationList{}); // decorations
- body->append(create<ast::VariableDeclStatement>(call_result));
+ body->append(create<ast::VariableDeclStatement>(Source{}, call_result));
ast::ExpressionList call_params;
call_params.push_back(create<ast::IdentifierExpression>(
@@ -604,6 +609,7 @@
call_params);
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(
Source{}, mod()->RegisterSymbol("sampler_result"),
"sampler_result"),
@@ -634,7 +640,7 @@
ast::FunctionDecorationList decorations = {}) {
std::string result_name = "sampler_result";
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
auto* call_result =
create<ast::Variable>(Source{}, // source
@@ -644,7 +650,7 @@
false, // is_const
nullptr, // constructor
ast::VariableDecorationList{}); // decorations
- body->append(create<ast::VariableDeclStatement>(call_result));
+ body->append(create<ast::VariableDeclStatement>(Source{}, call_result));
ast::ExpressionList call_params;
call_params.push_back(create<ast::IdentifierExpression>(
@@ -662,6 +668,7 @@
call_params);
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(
Source{}, mod()->RegisterSymbol("sampler_result"),
"sampler_result"),
@@ -693,7 +700,7 @@
ast::FunctionDecorationList decorations = {}) {
std::string result_name = "sampler_result";
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
auto* call_result =
create<ast::Variable>(Source{}, // source
@@ -703,7 +710,7 @@
false, // is_const
nullptr, // constructor
ast::VariableDecorationList{}); // decorations
- body->append(create<ast::VariableDeclStatement>(call_result));
+ body->append(create<ast::VariableDeclStatement>(Source{}, call_result));
ast::ExpressionList call_params;
call_params.push_back(create<ast::IdentifierExpression>(
@@ -722,6 +729,7 @@
call_params);
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(
Source{}, mod()->RegisterSymbol("sampler_result"),
"sampler_result"),
@@ -1551,9 +1559,9 @@
Source{}, mod()->RegisterSymbol(callee), callee);
auto* call_expr = create<ast::CallExpression>(Source{}, ident_expr,
ast::ExpressionList());
- body->append(create<ast::CallStatement>(call_expr));
+ body->append(create<ast::CallStatement>(Source{}, call_expr));
};
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
AddFuncCall(body, "ub_foo_func");
AddFuncCall(body, "ub_bar_func");
@@ -1699,9 +1707,9 @@
Source{}, mod()->RegisterSymbol(callee), callee);
auto* call_expr = create<ast::CallExpression>(Source{}, ident_expr,
ast::ExpressionList());
- body->append(create<ast::CallStatement>(call_expr));
+ body->append(create<ast::CallStatement>(Source{}, call_expr));
};
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
AddFuncCall(body, "sb_foo_func");
AddFuncCall(body, "sb_bar_func");
@@ -1874,9 +1882,9 @@
Source{}, mod()->RegisterSymbol(callee), callee);
auto* call_expr = create<ast::CallExpression>(Source{}, ident_expr,
ast::ExpressionList());
- body->append(create<ast::CallStatement>(call_expr));
+ body->append(create<ast::CallStatement>(Source{}, call_expr));
};
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
AddFuncCall(body, "sb_foo_func");
AddFuncCall(body, "sb_bar_func");
diff --git a/src/reader/spirv/function.cc b/src/reader/spirv/function.cc
index cd2cb54..9f24f00 100644
--- a/src/reader/spirv/function.cc
+++ b/src/reader/spirv/function.cc
@@ -667,7 +667,7 @@
ast::CaseStatementList* cases,
CompletionAction action) {
if (block == nullptr) {
- block = create<ast::BlockStatement>();
+ block = create<ast::BlockStatement>(Source{});
}
statements_stack_.emplace_back(
@@ -685,7 +685,7 @@
auto* cond = create<ast::IdentifierExpression>(
Source{}, ast_module_.RegisterSymbol(guard_name), guard_name);
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
AddStatement(
create<ast::IfStatement>(Source{}, cond, body, ast::ElseStatementList{}));
PushNewStatementBlock(top.construct_, end_id, body, nullptr, nullptr);
@@ -696,7 +696,7 @@
const auto& top = statements_stack_.back();
auto* cond = MakeTrue(Source{});
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
AddStatement(
create<ast::IfStatement>(Source{}, cond, body, ast::ElseStatementList{}));
PushNewStatementBlock(top.construct_, end_id, body, nullptr, nullptr);
@@ -1865,7 +1865,7 @@
auto* var = parser_impl_.MakeVariable(
inst.result_id(), ast::StorageClass::kFunction, var_store_type, false,
constructor, ast::VariableDecorationList{});
- auto* var_decl_stmt = create<ast::VariableDeclStatement>(var);
+ auto* var_decl_stmt = create<ast::VariableDeclStatement>(Source{}, var);
AddStatement(var_decl_stmt);
// Save this as an already-named value.
identifier_values_.insert(inst.result_id());
@@ -2145,14 +2145,14 @@
false, // is_const
MakeTrue(Source{}), // constructor
ast::VariableDecorationList{}); // decorations
- auto* guard_decl = create<ast::VariableDeclStatement>(guard_var);
+ auto* guard_decl = create<ast::VariableDeclStatement>(Source{}, guard_var);
AddStatement(guard_decl);
}
const auto condition_id =
block_info.basic_block->terminator()->GetSingleWordInOperand(0);
auto* cond = MakeExpression(condition_id).expr;
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
// Generate the code for the condition.
// Use the IfBuilder to create the if-statement. The IfBuilder is constructed
@@ -2227,7 +2227,7 @@
// But make sure we do it in the right order.
auto push_else = [this, if_builder, else_end, construct]() {
// Push the else clause onto the stack first.
- auto* else_body = create<ast::BlockStatement>();
+ auto* else_body = create<ast::BlockStatement>(Source{});
PushNewStatementBlock(
construct, else_end, else_body, nullptr,
[this, if_builder, else_body]() {
@@ -2236,7 +2236,7 @@
// The "else" consists of the statement list from the top of
// statements stack, without an elseif condition.
if_builder->else_stmts_.emplace_back(
- create<ast::ElseStatement>(nullptr, else_body));
+ create<ast::ElseStatement>(Source{}, nullptr, else_body));
}
});
};
@@ -2294,7 +2294,7 @@
// First, push the statement block for the entire switch.
ast::CaseStatementList case_list;
- auto* swch = create<ast::SwitchStatement>(selector.expr, case_list);
+ auto* swch = create<ast::SwitchStatement>(Source{}, selector.expr, case_list);
AddStatement(swch)->As<ast::SwitchStatement>();
// Grab a pointer to the case list. It will get buried in the statement block
@@ -2369,17 +2369,18 @@
// Create the case clause. Temporarily put it in the wrong order
// on the case statement list.
- auto* body = create<ast::BlockStatement>();
- cases->emplace_back(create<ast::CaseStatement>(selectors, body));
+ auto* body = create<ast::BlockStatement>(Source{});
+ cases->emplace_back(create<ast::CaseStatement>(Source{}, selectors, body));
PushNewStatementBlock(construct, end_id, body, nullptr, nullptr);
if ((default_info == clause_heads[i]) && has_selectors &&
construct->ContainsPos(default_info->pos)) {
// Generate a default clause with a just fallthrough.
- auto* stmts = create<ast::BlockStatement>();
- stmts->append(create<ast::FallthroughStatement>());
- auto* case_stmt = create<ast::CaseStatement>(stmts);
+ auto* stmts = create<ast::BlockStatement>(Source{});
+ stmts->append(create<ast::FallthroughStatement>(Source{}));
+ auto* case_stmt =
+ create<ast::CaseStatement>(Source{}, ast::CaseSelectorList{}, stmts);
cases->emplace_back(case_stmt);
}
@@ -2396,8 +2397,9 @@
}
bool FunctionEmitter::EmitLoopStart(const Construct* construct) {
- auto* body = create<ast::BlockStatement>();
- AddStatement(create<ast::LoopStatement>(body, create<ast::BlockStatement>()));
+ auto* body = create<ast::BlockStatement>(Source{});
+ AddStatement(create<ast::LoopStatement>(
+ Source{}, body, create<ast::BlockStatement>(Source{})));
PushNewStatementBlock(construct, construct->end_id, body, nullptr, nullptr);
return success();
}
@@ -2431,7 +2433,7 @@
case SpvOpKill:
// For now, assume SPIR-V OpKill has same semantics as WGSL discard.
// TODO(dneto): https://github.com/gpuweb/gpuweb/issues/676
- AddStatement(create<ast::DiscardStatement>());
+ AddStatement(create<ast::DiscardStatement>(Source{}));
return true;
case SpvOpUnreachable:
// Translate as if it's a return. This avoids the problem where WGSL
@@ -2525,7 +2527,7 @@
break;
case EdgeKind::kSwitchBreak: {
if (forced) {
- return create<ast::BreakStatement>();
+ return create<ast::BreakStatement>(Source{});
}
// Unless forced, don't bother with a break at the end of a case/default
// clause.
@@ -2550,10 +2552,10 @@
}
}
// We need a break.
- return create<ast::BreakStatement>();
+ return create<ast::BreakStatement>(Source{});
}
case EdgeKind::kLoopBreak:
- return create<ast::BreakStatement>();
+ return create<ast::BreakStatement>(Source{});
case EdgeKind::kLoopContinue:
// An unconditional continue to the next block is redundant and ugly.
// Skip it in that case.
@@ -2561,7 +2563,7 @@
break;
}
// Otherwise, emit a regular continue statement.
- return create<ast::ContinueStatement>();
+ return create<ast::ContinueStatement>(Source{});
case EdgeKind::kIfBreak: {
const auto& flow_guard =
GetBlockInfo(dest_info.header_for_merge)->flow_guard_name;
@@ -2571,6 +2573,7 @@
}
// Signal an exit from the branch.
return create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(
Source{}, ast_module_.RegisterSymbol(flow_guard), flow_guard),
MakeFalse(Source{}));
@@ -2581,7 +2584,7 @@
break;
}
case EdgeKind::kCaseFallThrough:
- return create<ast::FallthroughStatement>();
+ return create<ast::FallthroughStatement>(Source{});
case EdgeKind::kForward:
// Unconditional forward branch is implicit.
break;
@@ -2597,11 +2600,12 @@
}
ast::ElseStatementList else_stmts;
if (else_stmt != nullptr) {
- auto* stmts = create<ast::BlockStatement>();
+ auto* stmts = create<ast::BlockStatement>(Source{});
stmts->append(else_stmt);
- else_stmts.emplace_back(create<ast::ElseStatement>(nullptr, stmts));
+ else_stmts.emplace_back(
+ create<ast::ElseStatement>(Source{}, nullptr, stmts));
}
- auto* if_block = create<ast::BlockStatement>();
+ auto* if_block = create<ast::BlockStatement>(Source{});
auto* if_stmt =
create<ast::IfStatement>(Source{}, condition, if_block, else_stmts);
if (then_stmt != nullptr) {
@@ -2649,7 +2653,7 @@
} else {
AddStatement(MakeSimpleIf(cond, other_branch, nullptr));
}
- AddStatement(create<ast::FallthroughStatement>());
+ AddStatement(create<ast::FallthroughStatement>(Source{}));
return success();
}
@@ -2676,9 +2680,10 @@
assert(def_inst);
auto* ast_type =
RemapStorageClass(parser_impl_.ConvertType(def_inst->type_id()), id);
- AddStatement(create<ast::VariableDeclStatement>(parser_impl_.MakeVariable(
- id, ast::StorageClass::kFunction, ast_type, false, nullptr,
- ast::VariableDecorationList{})));
+ AddStatement(create<ast::VariableDeclStatement>(
+ Source{}, parser_impl_.MakeVariable(id, ast::StorageClass::kFunction,
+ ast_type, false, nullptr,
+ ast::VariableDecorationList{})));
// Save this as an already-named value.
identifier_values_.insert(id);
}
@@ -2696,7 +2701,7 @@
false, // is_const
nullptr, // constructor
ast::VariableDecorationList{}); // decorations
- AddStatement(create<ast::VariableDeclStatement>(var));
+ AddStatement(create<ast::VariableDeclStatement>(Source{}, var));
}
// Emit regular statements.
@@ -2727,6 +2732,7 @@
const auto var_name = GetDefInfo(assignment.phi_id)->phi_var;
auto expr = MakeExpression(assignment.value);
AddStatement(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(
Source{}, ast_module_.RegisterSymbol(var_name), var_name),
expr.expr));
@@ -2749,7 +2755,7 @@
if (!ast_const) {
return false;
}
- AddStatement(create<ast::VariableDeclStatement>(ast_const));
+ AddStatement(create<ast::VariableDeclStatement>(Source{}, ast_const));
// Save this as an already-named value.
identifier_values_.insert(inst.result_id());
return success();
@@ -2764,6 +2770,7 @@
auto name = namer_.Name(result_id);
// Emit an assignment of the expression to the hoisted variable.
AddStatement(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(
Source{}, ast_module_.RegisterSymbol(name), namer_.Name(result_id)),
ast_expr.expr));
@@ -2833,7 +2840,8 @@
// TODO(dneto): Order of evaluation?
auto lhs = MakeExpression(ptr_id);
auto rhs = MakeExpression(value_id);
- AddStatement(create<ast::AssignmentStatement>(lhs.expr, rhs.expr));
+ AddStatement(
+ create<ast::AssignmentStatement>(Source{}, lhs.expr, rhs.expr));
return success();
}
case SpvOpLoad: {
@@ -3743,7 +3751,8 @@
}
if (result_type->Is<ast::type::Void>()) {
- return nullptr != AddStatement(create<ast::CallStatement>(call_expr));
+ return nullptr !=
+ AddStatement(create<ast::CallStatement>(Source{}, call_expr));
}
return EmitConstDefOrWriteToHoistedVar(inst, {result_type, call_expr});
@@ -3800,7 +3809,8 @@
// The condition goes last.
params.push_back(condition.expr);
return {operand1.type,
- create<ast::CallExpression>(Source{},
+ create<ast::CallExpression>(
+ Source{},
create<ast::IdentifierExpression>(
Source{}, ast_module_.RegisterSymbol("select"), "select"),
std::move(params))};
@@ -4014,7 +4024,7 @@
} else {
// It's an image write. No value is returned, so make a statement out
// of the call.
- AddStatement(create<ast::CallStatement>(call_expr));
+ AddStatement(create<ast::CallStatement>(Source{}, call_expr));
}
return success();
}
@@ -4182,10 +4192,11 @@
}
// If the texel has more components than necessary, then we will ignore the
// higher-numbered components.
- auto* texel_prefix = (src_count == dest_count)
- ? texel.expr
- : create<ast::MemberAccessorExpression>(Source{},
- texel.expr, PrefixSwizzle(dest_count));
+ auto* texel_prefix =
+ (src_count == dest_count)
+ ? texel.expr
+ : create<ast::MemberAccessorExpression>(Source{}, texel.expr,
+ PrefixSwizzle(dest_count));
if (!(dest_type->is_float_scalar_or_vector() ||
dest_type->is_unsigned_scalar_or_vector() ||
diff --git a/src/reader/wgsl/parser_impl.cc b/src/reader/wgsl/parser_impl.cc
index 7061875..65fb63a 100644
--- a/src/reader/wgsl/parser_impl.cc
+++ b/src/reader/wgsl/parser_impl.cc
@@ -1438,7 +1438,7 @@
// : statement*
Expect<ast::BlockStatement*> ParserImpl::expect_statements() {
bool errored = false;
- auto* ret = create<ast::BlockStatement>();
+ auto* ret = create<ast::BlockStatement>(Source{});
while (synchronized_) {
auto stmt = statement();
@@ -1724,7 +1724,7 @@
if (body.errored)
return Failure::kErrored;
- return create<ast::ElseStatement>(source, body.value);
+ return create<ast::ElseStatement>(source, nullptr, body.value);
}
// switch_stmt
@@ -1827,7 +1827,7 @@
// | statement case_body
// | FALLTHROUGH SEMICOLON
Maybe<ast::BlockStatement*> ParserImpl::case_body() {
- auto* ret = create<ast::BlockStatement>();
+ auto* ret = create<ast::BlockStatement>(Source{});
for (;;) {
Source source;
if (match(Token::Type::kFallthrough, &source)) {
@@ -2026,11 +2026,12 @@
if (!expect("call statement", Token::Type::kParenRight))
return Failure::kErrored;
- return create<ast::CallStatement>(create<ast::CallExpression>(
- source,
- create<ast::IdentifierExpression>(Source{}, module_.RegisterSymbol(name),
- name),
- std::move(params)));
+ return create<ast::CallStatement>(
+ Source{}, create<ast::CallExpression>(
+ source,
+ create<ast::IdentifierExpression>(
+ source, module_.RegisterSymbol(name), name),
+ std::move(params)));
}
// break_stmt
@@ -2057,7 +2058,7 @@
// : CONTINUING body_stmt
Maybe<ast::BlockStatement*> ParserImpl::continuing_stmt() {
if (!match(Token::Type::kContinuing))
- return create<ast::BlockStatement>();
+ return create<ast::BlockStatement>(Source{});
return expect_body_stmt();
}
diff --git a/src/transform/bound_array_accessors_test.cc b/src/transform/bound_array_accessors_test.cc
index 24a7242..2f878d0 100644
--- a/src/transform/bound_array_accessors_test.cc
+++ b/src/transform/bound_array_accessors_test.cc
@@ -91,7 +91,7 @@
};
struct ModuleBuilder : public ast::BuilderWithModule {
- ModuleBuilder() : body_(create<ast::BlockStatement>()) {
+ ModuleBuilder() : body_(create<ast::BlockStatement>(Source{})) {
mod->AddFunction(create<ast::Function>(
Source{}, mod->RegisterSymbol("func"), "func", ast::VariableList{},
ty.void_, body_, ast::FunctionDecorationList{}));
@@ -106,7 +106,7 @@
virtual void Build() = 0;
void OnVariableBuilt(ast::Variable* var) override {
ASSERT_NE(body_, nullptr);
- body_->append(create<ast::VariableDeclStatement>(var));
+ body_->append(create<ast::VariableDeclStatement>(Source{}, var));
}
ast::BlockStatement* body_ = nullptr;
};
diff --git a/src/transform/emit_vertex_point_size.cc b/src/transform/emit_vertex_point_size.cc
index 14d79e2..1d22a26 100644
--- a/src/transform/emit_vertex_point_size.cc
+++ b/src/transform/emit_vertex_point_size.cc
@@ -65,12 +65,12 @@
mod->AddGlobalVariable(pointsize_var);
// Build the AST expression & statement for assigning pointsize one.
- auto* one = mod->create<ast::ScalarConstructorExpression>(Source{},
- mod->create<ast::FloatLiteral>(Source{}, f32, 1.0f));
+ auto* one = mod->create<ast::ScalarConstructorExpression>(
+ Source{}, mod->create<ast::FloatLiteral>(Source{}, f32, 1.0f));
auto* pointsize_ident = mod->create<ast::IdentifierExpression>(
Source{}, mod->RegisterSymbol(kPointSizeVar), kPointSizeVar);
auto* pointsize_assign =
- mod->create<ast::AssignmentStatement>(pointsize_ident, one);
+ mod->create<ast::AssignmentStatement>(Source{}, pointsize_ident, one);
// Add the pointsize assignment statement to the front of all vertex stages.
for (auto* func : mod->functions()) {
diff --git a/src/transform/emit_vertex_point_size_test.cc b/src/transform/emit_vertex_point_size_test.cc
index f0d6ba8..d6f5627 100644
--- a/src/transform/emit_vertex_point_size_test.cc
+++ b/src/transform/emit_vertex_point_size_test.cc
@@ -56,8 +56,8 @@
auto* block = create<ast::BlockStatement>(Source{});
block->append(create<ast::VariableDeclStatement>(
- Var("builtin_assignments_should_happen_before_this",
- tint::ast::StorageClass::kFunction, ty.f32)));
+ Source{}, Var("builtin_assignments_should_happen_before_this",
+ tint::ast::StorageClass::kFunction, ty.f32)));
auto a_sym = mod->RegisterSymbol("non_entry_a");
mod->AddFunction(create<ast::Function>(
diff --git a/src/transform/first_index_offset.cc b/src/transform/first_index_offset.cc
index 5f1e026..81e9bc3 100644
--- a/src/transform/first_index_offset.cc
+++ b/src/transform/first_index_offset.cc
@@ -270,7 +270,7 @@
true, // is_const
constructor, // constructor
ast::VariableDecorationList{}); // decorations
- return mod->create<ast::VariableDeclStatement>(var);
+ return mod->create<ast::VariableDeclStatement>(Source{}, var);
}
} // namespace transform
diff --git a/src/transform/first_index_offset_test.cc b/src/transform/first_index_offset_test.cc
index 0ac7cfc..88196b3 100644
--- a/src/transform/first_index_offset_test.cc
+++ b/src/transform/first_index_offset_test.cc
@@ -61,7 +61,7 @@
ast::VariableList params = {}) {
auto* func = create<ast::Function>(
Source{}, mod->RegisterSymbol(name), name, std::move(params), ty.u32,
- create<ast::BlockStatement>(), ast::FunctionDecorationList());
+ create<ast::BlockStatement>(Source{}), ast::FunctionDecorationList());
mod->AddFunction(func);
return func;
}
diff --git a/src/transform/vertex_pulling.cc b/src/transform/vertex_pulling.cc
index 96f7588..41a42c2 100644
--- a/src/transform/vertex_pulling.cc
+++ b/src/transform/vertex_pulling.cc
@@ -292,18 +292,18 @@
// location.
// A block statement allowing us to use append instead of insert
- auto* block = mod->create<ast::BlockStatement>();
+ auto* block = mod->create<ast::BlockStatement>(Source{});
// Declare the |kPullingPosVarName| variable in the shader
- auto* pos_declaration =
- mod->create<ast::VariableDeclStatement>(mod->create<ast::Variable>(
- Source{}, // source
- kPullingPosVarName, // name
- ast::StorageClass::kFunction, // storage_class
- GetI32Type(), // type
- false, // is_const
- nullptr, // constructor
- ast::VariableDecorationList{})); // decorations
+ auto* pos_declaration = mod->create<ast::VariableDeclStatement>(
+ Source{}, mod->create<ast::Variable>(
+ Source{}, // source
+ kPullingPosVarName, // name
+ ast::StorageClass::kFunction, // storage_class
+ GetI32Type(), // type
+ false, // is_const
+ nullptr, // constructor
+ ast::VariableDecorationList{})); // decorations
// |kPullingPosVarName| refers to the byte location of the current read. We
// declare a variable in the shader to avoid having to reuse Expression
@@ -338,10 +338,11 @@
// Update position of the read
auto* set_pos_expr = mod->create<ast::AssignmentStatement>(
- CreatePullingPositionIdent(), pos_value);
+ Source{}, CreatePullingPositionIdent(), pos_value);
block->append(set_pos_expr);
block->append(mod->create<ast::AssignmentStatement>(
+ Source{},
mod->create<ast::IdentifierExpression>(
Source{}, mod->RegisterSymbol(v->name()), v->name()),
AccessByFormat(i, attribute_desc.format)));
diff --git a/src/transform/vertex_pulling_test.cc b/src/transform/vertex_pulling_test.cc
index 8d950d5..b066e16 100644
--- a/src/transform/vertex_pulling_test.cc
+++ b/src/transform/vertex_pulling_test.cc
@@ -48,7 +48,7 @@
void InitBasicModule() {
auto* func = create<ast::Function>(
Source{}, mod_->RegisterSymbol("main"), "main", ast::VariableList{},
- mod_->create<ast::type::Void>(), create<ast::BlockStatement>(),
+ mod_->create<ast::type::Void>(), create<ast::BlockStatement>(Source{}),
ast::FunctionDecorationList{create<ast::StageDecoration>(
ast::PipelineStage::kVertex, Source{})});
mod()->AddFunction(func);
@@ -135,7 +135,7 @@
TEST_F(VertexPullingTest, Error_EntryPointWrongStage) {
auto* func = create<ast::Function>(
Source{}, mod()->RegisterSymbol("main"), "main", ast::VariableList{},
- mod()->create<ast::type::Void>(), create<ast::BlockStatement>(),
+ mod()->create<ast::type::Void>(), create<ast::BlockStatement>(Source{}),
ast::FunctionDecorationList{
create<ast::StageDecoration>(ast::PipelineStage::kFragment, Source{}),
});
diff --git a/src/type_determiner_test.cc b/src/type_determiner_test.cc
index db2bed6..182f77b 100644
--- a/src/type_determiner_test.cc
+++ b/src/type_determiner_test.cc
@@ -132,7 +132,7 @@
auto* rhs = create<ast::ScalarConstructorExpression>(
Source{}, create<ast::FloatLiteral>(Source{}, &f32, 2.3f));
- ast::AssignmentStatement assign(lhs, rhs);
+ ast::AssignmentStatement assign(Source{}, lhs, rhs);
EXPECT_TRUE(td()->DetermineResultType(&assign));
ASSERT_NE(lhs->result_type(), nullptr);
@@ -151,12 +151,12 @@
auto* rhs = create<ast::ScalarConstructorExpression>(
Source{}, create<ast::FloatLiteral>(Source{}, &f32, 2.3f));
- auto* body = create<ast::BlockStatement>();
- body->append(create<ast::AssignmentStatement>(lhs, rhs));
+ auto* body = create<ast::BlockStatement>(Source{});
+ body->append(create<ast::AssignmentStatement>(Source{}, lhs, rhs));
ast::CaseSelectorList lit;
lit.push_back(create<ast::SintLiteral>(Source{}, &i32, 3));
- ast::CaseStatement cse(lit, body);
+ ast::CaseStatement cse(Source{}, lit, body);
EXPECT_TRUE(td()->DetermineResultType(&cse));
ASSERT_NE(lhs->result_type(), nullptr);
@@ -174,8 +174,8 @@
auto* rhs = create<ast::ScalarConstructorExpression>(
Source{}, create<ast::FloatLiteral>(Source{}, &f32, 2.3f));
- ast::BlockStatement block;
- block.append(create<ast::AssignmentStatement>(lhs, rhs));
+ ast::BlockStatement block(Source{});
+ block.append(create<ast::AssignmentStatement>(Source{}, lhs, rhs));
EXPECT_TRUE(td()->DetermineResultType(&block));
ASSERT_NE(lhs->result_type(), nullptr);
@@ -193,10 +193,11 @@
auto* rhs = create<ast::ScalarConstructorExpression>(
Source{}, create<ast::FloatLiteral>(Source{}, &f32, 2.3f));
- auto* body = create<ast::BlockStatement>();
- body->append(create<ast::AssignmentStatement>(lhs, rhs));
+ auto* body = create<ast::BlockStatement>(Source{});
+ body->append(create<ast::AssignmentStatement>(Source{}, lhs, rhs));
ast::ElseStatement stmt(
+ Source{},
create<ast::ScalarConstructorExpression>(
Source{}, create<ast::SintLiteral>(Source{}, &i32, 3)),
body);
@@ -219,10 +220,12 @@
auto* else_rhs = create<ast::ScalarConstructorExpression>(
Source{}, create<ast::FloatLiteral>(Source{}, &f32, 2.3f));
- auto* else_body = create<ast::BlockStatement>();
- else_body->append(create<ast::AssignmentStatement>(else_lhs, else_rhs));
+ auto* else_body = create<ast::BlockStatement>(Source{});
+ else_body->append(
+ create<ast::AssignmentStatement>(Source{}, else_lhs, else_rhs));
auto* else_stmt = create<ast::ElseStatement>(
+ Source{},
create<ast::ScalarConstructorExpression>(
Source{}, create<ast::SintLiteral>(Source{}, &i32, 3)),
else_body);
@@ -232,8 +235,8 @@
auto* rhs = create<ast::ScalarConstructorExpression>(
Source{}, create<ast::FloatLiteral>(Source{}, &f32, 2.3f));
- auto* body = create<ast::BlockStatement>();
- body->append(create<ast::AssignmentStatement>(lhs, rhs));
+ auto* body = create<ast::BlockStatement>(Source{});
+ body->append(create<ast::AssignmentStatement>(Source{}, lhs, rhs));
ast::IfStatement stmt(
Source{},
@@ -263,19 +266,19 @@
auto* body_rhs = create<ast::ScalarConstructorExpression>(
Source{}, create<ast::FloatLiteral>(Source{}, &f32, 2.3f));
- auto* body = create<ast::BlockStatement>();
- body->append(create<ast::AssignmentStatement>(body_lhs, body_rhs));
+ auto* body = create<ast::BlockStatement>(Source{});
+ body->append(create<ast::AssignmentStatement>(Source{}, body_lhs, body_rhs));
auto* continuing_lhs = create<ast::ScalarConstructorExpression>(
Source{}, create<ast::SintLiteral>(Source{}, &i32, 2));
auto* continuing_rhs = create<ast::ScalarConstructorExpression>(
Source{}, create<ast::FloatLiteral>(Source{}, &f32, 2.3f));
- auto* continuing = create<ast::BlockStatement>();
- continuing->append(
- create<ast::AssignmentStatement>(continuing_lhs, continuing_rhs));
+ auto* continuing = create<ast::BlockStatement>(Source{});
+ continuing->append(create<ast::AssignmentStatement>(Source{}, continuing_lhs,
+ continuing_rhs));
- ast::LoopStatement stmt(body, continuing);
+ ast::LoopStatement stmt(Source{}, body, continuing);
EXPECT_TRUE(td()->DetermineResultType(&stmt));
ASSERT_NE(body_lhs->result_type(), nullptr);
@@ -316,16 +319,17 @@
auto* rhs = create<ast::ScalarConstructorExpression>(
Source{}, create<ast::FloatLiteral>(Source{}, &f32, 2.3f));
- auto* body = create<ast::BlockStatement>();
- body->append(create<ast::AssignmentStatement>(lhs, rhs));
+ auto* body = create<ast::BlockStatement>(Source{});
+ body->append(create<ast::AssignmentStatement>(Source{}, lhs, rhs));
ast::CaseSelectorList lit;
lit.push_back(create<ast::SintLiteral>(Source{}, &i32, 3));
ast::CaseStatementList cases;
- cases.push_back(create<ast::CaseStatement>(lit, body));
+ cases.push_back(create<ast::CaseStatement>(Source{}, lit, body));
ast::SwitchStatement stmt(
+ Source{},
create<ast::ScalarConstructorExpression>(
Source{}, create<ast::SintLiteral>(Source{}, &i32, 2)),
cases);
@@ -346,7 +350,7 @@
ast::VariableList params;
auto* func = create<ast::Function>(
Source{}, mod->RegisterSymbol("my_func"), "my_func", params, &f32,
- create<ast::BlockStatement>(), ast::FunctionDecorationList{});
+ create<ast::BlockStatement>(Source{}), ast::FunctionDecorationList{});
mod->AddFunction(func);
// Register the function
@@ -359,7 +363,7 @@
Source{}, mod->RegisterSymbol("my_func"), "my_func"),
call_params);
- ast::CallStatement call(expr);
+ ast::CallStatement call(Source{}, expr);
EXPECT_TRUE(td()->DetermineResultType(&call));
ASSERT_NE(expr->result_type(), nullptr);
EXPECT_TRUE(expr->result_type()->Is<ast::type::F32>());
@@ -376,15 +380,15 @@
mod->RegisterSymbol("func"), "func"),
call_params);
ast::VariableList params0;
- auto* main_body = create<ast::BlockStatement>();
- main_body->append(create<ast::CallStatement>(call_expr));
+ auto* main_body = create<ast::BlockStatement>(Source{});
+ main_body->append(create<ast::CallStatement>(Source{}, call_expr));
main_body->append(create<ast::ReturnStatement>(Source{}));
auto* func_main = create<ast::Function>(Source{}, mod->RegisterSymbol("main"),
"main", params0, &f32, main_body,
ast::FunctionDecorationList{});
mod->AddFunction(func_main);
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::ReturnStatement>(Source{}));
auto* func =
create<ast::Function>(Source{}, mod->RegisterSymbol("func"), "func",
@@ -410,7 +414,7 @@
ast::VariableDecorationList{}); // decorations
auto* init = var->constructor();
- ast::VariableDeclStatement decl(var);
+ ast::VariableDeclStatement decl(Source{}, var);
EXPECT_TRUE(td()->DetermineResultType(&decl));
ASSERT_NE(init->result_type(), nullptr);
@@ -671,7 +675,7 @@
ast::VariableList params;
auto* func = create<ast::Function>(
Source{}, mod->RegisterSymbol("my_func"), "my_func", params, &f32,
- create<ast::BlockStatement>(), ast::FunctionDecorationList{});
+ create<ast::BlockStatement>(Source{}), ast::FunctionDecorationList{});
mod->AddFunction(func);
// Register the function
@@ -694,7 +698,7 @@
ast::VariableList params;
auto* func = create<ast::Function>(
Source{}, mod->RegisterSymbol("my_func"), "my_func", params, &f32,
- create<ast::BlockStatement>(), ast::FunctionDecorationList{});
+ create<ast::BlockStatement>(Source{}), ast::FunctionDecorationList{});
mod->AddFunction(func);
// Register the function
@@ -847,11 +851,12 @@
nullptr, // constructor
ast::VariableDecorationList{}); // decorations
- auto* body = create<ast::BlockStatement>();
- body->append(create<ast::VariableDeclStatement>(var));
+ auto* body = create<ast::BlockStatement>(Source{});
+ body->append(create<ast::VariableDeclStatement>(Source{}, var));
body->append(create<ast::AssignmentStatement>(
- my_var, create<ast::IdentifierExpression>(
- Source{}, mod->RegisterSymbol("my_var"), "my_var")));
+ Source{}, my_var,
+ create<ast::IdentifierExpression>(Source{}, mod->RegisterSymbol("my_var"),
+ "my_var")));
ast::Function f(Source{}, mod->RegisterSymbol("my_func"), "my_func", {}, &f32,
body, ast::FunctionDecorationList{});
@@ -868,8 +873,9 @@
auto* my_var = create<ast::IdentifierExpression>(
Source{}, mod->RegisterSymbol("my_var"), "my_var");
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::VariableDeclStatement>(
+ Source{},
create<ast::Variable>(Source{}, // source
"my_var", // name
ast::StorageClass::kNone, // storage_class
@@ -879,8 +885,9 @@
ast::VariableDecorationList{}))); // decorations
body->append(create<ast::AssignmentStatement>(
- my_var, create<ast::IdentifierExpression>(
- Source{}, mod->RegisterSymbol("my_var"), "my_var")));
+ Source{}, my_var,
+ create<ast::IdentifierExpression>(Source{}, mod->RegisterSymbol("my_var"),
+ "my_var")));
ast::Function f(Source{}, mod->RegisterSymbol("myfunc"), "my_func", {}, &f32,
body, ast::FunctionDecorationList{});
@@ -902,8 +909,9 @@
auto* my_var = create<ast::IdentifierExpression>(
Source{}, mod->RegisterSymbol("my_var"), "my_var");
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::VariableDeclStatement>(
+ Source{},
create<ast::Variable>(Source{}, // source
"my_var", // name
ast::StorageClass::kNone, // storage_class
@@ -913,8 +921,9 @@
ast::VariableDecorationList{}))); // decorations
body->append(create<ast::AssignmentStatement>(
- my_var, create<ast::IdentifierExpression>(
- Source{}, mod->RegisterSymbol("my_var"), "my_var")));
+ Source{}, my_var,
+ create<ast::IdentifierExpression>(Source{}, mod->RegisterSymbol("my_var"),
+ "my_var")));
ast::Function f(Source{}, mod->RegisterSymbol("my_func"), "my_func", {}, &f32,
body, ast::FunctionDecorationList{});
@@ -935,7 +944,7 @@
ast::VariableList params;
auto* func = create<ast::Function>(
Source{}, mod->RegisterSymbol("my_func"), "my_func", params, &f32,
- create<ast::BlockStatement>(), ast::FunctionDecorationList{});
+ create<ast::BlockStatement>(Source{}), ast::FunctionDecorationList{});
mod->AddFunction(func);
// Register the function
@@ -1004,23 +1013,27 @@
mod->AddGlobalVariable(priv_var);
ast::VariableList params;
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(
Source{}, mod->RegisterSymbol("out_var"), "out_var"),
create<ast::IdentifierExpression>(Source{}, mod->RegisterSymbol("in_var"),
"in_var")));
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod->RegisterSymbol("wg_var"),
"wg_var"),
create<ast::IdentifierExpression>(Source{}, mod->RegisterSymbol("wg_var"),
"wg_var")));
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod->RegisterSymbol("sb_var"),
"sb_var"),
create<ast::IdentifierExpression>(Source{}, mod->RegisterSymbol("sb_var"),
"sb_var")));
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(
Source{}, mod->RegisterSymbol("priv_var"), "priv_var"),
create<ast::IdentifierExpression>(
@@ -1093,23 +1106,27 @@
mod->AddGlobalVariable(wg_var);
mod->AddGlobalVariable(priv_var);
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(
Source{}, mod->RegisterSymbol("out_var"), "out_var"),
create<ast::IdentifierExpression>(Source{}, mod->RegisterSymbol("in_var"),
"in_var")));
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod->RegisterSymbol("wg_var"),
"wg_var"),
create<ast::IdentifierExpression>(Source{}, mod->RegisterSymbol("wg_var"),
"wg_var")));
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod->RegisterSymbol("sb_var"),
"sb_var"),
create<ast::IdentifierExpression>(Source{}, mod->RegisterSymbol("sb_var"),
"sb_var")));
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(
Source{}, mod->RegisterSymbol("priv_var"), "priv_var"),
create<ast::IdentifierExpression>(
@@ -1121,8 +1138,9 @@
mod->AddFunction(func);
- body = create<ast::BlockStatement>();
+ body = create<ast::BlockStatement>(Source{});
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(
Source{}, mod->RegisterSymbol("out_var"), "out_var"),
create<ast::CallExpression>(
@@ -1160,9 +1178,10 @@
nullptr, // constructor
ast::VariableDecorationList{}); // decorations
- auto* body = create<ast::BlockStatement>();
- body->append(create<ast::VariableDeclStatement>(var));
+ auto* body = create<ast::BlockStatement>(Source{});
+ body->append(create<ast::VariableDeclStatement>(Source{}, var));
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod->RegisterSymbol("var"),
"var"),
create<ast::ScalarConstructorExpression>(
@@ -2839,9 +2858,9 @@
false, // is_const
nullptr, // constructor
ast::VariableDecorationList{}); // decorations
- auto* stmt = create<ast::VariableDeclStatement>(var);
+ auto* stmt = create<ast::VariableDeclStatement>(Source{}, var);
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(stmt);
auto* func = create<ast::Function>(Source{}, mod->RegisterSymbol("func"),
"func", ast::VariableList{}, &i32, body,
@@ -2864,9 +2883,9 @@
true, // is_const
nullptr, // constructor
ast::VariableDecorationList{}); // decorations
- auto* stmt = create<ast::VariableDeclStatement>(var);
+ auto* stmt = create<ast::VariableDeclStatement>(Source{}, var);
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(stmt);
auto* func = create<ast::Function>(Source{}, mod->RegisterSymbol("func"),
"func", ast::VariableList{}, &i32, body,
@@ -2889,9 +2908,9 @@
false, // is_const
nullptr, // constructor
ast::VariableDecorationList{}); // decorations
- auto* stmt = create<ast::VariableDeclStatement>(var);
+ auto* stmt = create<ast::VariableDeclStatement>(Source{}, var);
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(stmt);
auto* func = create<ast::Function>(Source{}, mod->RegisterSymbol("func"),
"func", ast::VariableList{}, &i32, body,
@@ -5209,13 +5228,14 @@
// ep_2 -> {}
ast::VariableList params;
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
auto* func_b =
create<ast::Function>(Source{}, mod->RegisterSymbol("b"), "b", params,
&f32, body, ast::FunctionDecorationList{});
- body = create<ast::BlockStatement>();
+ body = create<ast::BlockStatement>(Source{});
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod->RegisterSymbol("second"),
"second"),
create<ast::CallExpression>(Source{},
@@ -5226,8 +5246,9 @@
create<ast::Function>(Source{}, mod->RegisterSymbol("c"), "c", params,
&f32, body, ast::FunctionDecorationList{});
- body = create<ast::BlockStatement>();
+ body = create<ast::BlockStatement>(Source{});
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod->RegisterSymbol("first"),
"first"),
create<ast::CallExpression>(Source{},
@@ -5238,8 +5259,9 @@
create<ast::Function>(Source{}, mod->RegisterSymbol("a"), "a", params,
&f32, body, ast::FunctionDecorationList{});
- body = create<ast::BlockStatement>();
+ body = create<ast::BlockStatement>(Source{});
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod->RegisterSymbol("call_a"),
"call_a"),
create<ast::CallExpression>(Source{},
@@ -5247,6 +5269,7 @@
Source{}, mod->RegisterSymbol("a"), "a"),
ast::ExpressionList{})));
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod->RegisterSymbol("call_b"),
"call_b"),
create<ast::CallExpression>(Source{},
@@ -5259,8 +5282,9 @@
create<ast::StageDecoration>(ast::PipelineStage::kVertex, Source{}),
});
- body = create<ast::BlockStatement>();
+ body = create<ast::BlockStatement>(Source{});
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod->RegisterSymbol("call_c"),
"call_c"),
create<ast::CallExpression>(Source{},
diff --git a/src/validator/validator_control_block_test.cc b/src/validator/validator_control_block_test.cc
index 4076fba..55a44ac 100644
--- a/src/validator/validator_control_block_test.cc
+++ b/src/validator/validator_control_block_test.cc
@@ -57,13 +57,14 @@
auto* cond = create<ast::IdentifierExpression>(
Source{Source::Location{12, 34}}, mod()->RegisterSymbol("a"), "a");
ast::CaseSelectorList default_csl;
- auto* block_default = create<ast::BlockStatement>();
+ auto* block_default = create<ast::BlockStatement>(Source{});
ast::CaseStatementList body;
- body.push_back(create<ast::CaseStatement>(default_csl, block_default));
+ body.push_back(
+ create<ast::CaseStatement>(Source{}, default_csl, block_default));
- auto* block = create<ast::BlockStatement>();
- block->append(create<ast::VariableDeclStatement>(var));
- block->append(create<ast::SwitchStatement>(cond, body));
+ auto* block = create<ast::BlockStatement>(Source{});
+ block->append(create<ast::VariableDeclStatement>(Source{}, var));
+ block->append(create<ast::SwitchStatement>(Source{}, cond, body));
EXPECT_TRUE(td()->DetermineStatements(block)) << td()->error();
EXPECT_FALSE(v()->ValidateStatements(block));
@@ -94,11 +95,11 @@
ast::CaseSelectorList csl;
csl.push_back(create<ast::SintLiteral>(Source{}, &i32, 1));
ast::CaseStatementList body;
- body.push_back(
- create<ast::CaseStatement>(csl, create<ast::BlockStatement>()));
+ body.push_back(create<ast::CaseStatement>(
+ Source{}, csl, create<ast::BlockStatement>(Source{})));
- auto* block = create<ast::BlockStatement>();
- block->append(create<ast::VariableDeclStatement>(var));
+ auto* block = create<ast::BlockStatement>(Source{});
+ block->append(create<ast::VariableDeclStatement>(Source{}, var));
block->append(create<ast::SwitchStatement>(Source{Source::Location{12, 34}},
cond, body));
@@ -133,22 +134,23 @@
Source{}, mod()->RegisterSymbol("a"), "a");
ast::CaseSelectorList default_csl_1;
- auto* block_default_1 = create<ast::BlockStatement>();
+ auto* block_default_1 = create<ast::BlockStatement>(Source{});
switch_body.push_back(
- create<ast::CaseStatement>(default_csl_1, block_default_1));
+ create<ast::CaseStatement>(Source{}, default_csl_1, block_default_1));
ast::CaseSelectorList csl_case_1;
csl_case_1.push_back(create<ast::SintLiteral>(Source{}, &i32, 1));
- auto* block_case_1 = create<ast::BlockStatement>();
- switch_body.push_back(create<ast::CaseStatement>(csl_case_1, block_case_1));
+ auto* block_case_1 = create<ast::BlockStatement>(Source{});
+ switch_body.push_back(
+ create<ast::CaseStatement>(Source{}, csl_case_1, block_case_1));
ast::CaseSelectorList default_csl_2;
- auto* block_default_2 = create<ast::BlockStatement>();
+ auto* block_default_2 = create<ast::BlockStatement>(Source{});
switch_body.push_back(
- create<ast::CaseStatement>(default_csl_2, block_default_2));
+ create<ast::CaseStatement>(Source{}, default_csl_2, block_default_2));
- auto* block = create<ast::BlockStatement>();
- block->append(create<ast::VariableDeclStatement>(var));
+ auto* block = create<ast::BlockStatement>(Source{});
+ block->append(create<ast::VariableDeclStatement>(Source{}, var));
block->append(create<ast::SwitchStatement>(Source{Source::Location{12, 34}},
cond, switch_body));
@@ -185,16 +187,18 @@
ast::CaseSelectorList csl;
csl.push_back(create<ast::UintLiteral>(Source{}, &u32, 1));
- switch_body.push_back(create<ast::CaseStatement>(
- Source{Source::Location{12, 34}}, csl, create<ast::BlockStatement>()));
+ switch_body.push_back(
+ create<ast::CaseStatement>(Source{Source::Location{12, 34}}, csl,
+ create<ast::BlockStatement>(Source{})));
ast::CaseSelectorList default_csl;
- auto* block_default = create<ast::BlockStatement>();
- switch_body.push_back(create<ast::CaseStatement>(default_csl, block_default));
+ auto* block_default = create<ast::BlockStatement>(Source{});
+ switch_body.push_back(
+ create<ast::CaseStatement>(Source{}, default_csl, block_default));
- auto* block = create<ast::BlockStatement>();
- block->append(create<ast::VariableDeclStatement>(var));
- block->append(create<ast::SwitchStatement>(cond, switch_body));
+ auto* block = create<ast::BlockStatement>(Source{});
+ block->append(create<ast::VariableDeclStatement>(Source{}, var));
+ block->append(create<ast::SwitchStatement>(Source{}, cond, switch_body));
EXPECT_TRUE(td()->DetermineStatements(block)) << td()->error();
EXPECT_FALSE(v()->ValidateStatements(block));
@@ -229,16 +233,18 @@
ast::CaseSelectorList csl;
csl.push_back(create<ast::SintLiteral>(Source{}, &i32, -1));
- switch_body.push_back(create<ast::CaseStatement>(
- Source{Source::Location{12, 34}}, csl, create<ast::BlockStatement>()));
+ switch_body.push_back(
+ create<ast::CaseStatement>(Source{Source::Location{12, 34}}, csl,
+ create<ast::BlockStatement>(Source{})));
ast::CaseSelectorList default_csl;
- auto* block_default = create<ast::BlockStatement>();
- switch_body.push_back(create<ast::CaseStatement>(default_csl, block_default));
+ auto* block_default = create<ast::BlockStatement>(Source{});
+ switch_body.push_back(
+ create<ast::CaseStatement>(Source{}, default_csl, block_default));
- auto* block = create<ast::BlockStatement>();
- block->append(create<ast::VariableDeclStatement>(var));
- block->append(create<ast::SwitchStatement>(cond, switch_body));
+ auto* block = create<ast::BlockStatement>(Source{});
+ block->append(create<ast::VariableDeclStatement>(Source{}, var));
+ block->append(create<ast::SwitchStatement>(Source{}, cond, switch_body));
EXPECT_TRUE(td()->DetermineStatements(block)) << td()->error();
EXPECT_FALSE(v()->ValidateStatements(block));
@@ -272,22 +278,24 @@
ast::CaseSelectorList csl_1;
csl_1.push_back(create<ast::UintLiteral>(Source{}, &u32, 0));
- switch_body.push_back(
- create<ast::CaseStatement>(csl_1, create<ast::BlockStatement>()));
+ switch_body.push_back(create<ast::CaseStatement>(
+ Source{}, csl_1, create<ast::BlockStatement>(Source{})));
ast::CaseSelectorList csl_2;
csl_2.push_back(create<ast::UintLiteral>(Source{}, &u32, 2));
csl_2.push_back(create<ast::UintLiteral>(Source{}, &u32, 2));
- switch_body.push_back(create<ast::CaseStatement>(
- Source{Source::Location{12, 34}}, csl_2, create<ast::BlockStatement>()));
+ switch_body.push_back(
+ create<ast::CaseStatement>(Source{Source::Location{12, 34}}, csl_2,
+ create<ast::BlockStatement>(Source{})));
ast::CaseSelectorList default_csl;
- auto* block_default = create<ast::BlockStatement>();
- switch_body.push_back(create<ast::CaseStatement>(default_csl, block_default));
+ auto* block_default = create<ast::BlockStatement>(Source{});
+ switch_body.push_back(
+ create<ast::CaseStatement>(Source{}, default_csl, block_default));
- auto* block = create<ast::BlockStatement>();
- block->append(create<ast::VariableDeclStatement>(var));
- block->append(create<ast::SwitchStatement>(cond, switch_body));
+ auto* block = create<ast::BlockStatement>(Source{});
+ block->append(create<ast::VariableDeclStatement>(Source{}, var));
+ block->append(create<ast::SwitchStatement>(Source{}, cond, switch_body));
EXPECT_TRUE(td()->DetermineStatements(block)) << td()->error();
EXPECT_FALSE(v()->ValidateStatements(block));
@@ -321,24 +329,26 @@
ast::CaseSelectorList csl_1;
csl_1.push_back(create<ast::SintLiteral>(Source{}, &i32, 10));
- switch_body.push_back(
- create<ast::CaseStatement>(csl_1, create<ast::BlockStatement>()));
+ switch_body.push_back(create<ast::CaseStatement>(
+ Source{}, csl_1, create<ast::BlockStatement>(Source{})));
ast::CaseSelectorList csl_2;
csl_2.push_back(create<ast::SintLiteral>(Source{}, &i32, 0));
csl_2.push_back(create<ast::SintLiteral>(Source{}, &i32, 1));
csl_2.push_back(create<ast::SintLiteral>(Source{}, &i32, 2));
csl_2.push_back(create<ast::SintLiteral>(Source{}, &i32, 10));
- switch_body.push_back(create<ast::CaseStatement>(
- Source{Source::Location{12, 34}}, csl_2, create<ast::BlockStatement>()));
+ switch_body.push_back(
+ create<ast::CaseStatement>(Source{Source::Location{12, 34}}, csl_2,
+ create<ast::BlockStatement>(Source{})));
ast::CaseSelectorList default_csl;
- auto* block_default = create<ast::BlockStatement>();
- switch_body.push_back(create<ast::CaseStatement>(default_csl, block_default));
+ auto* block_default = create<ast::BlockStatement>(Source{});
+ switch_body.push_back(
+ create<ast::CaseStatement>(Source{}, default_csl, block_default));
- auto* block = create<ast::BlockStatement>();
- block->append(create<ast::VariableDeclStatement>(var));
- block->append(create<ast::SwitchStatement>(cond, switch_body));
+ auto* block = create<ast::BlockStatement>(Source{});
+ block->append(create<ast::VariableDeclStatement>(Source{}, var));
+ block->append(create<ast::SwitchStatement>(Source{}, cond, switch_body));
EXPECT_TRUE(td()->DetermineStatements(block)) << td()->error();
EXPECT_FALSE(v()->ValidateStatements(block));
@@ -367,15 +377,16 @@
auto* cond = create<ast::IdentifierExpression>(
Source{}, mod()->RegisterSymbol("a"), "a");
ast::CaseSelectorList default_csl;
- auto* block_default = create<ast::BlockStatement>();
+ auto* block_default = create<ast::BlockStatement>(Source{});
block_default->append(
create<ast::FallthroughStatement>(Source{Source::Location{12, 34}}));
ast::CaseStatementList body;
- body.push_back(create<ast::CaseStatement>(default_csl, block_default));
+ body.push_back(
+ create<ast::CaseStatement>(Source{}, default_csl, block_default));
- auto* block = create<ast::BlockStatement>();
- block->append(create<ast::VariableDeclStatement>(var));
- block->append(create<ast::SwitchStatement>(cond, body));
+ auto* block = create<ast::BlockStatement>(Source{});
+ block->append(create<ast::VariableDeclStatement>(Source{}, var));
+ block->append(create<ast::SwitchStatement>(Source{}, cond, body));
EXPECT_TRUE(td()->DetermineStatements(block)) << td()->error();
EXPECT_FALSE(v()->ValidateStatements(block));
@@ -405,18 +416,18 @@
auto* cond = create<ast::IdentifierExpression>(
Source{}, mod()->RegisterSymbol("a"), "a");
ast::CaseSelectorList default_csl;
- auto* block_default = create<ast::BlockStatement>();
+ auto* block_default = create<ast::BlockStatement>(Source{});
ast::CaseStatementList body;
body.push_back(create<ast::CaseStatement>(Source{Source::Location{12, 34}},
default_csl, block_default));
ast::CaseSelectorList case_csl;
case_csl.push_back(create<ast::SintLiteral>(Source{}, &i32, 5));
- auto* block_case = create<ast::BlockStatement>();
- body.push_back(create<ast::CaseStatement>(case_csl, block_case));
+ auto* block_case = create<ast::BlockStatement>(Source{});
+ body.push_back(create<ast::CaseStatement>(Source{}, case_csl, block_case));
- auto* block = create<ast::BlockStatement>();
- block->append(create<ast::VariableDeclStatement>(var));
- block->append(create<ast::SwitchStatement>(cond, body));
+ auto* block = create<ast::BlockStatement>(Source{});
+ block->append(create<ast::VariableDeclStatement>(Source{}, var));
+ block->append(create<ast::SwitchStatement>(Source{}, cond, body));
EXPECT_TRUE(td()->DetermineStatements(block)) << td()->error();
EXPECT_TRUE(v()->ValidateStatements(block)) << v()->error();
@@ -446,14 +457,14 @@
auto* cond = create<ast::IdentifierExpression>(
Source{}, mod()->RegisterSymbol("a"), "a");
ast::CaseSelectorList default_csl;
- auto* block_default = create<ast::BlockStatement>();
+ auto* block_default = create<ast::BlockStatement>(Source{});
ast::CaseStatementList body;
body.push_back(create<ast::CaseStatement>(Source{Source::Location{12, 34}},
default_csl, block_default));
- auto* block = create<ast::BlockStatement>();
- block->append(create<ast::VariableDeclStatement>(var));
- block->append(create<ast::SwitchStatement>(cond, body));
+ auto* block = create<ast::BlockStatement>(Source{});
+ block->append(create<ast::VariableDeclStatement>(Source{}, var));
+ block->append(create<ast::SwitchStatement>(Source{}, cond, body));
mod()->AddConstructedType(&my_int);
diff --git a/src/validator/validator_function_test.cc b/src/validator/validator_function_test.cc
index 2078a1a..50420bc 100644
--- a/src/validator/validator_function_test.cc
+++ b/src/validator/validator_function_test.cc
@@ -52,8 +52,8 @@
ast::VariableList params;
ast::type::Void void_type;
- auto* body = create<ast::BlockStatement>();
- body->append(create<ast::VariableDeclStatement>(var));
+ auto* body = create<ast::BlockStatement>(Source{});
+ body->append(create<ast::VariableDeclStatement>(Source{}, var));
auto* func = create<ast::Function>(
Source{Source::Location{12, 34}}, mod()->RegisterSymbol("func"), "func",
params, &void_type, body,
@@ -74,7 +74,7 @@
ast::VariableList params;
auto* func = create<ast::Function>(
Source{Source::Location{12, 34}}, mod()->RegisterSymbol("func"), "func",
- params, &void_type, create<ast::BlockStatement>(),
+ params, &void_type, create<ast::BlockStatement>(Source{}),
ast::FunctionDecorationList{
create<ast::StageDecoration>(ast::PipelineStage::kVertex, Source{}),
});
@@ -101,8 +101,8 @@
ast::VariableList params;
ast::type::Void void_type;
- auto* body = create<ast::BlockStatement>();
- body->append(create<ast::VariableDeclStatement>(var));
+ auto* body = create<ast::BlockStatement>(Source{});
+ body->append(create<ast::VariableDeclStatement>(Source{}, var));
auto* func = create<ast::Function>(
Source{Source::Location{12, 34}}, mod()->RegisterSymbol("func"), "func",
params, &i32, body, ast::FunctionDecorationList{});
@@ -121,7 +121,7 @@
ast::VariableList params;
auto* func = create<ast::Function>(
Source{Source::Location{12, 34}}, mod()->RegisterSymbol("func"), "func",
- params, &i32, create<ast::BlockStatement>(),
+ params, &i32, create<ast::BlockStatement>(Source{}),
ast::FunctionDecorationList{});
mod()->AddFunction(func);
@@ -137,7 +137,7 @@
ast::type::Void void_type;
ast::VariableList params;
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::ReturnStatement>(Source{}));
auto* func = create<ast::Function>(
Source{}, mod()->RegisterSymbol("func"), "func", params, &void_type, body,
@@ -155,7 +155,7 @@
ast::type::Void void_type;
ast::type::I32 i32;
ast::VariableList params;
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
auto* return_expr = create<ast::ScalarConstructorExpression>(
Source{}, create<ast::SintLiteral>(Source{}, &i32, 2));
@@ -179,7 +179,7 @@
ast::type::I32 i32;
ast::type::F32 f32;
ast::VariableList params;
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
auto* return_expr = create<ast::ScalarConstructorExpression>(
Source{}, create<ast::SintLiteral>(Source{}, &i32, 2));
@@ -205,7 +205,7 @@
ast::type::I32 i32;
ast::VariableList params;
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
auto* return_expr = create<ast::ScalarConstructorExpression>(
Source{}, create<ast::SintLiteral>(Source{}, &i32, 2));
@@ -215,7 +215,7 @@
params, &i32, body, ast::FunctionDecorationList{});
ast::VariableList params_copy;
- auto* body_copy = create<ast::BlockStatement>();
+ auto* body_copy = create<ast::BlockStatement>(Source{});
auto* return_expr_copy = create<ast::ScalarConstructorExpression>(
Source{}, create<ast::SintLiteral>(Source{}, &i32, 2));
@@ -243,8 +243,8 @@
"func"),
call_params);
ast::VariableList params0;
- auto* body0 = create<ast::BlockStatement>();
- body0->append(create<ast::CallStatement>(call_expr));
+ auto* body0 = create<ast::BlockStatement>(Source{});
+ body0->append(create<ast::CallStatement>(Source{}, call_expr));
body0->append(create<ast::ReturnStatement>(Source{}));
auto* func0 = create<ast::Function>(Source{}, mod()->RegisterSymbol("func"),
"func", params0, &f32, body0,
@@ -275,8 +275,8 @@
ast::VariableDecorationList{}); // decorations
ast::VariableList params0;
- auto* body0 = create<ast::BlockStatement>();
- body0->append(create<ast::VariableDeclStatement>(var));
+ auto* body0 = create<ast::BlockStatement>(Source{});
+ body0->append(create<ast::VariableDeclStatement>(Source{}, var));
auto* return_expr = create<ast::ScalarConstructorExpression>(
Source{}, create<ast::SintLiteral>(Source{}, &i32, 2));
@@ -299,7 +299,7 @@
auto* return_expr = create<ast::ScalarConstructorExpression>(
Source{}, create<ast::SintLiteral>(Source{}, &i32, 0));
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::ReturnStatement>(Source{}, return_expr));
auto* func = create<ast::Function>(
Source{Source::Location{12, 34}}, mod()->RegisterSymbol("vtx_main"),
@@ -329,7 +329,7 @@
false, // is_const
nullptr, // constructor
ast::VariableDecorationList{})); // decorations
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::ReturnStatement>(Source{}));
auto* func = create<ast::Function>(
Source{Source::Location{12, 34}}, mod()->RegisterSymbol("vtx_func"),
@@ -352,7 +352,7 @@
// fn main() -> void { return; }
ast::type::Void void_type;
ast::VariableList params;
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::ReturnStatement>(Source{}));
auto* func = create<ast::Function>(
Source{Source::Location{12, 34}}, mod()->RegisterSymbol("main"), "main",
@@ -375,7 +375,7 @@
// fn vtx_func() -> void { return; }
ast::type::Void void_type;
ast::VariableList params;
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::ReturnStatement>(Source{}));
auto* func = create<ast::Function>(
Source{}, mod()->RegisterSymbol("vtx_func"), "vtx_func", params,
@@ -393,7 +393,7 @@
// fn vtx_func() -> void { return; }
ast::type::Void void_type;
ast::VariableList params;
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::ReturnStatement>(Source{}));
auto* func = create<ast::Function>(
Source{}, mod()->RegisterSymbol("vtx_func"), "vtx_func", params,
diff --git a/src/validator/validator_test.cc b/src/validator/validator_test.cc
index a3cac0e..765ebee 100644
--- a/src/validator/validator_test.cc
+++ b/src/validator/validator_test.cc
@@ -103,7 +103,7 @@
auto* rhs = create<ast::ScalarConstructorExpression>(
Source{}, create<ast::SintLiteral>(Source{}, &i32, 2));
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::AssignmentStatement>(
Source{Source::Location{12, 34}}, lhs, rhs));
@@ -199,8 +199,8 @@
auto* rhs = create<ast::ScalarConstructorExpression>(
Source{}, create<ast::SintLiteral>(Source{}, &i32, 2));
- auto* body = create<ast::BlockStatement>();
- body->append(create<ast::VariableDeclStatement>(var));
+ auto* body = create<ast::BlockStatement>(Source{});
+ body->append(create<ast::VariableDeclStatement>(Source{}, var));
body->append(create<ast::AssignmentStatement>(
Source{Source::Location{12, 34}}, lhs, rhs));
@@ -234,8 +234,8 @@
auto* rhs = create<ast::ScalarConstructorExpression>(
Source{}, create<ast::FloatLiteral>(Source{}, &f32, 2.3f));
- ast::BlockStatement block;
- block.append(create<ast::VariableDeclStatement>(var));
+ ast::BlockStatement block(Source{});
+ block.append(create<ast::VariableDeclStatement>(Source{}, var));
block.append(create<ast::AssignmentStatement>(
Source{Source::Location{12, 34}}, lhs, rhs));
@@ -339,7 +339,7 @@
Source{}, create<ast::FloatLiteral>(Source{}, &f32, 3.14f));
ast::VariableList params;
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::AssignmentStatement>(
Source{Source::Location{12, 34}}, lhs, rhs));
@@ -379,7 +379,7 @@
ast::VariableList params;
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::AssignmentStatement>(
Source{Source::Location{12, 34}}, lhs, rhs));
body->append(create<ast::ReturnStatement>(Source{}));
@@ -415,15 +415,15 @@
ast::type::Bool bool_type;
auto* cond = create<ast::ScalarConstructorExpression>(
Source{}, create<ast::BoolLiteral>(Source{}, &bool_type, true));
- auto* body = create<ast::BlockStatement>();
- body->append(create<ast::VariableDeclStatement>(var));
+ auto* body = create<ast::BlockStatement>(Source{});
+ body->append(create<ast::VariableDeclStatement>(Source{}, var));
auto* lhs = create<ast::IdentifierExpression>(
Source{Source::Location{12, 34}}, mod()->RegisterSymbol("a"), "a");
auto* rhs = create<ast::ScalarConstructorExpression>(
Source{}, create<ast::FloatLiteral>(Source{}, &f32, 3.14f));
- auto* outer_body = create<ast::BlockStatement>();
+ auto* outer_body = create<ast::BlockStatement>(Source{});
outer_body->append(
create<ast::IfStatement>(Source{}, cond, body, ast::ElseStatementList{}));
outer_body->append(create<ast::AssignmentStatement>(
@@ -461,12 +461,12 @@
ast::type::Bool bool_type;
auto* cond = create<ast::ScalarConstructorExpression>(
Source{}, create<ast::BoolLiteral>(Source{}, &bool_type, true));
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::AssignmentStatement>(
Source{Source::Location{12, 34}}, lhs, rhs));
- auto* outer_body = create<ast::BlockStatement>();
- outer_body->append(create<ast::VariableDeclStatement>(var));
+ auto* outer_body = create<ast::BlockStatement>(Source{});
+ outer_body->append(create<ast::VariableDeclStatement>(Source{}, var));
outer_body->append(
create<ast::IfStatement>(Source{}, cond, body, ast::ElseStatementList{}));
EXPECT_TRUE(td()->DetermineStatements(outer_body)) << td()->error();
@@ -564,8 +564,8 @@
auto* rhs = create<ast::ScalarConstructorExpression>(
Source{}, create<ast::SintLiteral>(Source{}, &i32, 2));
- auto* body = create<ast::BlockStatement>();
- body->append(create<ast::VariableDeclStatement>(var));
+ auto* body = create<ast::BlockStatement>(Source{});
+ body->append(create<ast::VariableDeclStatement>(Source{}, var));
body->append(create<ast::AssignmentStatement>(
Source{Source::Location{12, 34}}, lhs, rhs));
@@ -609,7 +609,7 @@
create<ast::FloatLiteral>(Source{}, &f32, 2.0)), // constructor
ast::VariableDecorationList{}); // decorations
ast::VariableList params;
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::VariableDeclStatement>(
Source{Source::Location{12, 34}}, var));
auto* func = create<ast::Function>(Source{}, mod()->RegisterSymbol("my_func"),
@@ -655,8 +655,8 @@
ast::VariableDecorationList{}); // decorations
ast::VariableList params;
- auto* body = create<ast::BlockStatement>();
- body->append(create<ast::VariableDeclStatement>(var));
+ auto* body = create<ast::BlockStatement>(Source{});
+ body->append(create<ast::VariableDeclStatement>(Source{}, var));
body->append(create<ast::VariableDeclStatement>(
Source{Source::Location{12, 34}}, var_a_float));
auto* func = create<ast::Function>(Source{}, mod()->RegisterSymbol("my_func"),
@@ -691,8 +691,8 @@
ast::type::Bool bool_type;
auto* cond = create<ast::ScalarConstructorExpression>(
Source{}, create<ast::BoolLiteral>(Source{}, &bool_type, true));
- auto* body = create<ast::BlockStatement>();
- body->append(create<ast::VariableDeclStatement>(var));
+ auto* body = create<ast::BlockStatement>(Source{});
+ body->append(create<ast::VariableDeclStatement>(Source{}, var));
auto* var_a_float = create<ast::Variable>(
Source{}, // source
@@ -705,7 +705,7 @@
create<ast::FloatLiteral>(Source{}, &f32, 3.14)), // constructor
ast::VariableDecorationList{}); // decorations
- auto* outer_body = create<ast::BlockStatement>();
+ auto* outer_body = create<ast::BlockStatement>(Source{});
outer_body->append(
create<ast::IfStatement>(Source{}, cond, body, ast::ElseStatementList{}));
outer_body->append(create<ast::VariableDeclStatement>(
@@ -748,12 +748,12 @@
ast::type::Bool bool_type;
auto* cond = create<ast::ScalarConstructorExpression>(
Source{}, create<ast::BoolLiteral>(Source{}, &bool_type, true));
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::VariableDeclStatement>(
Source{Source::Location{12, 34}}, var));
- auto* outer_body = create<ast::BlockStatement>();
- outer_body->append(create<ast::VariableDeclStatement>(var_a_float));
+ auto* outer_body = create<ast::BlockStatement>(Source{});
+ outer_body->append(create<ast::VariableDeclStatement>(Source{}, var_a_float));
outer_body->append(
create<ast::IfStatement>(Source{}, cond, body, ast::ElseStatementList{}));
@@ -790,7 +790,7 @@
ast::VariableDecorationList{}); // decorations
ast::VariableList params0;
- auto* body0 = create<ast::BlockStatement>();
+ auto* body0 = create<ast::BlockStatement>(Source{});
body0->append(create<ast::VariableDeclStatement>(
Source{Source::Location{12, 34}}, var0));
body0->append(create<ast::ReturnStatement>(Source{}));
@@ -799,7 +799,7 @@
ast::FunctionDecorationList{});
ast::VariableList params1;
- auto* body1 = create<ast::BlockStatement>();
+ auto* body1 = create<ast::BlockStatement>(Source{});
body1->append(create<ast::VariableDeclStatement>(
Source{Source::Location{13, 34}}, var1));
body1->append(create<ast::ReturnStatement>(Source{}));
@@ -838,8 +838,8 @@
auto* rhs = create<ast::ScalarConstructorExpression>(
Source{}, create<ast::SintLiteral>(Source{}, &i32, 2));
- auto* body = create<ast::BlockStatement>();
- body->append(create<ast::VariableDeclStatement>(var));
+ auto* body = create<ast::BlockStatement>(Source{});
+ body->append(create<ast::VariableDeclStatement>(Source{}, var));
body->append(create<ast::AssignmentStatement>(
Source{Source::Location{12, 34}}, lhs, rhs));
diff --git a/src/validator/validator_type_test.cc b/src/validator/validator_type_test.cc
index 0687ed9..6cb0a7c 100644
--- a/src/validator/validator_type_test.cc
+++ b/src/validator/validator_type_test.cc
@@ -203,7 +203,7 @@
ast::VariableDecorationList{}); // decorations
ast::VariableList params;
ast::type::Void void_type;
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::VariableDeclStatement>(
Source{Source::Location{12, 34}}, var));
diff --git a/src/writer/hlsl/generator_impl_assign_test.cc b/src/writer/hlsl/generator_impl_assign_test.cc
index 46e08bb..fcf37e8 100644
--- a/src/writer/hlsl/generator_impl_assign_test.cc
+++ b/src/writer/hlsl/generator_impl_assign_test.cc
@@ -32,7 +32,7 @@
Source{}, mod.RegisterSymbol("lhs"), "lhs");
auto* rhs = create<ast::IdentifierExpression>(
Source{}, mod.RegisterSymbol("rhs"), "rhs");
- ast::AssignmentStatement assign(lhs, rhs);
+ ast::AssignmentStatement assign(Source{}, lhs, rhs);
gen.increment_indent();
diff --git a/src/writer/hlsl/generator_impl_binary_test.cc b/src/writer/hlsl/generator_impl_binary_test.cc
index b32ae91..3c52f9d 100644
--- a/src/writer/hlsl/generator_impl_binary_test.cc
+++ b/src/writer/hlsl/generator_impl_binary_test.cc
@@ -464,17 +464,18 @@
ast::type::I32 i32;
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::ReturnStatement>(
Source{}, create<ast::ScalarConstructorExpression>(
Source{}, create<ast::SintLiteral>(Source{}, &i32, 3))));
- auto* else_stmt = create<ast::ElseStatement>(body);
+ auto* else_stmt = create<ast::ElseStatement>(Source{}, nullptr, body);
- body = create<ast::BlockStatement>();
+ body = create<ast::BlockStatement>(Source{});
body->append(create<ast::ReturnStatement>(
Source{}, create<ast::ScalarConstructorExpression>(
Source{}, create<ast::SintLiteral>(Source{}, &i32, 2))));
auto* else_if_stmt = create<ast::ElseStatement>(
+ Source{},
create<ast::BinaryExpression>(
Source{}, ast::BinaryOp::kLogicalOr,
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("b"),
@@ -483,7 +484,7 @@
"c")),
body);
- body = create<ast::BlockStatement>();
+ body = create<ast::BlockStatement>(Source{});
body->append(create<ast::ReturnStatement>(
Source{}, create<ast::ScalarConstructorExpression>(
Source{}, create<ast::SintLiteral>(Source{}, &i32, 1))));
@@ -563,11 +564,12 @@
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("d"), "d");
ast::AssignmentStatement expr(
- a, create<ast::BinaryExpression>(
- Source{}, ast::BinaryOp::kLogicalAnd,
- create<ast::BinaryExpression>(Source{}, ast::BinaryOp::kLogicalOr,
- b, c),
- d));
+ Source{}, a,
+ create<ast::BinaryExpression>(
+ Source{}, ast::BinaryOp::kLogicalAnd,
+ create<ast::BinaryExpression>(Source{}, ast::BinaryOp::kLogicalOr, b,
+ c),
+ d));
ASSERT_TRUE(gen.EmitStatement(out, &expr)) << gen.error();
EXPECT_EQ(result(), R"(bool _tint_tmp = b;
@@ -606,7 +608,7 @@
d), // constructor
ast::VariableDecorationList{}); // decorations
- ast::VariableDeclStatement expr(var);
+ ast::VariableDeclStatement expr(Source{}, var);
ASSERT_TRUE(gen.EmitStatement(out, &expr)) << gen.error();
EXPECT_EQ(result(), R"(bool _tint_tmp = b;
@@ -657,9 +659,10 @@
ast::type::Void void_type;
- auto* func = create<ast::Function>(
- Source{}, mod.RegisterSymbol("foo"), "foo", ast::VariableList{},
- &void_type, create<ast::BlockStatement>(), ast::FunctionDecorationList{});
+ auto* func = create<ast::Function>(Source{}, mod.RegisterSymbol("foo"), "foo",
+ ast::VariableList{}, &void_type,
+ create<ast::BlockStatement>(Source{}),
+ ast::FunctionDecorationList{});
mod.AddFunction(func);
ast::ExpressionList params;
@@ -688,11 +691,12 @@
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("d"),
"d"))));
- ast::CallStatement expr(create<ast::CallExpression>(
- Source{},
- create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("foo"),
- "foo"),
- params));
+ ast::CallStatement expr(Source{},
+ create<ast::CallExpression>(
+ Source{},
+ create<ast::IdentifierExpression>(
+ Source{}, mod.RegisterSymbol("foo"), "foo"),
+ params));
ASSERT_TRUE(gen.EmitStatement(out, &expr)) << gen.error();
EXPECT_EQ(result(), R"(bool _tint_tmp = a;
diff --git a/src/writer/hlsl/generator_impl_block_test.cc b/src/writer/hlsl/generator_impl_block_test.cc
index 7f0194e..0186588 100644
--- a/src/writer/hlsl/generator_impl_block_test.cc
+++ b/src/writer/hlsl/generator_impl_block_test.cc
@@ -26,8 +26,8 @@
using HlslGeneratorImplTest_Block = TestHelper;
TEST_F(HlslGeneratorImplTest_Block, Emit_Block) {
- ast::BlockStatement b;
- b.append(create<ast::DiscardStatement>());
+ ast::BlockStatement b(Source{});
+ b.append(create<ast::DiscardStatement>(Source{}));
gen.increment_indent();
@@ -39,8 +39,8 @@
}
TEST_F(HlslGeneratorImplTest_Block, Emit_Block_WithoutNewline) {
- ast::BlockStatement b;
- b.append(create<ast::DiscardStatement>());
+ ast::BlockStatement b(Source{});
+ b.append(create<ast::DiscardStatement>(Source{}));
gen.increment_indent();
diff --git a/src/writer/hlsl/generator_impl_break_test.cc b/src/writer/hlsl/generator_impl_break_test.cc
index 3eb2f7f..d5a6e34 100644
--- a/src/writer/hlsl/generator_impl_break_test.cc
+++ b/src/writer/hlsl/generator_impl_break_test.cc
@@ -27,7 +27,7 @@
using HlslGeneratorImplTest_Break = TestHelper;
TEST_F(HlslGeneratorImplTest_Break, Emit_Break) {
- ast::BreakStatement b;
+ ast::BreakStatement b(Source{});
gen.increment_indent();
diff --git a/src/writer/hlsl/generator_impl_call_test.cc b/src/writer/hlsl/generator_impl_call_test.cc
index 60b9c22..50d06d6 100644
--- a/src/writer/hlsl/generator_impl_call_test.cc
+++ b/src/writer/hlsl/generator_impl_call_test.cc
@@ -36,9 +36,10 @@
Source{}, mod.RegisterSymbol("my_func"), "my_func");
ast::CallExpression call(Source{}, id, {});
- auto* func = create<ast::Function>(
- Source{}, mod.RegisterSymbol("my_func"), "my_func", ast::VariableList{},
- &void_type, create<ast::BlockStatement>(), ast::FunctionDecorationList{});
+ auto* func = create<ast::Function>(Source{}, mod.RegisterSymbol("my_func"),
+ "my_func", ast::VariableList{}, &void_type,
+ create<ast::BlockStatement>(Source{}),
+ ast::FunctionDecorationList{});
mod.AddFunction(func);
ASSERT_TRUE(gen.EmitExpression(pre, out, &call)) << gen.error();
@@ -57,9 +58,10 @@
Source{}, mod.RegisterSymbol("param2"), "param2"));
ast::CallExpression call(Source{}, id, params);
- auto* func = create<ast::Function>(
- Source{}, mod.RegisterSymbol("my_func"), "my_func", ast::VariableList{},
- &void_type, create<ast::BlockStatement>(), ast::FunctionDecorationList{});
+ auto* func = create<ast::Function>(Source{}, mod.RegisterSymbol("my_func"),
+ "my_func", ast::VariableList{}, &void_type,
+ create<ast::BlockStatement>(Source{}),
+ ast::FunctionDecorationList{});
mod.AddFunction(func);
ASSERT_TRUE(gen.EmitExpression(pre, out, &call)) << gen.error();
@@ -76,11 +78,13 @@
Source{}, mod.RegisterSymbol("param1"), "param1"));
params.push_back(create<ast::IdentifierExpression>(
Source{}, mod.RegisterSymbol("param2"), "param2"));
- ast::CallStatement call(create<ast::CallExpression>(Source{}, id, params));
+ ast::CallStatement call(Source{},
+ create<ast::CallExpression>(Source{}, id, params));
- auto* func = create<ast::Function>(
- Source{}, mod.RegisterSymbol("my_func"), "my_func", ast::VariableList{},
- &void_type, create<ast::BlockStatement>(), ast::FunctionDecorationList{});
+ auto* func = create<ast::Function>(Source{}, mod.RegisterSymbol("my_func"),
+ "my_func", ast::VariableList{}, &void_type,
+ create<ast::BlockStatement>(Source{}),
+ ast::FunctionDecorationList{});
mod.AddFunction(func);
gen.increment_indent();
ASSERT_TRUE(gen.EmitStatement(out, &call)) << gen.error();
diff --git a/src/writer/hlsl/generator_impl_case_test.cc b/src/writer/hlsl/generator_impl_case_test.cc
index c6117bb..55105f8 100644
--- a/src/writer/hlsl/generator_impl_case_test.cc
+++ b/src/writer/hlsl/generator_impl_case_test.cc
@@ -33,12 +33,12 @@
TEST_F(HlslGeneratorImplTest_Case, Emit_Case) {
ast::type::I32 i32;
- auto* body = create<ast::BlockStatement>();
- body->append(create<ast::BreakStatement>());
+ auto* body = create<ast::BlockStatement>(Source{});
+ body->append(create<ast::BreakStatement>(Source{}));
ast::CaseSelectorList lit;
lit.push_back(create<ast::SintLiteral>(Source{}, &i32, 5));
- ast::CaseStatement c(lit, body);
+ ast::CaseStatement c(Source{}, lit, body);
gen.increment_indent();
@@ -54,7 +54,7 @@
ast::CaseSelectorList lit;
lit.push_back(create<ast::SintLiteral>(Source{}, &i32, 5));
- ast::CaseStatement c(lit, create<ast::BlockStatement>());
+ ast::CaseStatement c(Source{}, lit, create<ast::BlockStatement>(Source{}));
gen.increment_indent();
@@ -68,12 +68,12 @@
TEST_F(HlslGeneratorImplTest_Case, Emit_Case_WithFallthrough) {
ast::type::I32 i32;
- auto* body = create<ast::BlockStatement>();
- body->append(create<ast::FallthroughStatement>());
+ auto* body = create<ast::BlockStatement>(Source{});
+ body->append(create<ast::FallthroughStatement>(Source{}));
ast::CaseSelectorList lit;
lit.push_back(create<ast::SintLiteral>(Source{}, &i32, 5));
- ast::CaseStatement c(lit, body);
+ ast::CaseStatement c(Source{}, lit, body);
gen.increment_indent();
@@ -87,13 +87,13 @@
TEST_F(HlslGeneratorImplTest_Case, Emit_Case_MultipleSelectors) {
ast::type::I32 i32;
- auto* body = create<ast::BlockStatement>();
- body->append(create<ast::BreakStatement>());
+ auto* body = create<ast::BlockStatement>(Source{});
+ body->append(create<ast::BreakStatement>(Source{}));
ast::CaseSelectorList lit;
lit.push_back(create<ast::SintLiteral>(Source{}, &i32, 5));
lit.push_back(create<ast::SintLiteral>(Source{}, &i32, 6));
- ast::CaseStatement c(lit, body);
+ ast::CaseStatement c(Source{}, lit, body);
gen.increment_indent();
@@ -106,9 +106,9 @@
}
TEST_F(HlslGeneratorImplTest_Case, Emit_Case_Default) {
- auto* body = create<ast::BlockStatement>();
- body->append(create<ast::BreakStatement>());
- ast::CaseStatement c(body);
+ auto* body = create<ast::BlockStatement>(Source{});
+ body->append(create<ast::BreakStatement>(Source{}));
+ ast::CaseStatement c(Source{}, ast::CaseSelectorList{}, body);
gen.increment_indent();
diff --git a/src/writer/hlsl/generator_impl_continue_test.cc b/src/writer/hlsl/generator_impl_continue_test.cc
index 7b548b9..0502ea6 100644
--- a/src/writer/hlsl/generator_impl_continue_test.cc
+++ b/src/writer/hlsl/generator_impl_continue_test.cc
@@ -27,7 +27,7 @@
using HlslGeneratorImplTest_Continue = TestHelper;
TEST_F(HlslGeneratorImplTest_Continue, Emit_Continue) {
- ast::ContinueStatement c;
+ ast::ContinueStatement c(Source{});
gen.increment_indent();
diff --git a/src/writer/hlsl/generator_impl_discard_test.cc b/src/writer/hlsl/generator_impl_discard_test.cc
index 422d39c..5e7a13c 100644
--- a/src/writer/hlsl/generator_impl_discard_test.cc
+++ b/src/writer/hlsl/generator_impl_discard_test.cc
@@ -24,7 +24,7 @@
using HlslGeneratorImplTest_Discard = TestHelper;
TEST_F(HlslGeneratorImplTest_Discard, Emit_Discard) {
- ast::DiscardStatement stmt;
+ ast::DiscardStatement stmt(Source{});
gen.increment_indent();
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 a61d366..2deaf62 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
@@ -82,13 +82,15 @@
mod.AddGlobalVariable(bar_var);
ast::VariableList params;
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("foo"),
"foo"),
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("foo"),
"foo")));
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("bar"),
"bar"),
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("bar"),
@@ -159,13 +161,15 @@
ast::VariableList params;
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("foo"),
"foo"),
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("foo"),
"foo")));
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("bar"),
"bar"),
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("bar"),
@@ -236,13 +240,15 @@
ast::VariableList params;
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("foo"),
"foo"),
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("foo"),
"foo")));
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("bar"),
"bar"),
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("bar"),
@@ -312,13 +318,15 @@
mod.AddGlobalVariable(bar_var);
ast::VariableList params;
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("foo"),
"foo"),
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("foo"),
"foo")));
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("bar"),
"bar"),
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("bar"),
@@ -385,13 +393,15 @@
mod.AddGlobalVariable(bar_var);
ast::VariableList params;
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("foo"),
"foo"),
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("foo"),
"foo")));
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("bar"),
"bar"),
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("bar"),
@@ -453,13 +463,15 @@
mod.AddGlobalVariable(bar_var);
ast::VariableList params;
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("foo"),
"foo"),
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("foo"),
"foo")));
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("bar"),
"bar"),
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("bar"),
@@ -528,8 +540,9 @@
mod.AddGlobalVariable(depth_var);
ast::VariableList params;
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("depth"),
"depth"),
create<ast::MemberAccessorExpression>(
diff --git a/src/writer/hlsl/generator_impl_function_test.cc b/src/writer/hlsl/generator_impl_function_test.cc
index 619b7ec..6a5cecc 100644
--- a/src/writer/hlsl/generator_impl_function_test.cc
+++ b/src/writer/hlsl/generator_impl_function_test.cc
@@ -55,7 +55,7 @@
TEST_F(HlslGeneratorImplTest_Function, Emit_Function) {
ast::type::Void void_type;
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::ReturnStatement>(Source{}));
auto* func = create<ast::Function>(Source{}, mod.RegisterSymbol("my_func"),
"my_func", ast::VariableList{}, &void_type,
@@ -75,7 +75,7 @@
TEST_F(HlslGeneratorImplTest_Function, Emit_Function_Name_Collision) {
ast::type::Void void_type;
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::ReturnStatement>(Source{}));
auto* func = create<ast::Function>(
Source{}, mod.RegisterSymbol("GeometryShader"), "GeometryShader",
@@ -116,7 +116,7 @@
ast::type::Void void_type;
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::ReturnStatement>(Source{}));
auto* func = create<ast::Function>(Source{}, mod.RegisterSymbol("my_func"),
"my_func", params, &void_type, body,
@@ -169,8 +169,9 @@
mod.AddGlobalVariable(bar_var);
ast::VariableList params;
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("bar"),
"bar"),
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("foo"),
@@ -241,8 +242,9 @@
mod.AddGlobalVariable(depth_var);
ast::VariableList params;
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("depth"),
"depth"),
create<ast::MemberAccessorExpression>(
@@ -317,8 +319,8 @@
"x")), // constructor
ast::VariableDecorationList{}); // decorations
- auto* body = create<ast::BlockStatement>();
- body->append(create<ast::VariableDeclStatement>(var));
+ auto* body = create<ast::BlockStatement>(Source{});
+ body->append(create<ast::VariableDeclStatement>(Source{}, var));
body->append(create<ast::ReturnStatement>(Source{}));
auto* func = create<ast::Function>(
Source{}, mod.RegisterSymbol("frag_main"), "frag_main", params,
@@ -394,8 +396,8 @@
"x")), // constructor
ast::VariableDecorationList{}); // decorations
- auto* body = create<ast::BlockStatement>();
- body->append(create<ast::VariableDeclStatement>(var));
+ auto* body = create<ast::BlockStatement>(Source{});
+ body->append(create<ast::VariableDeclStatement>(Source{}, var));
body->append(create<ast::ReturnStatement>(Source{}));
auto* func = create<ast::Function>(
Source{}, mod.RegisterSymbol("frag_main"), "frag_main", params,
@@ -473,8 +475,8 @@
"b")), // constructor
ast::VariableDecorationList{}); // decorations
- auto* body = create<ast::BlockStatement>();
- body->append(create<ast::VariableDeclStatement>(var));
+ auto* body = create<ast::BlockStatement>(Source{});
+ body->append(create<ast::VariableDeclStatement>(Source{}, var));
body->append(create<ast::ReturnStatement>(Source{}));
auto* func = create<ast::Function>(
Source{}, mod.RegisterSymbol("frag_main"), "frag_main", params,
@@ -548,8 +550,8 @@
"b")), // constructor
ast::VariableDecorationList{}); // decorations
- auto* body = create<ast::BlockStatement>();
- body->append(create<ast::VariableDeclStatement>(var));
+ auto* body = create<ast::BlockStatement>(Source{});
+ body->append(create<ast::VariableDeclStatement>(Source{}, var));
body->append(create<ast::ReturnStatement>(Source{}));
auto* func = create<ast::Function>(
Source{}, mod.RegisterSymbol("frag_main"), "frag_main", params,
@@ -621,7 +623,7 @@
create<ast::ScalarConstructorExpression>(
Source{}, create<ast::FloatLiteral>(Source{}, &f32, 2.0f)));
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(assign);
body->append(create<ast::ReturnStatement>(Source{}));
auto* func = create<ast::Function>(
@@ -705,13 +707,15 @@
nullptr, // constructor
ast::VariableDecorationList{})); // decorations
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("bar"),
"bar"),
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("foo"),
"foo")));
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("val"),
"val"),
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("param"),
@@ -729,8 +733,9 @@
expr.push_back(create<ast::ScalarConstructorExpression>(
Source{}, create<ast::FloatLiteral>(Source{}, &f32, 1.0f)));
- body = create<ast::BlockStatement>();
+ body = create<ast::BlockStatement>(Source{});
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("bar"),
"bar"),
create<ast::CallExpression>(
@@ -805,7 +810,7 @@
nullptr, // constructor
ast::VariableDecorationList{})); // decorations
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::ReturnStatement>(
Source{}, create<ast::IdentifierExpression>(
Source{}, mod.RegisterSymbol("param"), "param")));
@@ -819,8 +824,9 @@
expr.push_back(create<ast::ScalarConstructorExpression>(
Source{}, create<ast::FloatLiteral>(Source{}, &f32, 1.0f)));
- body = create<ast::BlockStatement>();
+ body = create<ast::BlockStatement>(Source{});
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("depth"),
"depth"),
create<ast::CallExpression>(
@@ -903,8 +909,9 @@
nullptr, // constructor
ast::VariableDecorationList{})); // decorations
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("depth"),
"depth"),
create<ast::MemberAccessorExpression>(
@@ -926,8 +933,9 @@
expr.push_back(create<ast::ScalarConstructorExpression>(
Source{}, create<ast::FloatLiteral>(Source{}, &f32, 1.0f)));
- body = create<ast::BlockStatement>();
+ body = create<ast::BlockStatement>(Source{});
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("depth"),
"depth"),
create<ast::CallExpression>(
@@ -1001,7 +1009,7 @@
nullptr, // constructor
ast::VariableDecorationList{})); // decorations
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::ReturnStatement>(
Source{}, create<ast::MemberAccessorExpression>(
Source{},
@@ -1032,8 +1040,8 @@
expr), // constructor
ast::VariableDecorationList{}); // decorations
- body = create<ast::BlockStatement>();
- body->append(create<ast::VariableDeclStatement>(var));
+ body = create<ast::BlockStatement>(Source{});
+ body->append(create<ast::VariableDeclStatement>(Source{}, var));
body->append(create<ast::ReturnStatement>(Source{}));
auto* func = create<ast::Function>(
Source{}, mod.RegisterSymbol("frag_main"), "frag_main", params,
@@ -1095,7 +1103,7 @@
nullptr, // constructor
ast::VariableDecorationList{})); // decorations
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::ReturnStatement>(
Source{}, create<ast::MemberAccessorExpression>(
Source{},
@@ -1126,8 +1134,8 @@
expr), // constructor
ast::VariableDecorationList{}); // decorations
- body = create<ast::BlockStatement>();
- body->append(create<ast::VariableDeclStatement>(var));
+ body = create<ast::BlockStatement>(Source{});
+ body->append(create<ast::VariableDeclStatement>(Source{}, var));
body->append(create<ast::ReturnStatement>(Source{}));
auto* func = create<ast::Function>(
Source{}, mod.RegisterSymbol("frag_main"), "frag_main", params,
@@ -1176,14 +1184,15 @@
mod.AddGlobalVariable(bar_var);
ast::VariableList params;
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("bar"),
"bar"),
create<ast::ScalarConstructorExpression>(
Source{}, create<ast::FloatLiteral>(Source{}, &f32, 1.0f))));
- auto* list = create<ast::BlockStatement>();
+ auto* list = create<ast::BlockStatement>(Source{});
list->append(create<ast::ReturnStatement>(Source{}));
body->append(create<ast::IfStatement>(
@@ -1229,7 +1238,7 @@
auto* func = create<ast::Function>(
Source{}, mod.RegisterSymbol("GeometryShader"), "GeometryShader",
- ast::VariableList{}, &void_type, create<ast::BlockStatement>(),
+ ast::VariableList{}, &void_type, create<ast::BlockStatement>(Source{}),
ast::FunctionDecorationList{
create<ast::StageDecoration>(ast::PipelineStage::kFragment, Source{}),
});
@@ -1248,7 +1257,7 @@
ast::type::Void void_type;
ast::VariableList params;
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::ReturnStatement>(Source{}));
auto* func = create<ast::Function>(
Source{}, mod.RegisterSymbol("main"), "main", params, &void_type, body,
@@ -1273,7 +1282,7 @@
ast::type::Void void_type;
ast::VariableList params;
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::ReturnStatement>(Source{}));
auto* func = create<ast::Function>(
Source{}, mod.RegisterSymbol("main"), "main", params, &void_type, body,
@@ -1310,7 +1319,7 @@
ast::type::Void void_type;
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::ReturnStatement>(Source{}));
auto* func = create<ast::Function>(Source{}, mod.RegisterSymbol("my_func"),
"my_func", params, &void_type, body,
@@ -1394,8 +1403,8 @@
"d")), // constructor
ast::VariableDecorationList{}); // decorations
- auto* body = create<ast::BlockStatement>();
- body->append(create<ast::VariableDeclStatement>(var));
+ auto* body = create<ast::BlockStatement>(Source{});
+ body->append(create<ast::VariableDeclStatement>(Source{}, var));
body->append(create<ast::ReturnStatement>(Source{}));
auto* func = create<ast::Function>(
Source{}, mod.RegisterSymbol("a"), "a", params, &void_type, body,
@@ -1423,8 +1432,8 @@
"d")), // constructor
ast::VariableDecorationList{}); // decorations
- auto* body = create<ast::BlockStatement>();
- body->append(create<ast::VariableDeclStatement>(var));
+ auto* body = create<ast::BlockStatement>(Source{});
+ body->append(create<ast::VariableDeclStatement>(Source{}, var));
body->append(create<ast::ReturnStatement>(Source{}));
auto* func = create<ast::Function>(
Source{}, mod.RegisterSymbol("b"), "b", params, &void_type, body,
diff --git a/src/writer/hlsl/generator_impl_if_test.cc b/src/writer/hlsl/generator_impl_if_test.cc
index 6da8512..664a76a 100644
--- a/src/writer/hlsl/generator_impl_if_test.cc
+++ b/src/writer/hlsl/generator_impl_if_test.cc
@@ -29,7 +29,7 @@
TEST_F(HlslGeneratorImplTest_If, Emit_If) {
auto* cond = create<ast::IdentifierExpression>(
Source{}, mod.RegisterSymbol("cond"), "cond");
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::ReturnStatement>(Source{}));
ast::IfStatement i(Source{}, cond, body, ast::ElseStatementList{});
@@ -45,16 +45,17 @@
TEST_F(HlslGeneratorImplTest_If, Emit_IfWithElseIf) {
auto* else_cond = create<ast::IdentifierExpression>(
Source{}, mod.RegisterSymbol("else_cond"), "else_cond");
- auto* else_body = create<ast::BlockStatement>();
+ auto* else_body = create<ast::BlockStatement>(Source{});
else_body->append(create<ast::ReturnStatement>(Source{}));
auto* cond = create<ast::IdentifierExpression>(
Source{}, mod.RegisterSymbol("cond"), "cond");
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::ReturnStatement>(Source{}));
- ast::IfStatement i(Source{}, cond, body,
- {create<ast::ElseStatement>(else_cond, else_body)});
+ ast::IfStatement i(
+ Source{}, cond, body,
+ {create<ast::ElseStatement>(Source{}, else_cond, else_body)});
gen.increment_indent();
@@ -70,16 +71,17 @@
}
TEST_F(HlslGeneratorImplTest_If, Emit_IfWithElse) {
- auto* else_body = create<ast::BlockStatement>();
+ auto* else_body = create<ast::BlockStatement>(Source{});
else_body->append(create<ast::ReturnStatement>(Source{}));
auto* cond = create<ast::IdentifierExpression>(
Source{}, mod.RegisterSymbol("cond"), "cond");
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::ReturnStatement>(Source{}));
- ast::IfStatement i(Source{}, cond, body,
- {create<ast::ElseStatement>(else_body)});
+ ast::IfStatement i(
+ Source{}, cond, body,
+ {create<ast::ElseStatement>(Source{}, nullptr, else_body)});
gen.increment_indent();
@@ -96,22 +98,23 @@
auto* else_cond = create<ast::IdentifierExpression>(
Source{}, mod.RegisterSymbol("else_cond"), "else_cond");
- auto* else_body = create<ast::BlockStatement>();
+ auto* else_body = create<ast::BlockStatement>(Source{});
else_body->append(create<ast::ReturnStatement>(Source{}));
- auto* else_body_2 = create<ast::BlockStatement>();
+ auto* else_body_2 = create<ast::BlockStatement>(Source{});
else_body_2->append(create<ast::ReturnStatement>(Source{}));
auto* cond = create<ast::IdentifierExpression>(
Source{}, mod.RegisterSymbol("cond"), "cond");
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::ReturnStatement>(Source{}));
- ast::IfStatement i(Source{}, cond, body,
- {
- create<ast::ElseStatement>(else_cond, else_body),
- create<ast::ElseStatement>(else_body_2),
- });
+ ast::IfStatement i(
+ Source{}, cond, body,
+ {
+ create<ast::ElseStatement>(Source{}, else_cond, else_body),
+ create<ast::ElseStatement>(Source{}, nullptr, else_body_2),
+ });
gen.increment_indent();
diff --git a/src/writer/hlsl/generator_impl_loop_test.cc b/src/writer/hlsl/generator_impl_loop_test.cc
index 6afc947..c413a52 100644
--- a/src/writer/hlsl/generator_impl_loop_test.cc
+++ b/src/writer/hlsl/generator_impl_loop_test.cc
@@ -34,10 +34,10 @@
using HlslGeneratorImplTest_Loop = TestHelper;
TEST_F(HlslGeneratorImplTest_Loop, Emit_Loop) {
- auto* body = create<ast::BlockStatement>();
- body->append(create<ast::DiscardStatement>());
+ auto* body = create<ast::BlockStatement>(Source{});
+ body->append(create<ast::DiscardStatement>(Source{}));
- ast::LoopStatement l(body, {});
+ ast::LoopStatement l(Source{}, body, {});
gen.increment_indent();
ASSERT_TRUE(gen.EmitStatement(out, &l)) << gen.error();
@@ -48,13 +48,13 @@
}
TEST_F(HlslGeneratorImplTest_Loop, Emit_LoopWithContinuing) {
- auto* body = create<ast::BlockStatement>();
- body->append(create<ast::DiscardStatement>());
+ auto* body = create<ast::BlockStatement>(Source{});
+ body->append(create<ast::DiscardStatement>(Source{}));
- auto* continuing = create<ast::BlockStatement>();
+ auto* continuing = create<ast::BlockStatement>(Source{});
continuing->append(create<ast::ReturnStatement>(Source{}));
- ast::LoopStatement l(body, continuing);
+ ast::LoopStatement l(Source{}, body, continuing);
gen.increment_indent();
ASSERT_TRUE(gen.EmitStatement(out, &l)) << gen.error();
@@ -75,15 +75,15 @@
TEST_F(HlslGeneratorImplTest_Loop, Emit_LoopNestedWithContinuing) {
ast::type::F32 f32;
- auto* body = create<ast::BlockStatement>();
- body->append(create<ast::DiscardStatement>());
+ auto* body = create<ast::BlockStatement>(Source{});
+ body->append(create<ast::DiscardStatement>(Source{}));
- auto* continuing = create<ast::BlockStatement>();
+ auto* continuing = create<ast::BlockStatement>(Source{});
continuing->append(create<ast::ReturnStatement>(Source{}));
- auto* inner = create<ast::LoopStatement>(body, continuing);
+ auto* inner = create<ast::LoopStatement>(Source{}, body, continuing);
- body = create<ast::BlockStatement>();
+ body = create<ast::BlockStatement>(Source{});
body->append(inner);
auto* lhs = create<ast::IdentifierExpression>(
@@ -91,10 +91,10 @@
auto* rhs = create<ast::IdentifierExpression>(
Source{}, mod.RegisterSymbol("rhs"), "rhs");
- continuing = create<ast::BlockStatement>();
- continuing->append(create<ast::AssignmentStatement>(lhs, rhs));
+ continuing = create<ast::BlockStatement>(Source{});
+ continuing->append(create<ast::AssignmentStatement>(Source{}, lhs, rhs));
- ast::LoopStatement outer(body, continuing);
+ ast::LoopStatement outer(Source{}, body, continuing);
gen.increment_indent();
ASSERT_TRUE(gen.EmitStatement(out, &outer)) << gen.error();
@@ -157,9 +157,10 @@
create<ast::FloatLiteral>(Source{}, &f32, 2.4)), // constructor
ast::VariableDecorationList{}); // decorations
- auto* body = create<ast::BlockStatement>();
- body->append(create<ast::VariableDeclStatement>(var));
+ auto* body = create<ast::BlockStatement>(Source{});
+ body->append(create<ast::VariableDeclStatement>(Source{}, var));
body->append(create<ast::VariableDeclStatement>(
+ Source{},
create<ast::Variable>(Source{}, // source
"other", // name
ast::StorageClass::kFunction, // storage_class
@@ -173,10 +174,10 @@
auto* rhs = create<ast::IdentifierExpression>(
Source{}, mod.RegisterSymbol("rhs"), "rhs");
- auto* continuing = create<ast::BlockStatement>();
- continuing->append(create<ast::AssignmentStatement>(lhs, rhs));
+ auto* continuing = create<ast::BlockStatement>(Source{});
+ continuing->append(create<ast::AssignmentStatement>(Source{}, lhs, rhs));
- ast::LoopStatement outer(body, continuing);
+ ast::LoopStatement outer(Source{}, body, continuing);
gen.increment_indent();
ASSERT_TRUE(gen.EmitStatement(out, &outer)) << gen.error();
diff --git a/src/writer/hlsl/generator_impl_member_accessor_test.cc b/src/writer/hlsl/generator_impl_member_accessor_test.cc
index f689fb6..e21b210 100644
--- a/src/writer/hlsl/generator_impl_member_accessor_test.cc
+++ b/src/writer/hlsl/generator_impl_member_accessor_test.cc
@@ -244,7 +244,7 @@
auto* rhs =
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("b"), "b");
- ast::AssignmentStatement assign(lhs, rhs);
+ ast::AssignmentStatement assign(Source{}, lhs, rhs);
td.RegisterVariableForTesting(coord_var);
td.RegisterVariableForTesting(b_var);
@@ -311,7 +311,7 @@
auto* rhs = create<ast::TypeConstructorExpression>(Source{}, &mat,
ast::ExpressionList{});
- ast::AssignmentStatement assign(lhs, rhs);
+ ast::AssignmentStatement assign(Source{}, lhs, rhs);
td.RegisterVariableForTesting(coord_var);
gen.register_global(coord_var);
@@ -730,7 +730,7 @@
"b"));
auto* rhs = create<ast::ScalarConstructorExpression>(
Source{}, create<ast::FloatLiteral>(Source{}, &f32, 2.0f));
- ast::AssignmentStatement assign(lhs, rhs);
+ ast::AssignmentStatement assign(Source{}, lhs, rhs);
ASSERT_TRUE(td.DetermineResultType(&assign));
ASSERT_TRUE(gen.EmitStatement(out, &assign)) << gen.error();
@@ -791,7 +791,7 @@
Source{}, create<ast::SintLiteral>(Source{}, &i32, 2)));
auto* rhs = create<ast::ScalarConstructorExpression>(
Source{}, create<ast::SintLiteral>(Source{}, &i32, 2));
- ast::AssignmentStatement assign(lhs, rhs);
+ ast::AssignmentStatement assign(Source{}, lhs, rhs);
ASSERT_TRUE(td.DetermineResultType(&assign)) << td.error();
ASSERT_TRUE(gen.EmitStatement(out, &assign)) << gen.error();
@@ -849,7 +849,7 @@
"a"));
auto* rhs = create<ast::ScalarConstructorExpression>(
Source{}, create<ast::SintLiteral>(Source{}, &i32, 2));
- ast::AssignmentStatement assign(lhs, rhs);
+ ast::AssignmentStatement assign(Source{}, lhs, rhs);
ASSERT_TRUE(td.DetermineResultType(&assign));
ASSERT_TRUE(gen.EmitStatement(out, &assign)) << gen.error();
@@ -973,7 +973,7 @@
"b"));
auto* rhs = create<ast::TypeConstructorExpression>(Source{}, &fvec3, values);
- ast::AssignmentStatement assign(lhs, rhs);
+ ast::AssignmentStatement assign(Source{}, lhs, rhs);
ASSERT_TRUE(td.DetermineResultType(&assign));
ASSERT_TRUE(gen.EmitStatement(out, &assign)) << gen.error();
@@ -1408,7 +1408,7 @@
auto* rhs = create<ast::TypeConstructorExpression>(Source{}, &fvec3, values);
- ast::AssignmentStatement assign(lhs, rhs);
+ ast::AssignmentStatement assign(Source{}, lhs, rhs);
ASSERT_TRUE(td.DetermineResultType(&assign));
ASSERT_TRUE(gen.EmitStatement(out, &assign)) << gen.error();
@@ -1500,7 +1500,7 @@
auto* rhs = create<ast::ScalarConstructorExpression>(
Source{}, create<ast::FloatLiteral>(Source{}, &i32, 1.f));
- ast::AssignmentStatement assign(lhs, rhs);
+ ast::AssignmentStatement assign(Source{}, lhs, rhs);
ASSERT_TRUE(td.DetermineResultType(&assign));
ASSERT_TRUE(gen.EmitStatement(out, &assign)) << gen.error();
diff --git a/src/writer/hlsl/generator_impl_switch_test.cc b/src/writer/hlsl/generator_impl_switch_test.cc
index e2b053d..aed1833 100644
--- a/src/writer/hlsl/generator_impl_switch_test.cc
+++ b/src/writer/hlsl/generator_impl_switch_test.cc
@@ -31,18 +31,19 @@
using HlslGeneratorImplTest_Switch = TestHelper;
TEST_F(HlslGeneratorImplTest_Switch, Emit_Switch) {
- auto* def_body = create<ast::BlockStatement>();
- def_body->append(create<ast::BreakStatement>());
- auto* def = create<ast::CaseStatement>(def_body);
+ auto* def_body = create<ast::BlockStatement>(Source{});
+ def_body->append(create<ast::BreakStatement>(Source{}));
+ auto* def =
+ create<ast::CaseStatement>(Source{}, ast::CaseSelectorList{}, def_body);
ast::type::I32 i32;
ast::CaseSelectorList case_val;
case_val.push_back(create<ast::SintLiteral>(Source{}, &i32, 5));
- auto* case_body = create<ast::BlockStatement>();
- case_body->append(create<ast::BreakStatement>());
+ auto* case_body = create<ast::BlockStatement>(Source{});
+ case_body->append(create<ast::BreakStatement>(Source{}));
- auto* case_stmt = create<ast::CaseStatement>(case_val, case_body);
+ auto* case_stmt = create<ast::CaseStatement>(Source{}, case_val, case_body);
ast::CaseStatementList body;
body.push_back(case_stmt);
@@ -50,7 +51,7 @@
auto* cond = create<ast::IdentifierExpression>(
Source{}, mod.RegisterSymbol("cond"), "cond");
- ast::SwitchStatement s(cond, body);
+ ast::SwitchStatement s(Source{}, cond, body);
gen.increment_indent();
ASSERT_TRUE(gen.EmitStatement(out, &s)) << gen.error();
diff --git a/src/writer/hlsl/generator_impl_test.cc b/src/writer/hlsl/generator_impl_test.cc
index b7bb46a..19931af 100644
--- a/src/writer/hlsl/generator_impl_test.cc
+++ b/src/writer/hlsl/generator_impl_test.cc
@@ -29,9 +29,10 @@
TEST_F(HlslGeneratorImplTest, Generate) {
ast::type::Void void_type;
- auto* func = create<ast::Function>(
- Source{}, mod.RegisterSymbol("my_func"), "my_func", ast::VariableList{},
- &void_type, create<ast::BlockStatement>(), ast::FunctionDecorationList{});
+ auto* func = create<ast::Function>(Source{}, mod.RegisterSymbol("my_func"),
+ "my_func", ast::VariableList{}, &void_type,
+ create<ast::BlockStatement>(Source{}),
+ ast::FunctionDecorationList{});
mod.AddFunction(func);
ASSERT_TRUE(gen.Generate(out)) << gen.error();
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 469725f..b0a21e9 100644
--- a/src/writer/hlsl/generator_impl_variable_decl_statement_test.cc
+++ b/src/writer/hlsl/generator_impl_variable_decl_statement_test.cc
@@ -43,7 +43,7 @@
nullptr, // constructor
ast::VariableDecorationList{}); // decorations
- ast::VariableDeclStatement stmt(var);
+ ast::VariableDeclStatement stmt(Source{}, var);
gen.increment_indent();
ASSERT_TRUE(gen.EmitStatement(out, &stmt)) << gen.error();
@@ -61,7 +61,7 @@
nullptr, // constructor
ast::VariableDecorationList{}); // decorations
- ast::VariableDeclStatement stmt(var);
+ ast::VariableDeclStatement stmt(Source{}, var);
gen.increment_indent();
ASSERT_TRUE(gen.EmitStatement(out, &stmt)) << gen.error();
@@ -81,7 +81,7 @@
nullptr, // constructor
ast::VariableDecorationList{}); // decorations
- ast::VariableDeclStatement stmt(var);
+ ast::VariableDeclStatement stmt(Source{}, var);
gen.increment_indent();
ASSERT_TRUE(gen.EmitStatement(out, &stmt)) << gen.error();
@@ -100,7 +100,7 @@
nullptr, // constructor
ast::VariableDecorationList{}); // decorations
- ast::VariableDeclStatement stmt(var);
+ ast::VariableDeclStatement stmt(Source{}, var);
gen.increment_indent();
ASSERT_TRUE(gen.EmitStatement(out, &stmt)) << gen.error();
@@ -118,7 +118,7 @@
nullptr, // constructor
ast::VariableDecorationList{}); // decorations
- ast::VariableDeclStatement stmt(var);
+ ast::VariableDeclStatement stmt(Source{}, var);
gen.increment_indent();
ASSERT_TRUE(gen.EmitStatement(out, &stmt)) << gen.error();
@@ -140,7 +140,7 @@
ident, // constructor
ast::VariableDecorationList{}); // decorations
- ast::VariableDeclStatement stmt(var);
+ ast::VariableDeclStatement stmt(Source{}, var);
ASSERT_TRUE(gen.EmitStatement(out, &stmt)) << gen.error();
EXPECT_EQ(result(), R"(float a = initializer;
)");
@@ -164,7 +164,7 @@
zero_vec, // constructor
ast::VariableDecorationList{}); // decorations
- ast::VariableDeclStatement stmt(var);
+ ast::VariableDeclStatement stmt(Source{}, var);
ASSERT_TRUE(gen.EmitStatement(out, &stmt)) << gen.error();
EXPECT_EQ(result(), R"(float3 a = float3(0.0f);
)");
@@ -188,7 +188,7 @@
zero_mat, // constructor
ast::VariableDecorationList{}); // decorations
- ast::VariableDeclStatement stmt(var);
+ ast::VariableDeclStatement stmt(Source{}, var);
ASSERT_TRUE(gen.EmitStatement(out, &stmt)) << gen.error();
EXPECT_EQ(result(),
R"(float3x2 a = float3x2(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
diff --git a/src/writer/msl/generator_impl_assign_test.cc b/src/writer/msl/generator_impl_assign_test.cc
index 9fcdddf..2db16f4 100644
--- a/src/writer/msl/generator_impl_assign_test.cc
+++ b/src/writer/msl/generator_impl_assign_test.cc
@@ -34,7 +34,7 @@
Source{}, mod.RegisterSymbol("lhs"), "lhs");
auto* rhs = create<ast::IdentifierExpression>(
Source{}, mod.RegisterSymbol("rhs"), "rhs");
- ast::AssignmentStatement assign(lhs, rhs);
+ ast::AssignmentStatement assign(Source{}, lhs, rhs);
gen.increment_indent();
diff --git a/src/writer/msl/generator_impl_block_test.cc b/src/writer/msl/generator_impl_block_test.cc
index 4e4cf2b..a7b8ec3 100644
--- a/src/writer/msl/generator_impl_block_test.cc
+++ b/src/writer/msl/generator_impl_block_test.cc
@@ -28,8 +28,8 @@
using MslGeneratorImplTest = TestHelper;
TEST_F(MslGeneratorImplTest, Emit_Block) {
- ast::BlockStatement b;
- b.append(create<ast::DiscardStatement>());
+ ast::BlockStatement b(Source{});
+ b.append(create<ast::DiscardStatement>(Source{}));
gen.increment_indent();
@@ -41,8 +41,8 @@
}
TEST_F(MslGeneratorImplTest, Emit_Block_WithoutNewline) {
- ast::BlockStatement b;
- b.append(create<ast::DiscardStatement>());
+ ast::BlockStatement b(Source{});
+ b.append(create<ast::DiscardStatement>(Source{}));
gen.increment_indent();
diff --git a/src/writer/msl/generator_impl_break_test.cc b/src/writer/msl/generator_impl_break_test.cc
index daf276c..1860910 100644
--- a/src/writer/msl/generator_impl_break_test.cc
+++ b/src/writer/msl/generator_impl_break_test.cc
@@ -29,7 +29,7 @@
using MslGeneratorImplTest = TestHelper;
TEST_F(MslGeneratorImplTest, Emit_Break) {
- ast::BreakStatement b;
+ ast::BreakStatement b(Source{});
gen.increment_indent();
diff --git a/src/writer/msl/generator_impl_call_test.cc b/src/writer/msl/generator_impl_call_test.cc
index 5562381..4092f73 100644
--- a/src/writer/msl/generator_impl_call_test.cc
+++ b/src/writer/msl/generator_impl_call_test.cc
@@ -38,9 +38,10 @@
Source{}, mod.RegisterSymbol("my_func"), "my_func");
ast::CallExpression call(Source{}, id, {});
- auto* func = create<ast::Function>(
- Source{}, mod.RegisterSymbol("my_func"), "my_func", ast::VariableList{},
- &void_type, create<ast::BlockStatement>(), ast::FunctionDecorationList{});
+ auto* func = create<ast::Function>(Source{}, mod.RegisterSymbol("my_func"),
+ "my_func", ast::VariableList{}, &void_type,
+ create<ast::BlockStatement>(Source{}),
+ ast::FunctionDecorationList{});
mod.AddFunction(func);
ASSERT_TRUE(gen.EmitExpression(&call)) << gen.error();
@@ -59,9 +60,10 @@
Source{}, mod.RegisterSymbol("param2"), "param2"));
ast::CallExpression call(Source{}, id, params);
- auto* func = create<ast::Function>(
- Source{}, mod.RegisterSymbol("my_func"), "my_func", ast::VariableList{},
- &void_type, create<ast::BlockStatement>(), ast::FunctionDecorationList{});
+ auto* func = create<ast::Function>(Source{}, mod.RegisterSymbol("my_func"),
+ "my_func", ast::VariableList{}, &void_type,
+ create<ast::BlockStatement>(Source{}),
+ ast::FunctionDecorationList{});
mod.AddFunction(func);
ASSERT_TRUE(gen.EmitExpression(&call)) << gen.error();
@@ -78,11 +80,13 @@
Source{}, mod.RegisterSymbol("param1"), "param1"));
params.push_back(create<ast::IdentifierExpression>(
Source{}, mod.RegisterSymbol("param2"), "param2"));
- ast::CallStatement call(create<ast::CallExpression>(Source{}, id, params));
+ ast::CallStatement call(Source{},
+ create<ast::CallExpression>(Source{}, id, params));
- auto* func = create<ast::Function>(
- Source{}, mod.RegisterSymbol("my_func"), "my_func", ast::VariableList{},
- &void_type, create<ast::BlockStatement>(), ast::FunctionDecorationList{});
+ auto* func = create<ast::Function>(Source{}, mod.RegisterSymbol("my_func"),
+ "my_func", ast::VariableList{}, &void_type,
+ create<ast::BlockStatement>(Source{}),
+ ast::FunctionDecorationList{});
mod.AddFunction(func);
gen.increment_indent();
diff --git a/src/writer/msl/generator_impl_case_test.cc b/src/writer/msl/generator_impl_case_test.cc
index 5740d2a..f8570c6 100644
--- a/src/writer/msl/generator_impl_case_test.cc
+++ b/src/writer/msl/generator_impl_case_test.cc
@@ -35,12 +35,12 @@
TEST_F(MslGeneratorImplTest, Emit_Case) {
ast::type::I32 i32;
- auto* body = create<ast::BlockStatement>();
- body->append(create<ast::BreakStatement>());
+ auto* body = create<ast::BlockStatement>(Source{});
+ body->append(create<ast::BreakStatement>(Source{}));
ast::CaseSelectorList lit;
lit.push_back(create<ast::SintLiteral>(Source{}, &i32, 5));
- ast::CaseStatement c(lit, body);
+ ast::CaseStatement c(Source{}, lit, body);
gen.increment_indent();
@@ -56,7 +56,7 @@
ast::CaseSelectorList lit;
lit.push_back(create<ast::SintLiteral>(Source{}, &i32, 5));
- ast::CaseStatement c(lit, create<ast::BlockStatement>());
+ ast::CaseStatement c(Source{}, lit, create<ast::BlockStatement>(Source{}));
gen.increment_indent();
@@ -70,12 +70,12 @@
TEST_F(MslGeneratorImplTest, Emit_Case_WithFallthrough) {
ast::type::I32 i32;
- auto* body = create<ast::BlockStatement>();
- body->append(create<ast::FallthroughStatement>());
+ auto* body = create<ast::BlockStatement>(Source{});
+ body->append(create<ast::FallthroughStatement>(Source{}));
ast::CaseSelectorList lit;
lit.push_back(create<ast::SintLiteral>(Source{}, &i32, 5));
- ast::CaseStatement c(lit, body);
+ ast::CaseStatement c(Source{}, lit, body);
gen.increment_indent();
@@ -89,13 +89,13 @@
TEST_F(MslGeneratorImplTest, Emit_Case_MultipleSelectors) {
ast::type::I32 i32;
- auto* body = create<ast::BlockStatement>();
- body->append(create<ast::BreakStatement>());
+ auto* body = create<ast::BlockStatement>(Source{});
+ body->append(create<ast::BreakStatement>(Source{}));
ast::CaseSelectorList lit;
lit.push_back(create<ast::SintLiteral>(Source{}, &i32, 5));
lit.push_back(create<ast::SintLiteral>(Source{}, &i32, 6));
- ast::CaseStatement c(lit, body);
+ ast::CaseStatement c(Source{}, lit, body);
gen.increment_indent();
@@ -108,9 +108,9 @@
}
TEST_F(MslGeneratorImplTest, Emit_Case_Default) {
- auto* body = create<ast::BlockStatement>();
- body->append(create<ast::BreakStatement>());
- ast::CaseStatement c(body);
+ auto* body = create<ast::BlockStatement>(Source{});
+ body->append(create<ast::BreakStatement>(Source{}));
+ ast::CaseStatement c(Source{}, ast::CaseSelectorList{}, body);
gen.increment_indent();
diff --git a/src/writer/msl/generator_impl_continue_test.cc b/src/writer/msl/generator_impl_continue_test.cc
index 95220bc..2edb073 100644
--- a/src/writer/msl/generator_impl_continue_test.cc
+++ b/src/writer/msl/generator_impl_continue_test.cc
@@ -29,7 +29,7 @@
using MslGeneratorImplTest = TestHelper;
TEST_F(MslGeneratorImplTest, Emit_Continue) {
- ast::ContinueStatement c;
+ ast::ContinueStatement c(Source{});
gen.increment_indent();
diff --git a/src/writer/msl/generator_impl_discard_test.cc b/src/writer/msl/generator_impl_discard_test.cc
index 182dc10..1aefa7d 100644
--- a/src/writer/msl/generator_impl_discard_test.cc
+++ b/src/writer/msl/generator_impl_discard_test.cc
@@ -26,7 +26,7 @@
using MslGeneratorImplTest = TestHelper;
TEST_F(MslGeneratorImplTest, Emit_Discard) {
- ast::DiscardStatement stmt;
+ ast::DiscardStatement stmt(Source{});
gen.increment_indent();
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 e6bf9f6..2d2c628 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
@@ -81,13 +81,15 @@
mod.AddGlobalVariable(bar_var);
ast::VariableList params;
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("foo"),
"foo"),
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("foo"),
"foo")));
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("bar"),
"bar"),
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("bar"),
@@ -155,13 +157,15 @@
mod.AddGlobalVariable(bar_var);
ast::VariableList params;
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("foo"),
"foo"),
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("foo"),
"foo")));
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("bar"),
"bar"),
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("bar"),
@@ -229,13 +233,15 @@
mod.AddGlobalVariable(bar_var);
ast::VariableList params;
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("foo"),
"foo"),
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("foo"),
"foo")));
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("bar"),
"bar"),
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("bar"),
@@ -302,13 +308,15 @@
mod.AddGlobalVariable(bar_var);
ast::VariableList params;
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("foo"),
"foo"),
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("foo"),
"foo")));
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("bar"),
"bar"),
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("bar"),
@@ -373,13 +381,15 @@
mod.AddGlobalVariable(bar_var);
ast::VariableList params;
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("foo"),
"foo"),
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("foo"),
"foo")));
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("bar"),
"bar"),
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("bar"),
@@ -439,13 +449,15 @@
mod.AddGlobalVariable(bar_var);
ast::VariableList params;
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("foo"),
"foo"),
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("foo"),
"foo")));
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("bar"),
"bar"),
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("bar"),
@@ -512,8 +524,9 @@
ast::VariableList params;
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("depth"),
"depth"),
create<ast::MemberAccessorExpression>(
diff --git a/src/writer/msl/generator_impl_function_test.cc b/src/writer/msl/generator_impl_function_test.cc
index 66b3143..7155a10 100644
--- a/src/writer/msl/generator_impl_function_test.cc
+++ b/src/writer/msl/generator_impl_function_test.cc
@@ -58,7 +58,7 @@
TEST_F(MslGeneratorImplTest, Emit_Function) {
ast::type::Void void_type;
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::ReturnStatement>(Source{}));
auto* func = create<ast::Function>(Source{}, mod.RegisterSymbol("my_func"),
"my_func", ast::VariableList{}, &void_type,
@@ -80,7 +80,7 @@
TEST_F(MslGeneratorImplTest, Emit_Function_Name_Collision) {
ast::type::Void void_type;
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::ReturnStatement>(Source{}));
auto* func = create<ast::Function>(Source{}, mod.RegisterSymbol("main"),
"main", ast::VariableList{}, &void_type,
@@ -123,7 +123,7 @@
ast::type::Void void_type;
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::ReturnStatement>(Source{}));
auto* func = create<ast::Function>(Source{}, mod.RegisterSymbol("my_func"),
"my_func", params, &void_type, body,
@@ -177,8 +177,9 @@
mod.AddGlobalVariable(bar_var);
ast::VariableList params;
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("bar"),
"bar"),
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("foo"),
@@ -252,8 +253,9 @@
mod.AddGlobalVariable(depth_var);
ast::VariableList params;
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("depth"),
"depth"),
create<ast::MemberAccessorExpression>(
@@ -328,8 +330,8 @@
"x")), // constructor
ast::VariableDecorationList{}); // decorations
- auto* body = create<ast::BlockStatement>();
- body->append(create<ast::VariableDeclStatement>(var));
+ auto* body = create<ast::BlockStatement>(Source{});
+ body->append(create<ast::VariableDeclStatement>(Source{}, var));
body->append(create<ast::ReturnStatement>(Source{}));
auto* func = create<ast::Function>(
@@ -408,8 +410,8 @@
"b")), // constructor
ast::VariableDecorationList{}); // decorations
- auto* body = create<ast::BlockStatement>();
- body->append(create<ast::VariableDeclStatement>(var));
+ auto* body = create<ast::BlockStatement>(Source{});
+ body->append(create<ast::VariableDeclStatement>(Source{}, var));
body->append(create<ast::ReturnStatement>(Source{}));
auto* func = create<ast::Function>(
@@ -493,8 +495,8 @@
"b")), // constructor
ast::VariableDecorationList{}); // decorations
- auto* body = create<ast::BlockStatement>();
- body->append(create<ast::VariableDeclStatement>(var));
+ auto* body = create<ast::BlockStatement>(Source{});
+ body->append(create<ast::VariableDeclStatement>(Source{}, var));
body->append(create<ast::ReturnStatement>(Source{}));
auto* func = create<ast::Function>(
@@ -584,13 +586,15 @@
nullptr, // constructor
ast::VariableDecorationList{})); // decorations
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("bar"),
"bar"),
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("foo"),
"foo")));
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("val"),
"val"),
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("param"),
@@ -608,8 +612,9 @@
expr.push_back(create<ast::ScalarConstructorExpression>(
Source{}, create<ast::FloatLiteral>(Source{}, &f32, 1.0f)));
- body = create<ast::BlockStatement>();
+ body = create<ast::BlockStatement>(Source{});
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("bar"),
"bar"),
create<ast::CallExpression>(
@@ -687,7 +692,7 @@
nullptr, // constructor
ast::VariableDecorationList{})); // decorations
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::ReturnStatement>(
Source{}, create<ast::IdentifierExpression>(
Source{}, mod.RegisterSymbol("param"), "param")));
@@ -701,8 +706,9 @@
expr.push_back(create<ast::ScalarConstructorExpression>(
Source{}, create<ast::FloatLiteral>(Source{}, &f32, 1.0f)));
- body = create<ast::BlockStatement>();
+ body = create<ast::BlockStatement>(Source{});
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("depth"),
"depth"),
create<ast::CallExpression>(
@@ -789,8 +795,9 @@
nullptr, // constructor
ast::VariableDecorationList{})); // decorations
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("depth"),
"depth"),
create<ast::MemberAccessorExpression>(
@@ -812,8 +819,9 @@
expr.push_back(create<ast::ScalarConstructorExpression>(
Source{}, create<ast::FloatLiteral>(Source{}, &f32, 1.0f)));
- body = create<ast::BlockStatement>();
+ body = create<ast::BlockStatement>(Source{});
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("depth"),
"depth"),
create<ast::CallExpression>(
@@ -885,7 +893,7 @@
nullptr, // constructor
ast::VariableDecorationList{})); // decorations
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::ReturnStatement>(
Source{}, create<ast::MemberAccessorExpression>(
Source{},
@@ -916,8 +924,8 @@
expr), // constructor
ast::VariableDecorationList{}); // decorations
- body = create<ast::BlockStatement>();
- body->append(create<ast::VariableDeclStatement>(var));
+ body = create<ast::BlockStatement>(Source{});
+ body->append(create<ast::VariableDeclStatement>(Source{}, var));
body->append(create<ast::ReturnStatement>(Source{}));
auto* func = create<ast::Function>(
@@ -993,7 +1001,7 @@
nullptr, // constructor
ast::VariableDecorationList{})); // decorations
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::ReturnStatement>(
Source{}, create<ast::MemberAccessorExpression>(
Source{},
@@ -1024,8 +1032,8 @@
expr), // constructor
ast::VariableDecorationList{}); // decorations
- body = create<ast::BlockStatement>();
- body->append(create<ast::VariableDeclStatement>(var));
+ body = create<ast::BlockStatement>(Source{});
+ body->append(create<ast::VariableDeclStatement>(Source{}, var));
body->append(create<ast::ReturnStatement>(Source{}));
auto* func = create<ast::Function>(
@@ -1107,7 +1115,7 @@
nullptr, // constructor
ast::VariableDecorationList{})); // decorations
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::ReturnStatement>(
Source{}, create<ast::MemberAccessorExpression>(
Source{},
@@ -1138,8 +1146,8 @@
expr), // constructor
ast::VariableDecorationList{}); // decorations
- body = create<ast::BlockStatement>();
- body->append(create<ast::VariableDeclStatement>(var));
+ body = create<ast::BlockStatement>(Source{});
+ body->append(create<ast::VariableDeclStatement>(Source{}, var));
body->append(create<ast::ReturnStatement>(Source{}));
auto* func = create<ast::Function>(
@@ -1195,14 +1203,15 @@
mod.AddGlobalVariable(bar_var);
ast::VariableList params;
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod.RegisterSymbol("bar"),
"bar"),
create<ast::ScalarConstructorExpression>(
Source{}, create<ast::FloatLiteral>(Source{}, &f32, 1.0f))));
- auto* list = create<ast::BlockStatement>();
+ auto* list = create<ast::BlockStatement>(Source{});
list->append(create<ast::ReturnStatement>(Source{}));
body->append(create<ast::IfStatement>(
@@ -1251,7 +1260,7 @@
auto* func = create<ast::Function>(
Source{}, mod.RegisterSymbol("main"), "main", ast::VariableList{},
- &void_type, create<ast::BlockStatement>(),
+ &void_type, create<ast::BlockStatement>(Source{}),
ast::FunctionDecorationList{
create<ast::StageDecoration>(ast::PipelineStage::kCompute, Source{}),
});
@@ -1283,7 +1292,7 @@
ast::type::Void void_type;
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::ReturnStatement>(Source{}));
auto* func = create<ast::Function>(Source{}, mod.RegisterSymbol("my_func"),
"my_func", params, &void_type, body,
@@ -1371,8 +1380,8 @@
"d")), // constructor
ast::VariableDecorationList{}); // decorations
- auto* body = create<ast::BlockStatement>();
- body->append(create<ast::VariableDeclStatement>(var));
+ auto* body = create<ast::BlockStatement>(Source{});
+ body->append(create<ast::VariableDeclStatement>(Source{}, var));
body->append(create<ast::ReturnStatement>(Source{}));
auto* func = create<ast::Function>(
@@ -1401,8 +1410,8 @@
"d")), // constructor
ast::VariableDecorationList{}); // decorations
- auto* body = create<ast::BlockStatement>();
- body->append(create<ast::VariableDeclStatement>(var));
+ auto* body = create<ast::BlockStatement>(Source{});
+ body->append(create<ast::VariableDeclStatement>(Source{}, var));
body->append(create<ast::ReturnStatement>(Source{}));
auto* func = create<ast::Function>(
diff --git a/src/writer/msl/generator_impl_if_test.cc b/src/writer/msl/generator_impl_if_test.cc
index 603698d..3ded7e3 100644
--- a/src/writer/msl/generator_impl_if_test.cc
+++ b/src/writer/msl/generator_impl_if_test.cc
@@ -31,7 +31,7 @@
TEST_F(MslGeneratorImplTest, Emit_If) {
auto* cond = create<ast::IdentifierExpression>(
Source{}, mod.RegisterSymbol("cond"), "cond");
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::ReturnStatement>(Source{}));
ast::IfStatement i(Source{}, cond, body, ast::ElseStatementList{});
@@ -48,16 +48,17 @@
TEST_F(MslGeneratorImplTest, Emit_IfWithElseIf) {
auto* else_cond = create<ast::IdentifierExpression>(
Source{}, mod.RegisterSymbol("else_cond"), "else_cond");
- auto* else_body = create<ast::BlockStatement>();
+ auto* else_body = create<ast::BlockStatement>(Source{});
else_body->append(create<ast::ReturnStatement>(Source{}));
auto* cond = create<ast::IdentifierExpression>(
Source{}, mod.RegisterSymbol("cond"), "cond");
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::ReturnStatement>(Source{}));
- ast::IfStatement i(Source{}, cond, body,
- {create<ast::ElseStatement>(else_cond, else_body)});
+ ast::IfStatement i(
+ Source{}, cond, body,
+ {create<ast::ElseStatement>(Source{}, else_cond, else_body)});
gen.increment_indent();
@@ -71,16 +72,17 @@
}
TEST_F(MslGeneratorImplTest, Emit_IfWithElse) {
- auto* else_body = create<ast::BlockStatement>();
+ auto* else_body = create<ast::BlockStatement>(Source{});
else_body->append(create<ast::ReturnStatement>(Source{}));
auto* cond = create<ast::IdentifierExpression>(
Source{}, mod.RegisterSymbol("cond"), "cond");
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::ReturnStatement>(Source{}));
- ast::IfStatement i(Source{}, cond, body,
- {create<ast::ElseStatement>(else_body)});
+ ast::IfStatement i(
+ Source{}, cond, body,
+ {create<ast::ElseStatement>(Source{}, nullptr, else_body)});
gen.increment_indent();
@@ -97,22 +99,23 @@
auto* else_cond = create<ast::IdentifierExpression>(
Source{}, mod.RegisterSymbol("else_cond"), "else_cond");
- auto* else_body = create<ast::BlockStatement>();
+ auto* else_body = create<ast::BlockStatement>(Source{});
else_body->append(create<ast::ReturnStatement>(Source{}));
- auto* else_body_2 = create<ast::BlockStatement>();
+ auto* else_body_2 = create<ast::BlockStatement>(Source{});
else_body_2->append(create<ast::ReturnStatement>(Source{}));
auto* cond = create<ast::IdentifierExpression>(
Source{}, mod.RegisterSymbol("cond"), "cond");
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::ReturnStatement>(Source{}));
- ast::IfStatement i(Source{}, cond, body,
- {
- create<ast::ElseStatement>(else_cond, else_body),
- create<ast::ElseStatement>(else_body_2),
- });
+ ast::IfStatement i(
+ Source{}, cond, body,
+ {
+ create<ast::ElseStatement>(Source{}, else_cond, else_body),
+ create<ast::ElseStatement>(Source{}, nullptr, else_body_2),
+ });
gen.increment_indent();
diff --git a/src/writer/msl/generator_impl_loop_test.cc b/src/writer/msl/generator_impl_loop_test.cc
index cf0f375..94ecdb5 100644
--- a/src/writer/msl/generator_impl_loop_test.cc
+++ b/src/writer/msl/generator_impl_loop_test.cc
@@ -36,10 +36,10 @@
using MslGeneratorImplTest = TestHelper;
TEST_F(MslGeneratorImplTest, Emit_Loop) {
- auto* body = create<ast::BlockStatement>();
- body->append(create<ast::DiscardStatement>());
+ auto* body = create<ast::BlockStatement>(Source{});
+ body->append(create<ast::DiscardStatement>(Source{}));
- ast::LoopStatement l(body, {});
+ ast::LoopStatement l(Source{}, body, {});
gen.increment_indent();
@@ -51,13 +51,13 @@
}
TEST_F(MslGeneratorImplTest, Emit_LoopWithContinuing) {
- auto* body = create<ast::BlockStatement>();
- body->append(create<ast::DiscardStatement>());
+ auto* body = create<ast::BlockStatement>(Source{});
+ body->append(create<ast::DiscardStatement>(Source{}));
- auto* continuing = create<ast::BlockStatement>();
+ auto* continuing = create<ast::BlockStatement>(Source{});
continuing->append(create<ast::ReturnStatement>(Source{}));
- ast::LoopStatement l(body, continuing);
+ ast::LoopStatement l(Source{}, body, continuing);
gen.increment_indent();
@@ -79,15 +79,15 @@
TEST_F(MslGeneratorImplTest, Emit_LoopNestedWithContinuing) {
ast::type::F32 f32;
- auto* body = create<ast::BlockStatement>();
- body->append(create<ast::DiscardStatement>());
+ auto* body = create<ast::BlockStatement>(Source{});
+ body->append(create<ast::DiscardStatement>(Source{}));
- auto* continuing = create<ast::BlockStatement>();
+ auto* continuing = create<ast::BlockStatement>(Source{});
continuing->append(create<ast::ReturnStatement>(Source{}));
- auto* inner = create<ast::LoopStatement>(body, continuing);
+ auto* inner = create<ast::LoopStatement>(Source{}, body, continuing);
- body = create<ast::BlockStatement>();
+ body = create<ast::BlockStatement>(Source{});
body->append(inner);
auto* lhs = create<ast::IdentifierExpression>(
@@ -95,10 +95,10 @@
auto* rhs = create<ast::IdentifierExpression>(
Source{}, mod.RegisterSymbol("rhs"), "rhs");
- continuing = create<ast::BlockStatement>();
- continuing->append(create<ast::AssignmentStatement>(lhs, rhs));
+ continuing = create<ast::BlockStatement>(Source{});
+ continuing->append(create<ast::AssignmentStatement>(Source{}, lhs, rhs));
- ast::LoopStatement outer(body, continuing);
+ ast::LoopStatement outer(Source{}, body, continuing);
gen.increment_indent();
@@ -162,9 +162,10 @@
create<ast::FloatLiteral>(Source{}, &f32, 2.4)), // constructor
ast::VariableDecorationList{}); // decorations
- auto* body = create<ast::BlockStatement>();
- body->append(create<ast::VariableDeclStatement>(var));
+ auto* body = create<ast::BlockStatement>(Source{});
+ body->append(create<ast::VariableDeclStatement>(Source{}, var));
body->append(create<ast::VariableDeclStatement>(
+ Source{},
create<ast::Variable>(Source{}, // source
"other", // name
ast::StorageClass::kFunction, // storage_class
@@ -178,12 +179,12 @@
auto* rhs = create<ast::IdentifierExpression>(
Source{}, mod.RegisterSymbol("rhs"), "rhs");
- auto* continuing = create<ast::BlockStatement>();
- continuing->append(create<ast::AssignmentStatement>(lhs, rhs));
+ auto* continuing = create<ast::BlockStatement>(Source{});
+ continuing->append(create<ast::AssignmentStatement>(Source{}, lhs, rhs));
gen.increment_indent();
- ast::LoopStatement outer(body, continuing);
+ ast::LoopStatement outer(Source{}, body, continuing);
ASSERT_TRUE(gen.EmitStatement(&outer)) << gen.error();
EXPECT_EQ(gen.result(), R"( {
diff --git a/src/writer/msl/generator_impl_switch_test.cc b/src/writer/msl/generator_impl_switch_test.cc
index 56f3b82..0b82567 100644
--- a/src/writer/msl/generator_impl_switch_test.cc
+++ b/src/writer/msl/generator_impl_switch_test.cc
@@ -33,18 +33,19 @@
using MslGeneratorImplTest = TestHelper;
TEST_F(MslGeneratorImplTest, Emit_Switch) {
- auto* def_body = create<ast::BlockStatement>();
- def_body->append(create<ast::BreakStatement>());
- auto* def = create<ast::CaseStatement>(def_body);
+ auto* def_body = create<ast::BlockStatement>(Source{});
+ def_body->append(create<ast::BreakStatement>(Source{}));
+ auto* def =
+ create<ast::CaseStatement>(Source{}, ast::CaseSelectorList{}, def_body);
ast::type::I32 i32;
ast::CaseSelectorList case_val;
case_val.push_back(create<ast::SintLiteral>(Source{}, &i32, 5));
- auto* case_body = create<ast::BlockStatement>();
- case_body->append(create<ast::BreakStatement>());
+ auto* case_body = create<ast::BlockStatement>(Source{});
+ case_body->append(create<ast::BreakStatement>(Source{}));
- auto* case_stmt = create<ast::CaseStatement>(case_val, case_body);
+ auto* case_stmt = create<ast::CaseStatement>(Source{}, case_val, case_body);
ast::CaseStatementList body;
body.push_back(case_stmt);
@@ -52,7 +53,7 @@
auto* cond = create<ast::IdentifierExpression>(
Source{}, mod.RegisterSymbol("cond"), "cond");
- ast::SwitchStatement s(cond, body);
+ ast::SwitchStatement s(Source{}, cond, body);
gen.increment_indent();
diff --git a/src/writer/msl/generator_impl_test.cc b/src/writer/msl/generator_impl_test.cc
index 0910b78..c22568c 100644
--- a/src/writer/msl/generator_impl_test.cc
+++ b/src/writer/msl/generator_impl_test.cc
@@ -52,7 +52,7 @@
auto* func = create<ast::Function>(
Source{}, mod.RegisterSymbol("my_func"), "my_func", ast::VariableList{},
- &void_type, create<ast::BlockStatement>(),
+ &void_type, create<ast::BlockStatement>(Source{}),
ast::FunctionDecorationList{
create<ast::StageDecoration>(ast::PipelineStage::kCompute, Source{}),
});
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 0119490..23b9147 100644
--- a/src/writer/msl/generator_impl_variable_decl_statement_test.cc
+++ b/src/writer/msl/generator_impl_variable_decl_statement_test.cc
@@ -51,7 +51,7 @@
nullptr, // constructor
ast::VariableDecorationList{}); // decorations
- ast::VariableDeclStatement stmt(var);
+ ast::VariableDeclStatement stmt(Source{}, var);
gen.increment_indent();
@@ -70,7 +70,7 @@
nullptr, // constructor
ast::VariableDecorationList{}); // decorations
- ast::VariableDeclStatement stmt(var);
+ ast::VariableDeclStatement stmt(Source{}, var);
gen.increment_indent();
@@ -91,7 +91,7 @@
nullptr, // constructor
ast::VariableDecorationList{}); // decorations
- ast::VariableDeclStatement stmt(var);
+ ast::VariableDeclStatement stmt(Source{}, var);
gen.increment_indent();
@@ -123,7 +123,7 @@
nullptr, // constructor
ast::VariableDecorationList{}); // decorations
- ast::VariableDeclStatement stmt(var);
+ ast::VariableDeclStatement stmt(Source{}, var);
gen.increment_indent();
@@ -145,7 +145,7 @@
nullptr, // constructor
ast::VariableDecorationList{}); // decorations
- ast::VariableDeclStatement stmt(var);
+ ast::VariableDeclStatement stmt(Source{}, var);
gen.increment_indent();
@@ -165,7 +165,7 @@
nullptr, // constructor
ast::VariableDecorationList{}); // decorations
- ast::VariableDeclStatement stmt(var);
+ ast::VariableDeclStatement stmt(Source{}, var);
gen.increment_indent();
@@ -184,7 +184,7 @@
nullptr, // constructor
ast::VariableDecorationList{}); // decorations
- ast::VariableDeclStatement stmt(var);
+ ast::VariableDeclStatement stmt(Source{}, var);
gen.increment_indent();
@@ -206,7 +206,7 @@
ident, // constructor
ast::VariableDecorationList{}); // decorations
- ast::VariableDeclStatement stmt(var);
+ ast::VariableDeclStatement stmt(Source{}, var);
ASSERT_TRUE(gen.EmitStatement(&stmt)) << gen.error();
EXPECT_EQ(gen.result(), R"(float a = initializer;
@@ -230,7 +230,7 @@
zero_vec, // constructor
ast::VariableDecorationList{}); // decorations
- ast::VariableDeclStatement stmt(var);
+ ast::VariableDeclStatement stmt(Source{}, var);
ASSERT_TRUE(gen.EmitStatement(&stmt)) << gen.error();
EXPECT_EQ(gen.result(), R"(float3 a = float3(0.0f);
diff --git a/src/writer/spirv/builder_accessor_expression_test.cc b/src/writer/spirv/builder_accessor_expression_test.cc
index a1ce040..82f100e 100644
--- a/src/writer/spirv/builder_accessor_expression_test.cc
+++ b/src/writer/spirv/builder_accessor_expression_test.cc
@@ -514,7 +514,7 @@
auto* rhs = create<ast::ScalarConstructorExpression>(
Source{}, create<ast::FloatLiteral>(Source{}, &f32, 2.f));
- ast::AssignmentStatement expr(lhs, rhs);
+ ast::AssignmentStatement expr(Source{}, lhs, rhs);
td.RegisterVariableForTesting(&var);
ASSERT_TRUE(td.DetermineResultType(&expr)) << td.error();
@@ -588,7 +588,7 @@
create<ast::IdentifierExpression>(Source{}, mod->RegisterSymbol("a"),
"a"));
- ast::AssignmentStatement expr(lhs, rhs);
+ ast::AssignmentStatement expr(Source{}, lhs, rhs);
td.RegisterVariableForTesting(&var);
td.RegisterVariableForTesting(&store);
diff --git a/src/writer/spirv/builder_assign_test.cc b/src/writer/spirv/builder_assign_test.cc
index 6f557e9..96fe75e 100644
--- a/src/writer/spirv/builder_assign_test.cc
+++ b/src/writer/spirv/builder_assign_test.cc
@@ -52,7 +52,7 @@
auto* val = create<ast::ScalarConstructorExpression>(
Source{}, create<ast::FloatLiteral>(Source{}, &f32, 1.0f));
- ast::AssignmentStatement assign(ident, val);
+ ast::AssignmentStatement assign(Source{}, ident, val);
td.RegisterVariableForTesting(&v);
@@ -88,7 +88,7 @@
ast::ExpressionList vals;
auto* val = create<ast::TypeConstructorExpression>(Source{}, &vec, vals);
- ast::AssignmentStatement assign(ident, val);
+ ast::AssignmentStatement assign(Source{}, ident, val);
td.RegisterVariableForTesting(&v);
@@ -138,6 +138,7 @@
nullptr, ast::VariableDecorationList{});
ast::AssignmentStatement assign(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod->RegisterSymbol("var"),
"var"),
init);
@@ -189,6 +190,7 @@
nullptr, ast::VariableDecorationList{});
ast::AssignmentStatement assign(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod->RegisterSymbol("var"),
"var"),
init);
@@ -248,7 +250,7 @@
auto* val = create<ast::ScalarConstructorExpression>(
Source{}, create<ast::FloatLiteral>(Source{}, &f32, 4.0f));
- ast::AssignmentStatement assign(ident, val);
+ ast::AssignmentStatement assign(Source{}, ident, val);
td.RegisterVariableForTesting(&v);
@@ -297,7 +299,7 @@
auto* val = create<ast::TypeConstructorExpression>(Source{}, &vec3, vals);
- ast::AssignmentStatement assign(ident, val);
+ ast::AssignmentStatement assign(Source{}, ident, val);
td.RegisterVariableForTesting(&v);
@@ -342,7 +344,7 @@
auto* val = create<ast::ScalarConstructorExpression>(
Source{}, create<ast::FloatLiteral>(Source{}, &f32, 1.0f));
- ast::AssignmentStatement assign(ident, val);
+ ast::AssignmentStatement assign(Source{}, ident, val);
td.RegisterVariableForTesting(&v);
@@ -391,7 +393,7 @@
auto* val = create<ast::ScalarConstructorExpression>(
Source{}, create<ast::FloatLiteral>(Source{}, &f32, 1.0f));
- ast::AssignmentStatement assign(ident, val);
+ ast::AssignmentStatement assign(Source{}, ident, val);
td.RegisterVariableForTesting(&v);
diff --git a/src/writer/spirv/builder_block_test.cc b/src/writer/spirv/builder_block_test.cc
index 43977b9..30dc6ba 100644
--- a/src/writer/spirv/builder_block_test.cc
+++ b/src/writer/spirv/builder_block_test.cc
@@ -39,9 +39,10 @@
// Note, this test uses shadow variables which aren't allowed in WGSL but
// serves to prove the block code is pushing new scopes as needed.
- ast::BlockStatement outer;
+ ast::BlockStatement outer(Source{});
outer.append(create<ast::VariableDeclStatement>(
+ Source{},
create<ast::Variable>(Source{}, // source
"var", // name
ast::StorageClass::kFunction, // storage_class
@@ -50,13 +51,15 @@
nullptr, // constructor
ast::VariableDecorationList{}))); // decorations
outer.append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod->RegisterSymbol("var"),
"var"),
create<ast::ScalarConstructorExpression>(
Source{}, create<ast::FloatLiteral>(Source{}, &f32, 1.0f))));
- auto* inner = create<ast::BlockStatement>();
+ auto* inner = create<ast::BlockStatement>(Source{});
inner->append(create<ast::VariableDeclStatement>(
+ Source{},
create<ast::Variable>(Source{}, // source
"var", // name
ast::StorageClass::kFunction, // storage_class
@@ -65,6 +68,7 @@
nullptr, // constructor
ast::VariableDecorationList{}))); // decorations
inner->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod->RegisterSymbol("var"),
"var"),
create<ast::ScalarConstructorExpression>(
@@ -72,6 +76,7 @@
outer.append(inner);
outer.append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod->RegisterSymbol("var"),
"var"),
create<ast::ScalarConstructorExpression>(
diff --git a/src/writer/spirv/builder_call_test.cc b/src/writer/spirv/builder_call_test.cc
index 8607589..de09ffb 100644
--- a/src/writer/spirv/builder_call_test.cc
+++ b/src/writer/spirv/builder_call_test.cc
@@ -61,7 +61,7 @@
nullptr, // constructor
ast::VariableDecorationList{})); // decorations
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::ReturnStatement>(
Source{}, create<ast::BinaryExpression>(
Source{}, ast::BinaryOp::kAdd,
@@ -73,7 +73,7 @@
func_params, &f32, body, ast::FunctionDecorationList{});
ast::Function func(Source{}, mod->RegisterSymbol("main"), "main", {},
- &void_type, create<ast::BlockStatement>(),
+ &void_type, create<ast::BlockStatement>(Source{}),
ast::FunctionDecorationList{});
ast::ExpressionList call_params;
@@ -144,7 +144,7 @@
nullptr, // constructor
ast::VariableDecorationList{})); // decorations
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::ReturnStatement>(
Source{}, create<ast::BinaryExpression>(
Source{}, ast::BinaryOp::kAdd,
@@ -158,7 +158,7 @@
ast::FunctionDecorationList{});
ast::Function func(Source{}, mod->RegisterSymbol("main"), "main", {},
- &void_type, create<ast::BlockStatement>(),
+ &void_type, create<ast::BlockStatement>(Source{}),
ast::FunctionDecorationList{});
ast::ExpressionList call_params;
@@ -167,11 +167,12 @@
call_params.push_back(create<ast::ScalarConstructorExpression>(
Source{}, create<ast::FloatLiteral>(Source{}, &f32, 1.f)));
- ast::CallStatement expr(create<ast::CallExpression>(
- Source{},
- create<ast::IdentifierExpression>(Source{}, mod->RegisterSymbol("a_func"),
- "a_func"),
- call_params));
+ ast::CallStatement expr(
+ Source{}, create<ast::CallExpression>(
+ Source{},
+ create<ast::IdentifierExpression>(
+ Source{}, mod->RegisterSymbol("a_func"), "a_func"),
+ call_params));
ASSERT_TRUE(td.DetermineFunction(&func)) << td.error();
ASSERT_TRUE(td.DetermineFunction(&a_func)) << td.error();
diff --git a/src/writer/spirv/builder_discard_test.cc b/src/writer/spirv/builder_discard_test.cc
index caf5b81..6b3796a 100644
--- a/src/writer/spirv/builder_discard_test.cc
+++ b/src/writer/spirv/builder_discard_test.cc
@@ -27,7 +27,7 @@
using BuilderTest = TestHelper;
TEST_F(BuilderTest, Discard) {
- ast::DiscardStatement expr;
+ ast::DiscardStatement expr(Source{});
b.push_function(Function{});
EXPECT_EQ(b.GenerateStatement(&expr), 1u) << b.error();
diff --git a/src/writer/spirv/builder_function_decoration_test.cc b/src/writer/spirv/builder_function_decoration_test.cc
index 67a294c..c9f1725 100644
--- a/src/writer/spirv/builder_function_decoration_test.cc
+++ b/src/writer/spirv/builder_function_decoration_test.cc
@@ -43,7 +43,7 @@
ast::Function func(
Source{}, mod->RegisterSymbol("main"), "main", {}, &void_type,
- create<ast::BlockStatement>(),
+ create<ast::BlockStatement>(Source{}),
ast::FunctionDecorationList{
create<ast::StageDecoration>(ast::PipelineStage::kVertex, Source{}),
});
@@ -69,7 +69,7 @@
ast::type::Void void_type;
ast::Function func(Source{}, mod->RegisterSymbol("main"), "main", {},
- &void_type, create<ast::BlockStatement>(),
+ &void_type, create<ast::BlockStatement>(Source{}),
ast::FunctionDecorationList{
create<ast::StageDecoration>(params.stage, Source{}),
});
@@ -99,7 +99,7 @@
ast::Function func(
Source{}, mod->RegisterSymbol("main"), "main", {}, &void_type,
- create<ast::BlockStatement>(),
+ create<ast::BlockStatement>(Source{}),
ast::FunctionDecorationList{
create<ast::StageDecoration>(ast::PipelineStage::kVertex, Source{}),
});
@@ -163,19 +163,22 @@
ast::type::F32 f32;
ast::type::Void void_type;
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod->RegisterSymbol("my_out"),
"my_out"),
create<ast::IdentifierExpression>(Source{}, mod->RegisterSymbol("my_in"),
"my_in")));
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod->RegisterSymbol("my_wg"),
"my_wg"),
create<ast::IdentifierExpression>(Source{}, mod->RegisterSymbol("my_wg"),
"my_wg")));
// Add duplicate usages so we show they don't get output multiple times.
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod->RegisterSymbol("my_out"),
"my_out"),
create<ast::IdentifierExpression>(Source{}, mod->RegisterSymbol("my_in"),
@@ -253,7 +256,7 @@
ast::Function func(
Source{}, mod->RegisterSymbol("main"), "main", {}, &void_type,
- create<ast::BlockStatement>(),
+ create<ast::BlockStatement>(Source{}),
ast::FunctionDecorationList{
create<ast::StageDecoration>(ast::PipelineStage::kFragment, Source{}),
});
@@ -269,7 +272,7 @@
ast::Function func(
Source{}, mod->RegisterSymbol("main"), "main", {}, &void_type,
- create<ast::BlockStatement>(),
+ create<ast::BlockStatement>(Source{}),
ast::FunctionDecorationList{
create<ast::StageDecoration>(ast::PipelineStage::kCompute, Source{}),
});
@@ -285,7 +288,7 @@
ast::Function func(
Source{}, mod->RegisterSymbol("main"), "main", {}, &void_type,
- create<ast::BlockStatement>(),
+ create<ast::BlockStatement>(Source{}),
ast::FunctionDecorationList{
create<ast::WorkgroupDecoration>(2u, 4u, 6u, Source{}),
create<ast::StageDecoration>(ast::PipelineStage::kCompute, Source{}),
@@ -302,14 +305,14 @@
ast::Function func1(
Source{}, mod->RegisterSymbol("main1"), "main1", {}, &void_type,
- create<ast::BlockStatement>(),
+ create<ast::BlockStatement>(Source{}),
ast::FunctionDecorationList{
create<ast::StageDecoration>(ast::PipelineStage::kFragment, Source{}),
});
ast::Function func2(
Source{}, mod->RegisterSymbol("main2"), "main2", {}, &void_type,
- create<ast::BlockStatement>(),
+ create<ast::BlockStatement>(Source{}),
ast::FunctionDecorationList{
create<ast::StageDecoration>(ast::PipelineStage::kFragment, Source{}),
});
diff --git a/src/writer/spirv/builder_function_test.cc b/src/writer/spirv/builder_function_test.cc
index 6c7aefd..e0024d4 100644
--- a/src/writer/spirv/builder_function_test.cc
+++ b/src/writer/spirv/builder_function_test.cc
@@ -48,7 +48,7 @@
TEST_F(BuilderTest, Function_Empty) {
ast::type::Void void_type;
ast::Function func(Source{}, mod->RegisterSymbol("a_func"), "a_func", {},
- &void_type, create<ast::BlockStatement>(),
+ &void_type, create<ast::BlockStatement>(Source{}),
ast::FunctionDecorationList{});
ASSERT_TRUE(b.GenerateFunction(&func));
@@ -65,7 +65,7 @@
TEST_F(BuilderTest, Function_Terminator_Return) {
ast::type::Void void_type;
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::ReturnStatement>(Source{}));
ast::Function func(Source{}, mod->RegisterSymbol("a_func"), "a_func", {},
@@ -96,7 +96,7 @@
ast::VariableDecorationList{}); // decorations
td.RegisterVariableForTesting(var_a);
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::ReturnStatement>(
Source{}, create<ast::IdentifierExpression>(
Source{}, mod->RegisterSymbol("a"), "a")));
@@ -126,8 +126,8 @@
TEST_F(BuilderTest, Function_Terminator_Discard) {
ast::type::Void void_type;
- auto* body = create<ast::BlockStatement>();
- body->append(create<ast::DiscardStatement>());
+ auto* body = create<ast::BlockStatement>(Source{});
+ body->append(create<ast::DiscardStatement>(Source{}));
ast::Function func(Source{}, mod->RegisterSymbol("a_func"), "a_func", {},
&void_type, body, ast::FunctionDecorationList{});
@@ -166,7 +166,7 @@
ast::VariableDecorationList{}), // decorations
};
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::ReturnStatement>(
Source{}, create<ast::IdentifierExpression>(
Source{}, mod->RegisterSymbol("a"), "a")));
@@ -196,7 +196,7 @@
TEST_F(BuilderTest, Function_WithBody) {
ast::type::Void void_type;
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::ReturnStatement>(Source{}));
ast::Function func(Source{}, mod->RegisterSymbol("a_func"), "a_func", {},
@@ -216,7 +216,7 @@
TEST_F(BuilderTest, FunctionType) {
ast::type::Void void_type;
ast::Function func(Source{}, mod->RegisterSymbol("a_func"), "a_func", {},
- &void_type, create<ast::BlockStatement>(),
+ &void_type, create<ast::BlockStatement>(Source{}),
ast::FunctionDecorationList{});
ASSERT_TRUE(b.GenerateFunction(&func));
@@ -228,10 +228,10 @@
TEST_F(BuilderTest, FunctionType_DeDuplicate) {
ast::type::Void void_type;
ast::Function func1(Source{}, mod->RegisterSymbol("a_func"), "a_func", {},
- &void_type, create<ast::BlockStatement>(),
+ &void_type, create<ast::BlockStatement>(Source{}),
ast::FunctionDecorationList{});
ast::Function func2(Source{}, mod->RegisterSymbol("b_func"), "b_func", {},
- &void_type, create<ast::BlockStatement>(),
+ &void_type, create<ast::BlockStatement>(Source{}),
ast::FunctionDecorationList{});
ASSERT_TRUE(b.GenerateFunction(&func1));
@@ -309,8 +309,8 @@
"d")), // constructor
ast::VariableDecorationList{}); // decorations
- auto* body = create<ast::BlockStatement>();
- body->append(create<ast::VariableDeclStatement>(var));
+ auto* body = create<ast::BlockStatement>(Source{});
+ body->append(create<ast::VariableDeclStatement>(Source{}, var));
body->append(create<ast::ReturnStatement>(Source{}));
auto* func = create<ast::Function>(
@@ -340,8 +340,8 @@
"d")), // constructor
ast::VariableDecorationList{}); // decorations
- auto* body = create<ast::BlockStatement>();
- body->append(create<ast::VariableDeclStatement>(var));
+ auto* body = create<ast::BlockStatement>(Source{});
+ body->append(create<ast::VariableDeclStatement>(Source{}, var));
body->append(create<ast::ReturnStatement>(Source{}));
auto* func = create<ast::Function>(
diff --git a/src/writer/spirv/builder_if_test.cc b/src/writer/spirv/builder_if_test.cc
index f5050ea..b5c8b8b 100644
--- a/src/writer/spirv/builder_if_test.cc
+++ b/src/writer/spirv/builder_if_test.cc
@@ -48,7 +48,7 @@
auto* cond = create<ast::ScalarConstructorExpression>(
Source{}, create<ast::BoolLiteral>(Source{}, &bool_type, true));
- ast::IfStatement expr(Source{}, cond, create<ast::BlockStatement>(),
+ ast::IfStatement expr(Source{}, cond, create<ast::BlockStatement>(Source{}),
ast::ElseStatementList{});
ASSERT_TRUE(td.DetermineResultType(&expr)) << td.error();
@@ -84,8 +84,9 @@
nullptr, // constructor
ast::VariableDecorationList{}); // decorations
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod->RegisterSymbol("v"),
"v"),
create<ast::ScalarConstructorExpression>(
@@ -139,15 +140,17 @@
nullptr, // constructor
ast::VariableDecorationList{}); // decorations
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod->RegisterSymbol("v"),
"v"),
create<ast::ScalarConstructorExpression>(
Source{}, create<ast::SintLiteral>(Source{}, &i32, 2))));
- auto* else_body = create<ast::BlockStatement>();
+ auto* else_body = create<ast::BlockStatement>(Source{});
else_body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod->RegisterSymbol("v"),
"v"),
create<ast::ScalarConstructorExpression>(
@@ -156,8 +159,9 @@
auto* cond = create<ast::ScalarConstructorExpression>(
Source{}, create<ast::BoolLiteral>(Source{}, &bool_type, true));
- ast::IfStatement expr(Source{}, cond, body,
- {create<ast::ElseStatement>(else_body)});
+ ast::IfStatement expr(
+ Source{}, cond, body,
+ {create<ast::ElseStatement>(Source{}, nullptr, else_body)});
td.RegisterVariableForTesting(var);
@@ -207,15 +211,17 @@
nullptr, // constructor
ast::VariableDecorationList{}); // decorations
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod->RegisterSymbol("v"),
"v"),
create<ast::ScalarConstructorExpression>(
Source{}, create<ast::SintLiteral>(Source{}, &i32, 2))));
- auto* else_body = create<ast::BlockStatement>();
+ auto* else_body = create<ast::BlockStatement>(Source{});
else_body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod->RegisterSymbol("v"),
"v"),
create<ast::ScalarConstructorExpression>(
@@ -227,8 +233,9 @@
auto* cond = create<ast::ScalarConstructorExpression>(
Source{}, create<ast::BoolLiteral>(Source{}, &bool_type, true));
- ast::IfStatement expr(Source{}, cond, body,
- {create<ast::ElseStatement>(else_cond, else_body)});
+ ast::IfStatement expr(
+ Source{}, cond, body,
+ {create<ast::ElseStatement>(Source{}, else_cond, else_body)});
td.RegisterVariableForTesting(var);
@@ -287,26 +294,30 @@
nullptr, // constructor
ast::VariableDecorationList{}); // decorations
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod->RegisterSymbol("v"),
"v"),
create<ast::ScalarConstructorExpression>(
Source{}, create<ast::SintLiteral>(Source{}, &i32, 2))));
- auto* elseif_1_body = create<ast::BlockStatement>();
+ auto* elseif_1_body = create<ast::BlockStatement>(Source{});
elseif_1_body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod->RegisterSymbol("v"),
"v"),
create<ast::ScalarConstructorExpression>(
Source{}, create<ast::SintLiteral>(Source{}, &i32, 3))));
- auto* elseif_2_body = create<ast::BlockStatement>();
+ auto* elseif_2_body = create<ast::BlockStatement>(Source{});
elseif_2_body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod->RegisterSymbol("v"),
"v"),
create<ast::ScalarConstructorExpression>(
Source{}, create<ast::SintLiteral>(Source{}, &i32, 4))));
- auto* else_body = create<ast::BlockStatement>();
+ auto* else_body = create<ast::BlockStatement>(Source{});
else_body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod->RegisterSymbol("v"),
"v"),
create<ast::ScalarConstructorExpression>(
@@ -323,9 +334,9 @@
ast::IfStatement expr(
Source{}, cond, body,
{
- create<ast::ElseStatement>(elseif_1_cond, elseif_1_body),
- create<ast::ElseStatement>(elseif_2_cond, elseif_2_body),
- create<ast::ElseStatement>(else_body),
+ create<ast::ElseStatement>(Source{}, elseif_1_cond, elseif_1_body),
+ create<ast::ElseStatement>(Source{}, elseif_2_cond, elseif_2_body),
+ create<ast::ElseStatement>(Source{}, nullptr, else_body),
});
td.RegisterVariableForTesting(var);
@@ -387,16 +398,17 @@
auto* cond = create<ast::ScalarConstructorExpression>(
Source{}, create<ast::BoolLiteral>(Source{}, &bool_type, true));
- auto* if_body = create<ast::BlockStatement>();
- if_body->append(create<ast::BreakStatement>());
+ auto* if_body = create<ast::BlockStatement>(Source{});
+ if_body->append(create<ast::BreakStatement>(Source{}));
auto* if_stmt = create<ast::IfStatement>(Source{}, cond, if_body,
ast::ElseStatementList{});
- auto* loop_body = create<ast::BlockStatement>();
+ auto* loop_body = create<ast::BlockStatement>(Source{});
loop_body->append(if_stmt);
- ast::LoopStatement expr(loop_body, create<ast::BlockStatement>());
+ ast::LoopStatement expr(Source{}, loop_body,
+ create<ast::BlockStatement>(Source{}));
ASSERT_TRUE(td.DetermineResultType(&expr)) << td.error();
@@ -435,17 +447,19 @@
auto* cond = create<ast::ScalarConstructorExpression>(
Source{}, create<ast::BoolLiteral>(Source{}, &bool_type, true));
- auto* else_body = create<ast::BlockStatement>();
- else_body->append(create<ast::BreakStatement>());
+ auto* else_body = create<ast::BlockStatement>(Source{});
+ else_body->append(create<ast::BreakStatement>(Source{}));
auto* if_stmt = create<ast::IfStatement>(
- Source{}, cond, create<ast::BlockStatement>(),
- ast::ElseStatementList{create<ast::ElseStatement>(else_body)});
+ Source{}, cond, create<ast::BlockStatement>(Source{}),
+ ast::ElseStatementList{
+ create<ast::ElseStatement>(Source{}, nullptr, else_body)});
- auto* loop_body = create<ast::BlockStatement>();
+ auto* loop_body = create<ast::BlockStatement>(Source{});
loop_body->append(if_stmt);
- ast::LoopStatement expr(loop_body, create<ast::BlockStatement>());
+ ast::LoopStatement expr(Source{}, loop_body,
+ create<ast::BlockStatement>(Source{}));
ASSERT_TRUE(td.DetermineResultType(&expr)) << td.error();
@@ -485,16 +499,17 @@
auto* cond = create<ast::ScalarConstructorExpression>(
Source{}, create<ast::BoolLiteral>(Source{}, &bool_type, true));
- auto* if_body = create<ast::BlockStatement>();
- if_body->append(create<ast::ContinueStatement>());
+ auto* if_body = create<ast::BlockStatement>(Source{});
+ if_body->append(create<ast::ContinueStatement>(Source{}));
auto* if_stmt = create<ast::IfStatement>(Source{}, cond, if_body,
ast::ElseStatementList{});
- auto* loop_body = create<ast::BlockStatement>();
+ auto* loop_body = create<ast::BlockStatement>(Source{});
loop_body->append(if_stmt);
- ast::LoopStatement expr(loop_body, create<ast::BlockStatement>());
+ ast::LoopStatement expr(Source{}, loop_body,
+ create<ast::BlockStatement>(Source{}));
ASSERT_TRUE(td.DetermineResultType(&expr)) << td.error();
@@ -533,17 +548,19 @@
auto* cond = create<ast::ScalarConstructorExpression>(
Source{}, create<ast::BoolLiteral>(Source{}, &bool_type, true));
- auto* else_body = create<ast::BlockStatement>();
- else_body->append(create<ast::ContinueStatement>());
+ auto* else_body = create<ast::BlockStatement>(Source{});
+ else_body->append(create<ast::ContinueStatement>(Source{}));
auto* if_stmt = create<ast::IfStatement>(
- Source{}, cond, create<ast::BlockStatement>(),
- ast::ElseStatementList{create<ast::ElseStatement>(else_body)});
+ Source{}, cond, create<ast::BlockStatement>(Source{}),
+ ast::ElseStatementList{
+ create<ast::ElseStatement>(Source{}, nullptr, else_body)});
- auto* loop_body = create<ast::BlockStatement>();
+ auto* loop_body = create<ast::BlockStatement>(Source{});
loop_body->append(if_stmt);
- ast::LoopStatement expr(loop_body, create<ast::BlockStatement>());
+ ast::LoopStatement expr(Source{}, loop_body,
+ create<ast::BlockStatement>(Source{}));
ASSERT_TRUE(td.DetermineResultType(&expr)) << td.error();
@@ -581,7 +598,7 @@
auto* cond = create<ast::ScalarConstructorExpression>(
Source{}, create<ast::BoolLiteral>(Source{}, &bool_type, true));
- auto* if_body = create<ast::BlockStatement>();
+ auto* if_body = create<ast::BlockStatement>(Source{});
if_body->append(create<ast::ReturnStatement>(Source{}));
ast::IfStatement expr(Source{}, cond, if_body, ast::ElseStatementList{});
@@ -613,7 +630,7 @@
auto* cond2 = create<ast::ScalarConstructorExpression>(
Source{}, create<ast::BoolLiteral>(Source{}, &bool_type, false));
- auto* if_body = create<ast::BlockStatement>();
+ auto* if_body = create<ast::BlockStatement>(Source{});
if_body->append(create<ast::ReturnStatement>(Source{}, cond2));
ast::IfStatement expr(Source{}, cond, if_body, ast::ElseStatementList{});
@@ -655,7 +672,7 @@
ast::IfStatement expr(Source{},
create<ast::IdentifierExpression>(
Source{}, mod->RegisterSymbol("a"), "a"),
- create<ast::BlockStatement>(),
+ create<ast::BlockStatement>(Source{}),
ast::ElseStatementList{});
ASSERT_TRUE(td.DetermineResultType(&expr)) << td.error();
diff --git a/src/writer/spirv/builder_intrinsic_test.cc b/src/writer/spirv/builder_intrinsic_test.cc
index de5055b..8de99f1 100644
--- a/src/writer/spirv/builder_intrinsic_test.cc
+++ b/src/writer/spirv/builder_intrinsic_test.cc
@@ -472,7 +472,7 @@
ASSERT_TRUE(td.DetermineResultType(&expr)) << td.error();
ast::Function func(Source{}, mod->RegisterSymbol("a_func"), "a_func", {},
- ty.void_, create<ast::BlockStatement>(),
+ ty.void_, create<ast::BlockStatement>(Source{}),
ast::FunctionDecorationList{});
ASSERT_TRUE(b.GenerateGlobalVariable(var)) << b.error();
@@ -506,7 +506,7 @@
ASSERT_TRUE(td.DetermineResultType(&expr)) << td.error();
ast::Function func(Source{}, mod->RegisterSymbol("a_func"), "a_func", {},
- ty.void_, create<ast::BlockStatement>(),
+ ty.void_, create<ast::BlockStatement>(Source{}),
ast::FunctionDecorationList{});
ASSERT_TRUE(b.GenerateFunction(&func)) << b.error();
@@ -534,7 +534,7 @@
ASSERT_TRUE(td.DetermineResultType(&expr)) << td.error();
ast::Function func(Source{}, mod->RegisterSymbol("a_func"), "a_func", {},
- ty.void_, create<ast::BlockStatement>(),
+ ty.void_, create<ast::BlockStatement>(Source{}),
ast::FunctionDecorationList{});
ASSERT_TRUE(b.GenerateFunction(&func)) << b.error();
@@ -588,7 +588,7 @@
ASSERT_TRUE(td.DetermineResultType(&expr)) << td.error();
ast::Function func(Source{}, mod->RegisterSymbol("a_func"), "a_func", {},
- ty.void_, create<ast::BlockStatement>(),
+ ty.void_, create<ast::BlockStatement>(Source{}),
ast::FunctionDecorationList{});
ASSERT_TRUE(b.GenerateFunction(&func)) << b.error();
@@ -613,7 +613,7 @@
ASSERT_TRUE(td.DetermineResultType(&expr)) << td.error();
ast::Function func(Source{}, mod->RegisterSymbol("a_func"), "a_func", {},
- ty.void_, create<ast::BlockStatement>(),
+ ty.void_, create<ast::BlockStatement>(Source{}),
ast::FunctionDecorationList{});
ASSERT_TRUE(b.GenerateFunction(&func)) << b.error();
@@ -640,7 +640,7 @@
ASSERT_TRUE(td.DetermineResultType(&expr)) << td.error();
ast::Function func(Source{}, mod->RegisterSymbol("a_func"), "a_func", {},
- ty.void_, create<ast::BlockStatement>(),
+ ty.void_, create<ast::BlockStatement>(Source{}),
ast::FunctionDecorationList{});
ASSERT_TRUE(b.GenerateFunction(&func)) << b.error();
@@ -672,7 +672,7 @@
ASSERT_TRUE(td.DetermineResultType(&expr)) << td.error();
ast::Function func(Source{}, mod->RegisterSymbol("a_func"), "a_func", {},
- ty.void_, create<ast::BlockStatement>(),
+ ty.void_, create<ast::BlockStatement>(Source{}),
ast::FunctionDecorationList{});
ASSERT_TRUE(b.GenerateFunction(&func)) << b.error();
@@ -701,7 +701,7 @@
ASSERT_TRUE(td.DetermineResultType(&expr)) << td.error();
ast::Function func(Source{}, mod->RegisterSymbol("a_func"), "a_func", {},
- ty.void_, create<ast::BlockStatement>(),
+ ty.void_, create<ast::BlockStatement>(Source{}),
ast::FunctionDecorationList{});
ASSERT_TRUE(b.GenerateFunction(&func)) << b.error();
@@ -738,7 +738,7 @@
ASSERT_TRUE(td.DetermineResultType(&expr)) << td.error();
ast::Function func(Source{}, mod->RegisterSymbol("a_func"), "a_func", {},
- ty.void_, create<ast::BlockStatement>(),
+ ty.void_, create<ast::BlockStatement>(Source{}),
ast::FunctionDecorationList{});
ASSERT_TRUE(b.GenerateFunction(&func)) << b.error();
@@ -764,7 +764,7 @@
ASSERT_TRUE(td.DetermineResultType(&expr)) << td.error();
ast::Function func(Source{}, mod->RegisterSymbol("a_func"), "a_func", {},
- ty.void_, create<ast::BlockStatement>(),
+ ty.void_, create<ast::BlockStatement>(Source{}),
ast::FunctionDecorationList{});
ASSERT_TRUE(b.GenerateFunction(&func)) << b.error();
@@ -793,7 +793,7 @@
ASSERT_TRUE(td.DetermineResultType(&expr)) << td.error();
ast::Function func(Source{}, mod->RegisterSymbol("a_func"), "a_func", {},
- ty.void_, create<ast::BlockStatement>(),
+ ty.void_, create<ast::BlockStatement>(Source{}),
ast::FunctionDecorationList{});
ASSERT_TRUE(b.GenerateFunction(&func)) << b.error();
@@ -824,7 +824,7 @@
ASSERT_TRUE(td.DetermineResultType(&expr)) << td.error();
ast::Function func(Source{}, mod->RegisterSymbol("a_func"), "a_func", {},
- ty.void_, create<ast::BlockStatement>(),
+ ty.void_, create<ast::BlockStatement>(Source{}),
ast::FunctionDecorationList{});
ASSERT_TRUE(b.GenerateFunction(&func)) << b.error();
@@ -854,7 +854,7 @@
ASSERT_TRUE(td.DetermineResultType(&expr)) << td.error();
ast::Function func(Source{}, mod->RegisterSymbol("a_func"), "a_func", {},
- ty.void_, create<ast::BlockStatement>(),
+ ty.void_, create<ast::BlockStatement>(Source{}),
ast::FunctionDecorationList{});
ASSERT_TRUE(b.GenerateFunction(&func)) << b.error();
@@ -895,7 +895,7 @@
ASSERT_TRUE(td.DetermineResultType(&expr)) << td.error();
ast::Function func(Source{}, mod->RegisterSymbol("a_func"), "a_func", {},
- ty.void_, create<ast::BlockStatement>(),
+ ty.void_, create<ast::BlockStatement>(Source{}),
ast::FunctionDecorationList{});
ASSERT_TRUE(b.GenerateFunction(&func)) << b.error();
@@ -923,7 +923,7 @@
ASSERT_TRUE(td.DetermineResultType(&expr)) << td.error();
ast::Function func(Source{}, mod->RegisterSymbol("a_func"), "a_func", {},
- ty.void_, create<ast::BlockStatement>(),
+ ty.void_, create<ast::BlockStatement>(Source{}),
ast::FunctionDecorationList{});
ASSERT_TRUE(b.GenerateFunction(&func)) << b.error();
@@ -958,7 +958,7 @@
ASSERT_TRUE(td.DetermineResultType(&expr)) << td.error();
ast::Function func(Source{}, mod->RegisterSymbol("a_func"), "a_func", {},
- ty.void_, create<ast::BlockStatement>(),
+ ty.void_, create<ast::BlockStatement>(Source{}),
ast::FunctionDecorationList{});
ASSERT_TRUE(b.GenerateFunction(&func)) << b.error();
@@ -986,7 +986,7 @@
ASSERT_TRUE(td.DetermineResultType(&expr)) << td.error();
ast::Function func(Source{}, mod->RegisterSymbol("a_func"), "a_func", {},
- ty.void_, create<ast::BlockStatement>(),
+ ty.void_, create<ast::BlockStatement>(Source{}),
ast::FunctionDecorationList{});
ASSERT_TRUE(b.GenerateFunction(&func)) << b.error();
@@ -1021,7 +1021,7 @@
ASSERT_TRUE(td.DetermineResultType(&expr)) << td.error();
ast::Function func(Source{}, mod->RegisterSymbol("a_func"), "a_func", {},
- ty.void_, create<ast::BlockStatement>(),
+ ty.void_, create<ast::BlockStatement>(Source{}),
ast::FunctionDecorationList{});
ASSERT_TRUE(b.GenerateFunction(&func)) << b.error();
@@ -1049,7 +1049,7 @@
ASSERT_TRUE(td.DetermineResultType(&expr)) << td.error();
ast::Function func(Source{}, mod->RegisterSymbol("a_func"), "a_func", {},
- ty.void_, create<ast::BlockStatement>(),
+ ty.void_, create<ast::BlockStatement>(Source{}),
ast::FunctionDecorationList{});
ASSERT_TRUE(b.GenerateFunction(&func)) << b.error();
@@ -1085,7 +1085,7 @@
ASSERT_TRUE(td.DetermineResultType(&expr)) << td.error();
ast::Function func(Source{}, mod->RegisterSymbol("a_func"), "a_func", {},
- ty.void_, create<ast::BlockStatement>(),
+ ty.void_, create<ast::BlockStatement>(Source{}),
ast::FunctionDecorationList{});
ASSERT_TRUE(b.GenerateFunction(&func)) << b.error();
@@ -1113,7 +1113,7 @@
ASSERT_TRUE(td.DetermineResultType(&expr)) << td.error();
ast::Function func(Source{}, mod->RegisterSymbol("a_func"), "a_func", {},
- ty.void_, create<ast::BlockStatement>(),
+ ty.void_, create<ast::BlockStatement>(Source{}),
ast::FunctionDecorationList{});
ASSERT_TRUE(b.GenerateFunction(&func)) << b.error();
@@ -1149,7 +1149,7 @@
ASSERT_TRUE(td.DetermineResultType(&expr)) << td.error();
ast::Function func(Source{}, mod->RegisterSymbol("a_func"), "a_func", {},
- ty.void_, create<ast::BlockStatement>(),
+ ty.void_, create<ast::BlockStatement>(Source{}),
ast::FunctionDecorationList{});
ASSERT_TRUE(b.GenerateFunction(&func)) << b.error();
@@ -1179,7 +1179,7 @@
ASSERT_TRUE(td.DetermineResultType(&expr)) << td.error();
ast::Function func(Source{}, mod->RegisterSymbol("a_func"), "a_func", {},
- ty.void_, create<ast::BlockStatement>(),
+ ty.void_, create<ast::BlockStatement>(Source{}),
ast::FunctionDecorationList{});
ASSERT_TRUE(b.GenerateFunction(&func)) << b.error();
@@ -1214,7 +1214,7 @@
ASSERT_TRUE(td.DetermineResultType(&expr)) << td.error();
ast::Function func(Source{}, mod->RegisterSymbol("a_func"), "a_func", {},
- ty.void_, create<ast::BlockStatement>(),
+ ty.void_, create<ast::BlockStatement>(Source{}),
ast::FunctionDecorationList{});
ASSERT_TRUE(b.GenerateFunction(&func)) << b.error();
@@ -1244,7 +1244,7 @@
ASSERT_TRUE(td.DetermineResultType(&expr)) << td.error();
ast::Function func(Source{}, mod->RegisterSymbol("a_func"), "a_func", {},
- ty.void_, create<ast::BlockStatement>(),
+ ty.void_, create<ast::BlockStatement>(Source{}),
ast::FunctionDecorationList{});
ASSERT_TRUE(b.GenerateFunction(&func)) << b.error();
@@ -1277,7 +1277,7 @@
ASSERT_TRUE(td.DetermineResultType(&expr)) << td.error();
ast::Function func(Source{}, mod->RegisterSymbol("a_func"), "a_func", {},
- ty.void_, create<ast::BlockStatement>(),
+ ty.void_, create<ast::BlockStatement>(Source{}),
ast::FunctionDecorationList{});
ASSERT_TRUE(b.GenerateFunction(&func)) << b.error();
@@ -1321,7 +1321,7 @@
ASSERT_TRUE(td.DetermineResultType(&expr)) << td.error();
ast::Function func(Source{}, mod->RegisterSymbol("a_func"), "a_func", {},
- ty.void_, create<ast::BlockStatement>(),
+ ty.void_, create<ast::BlockStatement>(Source{}),
ast::FunctionDecorationList{});
ASSERT_TRUE(b.GenerateFunction(&func)) << b.error();
@@ -1361,7 +1361,7 @@
ASSERT_TRUE(td.DetermineResultType(&expr)) << td.error();
ast::Function func(Source{}, mod->RegisterSymbol("a_func"), "a_func", {},
- ty.void_, create<ast::BlockStatement>(),
+ ty.void_, create<ast::BlockStatement>(Source{}),
ast::FunctionDecorationList{});
ASSERT_TRUE(b.GenerateFunction(&func)) << b.error();
@@ -1407,7 +1407,7 @@
ASSERT_TRUE(td.DetermineResultType(&expr)) << td.error();
ast::Function func(Source{}, mod->RegisterSymbol("a_func"), "a_func", {},
- ty.void_, create<ast::BlockStatement>(),
+ ty.void_, create<ast::BlockStatement>(Source{}),
ast::FunctionDecorationList{});
ASSERT_TRUE(b.GenerateFunction(&func)) << b.error();
diff --git a/src/writer/spirv/builder_loop_test.cc b/src/writer/spirv/builder_loop_test.cc
index 3fa284d..5943521 100644
--- a/src/writer/spirv/builder_loop_test.cc
+++ b/src/writer/spirv/builder_loop_test.cc
@@ -39,13 +39,13 @@
// loop {
// }
- ast::LoopStatement expr(create<ast::BlockStatement>(),
- create<ast::BlockStatement>());
+ ast::LoopStatement loop(Source{}, create<ast::BlockStatement>(Source{}),
+ create<ast::BlockStatement>(Source{}));
- ASSERT_TRUE(td.DetermineResultType(&expr)) << td.error();
+ ASSERT_TRUE(td.DetermineResultType(&loop)) << td.error();
b.push_function(Function{});
- EXPECT_TRUE(b.GenerateLoopStatement(&expr)) << b.error();
+ EXPECT_TRUE(b.GenerateLoopStatement(&loop)) << b.error();
EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()),
R"(OpBranch %1
%1 = OpLabel
@@ -74,22 +74,24 @@
nullptr, // constructor
ast::VariableDecorationList{}); // decorations
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod->RegisterSymbol("v"),
"v"),
create<ast::ScalarConstructorExpression>(
Source{}, create<ast::SintLiteral>(Source{}, &i32, 2))));
- ast::LoopStatement expr(body, create<ast::BlockStatement>());
+ ast::LoopStatement loop(Source{}, body,
+ create<ast::BlockStatement>(Source{}));
td.RegisterVariableForTesting(var);
- ASSERT_TRUE(td.DetermineResultType(&expr)) << td.error();
+ ASSERT_TRUE(td.DetermineResultType(&loop)) << td.error();
b.push_function(Function{});
ASSERT_TRUE(b.GenerateGlobalVariable(var)) << b.error();
- EXPECT_TRUE(b.GenerateLoopStatement(&expr)) << b.error();
+ EXPECT_TRUE(b.GenerateLoopStatement(&loop)) << b.error();
EXPECT_EQ(DumpInstructions(b.types()), R"(%3 = OpTypeInt 32 1
%2 = OpTypePointer Private %3
%4 = OpConstantNull %3
@@ -128,28 +130,30 @@
nullptr, // constructor
ast::VariableDecorationList{}); // decorations
- auto* body = create<ast::BlockStatement>();
+ auto* body = create<ast::BlockStatement>(Source{});
body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod->RegisterSymbol("v"),
"v"),
create<ast::ScalarConstructorExpression>(
Source{}, create<ast::SintLiteral>(Source{}, &i32, 2))));
- auto* continuing = create<ast::BlockStatement>();
+ auto* continuing = create<ast::BlockStatement>(Source{});
continuing->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod->RegisterSymbol("v"),
"v"),
create<ast::ScalarConstructorExpression>(
Source{}, create<ast::SintLiteral>(Source{}, &i32, 3))));
- ast::LoopStatement expr(body, continuing);
+ ast::LoopStatement loop(Source{}, body, continuing);
td.RegisterVariableForTesting(var);
- ASSERT_TRUE(td.DetermineResultType(&expr)) << td.error();
+ ASSERT_TRUE(td.DetermineResultType(&loop)) << td.error();
b.push_function(Function{});
ASSERT_TRUE(b.GenerateGlobalVariable(var)) << b.error();
- EXPECT_TRUE(b.GenerateLoopStatement(&expr)) << b.error();
+ EXPECT_TRUE(b.GenerateLoopStatement(&loop)) << b.error();
EXPECT_EQ(DumpInstructions(b.types()), R"(%3 = OpTypeInt 32 1
%2 = OpTypePointer Private %3
%4 = OpConstantNull %3
@@ -176,16 +180,17 @@
// loop {
// continue;
// }
- auto* body = create<ast::BlockStatement>();
- body->append(create<ast::ContinueStatement>());
+ auto* body = create<ast::BlockStatement>(Source{});
+ body->append(create<ast::ContinueStatement>(Source{}));
- ast::LoopStatement expr(body, create<ast::BlockStatement>());
+ ast::LoopStatement loop(Source{}, body,
+ create<ast::BlockStatement>(Source{}));
- ASSERT_TRUE(td.DetermineResultType(&expr)) << td.error();
+ ASSERT_TRUE(td.DetermineResultType(&loop)) << td.error();
b.push_function(Function{});
- EXPECT_TRUE(b.GenerateLoopStatement(&expr)) << b.error();
+ EXPECT_TRUE(b.GenerateLoopStatement(&loop)) << b.error();
EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()),
R"(OpBranch %1
%1 = OpLabel
@@ -203,16 +208,17 @@
// loop {
// break;
// }
- auto* body = create<ast::BlockStatement>();
- body->append(create<ast::BreakStatement>());
+ auto* body = create<ast::BlockStatement>(Source{});
+ body->append(create<ast::BreakStatement>(Source{}));
- ast::LoopStatement expr(body, create<ast::BlockStatement>());
+ ast::LoopStatement loop(Source{}, body,
+ create<ast::BlockStatement>(Source{}));
- ASSERT_TRUE(td.DetermineResultType(&expr)) << td.error();
+ ASSERT_TRUE(td.DetermineResultType(&loop)) << td.error();
b.push_function(Function{});
- EXPECT_TRUE(b.GenerateLoopStatement(&expr)) << b.error();
+ EXPECT_TRUE(b.GenerateLoopStatement(&loop)) << b.error();
EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()),
R"(OpBranch %1
%1 = OpLabel
diff --git a/src/writer/spirv/builder_switch_test.cc b/src/writer/spirv/builder_switch_test.cc
index 10341be..3e99d19 100644
--- a/src/writer/spirv/builder_switch_test.cc
+++ b/src/writer/spirv/builder_switch_test.cc
@@ -47,7 +47,7 @@
auto* cond = create<ast::ScalarConstructorExpression>(
Source{}, create<ast::SintLiteral>(Source{}, &i32, 1));
- ast::SwitchStatement expr(cond, ast::CaseStatementList{});
+ ast::SwitchStatement expr(Source{}, cond, ast::CaseStatementList{});
ASSERT_TRUE(td.DetermineResultType(&expr)) << td.error();
@@ -93,15 +93,17 @@
nullptr, // constructor
ast::VariableDecorationList{}); // decorations
- auto* case_1_body = create<ast::BlockStatement>();
+ auto* case_1_body = create<ast::BlockStatement>(Source{});
case_1_body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod->RegisterSymbol("v"),
"v"),
create<ast::ScalarConstructorExpression>(
Source{}, create<ast::SintLiteral>(Source{}, &i32, 1))));
- auto* case_2_body = create<ast::BlockStatement>();
+ auto* case_2_body = create<ast::BlockStatement>(Source{});
case_2_body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod->RegisterSymbol("v"),
"v"),
create<ast::ScalarConstructorExpression>(
@@ -114,10 +116,13 @@
selector_2.push_back(create<ast::SintLiteral>(Source{}, &i32, 2));
ast::CaseStatementList cases;
- cases.push_back(create<ast::CaseStatement>(selector_1, case_1_body));
- cases.push_back(create<ast::CaseStatement>(selector_2, case_2_body));
+ cases.push_back(
+ create<ast::CaseStatement>(Source{}, selector_1, case_1_body));
+ cases.push_back(
+ create<ast::CaseStatement>(Source{}, selector_2, case_2_body));
- ast::SwitchStatement expr(create<ast::IdentifierExpression>(
+ ast::SwitchStatement expr(Source{},
+ create<ast::IdentifierExpression>(
Source{}, mod->RegisterSymbol("a"), "a"),
cases);
@@ -126,7 +131,7 @@
ASSERT_TRUE(td.DetermineResultType(&expr)) << td.error();
ast::Function func(Source{}, mod->RegisterSymbol("a_func"), "a_func", {},
- &i32, create<ast::BlockStatement>(),
+ &i32, create<ast::BlockStatement>(Source{}),
ast::FunctionDecorationList{});
ASSERT_TRUE(b.GenerateGlobalVariable(v)) << b.error();
@@ -190,17 +195,20 @@
nullptr, // constructor
ast::VariableDecorationList{}); // decorations
- auto* default_body = create<ast::BlockStatement>();
+ auto* default_body = create<ast::BlockStatement>(Source{});
default_body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod->RegisterSymbol("v"),
"v"),
create<ast::ScalarConstructorExpression>(
Source{}, create<ast::SintLiteral>(Source{}, &i32, 1))));
ast::CaseStatementList cases;
- cases.push_back(create<ast::CaseStatement>(default_body));
+ cases.push_back(create<ast::CaseStatement>(Source{}, ast::CaseSelectorList{},
+ default_body));
- ast::SwitchStatement expr(create<ast::IdentifierExpression>(
+ ast::SwitchStatement expr(Source{},
+ create<ast::IdentifierExpression>(
Source{}, mod->RegisterSymbol("a"), "a"),
cases);
@@ -209,7 +217,7 @@
ASSERT_TRUE(td.DetermineResultType(&expr)) << td.error();
ast::Function func(Source{}, mod->RegisterSymbol("a_func"), "a_func", {},
- &i32, create<ast::BlockStatement>(),
+ &i32, create<ast::BlockStatement>(Source{}),
ast::FunctionDecorationList{});
ASSERT_TRUE(b.GenerateGlobalVariable(v)) << b.error();
@@ -271,22 +279,25 @@
nullptr, // constructor
ast::VariableDecorationList{}); // decorations
- auto* case_1_body = create<ast::BlockStatement>();
+ auto* case_1_body = create<ast::BlockStatement>(Source{});
case_1_body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod->RegisterSymbol("v"),
"v"),
create<ast::ScalarConstructorExpression>(
Source{}, create<ast::SintLiteral>(Source{}, &i32, 1))));
- auto* case_2_body = create<ast::BlockStatement>();
+ auto* case_2_body = create<ast::BlockStatement>(Source{});
case_2_body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod->RegisterSymbol("v"),
"v"),
create<ast::ScalarConstructorExpression>(
Source{}, create<ast::SintLiteral>(Source{}, &i32, 2))));
- auto* default_body = create<ast::BlockStatement>();
+ auto* default_body = create<ast::BlockStatement>(Source{});
default_body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod->RegisterSymbol("v"),
"v"),
create<ast::ScalarConstructorExpression>(
@@ -300,11 +311,15 @@
selector_2.push_back(create<ast::SintLiteral>(Source{}, &i32, 3));
ast::CaseStatementList cases;
- cases.push_back(create<ast::CaseStatement>(selector_1, case_1_body));
- cases.push_back(create<ast::CaseStatement>(selector_2, case_2_body));
- cases.push_back(create<ast::CaseStatement>(default_body));
+ cases.push_back(
+ create<ast::CaseStatement>(Source{}, selector_1, case_1_body));
+ cases.push_back(
+ create<ast::CaseStatement>(Source{}, selector_2, case_2_body));
+ cases.push_back(create<ast::CaseStatement>(Source{}, ast::CaseSelectorList{},
+ default_body));
- ast::SwitchStatement expr(create<ast::IdentifierExpression>(
+ ast::SwitchStatement expr(Source{},
+ create<ast::IdentifierExpression>(
Source{}, mod->RegisterSymbol("a"), "a"),
cases);
@@ -313,7 +328,7 @@
ASSERT_TRUE(td.DetermineResultType(&expr)) << td.error();
ast::Function func(Source{}, mod->RegisterSymbol("a_func"), "a_func", {},
- &i32, create<ast::BlockStatement>(),
+ &i32, create<ast::BlockStatement>(Source{}),
ast::FunctionDecorationList{});
ASSERT_TRUE(b.GenerateGlobalVariable(v)) << b.error();
@@ -384,23 +399,26 @@
nullptr, // constructor
ast::VariableDecorationList{}); // decorations
- auto* case_1_body = create<ast::BlockStatement>();
+ auto* case_1_body = create<ast::BlockStatement>(Source{});
case_1_body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod->RegisterSymbol("v"),
"v"),
create<ast::ScalarConstructorExpression>(
Source{}, create<ast::SintLiteral>(Source{}, &i32, 1))));
- case_1_body->append(create<ast::FallthroughStatement>());
+ case_1_body->append(create<ast::FallthroughStatement>(Source{}));
- auto* case_2_body = create<ast::BlockStatement>();
+ auto* case_2_body = create<ast::BlockStatement>(Source{});
case_2_body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod->RegisterSymbol("v"),
"v"),
create<ast::ScalarConstructorExpression>(
Source{}, create<ast::SintLiteral>(Source{}, &i32, 2))));
- auto* default_body = create<ast::BlockStatement>();
+ auto* default_body = create<ast::BlockStatement>(Source{});
default_body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod->RegisterSymbol("v"),
"v"),
create<ast::ScalarConstructorExpression>(
@@ -413,11 +431,15 @@
selector_2.push_back(create<ast::SintLiteral>(Source{}, &i32, 2));
ast::CaseStatementList cases;
- cases.push_back(create<ast::CaseStatement>(selector_1, case_1_body));
- cases.push_back(create<ast::CaseStatement>(selector_2, case_2_body));
- cases.push_back(create<ast::CaseStatement>(default_body));
+ cases.push_back(
+ create<ast::CaseStatement>(Source{}, selector_1, case_1_body));
+ cases.push_back(
+ create<ast::CaseStatement>(Source{}, selector_2, case_2_body));
+ cases.push_back(create<ast::CaseStatement>(Source{}, ast::CaseSelectorList{},
+ default_body));
- ast::SwitchStatement expr(create<ast::IdentifierExpression>(
+ ast::SwitchStatement expr(Source{},
+ create<ast::IdentifierExpression>(
Source{}, mod->RegisterSymbol("a"), "a"),
cases);
@@ -426,7 +448,7 @@
ASSERT_TRUE(td.DetermineResultType(&expr)) << td.error();
ast::Function func(Source{}, mod->RegisterSymbol("a_func"), "a_func", {},
- &i32, create<ast::BlockStatement>(),
+ &i32, create<ast::BlockStatement>(Source{}),
ast::FunctionDecorationList{});
ASSERT_TRUE(b.GenerateGlobalVariable(v)) << b.error();
@@ -493,21 +515,24 @@
nullptr, // constructor
ast::VariableDecorationList{}); // decorations
- auto* case_1_body = create<ast::BlockStatement>();
+ auto* case_1_body = create<ast::BlockStatement>(Source{});
case_1_body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod->RegisterSymbol("v"),
"v"),
create<ast::ScalarConstructorExpression>(
Source{}, create<ast::SintLiteral>(Source{}, &i32, 1))));
- case_1_body->append(create<ast::FallthroughStatement>());
+ case_1_body->append(create<ast::FallthroughStatement>(Source{}));
ast::CaseSelectorList selector_1;
selector_1.push_back(create<ast::SintLiteral>(Source{}, &i32, 1));
ast::CaseStatementList cases;
- cases.push_back(create<ast::CaseStatement>(selector_1, case_1_body));
+ cases.push_back(
+ create<ast::CaseStatement>(Source{}, selector_1, case_1_body));
- ast::SwitchStatement expr(create<ast::IdentifierExpression>(
+ ast::SwitchStatement expr(Source{},
+ create<ast::IdentifierExpression>(
Source{}, mod->RegisterSymbol("a"), "a"),
cases);
@@ -516,7 +541,7 @@
ASSERT_TRUE(td.DetermineResultType(&expr)) << td.error();
ast::Function func(Source{}, mod->RegisterSymbol("a_func"), "a_func", {},
- &i32, create<ast::BlockStatement>(),
+ &i32, create<ast::BlockStatement>(Source{}),
ast::FunctionDecorationList{});
ASSERT_TRUE(b.GenerateGlobalVariable(v)) << b.error();
@@ -556,10 +581,10 @@
nullptr, // constructor
ast::VariableDecorationList{}); // decorations
- auto* if_body = create<ast::BlockStatement>();
- if_body->append(create<ast::BreakStatement>());
+ auto* if_body = create<ast::BlockStatement>(Source{});
+ if_body->append(create<ast::BreakStatement>(Source{}));
- auto* case_1_body = create<ast::BlockStatement>();
+ auto* case_1_body = create<ast::BlockStatement>(Source{});
case_1_body->append(create<ast::IfStatement>(
Source{},
create<ast::ScalarConstructorExpression>(
@@ -567,6 +592,7 @@
if_body, ast::ElseStatementList{}));
case_1_body->append(create<ast::AssignmentStatement>(
+ Source{},
create<ast::IdentifierExpression>(Source{}, mod->RegisterSymbol("v"),
"v"),
create<ast::ScalarConstructorExpression>(
@@ -576,9 +602,11 @@
selector_1.push_back(create<ast::SintLiteral>(Source{}, &i32, 1));
ast::CaseStatementList cases;
- cases.push_back(create<ast::CaseStatement>(selector_1, case_1_body));
+ cases.push_back(
+ create<ast::CaseStatement>(Source{}, selector_1, case_1_body));
- ast::SwitchStatement expr(create<ast::IdentifierExpression>(
+ ast::SwitchStatement expr(Source{},
+ create<ast::IdentifierExpression>(
Source{}, mod->RegisterSymbol("a"), "a"),
cases);
@@ -587,7 +615,7 @@
ASSERT_TRUE(td.DetermineResultType(&expr)) << td.error();
ast::Function func(Source{}, mod->RegisterSymbol("a_func"), "a_func", {},
- &i32, create<ast::BlockStatement>(),
+ &i32, create<ast::BlockStatement>(Source{}),
ast::FunctionDecorationList{});
ASSERT_TRUE(b.GenerateGlobalVariable(v)) << b.error();
diff --git a/src/writer/wgsl/generator_impl_assign_test.cc b/src/writer/wgsl/generator_impl_assign_test.cc
index 436a0a2..0d3cde4 100644
--- a/src/writer/wgsl/generator_impl_assign_test.cc
+++ b/src/writer/wgsl/generator_impl_assign_test.cc
@@ -33,7 +33,7 @@
Source{}, mod.RegisterSymbol("lhs"), "lhs");
auto* rhs = create<ast::IdentifierExpression>(
Source{}, mod.RegisterSymbol("rhs"), "rhs");
- ast::AssignmentStatement assign(lhs, rhs);
+ ast::AssignmentStatement assign(Source{}, lhs, rhs);
gen.increment_indent();
diff --git a/src/writer/wgsl/generator_impl_block_test.cc b/src/writer/wgsl/generator_impl_block_test.cc
index 85e00aa..b7e88b1 100644
--- a/src/writer/wgsl/generator_impl_block_test.cc
+++ b/src/writer/wgsl/generator_impl_block_test.cc
@@ -28,8 +28,8 @@
using WgslGeneratorImplTest = TestHelper;
TEST_F(WgslGeneratorImplTest, Emit_Block) {
- ast::BlockStatement b;
- b.append(create<ast::DiscardStatement>());
+ ast::BlockStatement b(Source{});
+ b.append(create<ast::DiscardStatement>(Source{}));
gen.increment_indent();
@@ -41,8 +41,8 @@
}
TEST_F(WgslGeneratorImplTest, Emit_Block_WithoutNewline) {
- ast::BlockStatement b;
- b.append(create<ast::DiscardStatement>());
+ ast::BlockStatement b(Source{});
+ b.append(create<ast::DiscardStatement>(Source{}));
gen.increment_indent();
diff --git a/src/writer/wgsl/generator_impl_break_test.cc b/src/writer/wgsl/generator_impl_break_test.cc
index cb909f3..361f6c0 100644
--- a/src/writer/wgsl/generator_impl_break_test.cc
+++ b/src/writer/wgsl/generator_impl_break_test.cc
@@ -28,7 +28,7 @@
using WgslGeneratorImplTest = TestHelper;
TEST_F(WgslGeneratorImplTest, Emit_Break) {
- ast::BreakStatement b;
+ ast::BreakStatement b(Source{});
gen.increment_indent();
diff --git a/src/writer/wgsl/generator_impl_call_test.cc b/src/writer/wgsl/generator_impl_call_test.cc
index 1855d0c..6ad5e38 100644
--- a/src/writer/wgsl/generator_impl_call_test.cc
+++ b/src/writer/wgsl/generator_impl_call_test.cc
@@ -60,7 +60,8 @@
params.push_back(create<ast::IdentifierExpression>(
Source{}, mod.RegisterSymbol("param2"), "param2"));
- ast::CallStatement call(create<ast::CallExpression>(Source{}, id, params));
+ ast::CallStatement call(Source{},
+ create<ast::CallExpression>(Source{}, id, params));
gen.increment_indent();
ASSERT_TRUE(gen.EmitStatement(&call)) << gen.error();
diff --git a/src/writer/wgsl/generator_impl_case_test.cc b/src/writer/wgsl/generator_impl_case_test.cc
index 1a1a444..271ab69 100644
--- a/src/writer/wgsl/generator_impl_case_test.cc
+++ b/src/writer/wgsl/generator_impl_case_test.cc
@@ -33,12 +33,12 @@
TEST_F(WgslGeneratorImplTest, Emit_Case) {
ast::type::I32 i32;
- auto* body = create<ast::BlockStatement>();
- body->append(create<ast::BreakStatement>());
+ auto* body = create<ast::BlockStatement>(Source{});
+ body->append(create<ast::BreakStatement>(Source{}));
ast::CaseSelectorList lit;
lit.push_back(create<ast::SintLiteral>(Source{}, &i32, 5));
- ast::CaseStatement c(lit, body);
+ ast::CaseStatement c(Source{}, lit, body);
gen.increment_indent();
@@ -52,13 +52,13 @@
TEST_F(WgslGeneratorImplTest, Emit_Case_MultipleSelectors) {
ast::type::I32 i32;
- auto* body = create<ast::BlockStatement>();
- body->append(create<ast::BreakStatement>());
+ auto* body = create<ast::BlockStatement>(Source{});
+ body->append(create<ast::BreakStatement>(Source{}));
ast::CaseSelectorList lit;
lit.push_back(create<ast::SintLiteral>(Source{}, &i32, 5));
lit.push_back(create<ast::SintLiteral>(Source{}, &i32, 6));
- ast::CaseStatement c(lit, body);
+ ast::CaseStatement c(Source{}, lit, body);
gen.increment_indent();
@@ -70,9 +70,9 @@
}
TEST_F(WgslGeneratorImplTest, Emit_Case_Default) {
- auto* body = create<ast::BlockStatement>();
- body->append(create<ast::BreakStatement>());
- ast::CaseStatement c(body);
+ auto* body = create<ast::BlockStatement>(Source{});
+ body->append(create<ast::BreakStatement>(Source{}));
+ ast::CaseStatement c(Source{}, ast::CaseSelectorList{}, body);
gen.increment_indent();
diff --git a/src/writer/wgsl/generator_impl_continue_test.cc b/src/writer/wgsl/generator_impl_continue_test.cc
index 48d033e..384acba 100644
--- a/src/writer/wgsl/generator_impl_continue_test.cc
+++ b/src/writer/wgsl/generator_impl_continue_test.cc
@@ -28,7 +28,7 @@
using WgslGeneratorImplTest = TestHelper;
TEST_F(WgslGeneratorImplTest, Emit_Continue) {
- ast::ContinueStatement c;
+ ast::ContinueStatement c(Source{});
gen.increment_indent();
diff --git a/src/writer/wgsl/generator_impl_discard_test.cc b/src/writer/wgsl/generator_impl_discard_test.cc
index 092d197..52633ec 100644
--- a/src/writer/wgsl/generator_impl_discard_test.cc
+++ b/src/writer/wgsl/generator_impl_discard_test.cc
@@ -25,7 +25,7 @@
using WgslGeneratorImplTest = TestHelper;
TEST_F(WgslGeneratorImplTest, Emit_Discard) {
- ast::DiscardStatement k;
+ ast::DiscardStatement k(Source{});
gen.increment_indent();
diff --git a/src/writer/wgsl/generator_impl_fallthrough_test.cc b/src/writer/wgsl/generator_impl_fallthrough_test.cc
index e8fcbe4..454c7f8 100644
--- a/src/writer/wgsl/generator_impl_fallthrough_test.cc
+++ b/src/writer/wgsl/generator_impl_fallthrough_test.cc
@@ -25,7 +25,7 @@
using WgslGeneratorImplTest = TestHelper;
TEST_F(WgslGeneratorImplTest, Emit_Fallthrough) {
- ast::FallthroughStatement f;
+ ast::FallthroughStatement f(Source{});
gen.increment_indent();
diff --git a/src/writer/wgsl/generator_impl_function_test.cc b/src/writer/wgsl/generator_impl_function_test.cc
index 21407f7..41263ba 100644
--- a/src/writer/wgsl/generator_impl_function_test.cc
+++ b/src/writer/wgsl/generator_impl_function_test.cc
@@ -41,8 +41,8 @@
using WgslGeneratorImplTest = TestHelper;
TEST_F(WgslGeneratorImplTest, Emit_Function) {
- auto* body = create<ast::BlockStatement>();
- body->append(create<ast::DiscardStatement>());
+ auto* body = create<ast::BlockStatement>(Source{});
+ body->append(create<ast::DiscardStatement>(Source{}));
body->append(create<ast::ReturnStatement>(Source{}));
ast::type::Void void_type;
@@ -60,8 +60,8 @@
}
TEST_F(WgslGeneratorImplTest, Emit_Function_WithParams) {
- auto* body = create<ast::BlockStatement>();
- body->append(create<ast::DiscardStatement>());
+ auto* body = create<ast::BlockStatement>(Source{});
+ body->append(create<ast::DiscardStatement>(Source{}));
body->append(create<ast::ReturnStatement>(Source{}));
ast::type::F32 f32;
@@ -99,8 +99,8 @@
}
TEST_F(WgslGeneratorImplTest, Emit_Function_WithDecoration_WorkgroupSize) {
- auto* body = create<ast::BlockStatement>();
- body->append(create<ast::DiscardStatement>());
+ auto* body = create<ast::BlockStatement>(Source{});
+ body->append(create<ast::DiscardStatement>(Source{}));
body->append(create<ast::ReturnStatement>(Source{}));
ast::type::Void void_type;
@@ -122,8 +122,8 @@
}
TEST_F(WgslGeneratorImplTest, Emit_Function_WithDecoration_Stage) {
- auto* body = create<ast::BlockStatement>();
- body->append(create<ast::DiscardStatement>());
+ auto* body = create<ast::BlockStatement>(Source{});
+ body->append(create<ast::DiscardStatement>(Source{}));
body->append(create<ast::ReturnStatement>(Source{}));
ast::type::Void void_type;
@@ -145,8 +145,8 @@
}
TEST_F(WgslGeneratorImplTest, Emit_Function_WithDecoration_Multiple) {
- auto* body = create<ast::BlockStatement>();
- body->append(create<ast::DiscardStatement>());
+ auto* body = create<ast::BlockStatement>(Source{});
+ body->append(create<ast::DiscardStatement>(Source{}));
body->append(create<ast::ReturnStatement>(Source{}));
ast::type::Void void_type;
@@ -237,8 +237,8 @@
"d")), // constructor
ast::VariableDecorationList{}); // decorations
- auto* body = create<ast::BlockStatement>();
- body->append(create<ast::VariableDeclStatement>(var));
+ auto* body = create<ast::BlockStatement>(Source{});
+ body->append(create<ast::VariableDeclStatement>(Source{}, var));
body->append(create<ast::ReturnStatement>(Source{}));
auto* func = create<ast::Function>(
@@ -267,8 +267,8 @@
"d")), // constructor
ast::VariableDecorationList{}); // decorations
- auto* body = create<ast::BlockStatement>();
- body->append(create<ast::VariableDeclStatement>(var));
+ auto* body = create<ast::BlockStatement>(Source{});
+ body->append(create<ast::VariableDeclStatement>(Source{}, var));
body->append(create<ast::ReturnStatement>(Source{}));
auto* func = create<ast::Function>(
diff --git a/src/writer/wgsl/generator_impl_if_test.cc b/src/writer/wgsl/generator_impl_if_test.cc
index 8b3e0e9..75d0694 100644
--- a/src/writer/wgsl/generator_impl_if_test.cc
+++ b/src/writer/wgsl/generator_impl_if_test.cc
@@ -30,8 +30,8 @@
TEST_F(WgslGeneratorImplTest, Emit_If) {
auto* cond = create<ast::IdentifierExpression>(
Source{}, mod.RegisterSymbol("cond"), "cond");
- auto* body = create<ast::BlockStatement>();
- body->append(create<ast::DiscardStatement>());
+ auto* body = create<ast::BlockStatement>(Source{});
+ body->append(create<ast::DiscardStatement>(Source{}));
ast::IfStatement i(Source{}, cond, body, ast::ElseStatementList{});
@@ -47,16 +47,17 @@
TEST_F(WgslGeneratorImplTest, Emit_IfWithElseIf) {
auto* else_cond = create<ast::IdentifierExpression>(
Source{}, mod.RegisterSymbol("else_cond"), "else_cond");
- auto* else_body = create<ast::BlockStatement>();
- else_body->append(create<ast::DiscardStatement>());
+ auto* else_body = create<ast::BlockStatement>(Source{});
+ else_body->append(create<ast::DiscardStatement>(Source{}));
auto* cond = create<ast::IdentifierExpression>(
Source{}, mod.RegisterSymbol("cond"), "cond");
- auto* body = create<ast::BlockStatement>();
- body->append(create<ast::DiscardStatement>());
+ auto* body = create<ast::BlockStatement>(Source{});
+ body->append(create<ast::DiscardStatement>(Source{}));
- ast::IfStatement i(Source{}, cond, body,
- {create<ast::ElseStatement>(else_cond, else_body)});
+ ast::IfStatement i(
+ Source{}, cond, body,
+ {create<ast::ElseStatement>(Source{}, else_cond, else_body)});
gen.increment_indent();
@@ -70,16 +71,17 @@
}
TEST_F(WgslGeneratorImplTest, Emit_IfWithElse) {
- auto* else_body = create<ast::BlockStatement>();
- else_body->append(create<ast::DiscardStatement>());
+ auto* else_body = create<ast::BlockStatement>(Source{});
+ else_body->append(create<ast::DiscardStatement>(Source{}));
auto* cond = create<ast::IdentifierExpression>(
Source{}, mod.RegisterSymbol("cond"), "cond");
- auto* body = create<ast::BlockStatement>();
- body->append(create<ast::DiscardStatement>());
+ auto* body = create<ast::BlockStatement>(Source{});
+ body->append(create<ast::DiscardStatement>(Source{}));
- ast::IfStatement i(Source{}, cond, body,
- {create<ast::ElseStatement>(else_body)});
+ ast::IfStatement i(
+ Source{}, cond, body,
+ {create<ast::ElseStatement>(Source{}, nullptr, else_body)});
gen.increment_indent();
@@ -96,22 +98,23 @@
auto* else_cond = create<ast::IdentifierExpression>(
Source{}, mod.RegisterSymbol("else_cond"), "else_cond");
- auto* else_body = create<ast::BlockStatement>();
- else_body->append(create<ast::DiscardStatement>());
+ auto* else_body = create<ast::BlockStatement>(Source{});
+ else_body->append(create<ast::DiscardStatement>(Source{}));
- auto* else_body_2 = create<ast::BlockStatement>();
- else_body_2->append(create<ast::DiscardStatement>());
+ auto* else_body_2 = create<ast::BlockStatement>(Source{});
+ else_body_2->append(create<ast::DiscardStatement>(Source{}));
auto* cond = create<ast::IdentifierExpression>(
Source{}, mod.RegisterSymbol("cond"), "cond");
- auto* body = create<ast::BlockStatement>();
- body->append(create<ast::DiscardStatement>());
+ auto* body = create<ast::BlockStatement>(Source{});
+ body->append(create<ast::DiscardStatement>(Source{}));
- ast::IfStatement i(Source{}, cond, body,
- {
- create<ast::ElseStatement>(else_cond, else_body),
- create<ast::ElseStatement>(else_body_2),
- });
+ ast::IfStatement i(
+ Source{}, cond, body,
+ {
+ create<ast::ElseStatement>(Source{}, else_cond, else_body),
+ create<ast::ElseStatement>(Source{}, nullptr, else_body_2),
+ });
gen.increment_indent();
diff --git a/src/writer/wgsl/generator_impl_loop_test.cc b/src/writer/wgsl/generator_impl_loop_test.cc
index 41c399d..4c0b11e 100644
--- a/src/writer/wgsl/generator_impl_loop_test.cc
+++ b/src/writer/wgsl/generator_impl_loop_test.cc
@@ -28,9 +28,9 @@
using WgslGeneratorImplTest = TestHelper;
TEST_F(WgslGeneratorImplTest, Emit_Loop) {
- auto* body = create<ast::BlockStatement>();
- body->append(create<ast::DiscardStatement>());
- ast::LoopStatement l(body, {});
+ auto* body = create<ast::BlockStatement>(Source{});
+ body->append(create<ast::DiscardStatement>(Source{}));
+ ast::LoopStatement l(Source{}, body, {});
gen.increment_indent();
@@ -42,13 +42,13 @@
}
TEST_F(WgslGeneratorImplTest, Emit_LoopWithContinuing) {
- auto* body = create<ast::BlockStatement>();
- body->append(create<ast::DiscardStatement>());
+ auto* body = create<ast::BlockStatement>(Source{});
+ body->append(create<ast::DiscardStatement>(Source{}));
- auto* continuing = create<ast::BlockStatement>();
- continuing->append(create<ast::DiscardStatement>());
+ auto* continuing = create<ast::BlockStatement>(Source{});
+ continuing->append(create<ast::DiscardStatement>(Source{}));
- ast::LoopStatement l(body, continuing);
+ ast::LoopStatement l(Source{}, body, continuing);
gen.increment_indent();
diff --git a/src/writer/wgsl/generator_impl_switch_test.cc b/src/writer/wgsl/generator_impl_switch_test.cc
index 96ddc99..f8bd646 100644
--- a/src/writer/wgsl/generator_impl_switch_test.cc
+++ b/src/writer/wgsl/generator_impl_switch_test.cc
@@ -32,18 +32,19 @@
using WgslGeneratorImplTest = TestHelper;
TEST_F(WgslGeneratorImplTest, Emit_Switch) {
- auto* def_body = create<ast::BlockStatement>();
- def_body->append(create<ast::BreakStatement>());
- auto* def = create<ast::CaseStatement>(def_body);
+ auto* def_body = create<ast::BlockStatement>(Source{});
+ def_body->append(create<ast::BreakStatement>(Source{}));
+ auto* def =
+ create<ast::CaseStatement>(Source{}, ast::CaseSelectorList{}, def_body);
ast::type::I32 i32;
ast::CaseSelectorList case_val;
case_val.push_back(create<ast::SintLiteral>(Source{}, &i32, 5));
- auto* case_body = create<ast::BlockStatement>();
- case_body->append(create<ast::BreakStatement>());
+ auto* case_body = create<ast::BlockStatement>(Source{});
+ case_body->append(create<ast::BreakStatement>(Source{}));
- auto* case_stmt = create<ast::CaseStatement>(case_val, case_body);
+ auto* case_stmt = create<ast::CaseStatement>(Source{}, case_val, case_body);
ast::CaseStatementList body;
body.push_back(case_stmt);
@@ -51,7 +52,7 @@
auto* cond = create<ast::IdentifierExpression>(
Source{}, mod.RegisterSymbol("cond"), "cond");
- ast::SwitchStatement s(cond, body);
+ ast::SwitchStatement s(Source{}, cond, body);
gen.increment_indent();
diff --git a/src/writer/wgsl/generator_impl_test.cc b/src/writer/wgsl/generator_impl_test.cc
index 1b8da48..e178013 100644
--- a/src/writer/wgsl/generator_impl_test.cc
+++ b/src/writer/wgsl/generator_impl_test.cc
@@ -34,7 +34,7 @@
mod.AddFunction(create<ast::Function>(
Source{}, mod.RegisterSymbol("a_func"), "my_func", ast::VariableList{},
- &void_type, create<ast::BlockStatement>(),
+ &void_type, create<ast::BlockStatement>(Source{}),
ast::FunctionDecorationList{}));
ASSERT_TRUE(gen.Generate(mod)) << gen.error();
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 c892a2b..c7a11bc 100644
--- a/src/writer/wgsl/generator_impl_variable_decl_statement_test.cc
+++ b/src/writer/wgsl/generator_impl_variable_decl_statement_test.cc
@@ -41,7 +41,7 @@
nullptr, // constructor
ast::VariableDecorationList{}); // decorations
- ast::VariableDeclStatement stmt(var);
+ ast::VariableDeclStatement stmt(Source{}, var);
gen.increment_indent();
@@ -63,7 +63,7 @@
nullptr, // constructor
ast::VariableDecorationList{}); // decorations
- ast::VariableDeclStatement stmt(var);
+ ast::VariableDeclStatement stmt(Source{}, var);
gen.increment_indent();
@@ -82,7 +82,7 @@
nullptr, // constructor
ast::VariableDecorationList{}); // decorations
- ast::VariableDeclStatement stmt(var);
+ ast::VariableDeclStatement stmt(Source{}, var);
gen.increment_indent();