1/**
2 * Copyright (c) 2024 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16#ifndef ES2PANDA_PARSER_PROGRAM_ENTITY_NAME_VISITOR_H
17#define ES2PANDA_PARSER_PROGRAM_ENTITY_NAME_VISITOR_H
18
19#include "libpandabase/mem/arena_allocator.h"
20#include "macros.h"
21#include "ir/visitor/IterateAstVisitor.h"
22#include "util/ustring.h"
23
24namespace ark::es2panda::parser {
25class EntityNameVisitor final : public ir::visitor::AbortAstVisitor {
26public:
27    void VisitClassDeclaration(ir::ClassDeclaration *classDecl) override;
28    void VisitFunctionDeclaration(ir::FunctionDeclaration *funcDecl) override;
29    void VisitVariableDeclaration(ir::VariableDeclaration *varDecl) override;
30    void VisitTSEnumDeclaration(ir::TSEnumDeclaration *enumDecl) override;
31    void VisitTSInterfaceDeclaration(ir::TSInterfaceDeclaration *interfaceDecl) override;
32    void VisitETSStructDeclaration(ir::ETSStructDeclaration *structDecl) override;
33    void VisitTSTypeAliasDeclaration(ir::TSTypeAliasDeclaration *typeAliasDecl) override;
34
35    util::StringView GetName() const
36    {
37        return name_;
38    }
39
40private:
41    util::StringView name_;
42};
43}  // namespace ark::es2panda::parser
44
45#endif /* ES2PANDA_PARSER_PROGRAM_ENTITY_NAME_VISITOR_H */
46