transform: Fix PromoteInitializersToConstVar handling of for-loops

PromoteInitializersToConstVar was erroring on for loops that contained array or structure constructor expressions.

Added lots more tests.

Fixed: tint:1364
Change-Id: I033eaad94756ea496fc8bc5f03f39c6dba4e3a88
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/75580
Reviewed-by: James Price <jrprice@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Ben Clayton <bclayton@google.com>
This commit is contained in:
Ben Clayton
2022-01-06 21:32:41 +00:00
committed by Tint LUCI CQ
parent 4d245d9a36
commit e4e7485854
63 changed files with 895 additions and 96 deletions

View File

@@ -23,6 +23,7 @@ namespace tint {
namespace ast {
class CallExpression;
class Expression;
class ForLoopStatement;
class Function;
class MemberAccessorExpression;
class Node;
@@ -39,6 +40,7 @@ namespace sem {
class Array;
class Call;
class Expression;
class ForLoopStatement;
class Function;
class MemberAccessorExpression;
class Node;
@@ -56,6 +58,7 @@ struct TypeMappings {
//! @cond Doxygen_Suppress
Call* operator()(ast::CallExpression*);
Expression* operator()(ast::Expression*);
ForLoopStatement* operator()(ast::ForLoopStatement*);
Function* operator()(ast::Function*);
MemberAccessorExpression* operator()(ast::MemberAccessorExpression*);
Node* operator()(ast::Node*);