
Read typedef and "using" type alias declarations and serialize into the internal structures. Emit this information in the YAML output. The HTML and MD generators are unchanged. Separate out the logic to create the parent namespace or record object and insert the newly created child into it. This logic was previously duplicated for every "info" type and is now shared. To help this, a struct containing the child vectors was separated out so children can be added generically and without having too many templates. A small change was made to populateParentNamespaces() to allow using types that aren't themselves DeclContexts (typedefs are the first example of this). Differential Revision: https://reviews.llvm.org/D134371
56 lines
2.2 KiB
C++
56 lines
2.2 KiB
C++
//===-- clang-doc/ClangDocTest.h ------------------------------------------===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLVM_CLANG_TOOLS_EXTRA_UNITTESTS_CLANG_DOC_CLANGDOCTEST_H
|
|
#define LLVM_CLANG_TOOLS_EXTRA_UNITTESTS_CLANG_DOC_CLANGDOCTEST_H
|
|
|
|
#include "ClangDocTest.h"
|
|
#include "Representation.h"
|
|
#include "clang/AST/RecursiveASTVisitor.h"
|
|
#include "gtest/gtest.h"
|
|
|
|
namespace clang {
|
|
namespace doc {
|
|
|
|
using EmittedInfoList = std::vector<std::unique_ptr<Info>>;
|
|
|
|
static const SymbolID EmptySID = SymbolID();
|
|
static const SymbolID NonEmptySID =
|
|
SymbolID{{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}};
|
|
|
|
NamespaceInfo *InfoAsNamespace(Info *I);
|
|
RecordInfo *InfoAsRecord(Info *I);
|
|
FunctionInfo *InfoAsFunction(Info *I);
|
|
EnumInfo *InfoAsEnum(Info *I);
|
|
TypedefInfo *InfoAsTypedef(Info *I);
|
|
|
|
// Unlike the operator==, these functions explicitly does not check USRs, as
|
|
// that may change and it would be better to not rely on its implementation.
|
|
void CheckReference(Reference &Expected, Reference &Actual);
|
|
void CheckTypeInfo(TypeInfo *Expected, TypeInfo *Actual);
|
|
void CheckFieldTypeInfo(FieldTypeInfo *Expected, FieldTypeInfo *Actual);
|
|
void CheckMemberTypeInfo(MemberTypeInfo *Expected, MemberTypeInfo *Actual);
|
|
|
|
// This function explicitly does not check USRs, as that may change and it would
|
|
// be better to not rely on its implementation.
|
|
void CheckBaseInfo(Info *Expected, Info *Actual);
|
|
void CheckSymbolInfo(SymbolInfo *Expected, SymbolInfo *Actual);
|
|
void CheckFunctionInfo(FunctionInfo *Expected, FunctionInfo *Actual);
|
|
void CheckEnumInfo(EnumInfo *Expected, EnumInfo *Actual);
|
|
void CheckTypedefInfo(TypedefInfo *Expected, TypedefInfo *Actual);
|
|
void CheckNamespaceInfo(NamespaceInfo *Expected, NamespaceInfo *Actual);
|
|
void CheckRecordInfo(RecordInfo *Expected, RecordInfo *Actual);
|
|
void CheckBaseRecordInfo(BaseRecordInfo *Expected, BaseRecordInfo *Actual);
|
|
|
|
void CheckIndex(Index &Expected, Index &Actual);
|
|
|
|
} // namespace doc
|
|
} // namespace clang
|
|
|
|
#endif // LLVM_CLANG_TOOLS_EXTRA_UNITTESTS_CLANG_DOC_CLANGDOCTEST_H
|