mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-07-04 12:16:10 +00:00
Fix compilation error in delete_statement.cc
There seems to have been a race between changes and SwitchStatement::body is no longer an std::vector but a utils::Vector. Bug: tint:1110 Change-Id: I84d19049ecd54b1eba3f826e6c8c7d07ad3746ca Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/98641 Commit-Queue: Dan Sinclair <dsinclair@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org> Auto-Submit: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Dan Sinclair <dsinclair@chromium.org>
This commit is contained in:
parent
d072e11120
commit
6d5542d703
@ -94,7 +94,7 @@ void MutationDeleteStatement::Apply(const NodeIdMap& node_id_map,
|
|||||||
clone_context->Replace(statement_node, static_cast<const ast::Statement*>(nullptr));
|
clone_context->Replace(statement_node, static_cast<const ast::Statement*>(nullptr));
|
||||||
} else if (tint::Is<ast::CaseStatement>(statement_node)) {
|
} else if (tint::Is<ast::CaseStatement>(statement_node)) {
|
||||||
// Remove a case statement from its enclosing switch statement.
|
// Remove a case statement from its enclosing switch statement.
|
||||||
const std::vector<const ast::CaseStatement*>* case_statement_list =
|
const auto& case_statement_list =
|
||||||
&sem_parent->Declaration()->As<ast::SwitchStatement>()->body;
|
&sem_parent->Declaration()->As<ast::SwitchStatement>()->body;
|
||||||
assert(std::find(case_statement_list->begin(), case_statement_list->end(),
|
assert(std::find(case_statement_list->begin(), case_statement_list->end(),
|
||||||
statement_node) != case_statement_list->end() &&
|
statement_node) != case_statement_list->end() &&
|
||||||
@ -156,14 +156,14 @@ bool MutationDeleteStatement::CanBeDeleted(const ast::Statement& statement_node,
|
|||||||
auto* switch_statement =
|
auto* switch_statement =
|
||||||
program.Sem().Get(case_statement)->Parent()->Declaration()->As<ast::SwitchStatement>();
|
program.Sem().Get(case_statement)->Parent()->Declaration()->As<ast::SwitchStatement>();
|
||||||
|
|
||||||
if (switch_statement->body.size() > 1 &&
|
if (switch_statement->body.Length() > 1 &&
|
||||||
switch_statement->body[switch_statement->body.size() - 1] == case_statement) {
|
switch_statement->body[switch_statement->body.Length() - 1] == case_statement) {
|
||||||
// There are at least two case statements, and this is the final case statement.
|
// There are at least two case statements, and this is the final case statement.
|
||||||
auto& penultimate_case_statement_body_statements =
|
auto& penultimate_case_statement_body_statements =
|
||||||
switch_statement->body[switch_statement->body.size() - 2]->body->statements;
|
switch_statement->body[switch_statement->body.Length() - 2]->body->statements;
|
||||||
if (penultimate_case_statement_body_statements.size() > 0 &&
|
if (penultimate_case_statement_body_statements.Length() > 0 &&
|
||||||
penultimate_case_statement_body_statements
|
penultimate_case_statement_body_statements
|
||||||
[penultimate_case_statement_body_statements.size() - 1]
|
[penultimate_case_statement_body_statements.Length() - 1]
|
||||||
->Is<ast::FallthroughStatement>()) {
|
->Is<ast::FallthroughStatement>()) {
|
||||||
// The penultimate case statement falls through to the final case statement, thus
|
// The penultimate case statement falls through to the final case statement, thus
|
||||||
// the final case statement cannot be removed.
|
// the final case statement cannot be removed.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user