ProgramBuilder: Add a WrapInStatement() overload for literals

Lets you pass AST literals to WrapInStatement() / WrapInFunction()

Change-Id: I69d8918a61f0ea25193b64df38ed6cd606c7f044
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/48047
Commit-Queue: Ben Clayton <bclayton@google.com>
Reviewed-by: James Price <jrprice@google.com>
This commit is contained in:
Ben Clayton 2021-04-17 05:52:11 +00:00 committed by Commit Bot service account
parent 49668bbe17
commit 169512e499
2 changed files with 12 additions and 2 deletions

View File

@ -131,8 +131,8 @@ ast::ConstructorExpression* ProgramBuilder::ConstructValueFilledWith(
ProgramBuilder::TypesBuilder::TypesBuilder(ProgramBuilder* pb) : builder(pb) {}
ast::VariableDeclStatement* ProgramBuilder::WrapInStatement(ast::Variable* v) {
return create<ast::VariableDeclStatement>(v);
ast::Statement* ProgramBuilder::WrapInStatement(ast::Literal* lit) {
return WrapInStatement(create<ast::ScalarConstructorExpression>(lit));
}
ast::Statement* ProgramBuilder::WrapInStatement(ast::Expression* expr) {
@ -140,6 +140,10 @@ ast::Statement* ProgramBuilder::WrapInStatement(ast::Expression* expr) {
return Decl(Var(symbols_.New(), nullptr, ast::StorageClass::kFunction, expr));
}
ast::VariableDeclStatement* ProgramBuilder::WrapInStatement(ast::Variable* v) {
return create<ast::VariableDeclStatement>(v);
}
ast::Statement* ProgramBuilder::WrapInStatement(ast::Statement* stmt) {
return stmt;
}

View File

@ -1405,6 +1405,12 @@ class ProgramBuilder {
/// expression has no resolved type.
type::Type* TypeOf(ast::Expression* expr) const;
/// Wraps the ast::Literal in a statement. This is used by tests that
/// construct a partial AST and require the Resolver to reach these
/// nodes.
/// @param lit the ast::Literal to be wrapped by an ast::Statement
/// @return the ast::Statement that wraps the ast::Statement
ast::Statement* WrapInStatement(ast::Literal* lit);
/// Wraps the ast::Expression in a statement. This is used by tests that
/// construct a partial AST and require the Resolver to reach these
/// nodes.