mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-06-05 06:03:34 +00:00
This CL removes the following AST nodes: * ast::Array * ast::Atomic * ast::Matrix * ast::MultisampledTexture * ast::Pointer * ast::SampledTexture * ast::Texture * ast::TypeName * ast::Vector ast::Type, which used to be the base class for all AST types, is now a thin wrapper around ast::IdentifierExpression. All types are now referred to using their type name. The resolver now handles type resolution and validation of the types listed above based on the TemplateIdentifier arguments. Other changes: * ProgramBuilder has undergone substantial refactoring. * ProgramBuilder helpers for type inferencing is now more explicit. Instead of passing 'nullptr', a new 'Infer' template argument is passed. * ast::CheckIdentifier() is used for more tests that check identifiers, including types. Bug: tint:1810 Change-Id: I8e739ef49435dc1c20a462f3ec5ba265661a7edb Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/118723 Reviewed-by: Dan Sinclair <dsinclair@chromium.org> Kokoro: Kokoro <noreply+kokoro@google.com> Commit-Queue: Ben Clayton <bclayton@google.com> Reviewed-by: James Price <jrprice@google.com>
55 lines
1.6 KiB
C++
55 lines
1.6 KiB
C++
// Copyright 2022 The Tint Authors.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
#include "src/tint/ast/var.h"
|
|
|
|
#include "src/tint/program_builder.h"
|
|
|
|
TINT_INSTANTIATE_TYPEINFO(tint::ast::Var);
|
|
|
|
namespace tint::ast {
|
|
|
|
Var::Var(ProgramID pid,
|
|
NodeID nid,
|
|
const Source& src,
|
|
const Identifier* n,
|
|
Type ty,
|
|
type::AddressSpace address_space,
|
|
type::Access access,
|
|
const Expression* init,
|
|
utils::VectorRef<const Attribute*> attrs)
|
|
: Base(pid, nid, src, n, ty, init, std::move(attrs)),
|
|
declared_address_space(address_space),
|
|
declared_access(access) {}
|
|
|
|
Var::Var(Var&&) = default;
|
|
|
|
Var::~Var() = default;
|
|
|
|
const char* Var::Kind() const {
|
|
return "var";
|
|
}
|
|
|
|
const Var* Var::Clone(CloneContext* ctx) const {
|
|
auto src = ctx->Clone(source);
|
|
auto* n = ctx->Clone(name);
|
|
auto ty = ctx->Clone(type);
|
|
auto* init = ctx->Clone(initializer);
|
|
auto attrs = ctx->Clone(attributes);
|
|
return ctx->dst->create<Var>(src, n, ty, declared_address_space, declared_access, init,
|
|
std::move(attrs));
|
|
}
|
|
|
|
} // namespace tint::ast
|