6e459fecb7
This change introduces sem::CompoundStatement, a new base class for statements that can hold other statements. sem::BlockStatements now derives from sem::CompoundStatement, and this change introduces the following new CompoundStatements: * `sem::IfStatement` * `sem::ElseStatement` * `sem::ForLoopStatement` * `sem::LoopStatement` * `sem::SwitchStatement`. These new CompoundStatements are now inserted into the semantic tree as now documented in `docs/compound_statements.md`. The `sem::BlockStatement::FindFirstParent()` methods have been moved down to `sem::Statement`. The `Resolver::BlockScope()` method has been replaced with `Resolver::Scope()` which now maintains the `current_statement_`, `current_compound_statement_ ` and `current_block_`. This simplifies statement nesting. The most significant change in behavior is that statements now always have a parent, so calling Block() on the initializer or continuing of a for-loop statement will now return the BlockStatement that holds the for-loop. Before this would return nullptr. Fixed: tint:979 Change-Id: I90e38fd719da2a281ed9210e975ab96171cb6842 Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/57707 Kokoro: Kokoro <noreply+kokoro@google.com> Commit-Queue: Ben Clayton <bclayton@google.com> Reviewed-by: James Price <jrprice@google.com> |
||
---|---|---|
.. | ||
arch.md | ||
compound_statements.md | ||
diagnostics_guide.md | ||
experimental_extensions.md | ||
spirv-input-output-variables.md | ||
spirv-ptr-ref.md | ||
style_guide.md | ||
translations.md |