[tint] Cleanup forward declarations

This CL cleans up forward declarations which are no longer referenced in
the given header file. A couple of declarations are added in files which
need them which lose the transitive declaration.

Change-Id: I7182a7af0396555ca823df97b8ebab3ede92e25c
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/291756
Commit-Queue: James Price <jrprice@google.com>
Auto-Submit: dan sinclair <dsinclair@chromium.org>
Reviewed-by: James Price <jrprice@google.com>
Commit-Queue: dan sinclair <dsinclair@chromium.org>
diff --git a/src/tint/cmd/common/helper.h b/src/tint/cmd/common/helper.h
index 28ad3a2..f5c7fef 100644
--- a/src/tint/cmd/common/helper.h
+++ b/src/tint/cmd/common/helper.h
@@ -53,7 +53,7 @@
 // Forward declarations
 namespace tint {
 class Program;
-class InternalCompilerError;
+class StyledTextPrinter;
 }  // namespace tint
 
 namespace tint::cmd {
diff --git a/src/tint/lang/core/intrinsic/table.h b/src/tint/lang/core/intrinsic/table.h
index e5d8dd4..36fcf96 100644
--- a/src/tint/lang/core/intrinsic/table.h
+++ b/src/tint/lang/core/intrinsic/table.h
@@ -43,11 +43,6 @@
 #include "src/tint/utils/text/string_stream.h"
 #include "src/tint/utils/text/styled_text.h"
 
-// Forward declarations
-namespace tint::diag {
-class List;
-}  // namespace tint::diag
-
 namespace tint::core::intrinsic {
 
 /// Overload describes a fully matched builtin function overload
diff --git a/src/tint/lang/core/ir/function.cc b/src/tint/lang/core/ir/function.cc
index 7479ec1..61a90eb 100644
--- a/src/tint/lang/core/ir/function.cc
+++ b/src/tint/lang/core/ir/function.cc
@@ -27,6 +27,8 @@
 
 #include "src/tint/lang/core/ir/function.h"
 
+#include <utility>
+
 #include "src/tint/lang/core/ir/clone_context.h"
 #include "src/tint/lang/core/ir/module.h"
 #include "src/tint/utils/containers/predicates.h"
diff --git a/src/tint/lang/core/ir/function.h b/src/tint/lang/core/ir/function.h
index eec67a9..7e335ae 100644
--- a/src/tint/lang/core/ir/function.h
+++ b/src/tint/lang/core/ir/function.h
@@ -30,7 +30,6 @@
 
 #include <array>
 #include <optional>
-#include <utility>
 
 #include "src/tint/lang/core/io_attributes.h"
 #include "src/tint/lang/core/ir/constant.h"
@@ -42,7 +41,6 @@
 // Forward declarations
 namespace tint::core::ir {
 class Block;
-class FunctionTerminator;
 }  // namespace tint::core::ir
 
 namespace tint::core::ir {
diff --git a/src/tint/lang/core/ir/if.h b/src/tint/lang/core/ir/if.h
index 70a6992..60b7b0c 100644
--- a/src/tint/lang/core/ir/if.h
+++ b/src/tint/lang/core/ir/if.h
@@ -32,11 +32,6 @@
 
 #include "src/tint/lang/core/ir/control_instruction.h"
 
-// Forward declarations
-namespace tint::core::ir {
-class MultiInBlock;
-}  // namespace tint::core::ir
-
 namespace tint::core::ir {
 
 /// If instruction.
diff --git a/src/tint/lang/core/ir/switch.h b/src/tint/lang/core/ir/switch.h
index 09900f2..eed7dfb 100644
--- a/src/tint/lang/core/ir/switch.h
+++ b/src/tint/lang/core/ir/switch.h
@@ -36,7 +36,6 @@
 // Forward declarations
 namespace tint::core::ir {
 class Constant;
-class MultiInBlock;
 }  // namespace tint::core::ir
 
 namespace tint::core::ir {
diff --git a/src/tint/lang/core/ir/terminator.h b/src/tint/lang/core/ir/terminator.h
index f1ff399..7028ae6 100644
--- a/src/tint/lang/core/ir/terminator.h
+++ b/src/tint/lang/core/ir/terminator.h
@@ -32,11 +32,6 @@
 #include "src/tint/lang/core/ir/value.h"
 #include "src/tint/utils/rtti/castable.h"
 
-// Forward declarations
-namespace tint::core::ir {
-class Block;
-}  // namespace tint::core::ir
-
 namespace tint::core::ir {
 
 /// The base class of all instructions that terminate a block.
diff --git a/src/tint/lang/core/ir/validator.h b/src/tint/lang/core/ir/validator.h
index 07ab568..c9ea30b 100644
--- a/src/tint/lang/core/ir/validator.h
+++ b/src/tint/lang/core/ir/validator.h
@@ -36,7 +36,6 @@
 // Forward declarations
 namespace tint::core::ir {
 class Module;
-class Function;
 }  // namespace tint::core::ir
 
 namespace tint::core::ir {
diff --git a/src/tint/lang/core/type/storage_texture.h b/src/tint/lang/core/type/storage_texture.h
index e11479e..4355d49 100644
--- a/src/tint/lang/core/type/storage_texture.h
+++ b/src/tint/lang/core/type/storage_texture.h
@@ -34,11 +34,6 @@
 #include "src/tint/lang/core/type/texture.h"
 #include "src/tint/lang/core/type/texture_dimension.h"
 
-// Forward declarations
-namespace tint::core::type {
-class Manager;
-}  // namespace tint::core::type
-
 namespace tint::core::type {
 
 /// A storage texture type.
diff --git a/src/tint/lang/core/type/texel_buffer.h b/src/tint/lang/core/type/texel_buffer.h
index 31e9a1a..01b1ef1 100644
--- a/src/tint/lang/core/type/texel_buffer.h
+++ b/src/tint/lang/core/type/texel_buffer.h
@@ -33,11 +33,6 @@
 #include "src/tint/lang/core/enums.h"
 #include "src/tint/lang/core/type/texture.h"
 
-// Forward declarations
-namespace tint::core::type {
-class Manager;
-}  // namespace tint::core::type
-
 namespace tint::core::type {
 
 /// A texel buffer type.
diff --git a/src/tint/lang/core/type/type.h b/src/tint/lang/core/type/type.h
index e5c1d94..fa367fe 100644
--- a/src/tint/lang/core/type/type.h
+++ b/src/tint/lang/core/type/type.h
@@ -37,10 +37,6 @@
 #include "src/tint/utils/containers/vector.h"
 
 // Forward declarations
-namespace tint {
-class ProgramBuilder;
-class SymbolTable;
-}  // namespace tint
 namespace tint::core::type {
 class Type;
 }  // namespace tint::core::type
diff --git a/src/tint/lang/glsl/writer/raise/binary_polyfill.h b/src/tint/lang/glsl/writer/raise/binary_polyfill.h
index 387aff8..3d5aef3 100644
--- a/src/tint/lang/glsl/writer/raise/binary_polyfill.h
+++ b/src/tint/lang/glsl/writer/raise/binary_polyfill.h
@@ -33,7 +33,6 @@
 // Forward declarations.
 namespace tint::core::ir {
 class Module;
-class Texture;
 }  // namespace tint::core::ir
 
 namespace tint::glsl::writer::raise {
diff --git a/src/tint/lang/glsl/writer/raise/bitcast_polyfill.h b/src/tint/lang/glsl/writer/raise/bitcast_polyfill.h
index 4c592eb..db9cdca 100644
--- a/src/tint/lang/glsl/writer/raise/bitcast_polyfill.h
+++ b/src/tint/lang/glsl/writer/raise/bitcast_polyfill.h
@@ -33,7 +33,6 @@
 // Forward declarations.
 namespace tint::core::ir {
 class Module;
-class Texture;
 }  // namespace tint::core::ir
 
 namespace tint::glsl::writer::raise {
diff --git a/src/tint/lang/glsl/writer/raise/builtin_polyfill.h b/src/tint/lang/glsl/writer/raise/builtin_polyfill.h
index 90768fa..d6f5d21 100644
--- a/src/tint/lang/glsl/writer/raise/builtin_polyfill.h
+++ b/src/tint/lang/glsl/writer/raise/builtin_polyfill.h
@@ -33,7 +33,6 @@
 // Forward declarations.
 namespace tint::core::ir {
 class Module;
-class Texture;
 }  // namespace tint::core::ir
 
 namespace tint::glsl::writer::raise {
diff --git a/src/tint/lang/glsl/writer/writer.h b/src/tint/lang/glsl/writer/writer.h
index 5bc70f1..7df8878 100644
--- a/src/tint/lang/glsl/writer/writer.h
+++ b/src/tint/lang/glsl/writer/writer.h
@@ -35,9 +35,6 @@
 #include "src/tint/utils/result.h"
 
 // Forward declarations
-namespace tint {
-class Program;
-}  // namespace tint
 namespace tint::core::ir {
 class Module;
 }  // namespace tint::core::ir
diff --git a/src/tint/lang/hlsl/writer/raise/binary_polyfill.h b/src/tint/lang/hlsl/writer/raise/binary_polyfill.h
index 327682a..a2f7645 100644
--- a/src/tint/lang/hlsl/writer/raise/binary_polyfill.h
+++ b/src/tint/lang/hlsl/writer/raise/binary_polyfill.h
@@ -33,7 +33,6 @@
 // Forward declarations.
 namespace tint::core::ir {
 class Module;
-class Texture;
 }  // namespace tint::core::ir
 
 namespace tint::hlsl::writer::raise {
diff --git a/src/tint/lang/hlsl/writer/raise/builtin_polyfill.h b/src/tint/lang/hlsl/writer/raise/builtin_polyfill.h
index c6c0e6c..86f8726 100644
--- a/src/tint/lang/hlsl/writer/raise/builtin_polyfill.h
+++ b/src/tint/lang/hlsl/writer/raise/builtin_polyfill.h
@@ -33,7 +33,6 @@
 // Forward declarations.
 namespace tint::core::ir {
 class Module;
-class Texture;
 }  // namespace tint::core::ir
 
 namespace tint::hlsl::writer::raise {
diff --git a/src/tint/lang/spirv/writer/raise/builtin_polyfill.h b/src/tint/lang/spirv/writer/raise/builtin_polyfill.h
index 197e212..1e30d93 100644
--- a/src/tint/lang/spirv/writer/raise/builtin_polyfill.h
+++ b/src/tint/lang/spirv/writer/raise/builtin_polyfill.h
@@ -34,7 +34,6 @@
 // Forward declarations.
 namespace tint::core::ir {
 class Module;
-class Texture;
 }  // namespace tint::core::ir
 
 namespace tint::spirv::writer::raise {
diff --git a/src/tint/lang/wgsl/ast/builder.h b/src/tint/lang/wgsl/ast/builder.h
index 0d810ef..e68ae17 100644
--- a/src/tint/lang/wgsl/ast/builder.h
+++ b/src/tint/lang/wgsl/ast/builder.h
@@ -36,7 +36,6 @@
 #include "src/tint/lang/core/interpolation.h"
 #include "src/tint/lang/core/number.h"
 #include "src/tint/lang/core/type/sampler_kind.h"
-#include "src/tint/lang/core/type/texel_buffer.h"
 #include "src/tint/lang/core/type/texture_dimension.h"
 #include "src/tint/lang/wgsl/ast/alias.h"
 #include "src/tint/lang/wgsl/ast/assignment_statement.h"
@@ -104,12 +103,6 @@
 #error "internal tint header being #included from tint.h"
 #endif
 
-// Forward declarations
-namespace tint::ast {
-class CloneContext;
-class VariableDeclStatement;
-}  // namespace tint::ast
-
 namespace tint::ast {
 
 /// Builder is a mutable builder for AST nodes.
diff --git a/src/tint/lang/wgsl/ast/builtin_texture_helper_test.h b/src/tint/lang/wgsl/ast/builtin_texture_helper_test.h
index 915be65..849b988 100644
--- a/src/tint/lang/wgsl/ast/builtin_texture_helper_test.h
+++ b/src/tint/lang/wgsl/ast/builtin_texture_helper_test.h
@@ -35,6 +35,11 @@
 #include "src/tint/lang/core/type/texture_dimension.h"
 #include "src/tint/lang/wgsl/ast/builder.h"
 
+// Forward declarations
+namespace tint {
+class ProgramBuilder;
+}
+
 namespace tint::ast::test {
 
 /// The name of the texture global variable used by the tests.
diff --git a/src/tint/lang/wgsl/ast/function.h b/src/tint/lang/wgsl/ast/function.h
index d3bd3e6..857be1d 100644
--- a/src/tint/lang/wgsl/ast/function.h
+++ b/src/tint/lang/wgsl/ast/function.h
@@ -46,7 +46,6 @@
 // Forward declarations
 namespace tint::ast {
 class Identifier;
-class IdentifierExpression;
 }  // namespace tint::ast
 
 namespace tint::ast {
diff --git a/src/tint/lang/wgsl/ast/node.h b/src/tint/lang/wgsl/ast/node.h
index 281654e..3ff7f65 100644
--- a/src/tint/lang/wgsl/ast/node.h
+++ b/src/tint/lang/wgsl/ast/node.h
@@ -34,11 +34,6 @@
 #include "src/tint/utils/diagnostic/source.h"
 #include "src/tint/utils/rtti/castable.h"
 
-// Forward declarations
-namespace tint::ast {
-class CloneContext;
-}
-
 namespace tint::ast {
 
 /// AST base class node
diff --git a/src/tint/lang/wgsl/ast/templated_identifier.h b/src/tint/lang/wgsl/ast/templated_identifier.h
index 328907d..d1fc602 100644
--- a/src/tint/lang/wgsl/ast/templated_identifier.h
+++ b/src/tint/lang/wgsl/ast/templated_identifier.h
@@ -33,7 +33,6 @@
 
 // Forward declarations
 namespace tint::ast {
-class Attribute;
 class Expression;
 }  // namespace tint::ast
 
diff --git a/src/tint/lang/wgsl/ast/variable.h b/src/tint/lang/wgsl/ast/variable.h
index f454d14..4ad32e7 100644
--- a/src/tint/lang/wgsl/ast/variable.h
+++ b/src/tint/lang/wgsl/ast/variable.h
@@ -43,7 +43,6 @@
 // Forward declarations
 namespace tint::ast {
 class Identifier;
-class LocationAttribute;
 }  // namespace tint::ast
 
 namespace tint::ast {
diff --git a/src/tint/lang/wgsl/ls/utils.h b/src/tint/lang/wgsl/ls/utils.h
index 8dbfd0d..48ef787 100644
--- a/src/tint/lang/wgsl/ls/utils.h
+++ b/src/tint/lang/wgsl/ls/utils.h
@@ -35,11 +35,6 @@
 #include "src/tint/utils/text/styled_text.h"
 #include "src/tint/utils/text/text_style.h"
 
-// Forward declarations
-namespace tint::sem {
-class Node;
-}
-
 namespace tint::wgsl::ls {
 
 /// @return the StyledText converted to lsp::MarkupContent
diff --git a/src/tint/lang/wgsl/program/program.h b/src/tint/lang/wgsl/program/program.h
index 4c13e21..d7844f1 100644
--- a/src/tint/lang/wgsl/program/program.h
+++ b/src/tint/lang/wgsl/program/program.h
@@ -37,6 +37,9 @@
 #include "src/tint/utils/symbol/symbol_table.h"
 
 // Forward Declarations
+namespace tint {
+class ProgramBuilder;
+}
 namespace tint::ast {
 class Module;
 }  // namespace tint::ast
diff --git a/src/tint/lang/wgsl/resolver/resolver.h b/src/tint/lang/wgsl/resolver/resolver.h
index 2121495..9ceaae2 100644
--- a/src/tint/lang/wgsl/resolver/resolver.h
+++ b/src/tint/lang/wgsl/resolver/resolver.h
@@ -59,7 +59,6 @@
 namespace tint::ast {
 class IndexAccessorExpression;
 class BinaryExpression;
-class BitcastExpression;
 class CallExpression;
 class CallStatement;
 class CaseStatement;
@@ -83,7 +82,6 @@
 class IfStatement;
 class LoopStatement;
 class Statement;
-class StructMember;
 class SwitchStatement;
 class ValueConstructor;
 class ValueConversion;
diff --git a/src/tint/lang/wgsl/resolver/validator.h b/src/tint/lang/wgsl/resolver/validator.h
index b4d96d97..ff39302 100644
--- a/src/tint/lang/wgsl/resolver/validator.h
+++ b/src/tint/lang/wgsl/resolver/validator.h
@@ -46,36 +46,20 @@
 
 // Forward declarations
 namespace tint::ast {
-class IndexAccessorExpression;
-class BinaryExpression;
-class BitcastExpression;
 class CallExpression;
-class CallStatement;
-class CaseStatement;
-class ForLoopStatement;
 class Function;
-class IdentifierExpression;
-class LoopStatement;
-class MemberAccessorExpression;
 class ReturnStatement;
 class SwitchStatement;
-class UnaryOpExpression;
 class Variable;
-class WhileStatement;
 }  // namespace tint::ast
 namespace tint::sem {
 class Array;
-class BlockStatement;
 class BreakIfStatement;
-class BuiltinFn;
 class Call;
-class CaseStatement;
 class ForLoopStatement;
 class IfStatement;
 class LoopStatement;
-class Materialize;
 class Statement;
-class SwitchStatement;
 class WhileStatement;
 }  // namespace tint::sem
 namespace tint::core::type {
diff --git a/src/tint/lang/wgsl/sem/block_statement.h b/src/tint/lang/wgsl/sem/block_statement.h
index e0dc851..1aeb62e 100644
--- a/src/tint/lang/wgsl/sem/block_statement.h
+++ b/src/tint/lang/wgsl/sem/block_statement.h
@@ -36,7 +36,6 @@
 namespace tint::ast {
 class BlockStatement;
 class ContinueStatement;
-class Variable;
 }  // namespace tint::ast
 
 namespace tint::sem {
diff --git a/src/tint/lang/wgsl/sem/builtin_enum_expression.h b/src/tint/lang/wgsl/sem/builtin_enum_expression.h
index 53ba857..02fd51f 100644
--- a/src/tint/lang/wgsl/sem/builtin_enum_expression.h
+++ b/src/tint/lang/wgsl/sem/builtin_enum_expression.h
@@ -30,11 +30,6 @@
 
 #include "src/tint/lang/wgsl/sem/expression.h"
 
-// Forward declarations
-namespace tint::core::type {
-class Type;
-}  // namespace tint::core::type
-
 namespace tint::sem {
 
 /// Base class for BuiltinEnumExpression.
diff --git a/src/tint/lang/wgsl/sem/function.h b/src/tint/lang/wgsl/sem/function.h
index 94cca32..11b44b9 100644
--- a/src/tint/lang/wgsl/sem/function.h
+++ b/src/tint/lang/wgsl/sem/function.h
@@ -40,14 +40,10 @@
 
 // Forward declarations
 namespace tint::ast {
-class BuiltinAttribute;
 class Function;
-class LocationAttribute;
-class ReturnStatement;
 }  // namespace tint::ast
 namespace tint::sem {
 class BuiltinFn;
-class Variable;
 }  // namespace tint::sem
 
 namespace tint::sem {
diff --git a/src/tint/lang/wgsl/sem/info.h b/src/tint/lang/wgsl/sem/info.h
index 527b2c7..fecbe1e 100644
--- a/src/tint/lang/wgsl/sem/info.h
+++ b/src/tint/lang/wgsl/sem/info.h
@@ -42,10 +42,6 @@
 class Module;
 class ValueExpression;
 }  // namespace tint::sem
-namespace tint::core::type {
-class Node;
-class Type;
-}  // namespace tint::core::type
 
 namespace tint::sem {
 
diff --git a/src/tint/lang/wgsl/sem/switch_statement.h b/src/tint/lang/wgsl/sem/switch_statement.h
index 6cbf1cd..2029364 100644
--- a/src/tint/lang/wgsl/sem/switch_statement.h
+++ b/src/tint/lang/wgsl/sem/switch_statement.h
@@ -44,7 +44,6 @@
 namespace tint::sem {
 class CaseStatement;
 class CaseSelector;
-class ValueExpression;
 }  // namespace tint::sem
 
 namespace tint::sem {
diff --git a/src/tint/lang/wgsl/writer/ast_printer/ast_printer.h b/src/tint/lang/wgsl/writer/ast_printer/ast_printer.h
index 0be81eb..8670a71 100644
--- a/src/tint/lang/wgsl/writer/ast_printer/ast_printer.h
+++ b/src/tint/lang/wgsl/writer/ast_printer/ast_printer.h
@@ -47,8 +47,6 @@
 class AssignmentStatement;
 class Attribute;
 class BinaryExpression;
-class BitcastExpression;
-class BlockStatement;
 class BlockStatement;
 class BreakIfStatement;
 class BreakStatement;
@@ -74,8 +72,6 @@
 class Requires;
 class ReturnStatement;
 class Statement;
-class Statement;
-class Statement;
 class Struct;
 class SwitchStatement;
 class TypeDecl;
diff --git a/src/tint/utils/diagnostic/formatter.h b/src/tint/utils/diagnostic/formatter.h
index b744ff6..d17df28 100644
--- a/src/tint/utils/diagnostic/formatter.h
+++ b/src/tint/utils/diagnostic/formatter.h
@@ -32,7 +32,6 @@
 
 // Forward declaration
 namespace tint {
-class StyledTextPrinter;
 class StyledText;
 }  // namespace tint
 namespace tint::diag {
diff --git a/src/tint/utils/math/hash.h b/src/tint/utils/math/hash.h
index d5cd9c6..30ac91e 100644
--- a/src/tint/utils/math/hash.h
+++ b/src/tint/utils/math/hash.h
@@ -45,7 +45,6 @@
 #include "src/tint/utils/math/crc32.h"
 
 namespace tint {
-
 namespace detail {
 
 template <typename T, typename = void>
diff --git a/src/tint/utils/text/styled_text.h b/src/tint/utils/text/styled_text.h
index 556099b..4b5febb 100644
--- a/src/tint/utils/text/styled_text.h
+++ b/src/tint/utils/text/styled_text.h
@@ -38,11 +38,6 @@
 #include "src/tint/utils/text/string_stream.h"
 #include "src/tint/utils/text/text_style.h"
 
-// Forward declarations
-namespace tint {
-class StyledTextPrinter;
-}
-
 namespace tint {
 
 /// StyledText is a string builder with support for styled text spans.
diff --git a/src/tint/utils/text/styled_text_printer.h b/src/tint/utils/text/styled_text_printer.h
index a224537..108c0b9 100644
--- a/src/tint/utils/text/styled_text_printer.h
+++ b/src/tint/utils/text/styled_text_printer.h
@@ -34,11 +34,6 @@
 #include "src/tint/utils/text/styled_text.h"
 #include "src/tint/utils/text/styled_text_theme.h"
 
-/// Forward declarations
-namespace tint {
-class TextStyle;
-}
-
 namespace tint {
 
 /// StyledTextPrinter is the interface for printing text with a style.