// Part of the Carbon Language project, under the Apache License v2.0 with LLVM // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception #include "explorer/ast/member.h" #include "explorer/ast/declaration.h" namespace Carbon { Member::Member(Nonnull declaration) : member_(declaration) {} Member::Member(Nonnull struct_member) : member_(struct_member) {} auto Member::name() const -> std::string_view { if (const Declaration* decl = member_.dyn_cast()) { return GetName(*decl).value(); } else { return member_.get()->name; } } auto Member::type() const -> const Value& { if (const Declaration* decl = member_.dyn_cast()) { return decl->static_type(); } else { return *member_.get()->value; } } auto Member::declaration() const -> std::optional> { if (const Declaration* decl = member_.dyn_cast()) { return decl; } return std::nullopt; } } // namespace Carbon