dawn-cmake/src/resolver
Ben Clayton 6fcefe4c25 Resolver: Check that every AST node is reached once
AST nodes must not be shared. Diamonds in the AST will cause all sorts
of exciting, non trivial bugs.

All AST nodes must be reached by the Resolver. There are two common
reasons why they may not be:
(a) They were constructed and not attached to the AST. Several
    transforms scan the full list of constructed AST nodes to find nodes
    of a given type. Having detached nodes will likely cause bugs in
    these transforms. Detached nodes is also just a waste of memory.
(b) They are attached to the AST, but the resolver did not traverse
    them. Having the resolver skip over parts of the AST will fail to
    catch validation issues, and will leave semantic gaps, likely
    breaking downstream logic.

Bug: tint:469
Change-Id: I143b84fd830699f874d2936146f0e93197db610c
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/47778
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Ben Clayton <bclayton@chromium.org>
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
2021-04-19 19:16:12 +00:00
..
assignment_validation_test.cc wgsl: Deprecate 'const' for 'let' 2021-04-08 15:46:17 +00:00
builtins_validation_test.cc Finish moving call validation from Validator to Resolver 2021-03-22 17:42:06 +00:00
control_block_validation_test.cc UintLiteral::to_str() suffix with 'u' 2021-04-16 10:44:54 +00:00
decoration_validation_test.cc Resolver: Check that every AST node is reached once 2021-04-19 19:16:12 +00:00
entry_point_validation_test.cc Add ProgramBuilder::Param() helpers and use them 2021-04-08 22:15:48 +00:00
function_validation_test.cc Add ProgramBuilder::Param() helpers and use them 2021-04-08 22:15:48 +00:00
host_shareable_validation_test.cc Rename semantic to sem 2021-04-16 19:07:51 +00:00
intrinsic_test.cc Fix all tests that shared AST nodes 2021-04-17 00:42:41 +00:00
is_host_shareable_test.cc s/sharable/shareable 2021-03-18 21:03:24 +00:00
is_storeable_test.cc Resolver::IsStorable() Handle AccessControl types 2021-03-18 16:39:54 +00:00
resolver.cc Resolver: Check that every AST node is reached once 2021-04-19 19:16:12 +00:00
resolver.h Resolver: Check that every AST node is reached once 2021-04-19 19:16:12 +00:00
resolver_test.cc Resolver: Check that every AST node is reached once 2021-04-19 19:16:12 +00:00
resolver_test_helper.cc TestHelper: rename td_ to resolver_ 2021-03-16 16:31:33 +00:00
resolver_test_helper.h Rename semantic to sem 2021-04-16 19:07:51 +00:00
storage_class_validation_test.cc Rename semantic to sem 2021-04-16 19:07:51 +00:00
struct_layout_test.cc Rename semantic to sem 2021-04-16 19:07:51 +00:00
struct_pipeline_stage_use_test.cc Rename semantic to sem 2021-04-16 19:07:51 +00:00
struct_storage_class_use_test.cc Rename semantic to sem 2021-04-16 19:07:51 +00:00
type_constructor_validation_test.cc Fix all tests that shared AST nodes 2021-04-17 00:42:41 +00:00
type_validation_test.cc Resolver: Validate <storage> var types 2021-04-16 09:26:14 +00:00
validation_test.cc Rename semantic to sem 2021-04-16 19:07:51 +00:00