From 1146db0d1043f0a05f9f858cc756108975b8053f Mon Sep 17 00:00:00 2001 From: Gennaro Prota Date: Wed, 13 May 2026 11:05:33 +0200 Subject: [PATCH] feat: move template specializations and deduction guides off parent scope page Class template specializations, function template specializations, and deduction guides used to share the enclosing scope's listing with their primary template. Users have repeatedly reported this as confusing: `A` and `A` appearing side by side in the namespace index reads as if they were independent siblings, and a primary's variants were nowhere on its own page. Specializations now appear in a dedicated "Specializations" section on the primary's documentation page, and deduction guides in a "Deduction Guides" section on the deduced class's page. The parent scope's listing carries only the primary itself. An orphan specialization (one whose primary has been excluded from extraction) stays in the parent's listing so the index can still reach it. The relationship is stored in the corpus: each primary record or function template carries the IDs of its specializations (and, for class templates, of its deduction guides), and each specialization carries an `IsListedOnPrimary` flag. The lists are populated by a finalizer pass and exposed via reflection, so the XML output gains matching ``, ``, and `` elements and the DOM/Handlebars layer renders the new sections through plain field access. Closes issue #1154. --- include/mrdocs/Metadata/Symbol/Function.hpp | 34 +- include/mrdocs/Metadata/Symbol/Record.hpp | 41 +- mrdocs.rnc | 9 +- .../generator/common/partials/symbol.hbs | 2 + .../symbol/section/deduction-guides.hbs | 4 + .../symbol/section/specializations.hbs | 4 + .../common/partials/symbol/tranche.hbs | 17 +- src/lib/CorpusImpl.cpp | 9 + src/lib/CorpusImpl.hpp | 1 + .../Finalizers/SpecializationFinalizer.cpp | 171 ++++++++ .../Finalizers/SpecializationFinalizer.hpp | 68 ++++ src/lib/Support/Handlebars.cpp | 55 +++ .../extract-friends/extract-friends.xml | 2 + .../extract-friends/no-extract-friends.xml | 2 + .../config/sfinae/record-two-params.xml | 4 + .../sort-namespace-members-by-location.xml | 10 + .../sort-namespace-members-by-name.xml | 10 + .../golden-tests/config/sort/sort-members.xml | 10 + .../golden-tests/config/sort/unordered.xml | 10 + .../symbol-type/nested-private-template.xml | 2 + .../javadoc/copydoc/template-arguments.xml | 8 + .../golden-tests/symbols/function/sfinae.xml | 4 + .../spec-mem-implicit-instantiation.xml | 14 + .../symbols/guide/explicit-deduct-guide.xml | 4 + .../record/class-template-array-spec.xml | 2 + .../record/class-template-partial-spec.xml | 4 + .../symbols/record/class-template-spec.xml | 12 + .../class-template-specializations-1.xml | 364 ++++++++++++++++++ .../class-template-specializations-2.xml | 24 ++ .../class-template-specializations-3.xml | 44 +++ .../record/specializations-and-guides.adoc | 124 ++++++ .../record/specializations-and-guides.cpp | 22 ++ .../record/specializations-and-guides.yml | 1 + .../template-specialization-inheritance.xml | 8 + .../symbols/typedef/decay-to-primary.xml | 4 + .../implicit-instantiation-member-ref.xml | 4 + .../using/using-alias-template-dependent.xml | 2 + .../templates/c_mct_expl_inline.xml | 2 + .../templates/c_mct_expl_outside.xml | 2 + .../templates/c_mft_expl_inline.xml | 2 + .../templates/c_mft_expl_outside.xml | 2 + test-files/golden-tests/templates/ct_expl.xml | 2 + .../templates/ct_mc_expl_outside.xml | 2 + .../templates/ct_mct_expl_inline.xml | 2 + .../templates/ct_mct_expl_outside.xml | 4 + .../templates/ct_mf_expl_outside.xml | 2 + .../templates/ct_mft_expl_inline.xml | 2 + .../templates/ct_mft_expl_outside.xml | 4 + test-files/golden-tests/templates/ft_expl.xml | 2 + 49 files changed, 1127 insertions(+), 11 deletions(-) create mode 100644 share/mrdocs/addons/generator/common/partials/symbol/section/deduction-guides.hbs create mode 100644 share/mrdocs/addons/generator/common/partials/symbol/section/specializations.hbs create mode 100644 src/lib/Metadata/Finalizers/SpecializationFinalizer.cpp create mode 100644 src/lib/Metadata/Finalizers/SpecializationFinalizer.hpp create mode 100644 test-files/golden-tests/symbols/record/specializations-and-guides.adoc create mode 100644 test-files/golden-tests/symbols/record/specializations-and-guides.cpp create mode 100644 test-files/golden-tests/symbols/record/specializations-and-guides.yml diff --git a/include/mrdocs/Metadata/Symbol/Function.hpp b/include/mrdocs/Metadata/Symbol/Function.hpp index b3786a9f5c..1a2adbab11 100644 --- a/include/mrdocs/Metadata/Symbol/Function.hpp +++ b/include/mrdocs/Metadata/Symbol/Function.hpp @@ -22,6 +22,7 @@ #include #include #include +#include #include #include @@ -137,6 +138,36 @@ struct FunctionSymbol final */ Optional FunctionObjectImpl; + /** Whether this function is listed on its primary's page. + + A presentation-layer flag set by `SpecializationFinalizer` + when *both* conditions hold: + + 1. This function is a template specialization (AST-local, + equivalent to `Template->specializationKind() != Primary`). + 2. Its primary is being extracted in + @ref ExtractionMode::Regular (cross-symbol, needs the + corpus). + + When set, the function is rendered in its primary's + "Specializations" section and suppressed from the parent + scope's listing. Orphan specializations (primary excluded + from extraction) fail condition 2 and keep the flag `false`, + so they remain reachable from the parent scope. The name + deliberately encodes the resulting placement rather than + the AST property in 1, which `Template` already exposes. + */ + bool IsListedOnPrimary = false; + + /** Specializations whose primary is this function. + + Populated by `SpecializationFinalizer` with the IDs of + function-template specializations referring to this + function as their primary. Sorted by referent name + then ID. + */ + std::vector Specializations; + //-------------------------------------------- /** Construct a function symbol with its ID. @@ -161,7 +192,8 @@ MRDOCS_DESCRIBE_STRUCT( IsNodiscard, IsExplicitObjectMemberFunction, Constexpr, OverloadedOperator, StorageClass, IsRecordMethod, IsVirtual, IsVirtualAsWritten, IsPure, IsConst, IsVolatile, IsFinal, - RefQualifier, Explicit, Attributes, FunctionObjectImpl) + RefQualifier, Explicit, Attributes, FunctionObjectImpl, + IsListedOnPrimary, Specializations) ) /** Map a vector of parameters to a @ref dom::Value object. diff --git a/include/mrdocs/Metadata/Symbol/Record.hpp b/include/mrdocs/Metadata/Symbol/Record.hpp index c173fd7407..598444cefa 100644 --- a/include/mrdocs/Metadata/Symbol/Record.hpp +++ b/include/mrdocs/Metadata/Symbol/Record.hpp @@ -5,6 +5,7 @@ // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // // Copyright (c) 2023 Vinnie Falco (vinnie.falco@gmail.com) +// Copyright (c) 2026 Gennaro Prota (gennaro.prota@gmail.com) // // Official repository: https://github.com/cppalliance/mrdocs // @@ -74,6 +75,43 @@ struct RecordSymbol final */ std::vector Friends; + /** Whether this record is listed on its primary's page. + + A presentation-layer flag set by `SpecializationFinalizer` + when *both* conditions hold: + + 1. This record is a template specialization (AST-local, + equivalent to `Template->specializationKind() != Primary`). + 2. Its primary is being extracted in + @ref ExtractionMode::Regular (cross-symbol, needs the + corpus). + + When set, the record is rendered in its primary's + "Specializations" section and suppressed from the parent + scope's listing. Orphan specializations (primary excluded + from extraction) fail condition 2 and keep the flag `false`, + so they remain reachable from the parent scope. The name + deliberately encodes the resulting placement rather than + the AST property in 1, which `Template` already exposes. + */ + bool IsListedOnPrimary = false; + + /** Specializations whose primary is this record. + + Populated by `SpecializationFinalizer` with the IDs of + class-template specializations referring to this record + as their primary. Sorted by referent name then ID. + */ + std::vector Specializations; + + /** Deduction guides associated with this class template. + + Populated by `SpecializationFinalizer` with the IDs of + deduction guides that deduce this record. Sorted by + referent name then ID. + */ + std::vector DeductionGuides; + //-------------------------------------------- /** Create a record symbol bound to an ID. @@ -93,7 +131,8 @@ MRDOCS_DESCRIBE_STRUCT( RecordSymbol, (SymbolCommonBase), (KeyKind, Template, IsTypeDef, IsFinal, IsFinalDestructor, - Bases, Derived, Interface, Friends) + Bases, Derived, Interface, Friends, + IsListedOnPrimary, Specializations, DeductionGuides) ) /** Return the default accessibility for a record key kind. diff --git a/mrdocs.rnc b/mrdocs.rnc index 776acb447b..cd1f9e08c3 100644 --- a/mrdocs.rnc +++ b/mrdocs.rnc @@ -370,7 +370,10 @@ grammar BaseInfo*, element derived { SymbolID }*, RecordInterface?, - FriendInfo* + FriendInfo*, + element is-listed-on-primary { Bool }?, + element specializations { SymbolID }*, + element deduction-guides { SymbolID }* } BaseInfo = @@ -445,7 +448,9 @@ grammar element ref-qualifier { text }?, element explicit { text }?, element attributes { text }*, - element function-object-impl { SymbolID }? + element function-object-impl { SymbolID }?, + element is-listed-on-primary { Bool }?, + element specializations { SymbolID }* } #--------------------------------------------- diff --git a/share/mrdocs/addons/generator/common/partials/symbol.hbs b/share/mrdocs/addons/generator/common/partials/symbol.hbs index 5bbf6426a3..e42b42806f 100644 --- a/share/mrdocs/addons/generator/common/partials/symbol.hbs +++ b/share/mrdocs/addons/generator/common/partials/symbol.hbs @@ -20,6 +20,8 @@ {{> symbol/section/base-classes}} {{> symbol/section/protected-base-classes}} {{> symbol/section/members}} +{{> symbol/section/specializations}} +{{> symbol/section/deduction-guides}} {{> symbol/section/friends}} {{> symbol/section/using-directives}} {{> symbol/section/non-member-functions}} diff --git a/share/mrdocs/addons/generator/common/partials/symbol/section/deduction-guides.hbs b/share/mrdocs/addons/generator/common/partials/symbol/section/deduction-guides.hbs new file mode 100644 index 0000000000..d7fc414b7c --- /dev/null +++ b/share/mrdocs/addons/generator/common/partials/symbol/section/deduction-guides.hbs @@ -0,0 +1,4 @@ +{{! Deduction guides for this class template, listed on its own page rather than the parent scope. }} +{{#if symbol.deductionGuides}} +{{>symbol/members-table members=symbol.deductionGuides title="Deduction Guides"}} +{{/if}} diff --git a/share/mrdocs/addons/generator/common/partials/symbol/section/specializations.hbs b/share/mrdocs/addons/generator/common/partials/symbol/section/specializations.hbs new file mode 100644 index 0000000000..d9b1b85c7c --- /dev/null +++ b/share/mrdocs/addons/generator/common/partials/symbol/section/specializations.hbs @@ -0,0 +1,4 @@ +{{! Specializations of this primary, listed on its own page rather than the parent scope. }} +{{#if symbol.specializations}} +{{>symbol/members-table members=symbol.specializations title="Specializations"}} +{{/if}} diff --git a/share/mrdocs/addons/generator/common/partials/symbol/tranche.hbs b/share/mrdocs/addons/generator/common/partials/symbol/tranche.hbs index ae7c2b3a65..6536ebf5f7 100644 --- a/share/mrdocs/addons/generator/common/partials/symbol/tranche.hbs +++ b/share/mrdocs/addons/generator/common/partials/symbol/tranche.hbs @@ -7,6 +7,10 @@ Each value in the tranche is a list of symbols that belong to the tranche. + Template specializations and deduction guides are filtered out: they are + listed instead on the primary template's own page, via the dedicated + "Specializations" / "Deduction Guides" sections. + Expected Context: {Tranche Object} Example: @@ -17,23 +21,22 @@ {{#if is-namespace}} {{>symbol/members-table members=tranche.namespaces title="Namespaces"}} {{>symbol/members-table members=tranche.namespaceAliases title="Namespace Aliases"}} -{{>symbol/members-table members=tranche.records title=(concat (select label (concat label " ") "") "Types")}} +{{>symbol/members-table members=(reject_by tranche.records "isListedOnPrimary") title=(concat (select label (concat label " ") "") "Types")}} {{>symbol/members-table members=tranche.typedefs title=(concat (select label (concat label " ") "") "Type Aliases")}} {{>symbol/members-table members=tranche.enums title=(concat (select label (concat label " ") "") "Enums")}} -{{>symbol/members-table members=tranche.functions title="Functions"}} +{{>symbol/members-table members=(reject_by tranche.functions "isListedOnPrimary") title="Functions"}} {{>symbol/members-table members=tranche.variables title="Variables"}} {{>symbol/members-table members=tranche.concepts title="Concepts"}} -{{>symbol/members-table members=tranche.guides title=(concat (select label (concat label " ") "") "Deduction Guides")}} {{>symbol/members-table members=tranche.usings title=(concat (select label (concat label " ") "") "Using Declarations")}} {{else}} {{>symbol/members-table members=tranche.namespaceAliases title="Namespace Aliases"}} -{{>symbol/members-table members=tranche.records title=(concat (select label (concat label " ") "") "Types")}} +{{>symbol/members-table members=(reject_by tranche.records "isListedOnPrimary") title=(concat (select label (concat label " ") "") "Types")}} {{>symbol/members-table members=tranche.typedefs title=(concat (select label (concat label " ") "") "Type Aliases")}} {{>symbol/members-table members=tranche.enums title=(concat (select label (concat label " ") "") "Enums")}} -{{>symbol/members-table members=tranche.functions title=(concat (select label (concat label " ") "") "Member Functions")}} -{{>symbol/members-table members=tranche.staticFunctions title=(concat (select label (concat label " ") "") "Static Member Functions")}} +{{>symbol/members-table members=(reject_by tranche.functions "isListedOnPrimary") title=(concat (select label (concat label " ") "") "Member Functions")}} +{{>symbol/members-table members=(reject_by tranche.staticFunctions "isListedOnPrimary") title=(concat (select label (concat label " ") "") "Static Member Functions")}} {{>symbol/members-table members=tranche.variables title=(concat (select label (concat label " ") "") "Data Members")}} {{>symbol/members-table members=tranche.staticVariables title=(concat (select label (concat label " ") "") "Static Data Members")}} {{>symbol/members-table members=tranche.aliases title=(concat (select label (concat label " ") "") "Aliases")}} {{>symbol/members-table members=tranche.usings title=(concat (select label (concat label " ") "") "Using Declarations")}} -{{/if}} \ No newline at end of file +{{/if}} diff --git a/src/lib/CorpusImpl.cpp b/src/lib/CorpusImpl.cpp index 5877df7a6d..7ca0e49518 100644 --- a/src/lib/CorpusImpl.cpp +++ b/src/lib/CorpusImpl.cpp @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include @@ -1086,6 +1087,14 @@ CorpusImpl::finalize() finalizer.build(); } + // Populate primary -> specialization back-pointers + // and the deduction-guide lists on deduced records. + { + report::debug(" - Finalizing specializations"); + SpecializationFinalizer finalizer(*this); + finalizer.build(); + } + // Sort members: this runs unconditionally because // the members of some symbol types are always sorted. { diff --git a/src/lib/CorpusImpl.hpp b/src/lib/CorpusImpl.hpp index 567ef38ed0..9103665fc2 100644 --- a/src/lib/CorpusImpl.hpp +++ b/src/lib/CorpusImpl.hpp @@ -64,6 +64,7 @@ class CorpusImpl final : public Corpus friend class NamespacesFinalizer; friend class DerivedFinalizer; friend class FunctionObjectFinalizer; + friend class SpecializationFinalizer; public: /** Constructor. diff --git a/src/lib/Metadata/Finalizers/SpecializationFinalizer.cpp b/src/lib/Metadata/Finalizers/SpecializationFinalizer.cpp new file mode 100644 index 0000000000..89b7478b02 --- /dev/null +++ b/src/lib/Metadata/Finalizers/SpecializationFinalizer.cpp @@ -0,0 +1,171 @@ +// +// Licensed 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 +// +// Copyright (c) 2026 Gennaro Prota (gennaro.prota@gmail.com) +// +// Official repository: https://github.com/cppalliance/mrdocs +// + +#include "SpecializationFinalizer.hpp" +#include +#include +#include + +namespace mrdocs { + +namespace { + +// Return the `SymbolID` of the primary class template that a +// deduction guide deduces, or `SymbolID::invalid` when it +// cannot be determined. +SymbolID +deducedPrimaryID(GuideSymbol const& guide) +{ + if (guide.Deduced.valueless_after_move() + || !guide.Deduced->isNamed()) + { + return SymbolID::invalid; + } + NamedType const& namedType = guide.Deduced->asNamed(); + if (namedType.Name.valueless_after_move()) + { + return SymbolID::invalid; + } + return namedType.Name->id; +} + +} // (unnamed) + +void +SpecializationFinalizer:: +processRecord(RecordSymbol const& I) +{ + if (!I.Template + || I.Template->specializationKind() == TemplateSpecKind::Primary) + { + return; + } + Symbol* primary = corpus_.find(I.Template->Primary); + if (!primary + || primary->Extraction != ExtractionMode::Regular + || !primary->isRecord()) + { + return; + } + primary->asRecordPtr()->Specializations.push_back(I.id); + Symbol* self = corpus_.find(I.id); + MRDOCS_ASSERT(self && self->isRecord()); + self->asRecordPtr()->IsListedOnPrimary = true; +} + +void +SpecializationFinalizer:: +processFunction(FunctionSymbol const& I) +{ + if (!I.Template + || I.Template->specializationKind() == TemplateSpecKind::Primary) + { + return; + } + Symbol* primary = corpus_.find(I.Template->Primary); + if (!primary + || primary->Extraction != ExtractionMode::Regular + || !primary->isFunction()) + { + return; + } + primary->asFunctionPtr()->Specializations.push_back(I.id); + Symbol* self = corpus_.find(I.id); + MRDOCS_ASSERT(self && self->isFunction()); + self->asFunctionPtr()->IsListedOnPrimary = true; +} + +void +SpecializationFinalizer:: +processGuide(GuideSymbol const& I) +{ + SymbolID const deducedId = deducedPrimaryID(I); + if (!deducedId) + { + return; + } + Symbol* deduced = corpus_.find(deducedId); + if (!deduced + || deduced->Extraction != ExtractionMode::Regular + || !deduced->isRecord()) + { + return; + } + deduced->asRecordPtr()->DeductionGuides.push_back(I.id); +} + +void +SpecializationFinalizer:: +sortBackPointers() +{ + auto byReferentName = [this](SymbolID const& lhs, SymbolID const& rhs) + { + Symbol const* lhsInfo = corpus_.find(lhs); + Symbol const* rhsInfo = corpus_.find(rhs); + if (!lhsInfo || !rhsInfo) + { + return lhs < rhs; + } + if (lhsInfo->Name != rhsInfo->Name) + { + return lhsInfo->Name < rhsInfo->Name; + } + return lhs < rhs; + }; + for (Symbol const& I : corpus_) + { + if (I.isRecord()) + { + RecordSymbol const& R = I.asRecord(); + if (!R.Specializations.empty() || !R.DeductionGuides.empty()) + { + RecordSymbol* mut = corpus_.find(I.id)->asRecordPtr(); + std::ranges::sort(mut->Specializations, byReferentName); + std::ranges::sort(mut->DeductionGuides, byReferentName); + } + } + else if (I.isFunction()) + { + FunctionSymbol const& F = I.asFunction(); + if (!F.Specializations.empty()) + { + FunctionSymbol* mut = corpus_.find(I.id)->asFunctionPtr(); + std::ranges::sort(mut->Specializations, byReferentName); + } + } + } +} + +void +SpecializationFinalizer:: +build() +{ + for (Symbol const& I : corpus_) + { + if (I.Extraction == ExtractionMode::Regular) + { + if (I.isRecord()) + { + processRecord(I.asRecord()); + } + else if (I.isFunction()) + { + processFunction(I.asFunction()); + } + else if (I.isGuide()) + { + processGuide(I.asGuide()); + } + } + } + sortBackPointers(); +} + +} // mrdocs diff --git a/src/lib/Metadata/Finalizers/SpecializationFinalizer.hpp b/src/lib/Metadata/Finalizers/SpecializationFinalizer.hpp new file mode 100644 index 0000000000..a7638e0b4e --- /dev/null +++ b/src/lib/Metadata/Finalizers/SpecializationFinalizer.hpp @@ -0,0 +1,68 @@ +// +// Licensed 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 +// +// Copyright (c) 2026 Gennaro Prota (gennaro.prota@gmail.com) +// +// Official repository: https://github.com/cppalliance/mrdocs +// + +#ifndef MRDOCS_LIB_METADATA_FINALIZERS_SPECIALIZATIONFINALIZER_HPP +#define MRDOCS_LIB_METADATA_FINALIZERS_SPECIALIZATIONFINALIZER_HPP + +#include + +namespace mrdocs { + +/** Populate the back-pointers from primaries to their specializations. + + For each class- or function-template specialization extracted + in @ref ExtractionMode::Regular whose primary is also `Regular`, + appends the specialization's ID to the primary's + `Specializations` list and sets the specialization's + `IsListedOnPrimary` flag. For each `Regular` deduction guide, + appends its ID to the deduced record's `DeductionGuides` + list. The populated lists are sorted by referent name then ID. + + Orphan specializations - those whose primary is not extracted + in `Regular` mode - keep `IsListedOnPrimary` `false` so they + remain reachable from the parent scope's listing. +*/ +class SpecializationFinalizer +{ + CorpusImpl& corpus_; + + void processRecord(RecordSymbol const& I); + void processFunction(FunctionSymbol const& I); + void processGuide(GuideSymbol const& I); + + void sortBackPointers(); + +public: + /** Construct the finalizer bound to a corpus. + + @param corpus The corpus whose specialization and deduction-guide + back-pointers will be populated by `build`. + */ + explicit + SpecializationFinalizer(CorpusImpl& corpus) noexcept + : corpus_(corpus) + { + } + + /** Populate the back-pointers and sort them. + + Walks the corpus once, appending each `Regular` specialization + to its primary's `Specializations` list (when the primary is + also regular) and each `Regular` deduction guide to its deduced + record's `DeductionGuides` list. Specializations whose primary + will be rendered also get their `IsListedOnPrimary` flag set. + Finally sorts every populated vector by referent name then ID. + */ + void build(); +}; + +} // mrdocs + +#endif // MRDOCS_LIB_METADATA_FINALIZERS_SPECIALIZATIONFINALIZER_HPP diff --git a/src/lib/Support/Handlebars.cpp b/src/lib/Support/Handlebars.cpp index 417e6038c5..a9176adadb 100644 --- a/src/lib/Support/Handlebars.cpp +++ b/src/lib/Support/Handlebars.cpp @@ -4,6 +4,7 @@ // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // // Copyright (c) 2023 Alan de Freitas (alandefreitas@gmail.com) +// Copyright (c) 2026 Gennaro Prota (gennaro.prota@gmail.com) // // Official repository: https://github.com/cppalliance/mrdocs // @@ -6473,6 +6474,60 @@ registerContainerHelpers(Handlebars& hbs) hbs.registerHelper("filter_by", filter_by_fn); + static auto reject_by_fn = dom::makeVariadicInvocable([]( + dom::Array const& arguments) -> dom::Value + { + dom::Value container = arguments.at(0); + std::vector keys; + for (std::size_t i = 1; i < arguments.size() - 1; ++i) + { + dom::Value key = arguments.at(i); + keys.push_back(key); + } + + // Given an array of objects, reject (exclude) those whose + // value at any of the given keys is truthy. Inverse of + // `filter_by`: non-object elements are kept, since they + // have no keys to test. + if (container.isArray()) + { + dom::Array const& arr = container.getArray(); + + std::vector res; + std::size_t const n = arr.size(); + for (std::size_t i = 0; i < n; ++i) { + dom::Value el = arr.at(i); + + if (!el.isObject()) + { + res.emplace_back(el); + continue; + } + + auto const matchIt = std::ranges::find_if( + keys, + [&](dom::Value const& key) + { + return + el.getObject().exists(key.getString()) && + el.getObject().get(key.getString()).isTruthy(); + }); + if (matchIt != keys.end()) + { + continue; + } + + res.emplace_back(el); + } + return dom::Array(res); + } + + // If the value is not an array, then we can't reject from it + return container; + }); + + hbs.registerHelper("reject_by", reject_by_fn); + static auto any_of_by_fn = dom::makeVariadicInvocable([]( dom::Array const& arguments) -> dom::Value { diff --git a/test-files/golden-tests/config/extract-friends/extract-friends.xml b/test-files/golden-tests/config/extract-friends/extract-friends.xml index d10d24ae21..db3644351b 100644 --- a/test-files/golden-tests/config/extract-friends/extract-friends.xml +++ b/test-files/golden-tests/config/extract-friends/extract-friends.xml @@ -67,6 +67,7 @@ + jTCZUvygQOxo6L+VfFZcAI6KU0Y= hash @@ -105,6 +106,7 @@ + 1 operator() diff --git a/test-files/golden-tests/config/extract-friends/no-extract-friends.xml b/test-files/golden-tests/config/extract-friends/no-extract-friends.xml index d6632f40c4..783eb57cb9 100644 --- a/test-files/golden-tests/config/extract-friends/no-extract-friends.xml +++ b/test-files/golden-tests/config/extract-friends/no-extract-friends.xml @@ -67,6 +67,7 @@ + jTCZUvygQOxo6L+VfFZcAI6KU0Y= hash @@ -105,6 +106,7 @@ + 1 operator() diff --git a/test-files/golden-tests/config/sfinae/record-two-params.xml b/test-files/golden-tests/config/sfinae/record-two-params.xml index 13f0f4e42a..748cc01cae 100644 --- a/test-files/golden-tests/config/sfinae/record-two-params.xml +++ b/test-files/golden-tests/config/sfinae/record-two-params.xml @@ -107,6 +107,8 @@ + E4XI9hgprdQN7ez3dhWgM/Nx9DQ= + 5GqWQ5IFiKuJx5FMNsyMUX5/JA0= writable_field_traits @@ -158,6 +160,7 @@ + 1 writable_field_traits @@ -209,5 +212,6 @@ + 1 diff --git a/test-files/golden-tests/config/sort-namespace-members-by/sort-namespace-members-by-location.xml b/test-files/golden-tests/config/sort-namespace-members-by/sort-namespace-members-by-location.xml index 81fc115fb9..b0404a3e72 100644 --- a/test-files/golden-tests/config/sort-namespace-members-by/sort-namespace-members-by-location.xml +++ b/test-files/golden-tests/config/sort-namespace-members-by/sort-namespace-members-by-location.xml @@ -93,6 +93,8 @@ + NLoLTepRVq6Wm8kqUGSEoM03TKg= + 1gG5jFtdo9Wauh4eNKJFnssDpFU= C @@ -138,6 +140,7 @@ + 1 C @@ -174,6 +177,7 @@ + 1 B @@ -210,6 +214,8 @@ + S+FvHbXPEwSCkNHoe9TC9L5a4Yk= + VwFE3CILPejPf11zTv20aat7w8Q= B @@ -255,6 +261,7 @@ + 1 B @@ -305,6 +312,7 @@ + 1 A @@ -1030,6 +1038,7 @@ normal + 5LjM4cXZ7IywLIZW1RtfpP7tNNk= g @@ -1088,6 +1097,7 @@ PEedgXj8uxMWKd/yZk6yqAz6boU= normal + 1 g diff --git a/test-files/golden-tests/config/sort-namespace-members-by/sort-namespace-members-by-name.xml b/test-files/golden-tests/config/sort-namespace-members-by/sort-namespace-members-by-name.xml index 58f9b39153..c0dd3907b9 100644 --- a/test-files/golden-tests/config/sort-namespace-members-by/sort-namespace-members-by-name.xml +++ b/test-files/golden-tests/config/sort-namespace-members-by/sort-namespace-members-by-name.xml @@ -101,6 +101,8 @@ + S+FvHbXPEwSCkNHoe9TC9L5a4Yk= + VwFE3CILPejPf11zTv20aat7w8Q= B @@ -146,6 +148,7 @@ + 1 B @@ -196,6 +199,7 @@ + 1 C @@ -241,6 +245,8 @@ + NLoLTepRVq6Wm8kqUGSEoM03TKg= + 1gG5jFtdo9Wauh4eNKJFnssDpFU= C @@ -277,6 +283,7 @@ + 1 C @@ -322,6 +329,7 @@ + 1 D @@ -1202,6 +1210,7 @@ normal + 5LjM4cXZ7IywLIZW1RtfpP7tNNk= g @@ -1260,6 +1269,7 @@ PEedgXj8uxMWKd/yZk6yqAz6boU= normal + 1 h diff --git a/test-files/golden-tests/config/sort/sort-members.xml b/test-files/golden-tests/config/sort/sort-members.xml index cffd20302d..3cf356479b 100644 --- a/test-files/golden-tests/config/sort/sort-members.xml +++ b/test-files/golden-tests/config/sort/sort-members.xml @@ -101,6 +101,8 @@ + S+FvHbXPEwSCkNHoe9TC9L5a4Yk= + VwFE3CILPejPf11zTv20aat7w8Q= B @@ -146,6 +148,7 @@ + 1 B @@ -196,6 +199,7 @@ + 1 C @@ -241,6 +245,8 @@ + NLoLTepRVq6Wm8kqUGSEoM03TKg= + 1gG5jFtdo9Wauh4eNKJFnssDpFU= C @@ -277,6 +283,7 @@ + 1 C @@ -322,6 +329,7 @@ + 1 D @@ -1202,6 +1210,7 @@ normal + 5LjM4cXZ7IywLIZW1RtfpP7tNNk= g @@ -1260,6 +1269,7 @@ PEedgXj8uxMWKd/yZk6yqAz6boU= normal + 1 h diff --git a/test-files/golden-tests/config/sort/unordered.xml b/test-files/golden-tests/config/sort/unordered.xml index b14dd090e9..001086d391 100644 --- a/test-files/golden-tests/config/sort/unordered.xml +++ b/test-files/golden-tests/config/sort/unordered.xml @@ -93,6 +93,8 @@ + NLoLTepRVq6Wm8kqUGSEoM03TKg= + 1gG5jFtdo9Wauh4eNKJFnssDpFU= C @@ -138,6 +140,7 @@ + 1 C @@ -174,6 +177,7 @@ + 1 B @@ -210,6 +214,8 @@ + S+FvHbXPEwSCkNHoe9TC9L5a4Yk= + VwFE3CILPejPf11zTv20aat7w8Q= B @@ -255,6 +261,7 @@ + 1 B @@ -305,6 +312,7 @@ + 1 A @@ -1318,6 +1326,7 @@ normal + 5LjM4cXZ7IywLIZW1RtfpP7tNNk= g @@ -1376,6 +1385,7 @@ PEedgXj8uxMWKd/yZk6yqAz6boU= normal + 1 g diff --git a/test-files/golden-tests/filters/symbol-type/nested-private-template.xml b/test-files/golden-tests/filters/symbol-type/nested-private-template.xml index c4da398361..d9a9bba964 100644 --- a/test-files/golden-tests/filters/symbol-type/nested-private-template.xml +++ b/test-files/golden-tests/filters/symbol-type/nested-private-template.xml @@ -83,6 +83,7 @@ + BCRU3eMBRSysyvFsjJj+0yg+Vfc= impl @@ -128,5 +129,6 @@ + 1 diff --git a/test-files/golden-tests/javadoc/copydoc/template-arguments.xml b/test-files/golden-tests/javadoc/copydoc/template-arguments.xml index 06b5f52acc..bf540ed784 100644 --- a/test-files/golden-tests/javadoc/copydoc/template-arguments.xml +++ b/test-files/golden-tests/javadoc/copydoc/template-arguments.xml @@ -364,6 +364,8 @@ + n2ekv7/9IraylJIibujZeExrML4= + zWh7HJU4uEOW6SQu1/X6/fBkFq0= B @@ -410,6 +412,7 @@ + 1 B @@ -460,6 +463,7 @@ + 1 C @@ -530,6 +534,8 @@ + w5ssdgUOfKNpDbPFUfSYesxFAc8= + +AYNfv3bBiQwa6z9A60U/F7dvXE= C @@ -581,6 +587,7 @@ + 1 C @@ -631,6 +638,7 @@ + 1 D diff --git a/test-files/golden-tests/symbols/function/sfinae.xml b/test-files/golden-tests/symbols/function/sfinae.xml index cfb4b1a3c9..38f9264779 100644 --- a/test-files/golden-tests/symbols/function/sfinae.xml +++ b/test-files/golden-tests/symbols/function/sfinae.xml @@ -129,6 +129,7 @@ + f80OzcD5UlgQ2KOvUj+MvoJcAFE= A @@ -181,6 +182,7 @@ + 1 S @@ -237,6 +239,7 @@ + g0UNZpdodOU5mGCtcpviXd8o6Vk= store @@ -338,6 +341,7 @@ + 1 store diff --git a/test-files/golden-tests/symbols/function/spec-mem-implicit-instantiation.xml b/test-files/golden-tests/symbols/function/spec-mem-implicit-instantiation.xml index 7d5ef71cf7..5ecedd2899 100644 --- a/test-files/golden-tests/symbols/function/spec-mem-implicit-instantiation.xml +++ b/test-files/golden-tests/symbols/function/spec-mem-implicit-instantiation.xml @@ -48,6 +48,9 @@ + AKwlChAOi+0ttIAPsD7uitS+gk0= + C6fFmGgpPJ7jgwKJA98mfx5cxts= + /vjeowK9rbOfBZNuMjVMRn2iGMo= B @@ -80,6 +83,7 @@ + kLfkJ6zwS7/fgRzTYaPfbg3WHg8= g @@ -135,6 +139,8 @@ + EyperGIiZ7cSv/PB2BApKjPRQVA= + xYK8qpEgWzczUMGnNUx+ozeBle0= h @@ -222,6 +228,7 @@ + 1 B @@ -323,6 +330,7 @@ + 1 j @@ -396,6 +404,7 @@ + 1 j @@ -482,6 +491,7 @@ + 1 B @@ -550,6 +560,7 @@ + 1 g @@ -678,6 +689,7 @@ + 1 B @@ -851,6 +863,7 @@ + 27+9TQyh1Vcx+C3POBLdyXJP8bo= k @@ -911,6 +924,7 @@ + 1 k diff --git a/test-files/golden-tests/symbols/guide/explicit-deduct-guide.xml b/test-files/golden-tests/symbols/guide/explicit-deduct-guide.xml index d314a0d2a3..a344780554 100644 --- a/test-files/golden-tests/symbols/guide/explicit-deduct-guide.xml +++ b/test-files/golden-tests/symbols/guide/explicit-deduct-guide.xml @@ -49,6 +49,10 @@ + AtQyLakD3CjcM24GabAbHMNgVU4= + YS/v8XQ/9ShQ2spNAh5EY33PN7s= + tkYkUU6H8cbFpCU7yBuvBLkT6dg= + 2IF4pOfGcA57GQDlE3PJgs7yeUs= X diff --git a/test-files/golden-tests/symbols/record/class-template-array-spec.xml b/test-files/golden-tests/symbols/record/class-template-array-spec.xml index b4cb8e2219..c7a5ef3dd3 100644 --- a/test-files/golden-tests/symbols/record/class-template-array-spec.xml +++ b/test-files/golden-tests/symbols/record/class-template-array-spec.xml @@ -86,6 +86,7 @@ + BImCLyzY3azoxv/pd8PtoMYhX4k= A @@ -158,5 +159,6 @@ + 1 diff --git a/test-files/golden-tests/symbols/record/class-template-partial-spec.xml b/test-files/golden-tests/symbols/record/class-template-partial-spec.xml index 25414be979..92c331bbc1 100644 --- a/test-files/golden-tests/symbols/record/class-template-partial-spec.xml +++ b/test-files/golden-tests/symbols/record/class-template-partial-spec.xml @@ -80,6 +80,8 @@ + RB9DBMAJDxjxuRQCinQOVPFSNek= + Y/lm1lkT88vf1Ml123mbuN6Fp2Y= B @@ -125,6 +127,7 @@ + 1 B @@ -177,5 +180,6 @@ + 1 diff --git a/test-files/golden-tests/symbols/record/class-template-spec.xml b/test-files/golden-tests/symbols/record/class-template-spec.xml index 538adeb9e5..a86eb98d87 100644 --- a/test-files/golden-tests/symbols/record/class-template-spec.xml +++ b/test-files/golden-tests/symbols/record/class-template-spec.xml @@ -50,6 +50,8 @@ + AKwlChAOi+0ttIAPsD7uitS+gk0= + y/8TvVlacBAIG2ds2aYgZE+zGUU= f @@ -110,6 +112,7 @@ + 1 g @@ -170,6 +173,7 @@ + 1 h @@ -225,6 +229,8 @@ + ZjUaxeOoGJ0Jol9Nmn7cGRE7RCo= + dydGCFMdrM4nOwuv3RCXqg2KCUA= f @@ -292,6 +298,7 @@ + 1 h @@ -359,6 +366,7 @@ + 1 g @@ -419,6 +427,8 @@ + qrcrkE8Br83XKNMh95Dvwpph/M8= + 6zS87fCNnLtFfHbRWEmcdeAT1Zg= f @@ -488,6 +498,7 @@ + 1 g @@ -564,6 +575,7 @@ + 1 h diff --git a/test-files/golden-tests/symbols/record/class-template-specializations-1.xml b/test-files/golden-tests/symbols/record/class-template-specializations-1.xml index 4a12a0927b..1aa58dc093 100644 --- a/test-files/golden-tests/symbols/record/class-template-specializations-1.xml +++ b/test-files/golden-tests/symbols/record/class-template-specializations-1.xml @@ -219,6 +219,17 @@ + JnRKKJOV9sM2/Wi7ytI5OenLTcs= + Lu2i8tgrw9I5p6DXmX9LfM8mVSo= + OsUzyKi8NDCZFI1r1y4+Ki/4H0s= + Xes4IqvFnQoGkxPlP4C4wtbjqxQ= + ZyL4aBHmvCmfq+HyxDSySKwRsdA= + eWg27/kfn86dUmPA26mcOo6kkfs= + g2iVCce1Dp6iPMyevfuMN/UU9F0= + p3PhPnVydwdupHBMAXlcrNQuiFo= + tcws+2wcXL0FEmvv7ZVXvxSkAaI= + zpDyI51RjdguXF8/9KXFrICQwEc= + 8snJ9gp5ca88/AsWGEnFe6Ln6RQ= S3 @@ -318,6 +329,9 @@ + J3UZDljdSJ1mGU9Js0JpA3TjVtc= + cV4O7e/J4xug1ZmsOQKwDVjE99M= + yPCRvP9B34hMThomBKlaCzkFM54= f4 @@ -439,6 +453,25 @@ + IhITMrVguwgsTFnxWSalhrn5lnw= + I29LgIfKHs2KVKydoPZ2XncISyM= + NnzxSBCBz0/s6OkCTTL/yDO06Go= + RFQpd+7V+unGQTgk13maA1YEoyY= + XLAZYk894KbFFFIzJpR6c2Fi870= + dO93MwJZmA5Fpzul37ZMH6F1ong= + fpqbvQR9NuaJY4fq9LHbiAsZKzw= + hpAmCOpzad0YvzIs/nrK1blINCo= + j53XjxydcG+wI0iK3mM8/acK5rY= + lmGGu3RmJh5DZfXs5nd811FPf14= + s40Z8yfzcJnCZSeYYV5sYlFzOxs= + tZqwapq24sWOnWsHAcGXH/3yX3Y= + uE1JLlP4kj18/7anYGDOOUyNK5M= + umZ8gPZZ+qTWuYY3zYO/hx1XCGI= + wpJv75dxyLgHOdHJsb50f1IIDVc= + 1ro4Sv8wGUNxysGIgXgcl9hcP68= + 51FuSsXmA0w505ZBRVkx0q/lmUk= + +J66oroZ92MSPf/1vk3672IXQRM= + +YuAVlOefcnfZIU1wckNM7lfNaA= S6 @@ -518,6 +551,17 @@ + GJK8oH0tb+kOcrLsJD4KLPgW01k= + J7tgsUhd+qpsq/85qkEgF1l14uk= + NkmHmT5oAR5xJObAVl4zdPrTJPk= + VxqDdgdkcw8E86ZiNolpXLlhyWs= + V/H0waQNmYhkbcgX6kBFOODNK64= + pbmVOgtPeZtTL7BQG/AM7NVsNdo= + r7aMtw1PqhcjWuGFP7pwiW2v0ks= + 1YtqF4WYT0uK7amUiCmJVk03Oog= + 3eTbiMMR3GPY7/xRty3EmJ9bdQU= + 3jBuzbuFB0fvpQa1ETvIXevGH2w= + 9PQcUNZCJePNJhT5t0prZNV/lHk= S8 @@ -617,6 +661,9 @@ + CvFJnK9Xu7B2Fbh91NqM0+gKVEU= + hwfbdkFRNunC/3V+s6HA5BwWiSQ= + 8PQtbs9xGpu1L+b0VOqfLlE6TnY= f9 @@ -1315,6 +1362,17 @@ + JnRKKJOV9sM2/Wi7ytI5OenLTcs= + Lu2i8tgrw9I5p6DXmX9LfM8mVSo= + OsUzyKi8NDCZFI1r1y4+Ki/4H0s= + Xes4IqvFnQoGkxPlP4C4wtbjqxQ= + ZyL4aBHmvCmfq+HyxDSySKwRsdA= + eWg27/kfn86dUmPA26mcOo6kkfs= + g2iVCce1Dp6iPMyevfuMN/UU9F0= + p3PhPnVydwdupHBMAXlcrNQuiFo= + tcws+2wcXL0FEmvv7ZVXvxSkAaI= + zpDyI51RjdguXF8/9KXFrICQwEc= + 8snJ9gp5ca88/AsWGEnFe6Ln6RQ= S3 @@ -1414,6 +1472,9 @@ + J3UZDljdSJ1mGU9Js0JpA3TjVtc= + cV4O7e/J4xug1ZmsOQKwDVjE99M= + yPCRvP9B34hMThomBKlaCzkFM54= f4 @@ -1535,6 +1596,25 @@ + IhITMrVguwgsTFnxWSalhrn5lnw= + I29LgIfKHs2KVKydoPZ2XncISyM= + NnzxSBCBz0/s6OkCTTL/yDO06Go= + RFQpd+7V+unGQTgk13maA1YEoyY= + XLAZYk894KbFFFIzJpR6c2Fi870= + dO93MwJZmA5Fpzul37ZMH6F1ong= + fpqbvQR9NuaJY4fq9LHbiAsZKzw= + hpAmCOpzad0YvzIs/nrK1blINCo= + j53XjxydcG+wI0iK3mM8/acK5rY= + lmGGu3RmJh5DZfXs5nd811FPf14= + s40Z8yfzcJnCZSeYYV5sYlFzOxs= + tZqwapq24sWOnWsHAcGXH/3yX3Y= + uE1JLlP4kj18/7anYGDOOUyNK5M= + umZ8gPZZ+qTWuYY3zYO/hx1XCGI= + wpJv75dxyLgHOdHJsb50f1IIDVc= + 1ro4Sv8wGUNxysGIgXgcl9hcP68= + 51FuSsXmA0w505ZBRVkx0q/lmUk= + +J66oroZ92MSPf/1vk3672IXQRM= + +YuAVlOefcnfZIU1wckNM7lfNaA= S6 @@ -1614,6 +1694,17 @@ + GJK8oH0tb+kOcrLsJD4KLPgW01k= + J7tgsUhd+qpsq/85qkEgF1l14uk= + NkmHmT5oAR5xJObAVl4zdPrTJPk= + VxqDdgdkcw8E86ZiNolpXLlhyWs= + V/H0waQNmYhkbcgX6kBFOODNK64= + pbmVOgtPeZtTL7BQG/AM7NVsNdo= + r7aMtw1PqhcjWuGFP7pwiW2v0ks= + 1YtqF4WYT0uK7amUiCmJVk03Oog= + 3eTbiMMR3GPY7/xRty3EmJ9bdQU= + 3jBuzbuFB0fvpQa1ETvIXevGH2w= + 9PQcUNZCJePNJhT5t0prZNV/lHk= S8 @@ -1713,6 +1804,9 @@ + CvFJnK9Xu7B2Fbh91NqM0+gKVEU= + hwfbdkFRNunC/3V+s6HA5BwWiSQ= + 8PQtbs9xGpu1L+b0VOqfLlE6TnY= f9 @@ -2352,6 +2446,17 @@ + JnRKKJOV9sM2/Wi7ytI5OenLTcs= + Lu2i8tgrw9I5p6DXmX9LfM8mVSo= + OsUzyKi8NDCZFI1r1y4+Ki/4H0s= + Xes4IqvFnQoGkxPlP4C4wtbjqxQ= + ZyL4aBHmvCmfq+HyxDSySKwRsdA= + eWg27/kfn86dUmPA26mcOo6kkfs= + g2iVCce1Dp6iPMyevfuMN/UU9F0= + p3PhPnVydwdupHBMAXlcrNQuiFo= + tcws+2wcXL0FEmvv7ZVXvxSkAaI= + zpDyI51RjdguXF8/9KXFrICQwEc= + 8snJ9gp5ca88/AsWGEnFe6Ln6RQ= S3 @@ -2451,6 +2556,9 @@ + J3UZDljdSJ1mGU9Js0JpA3TjVtc= + cV4O7e/J4xug1ZmsOQKwDVjE99M= + yPCRvP9B34hMThomBKlaCzkFM54= f4 @@ -2572,6 +2680,25 @@ + IhITMrVguwgsTFnxWSalhrn5lnw= + I29LgIfKHs2KVKydoPZ2XncISyM= + NnzxSBCBz0/s6OkCTTL/yDO06Go= + RFQpd+7V+unGQTgk13maA1YEoyY= + XLAZYk894KbFFFIzJpR6c2Fi870= + dO93MwJZmA5Fpzul37ZMH6F1ong= + fpqbvQR9NuaJY4fq9LHbiAsZKzw= + hpAmCOpzad0YvzIs/nrK1blINCo= + j53XjxydcG+wI0iK3mM8/acK5rY= + lmGGu3RmJh5DZfXs5nd811FPf14= + s40Z8yfzcJnCZSeYYV5sYlFzOxs= + tZqwapq24sWOnWsHAcGXH/3yX3Y= + uE1JLlP4kj18/7anYGDOOUyNK5M= + umZ8gPZZ+qTWuYY3zYO/hx1XCGI= + wpJv75dxyLgHOdHJsb50f1IIDVc= + 1ro4Sv8wGUNxysGIgXgcl9hcP68= + 51FuSsXmA0w505ZBRVkx0q/lmUk= + +J66oroZ92MSPf/1vk3672IXQRM= + +YuAVlOefcnfZIU1wckNM7lfNaA= S6 @@ -2651,6 +2778,17 @@ + GJK8oH0tb+kOcrLsJD4KLPgW01k= + J7tgsUhd+qpsq/85qkEgF1l14uk= + NkmHmT5oAR5xJObAVl4zdPrTJPk= + VxqDdgdkcw8E86ZiNolpXLlhyWs= + V/H0waQNmYhkbcgX6kBFOODNK64= + pbmVOgtPeZtTL7BQG/AM7NVsNdo= + r7aMtw1PqhcjWuGFP7pwiW2v0ks= + 1YtqF4WYT0uK7amUiCmJVk03Oog= + 3eTbiMMR3GPY7/xRty3EmJ9bdQU= + 3jBuzbuFB0fvpQa1ETvIXevGH2w= + 9PQcUNZCJePNJhT5t0prZNV/lHk= S8 @@ -2750,6 +2888,9 @@ + CvFJnK9Xu7B2Fbh91NqM0+gKVEU= + hwfbdkFRNunC/3V+s6HA5BwWiSQ= + 8PQtbs9xGpu1L+b0VOqfLlE6TnY= f9 @@ -2980,6 +3121,17 @@ + JnRKKJOV9sM2/Wi7ytI5OenLTcs= + Lu2i8tgrw9I5p6DXmX9LfM8mVSo= + OsUzyKi8NDCZFI1r1y4+Ki/4H0s= + Xes4IqvFnQoGkxPlP4C4wtbjqxQ= + ZyL4aBHmvCmfq+HyxDSySKwRsdA= + eWg27/kfn86dUmPA26mcOo6kkfs= + g2iVCce1Dp6iPMyevfuMN/UU9F0= + p3PhPnVydwdupHBMAXlcrNQuiFo= + tcws+2wcXL0FEmvv7ZVXvxSkAaI= + zpDyI51RjdguXF8/9KXFrICQwEc= + 8snJ9gp5ca88/AsWGEnFe6Ln6RQ= S3 @@ -3079,6 +3231,9 @@ + J3UZDljdSJ1mGU9Js0JpA3TjVtc= + cV4O7e/J4xug1ZmsOQKwDVjE99M= + yPCRvP9B34hMThomBKlaCzkFM54= f4 @@ -3200,6 +3355,25 @@ + IhITMrVguwgsTFnxWSalhrn5lnw= + I29LgIfKHs2KVKydoPZ2XncISyM= + NnzxSBCBz0/s6OkCTTL/yDO06Go= + RFQpd+7V+unGQTgk13maA1YEoyY= + XLAZYk894KbFFFIzJpR6c2Fi870= + dO93MwJZmA5Fpzul37ZMH6F1ong= + fpqbvQR9NuaJY4fq9LHbiAsZKzw= + hpAmCOpzad0YvzIs/nrK1blINCo= + j53XjxydcG+wI0iK3mM8/acK5rY= + lmGGu3RmJh5DZfXs5nd811FPf14= + s40Z8yfzcJnCZSeYYV5sYlFzOxs= + tZqwapq24sWOnWsHAcGXH/3yX3Y= + uE1JLlP4kj18/7anYGDOOUyNK5M= + umZ8gPZZ+qTWuYY3zYO/hx1XCGI= + wpJv75dxyLgHOdHJsb50f1IIDVc= + 1ro4Sv8wGUNxysGIgXgcl9hcP68= + 51FuSsXmA0w505ZBRVkx0q/lmUk= + +J66oroZ92MSPf/1vk3672IXQRM= + +YuAVlOefcnfZIU1wckNM7lfNaA= S6 @@ -3279,6 +3453,17 @@ + GJK8oH0tb+kOcrLsJD4KLPgW01k= + J7tgsUhd+qpsq/85qkEgF1l14uk= + NkmHmT5oAR5xJObAVl4zdPrTJPk= + VxqDdgdkcw8E86ZiNolpXLlhyWs= + V/H0waQNmYhkbcgX6kBFOODNK64= + pbmVOgtPeZtTL7BQG/AM7NVsNdo= + r7aMtw1PqhcjWuGFP7pwiW2v0ks= + 1YtqF4WYT0uK7amUiCmJVk03Oog= + 3eTbiMMR3GPY7/xRty3EmJ9bdQU= + 3jBuzbuFB0fvpQa1ETvIXevGH2w= + 9PQcUNZCJePNJhT5t0prZNV/lHk= S8 @@ -3378,6 +3563,9 @@ + CvFJnK9Xu7B2Fbh91NqM0+gKVEU= + hwfbdkFRNunC/3V+s6HA5BwWiSQ= + 8PQtbs9xGpu1L+b0VOqfLlE6TnY= f9 @@ -4996,6 +5184,47 @@ + ANhUz0/2S6fRsXsZFhXPTPyPfAE= + AhWlDEmWhkTeQuWWCaZwMGCG5HQ= + A9DWlv0rbuFs3A9eHqZTaJDN7Uk= + ByHV/GlyHOt9h6ZVKpsDi/DkBkM= + FREf1tucqdONQ71W3hB/Sf/Fbw4= + IG7byGfx+stnhACpeGR2toLyv7U= + IKgocAXkFMvNmDD+p5dZpSBSRHI= + IbslzK4eUJj1gUsgbS4h/0Axavg= + IxCiCl8tf7r2/CmQWZiWxFHf7+g= + MUilGFE5YvyMgRjHIcQZ38yyl2c= + MYFk6ANWkex8j7vBuMpAqchgYIY= + MyTy/GXkOXKOTiJVqHAVVvaU4es= + PA+4gdvi0ChhszyGuOL6zlYXHpk= + Rh5ZoB5qF98iwmDPqUPnsyKkTcs= + UUBd87/k0jse5896L03eJ4N0l+c= + UpHebkkBv0Q2s1ECAoKTf79hJ0Q= + Up/SfnuYTQw+Y6klSO3f5z86DOY= + WK6dfZ+3VdrJbp4Egq7SCGyoAF8= + Wu710hbNOx84LbfjQUEgqKkZ2dA= + a69mw641E3cHVf6ovpLtJxTpmps= + c7NNZfjOZ8Ztuw0u26xL/h7UKvA= + eiJusMAs3cvoF4DWqUBlAfXzYcA= + flxREiXFL5ObY0xUAxojj+jvR54= + hwWIBHTi29w+6bJar0PyQvwnZWw= + kn1OyT1FzAvXXJMp4nKleaEX+5c= + nJGs54s6oYf7fHzIpo0tyaCSH9M= + niyoFejCRrpY1Aa9GHwGMnaDfsQ= + nkoZM9sg9xpibNb1eDSyhqn/Ato= + nuqq8wSa/4T9E2xaPl/SzBPbekM= + oXfsqUlMzPbEZZJ7K+iZYQj3wko= + oj8XjM2vuWbeoc2sBpfsIoleCao= + o06yQpJHyCkZyFI44/nN8/tpgT8= + pxo3Lx5X+FdLdaGOmXmAiuNVQME= + tuaR3CreZXFWLNOiRe6vUMcdi/0= + uoCdOuqB1v1s6rvl4wDWcLrD4LA= + vt6SAnqggizkWUqtSC5b9rVm+Qw= + xONzwxGiMBJrTYA5eosi4pOC0n0= + x7MfNbWaSdnUCRBlHt+nSvOlEPw= + zYIKjNzi/kYNKvtrTXu8BhQTFt8= + 1gjCMmREpyWTXEFMqDWbHTY9s+Q= + 7v/tytUkZe7COeYW1bbrzC9LRio= S1 @@ -5075,6 +5304,17 @@ + JnRKKJOV9sM2/Wi7ytI5OenLTcs= + Lu2i8tgrw9I5p6DXmX9LfM8mVSo= + OsUzyKi8NDCZFI1r1y4+Ki/4H0s= + Xes4IqvFnQoGkxPlP4C4wtbjqxQ= + ZyL4aBHmvCmfq+HyxDSySKwRsdA= + eWg27/kfn86dUmPA26mcOo6kkfs= + g2iVCce1Dp6iPMyevfuMN/UU9F0= + p3PhPnVydwdupHBMAXlcrNQuiFo= + tcws+2wcXL0FEmvv7ZVXvxSkAaI= + zpDyI51RjdguXF8/9KXFrICQwEc= + 8snJ9gp5ca88/AsWGEnFe6Ln6RQ= S3 @@ -5174,6 +5414,9 @@ + J3UZDljdSJ1mGU9Js0JpA3TjVtc= + cV4O7e/J4xug1ZmsOQKwDVjE99M= + yPCRvP9B34hMThomBKlaCzkFM54= f4 @@ -5295,6 +5538,25 @@ + IhITMrVguwgsTFnxWSalhrn5lnw= + I29LgIfKHs2KVKydoPZ2XncISyM= + NnzxSBCBz0/s6OkCTTL/yDO06Go= + RFQpd+7V+unGQTgk13maA1YEoyY= + XLAZYk894KbFFFIzJpR6c2Fi870= + dO93MwJZmA5Fpzul37ZMH6F1ong= + fpqbvQR9NuaJY4fq9LHbiAsZKzw= + hpAmCOpzad0YvzIs/nrK1blINCo= + j53XjxydcG+wI0iK3mM8/acK5rY= + lmGGu3RmJh5DZfXs5nd811FPf14= + s40Z8yfzcJnCZSeYYV5sYlFzOxs= + tZqwapq24sWOnWsHAcGXH/3yX3Y= + uE1JLlP4kj18/7anYGDOOUyNK5M= + umZ8gPZZ+qTWuYY3zYO/hx1XCGI= + wpJv75dxyLgHOdHJsb50f1IIDVc= + 1ro4Sv8wGUNxysGIgXgcl9hcP68= + 51FuSsXmA0w505ZBRVkx0q/lmUk= + +J66oroZ92MSPf/1vk3672IXQRM= + +YuAVlOefcnfZIU1wckNM7lfNaA= S6 @@ -5374,6 +5636,17 @@ + GJK8oH0tb+kOcrLsJD4KLPgW01k= + J7tgsUhd+qpsq/85qkEgF1l14uk= + NkmHmT5oAR5xJObAVl4zdPrTJPk= + VxqDdgdkcw8E86ZiNolpXLlhyWs= + V/H0waQNmYhkbcgX6kBFOODNK64= + pbmVOgtPeZtTL7BQG/AM7NVsNdo= + r7aMtw1PqhcjWuGFP7pwiW2v0ks= + 1YtqF4WYT0uK7amUiCmJVk03Oog= + 3eTbiMMR3GPY7/xRty3EmJ9bdQU= + 3jBuzbuFB0fvpQa1ETvIXevGH2w= + 9PQcUNZCJePNJhT5t0prZNV/lHk= S8 @@ -5473,6 +5746,9 @@ + CvFJnK9Xu7B2Fbh91NqM0+gKVEU= + hwfbdkFRNunC/3V+s6HA5BwWiSQ= + 8PQtbs9xGpu1L+b0VOqfLlE6TnY= f9 @@ -5620,6 +5896,7 @@ + 1 S0 @@ -5654,6 +5931,7 @@ + 1 S1 @@ -5766,6 +6044,7 @@ + 1 S3 @@ -6000,6 +6279,7 @@ + 1 S1 @@ -6112,6 +6392,7 @@ + 1 S3 @@ -6218,6 +6499,7 @@ + 1 f2 @@ -6371,6 +6653,7 @@ + 1 S1 @@ -6485,6 +6768,7 @@ + 1 S3 @@ -6603,6 +6887,7 @@ + 1 S4 @@ -6650,6 +6935,7 @@ + 1 f2 @@ -6804,6 +7090,7 @@ + 1 S1 @@ -6943,6 +7230,7 @@ + 1 S1 @@ -7049,6 +7337,7 @@ + 1 f0 @@ -7106,6 +7395,7 @@ + 1 S1 @@ -7247,6 +7537,7 @@ + 1 S1 @@ -7365,6 +7656,7 @@ + 1 S5 @@ -7412,6 +7704,7 @@ + 1 f0 @@ -7470,6 +7763,7 @@ + 1 S1 @@ -7577,6 +7871,7 @@ + 1 S6 @@ -7689,6 +7984,7 @@ + 1 S1 @@ -7796,6 +8092,7 @@ + 1 S6 @@ -7984,6 +8281,7 @@ + 1 S1 @@ -8091,6 +8389,7 @@ + 1 S6 @@ -8214,6 +8513,7 @@ + 1 S7 @@ -8261,6 +8561,7 @@ + 1 f6 @@ -8364,6 +8665,7 @@ + 1 S1 @@ -8579,6 +8881,7 @@ + 1 S1 @@ -8686,6 +8989,7 @@ + 1 S6 @@ -8795,6 +9099,7 @@ + 1 f6 @@ -8899,6 +9204,7 @@ + 1 S1 @@ -9006,6 +9312,7 @@ + 1 S6 @@ -9117,6 +9424,7 @@ + 1 S8 @@ -9325,6 +9633,7 @@ + 1 S1 @@ -9432,6 +9741,7 @@ + 1 S6 @@ -9544,6 +9854,7 @@ + 1 S8 @@ -9752,6 +10063,7 @@ + 1 S1 @@ -9859,6 +10171,7 @@ + 1 S6 @@ -9973,6 +10286,7 @@ + 1 S8 @@ -10091,6 +10405,7 @@ + 1 S9 @@ -10138,6 +10453,7 @@ + 1 f7 @@ -10264,6 +10580,7 @@ + 1 S1 @@ -10373,6 +10690,7 @@ + 1 f1 @@ -10504,6 +10822,7 @@ + 1 S1 @@ -10611,6 +10930,7 @@ + 1 S6 @@ -10723,6 +11043,7 @@ + 1 S8 @@ -10829,6 +11150,7 @@ + 1 f7 @@ -10955,6 +11277,7 @@ + 1 S1 @@ -11078,6 +11401,7 @@ + 1 S2 @@ -11125,6 +11449,7 @@ + 1 f1 @@ -11255,6 +11580,7 @@ + 1 S1 @@ -11366,6 +11692,7 @@ + 1 S3 @@ -11609,6 +11936,7 @@ + 1 S0 @@ -11652,6 +11980,7 @@ + 1 S1 @@ -11772,6 +12101,7 @@ + 1 S3 @@ -12009,6 +12339,7 @@ + 1 S1 @@ -12130,6 +12461,7 @@ + 1 S3 @@ -12367,6 +12699,7 @@ + 1 S1 @@ -12488,6 +12821,7 @@ + 1 S3 @@ -12725,6 +13059,7 @@ + 1 S1 @@ -12867,6 +13202,7 @@ + 1 S1 @@ -13008,6 +13344,7 @@ + 1 S1 @@ -13225,6 +13562,7 @@ + 1 S1 @@ -13367,6 +13705,7 @@ + 1 S1 @@ -13483,6 +13822,7 @@ + 1 S6 @@ -13673,6 +14013,7 @@ + 1 S1 @@ -13789,6 +14130,7 @@ + 1 S6 @@ -13979,6 +14321,7 @@ + 1 S1 @@ -14095,6 +14438,7 @@ + 1 S6 @@ -14285,6 +14629,7 @@ + 1 S1 @@ -14502,6 +14847,7 @@ + 1 S1 @@ -14618,6 +14964,7 @@ + 1 S6 @@ -14809,6 +15156,7 @@ + 1 S1 @@ -14925,6 +15273,7 @@ + 1 S6 @@ -15045,6 +15394,7 @@ + 1 S8 @@ -15280,6 +15630,7 @@ + 1 S1 @@ -15396,6 +15747,7 @@ + 1 S6 @@ -15516,6 +15868,7 @@ + 1 S8 @@ -15727,6 +16080,7 @@ + 1 S1 @@ -15843,6 +16197,7 @@ + 1 S6 @@ -15964,6 +16319,7 @@ + 1 S8 @@ -16174,6 +16530,7 @@ + 1 S1 @@ -16392,6 +16749,7 @@ + 1 S1 @@ -16508,6 +16866,7 @@ + 1 S6 @@ -16629,6 +16988,7 @@ + 1 S8 @@ -16839,6 +17199,7 @@ + 1 S1 @@ -17056,6 +17417,7 @@ + 1 S1 @@ -17176,6 +17538,7 @@ + 1 S3 @@ -17441,5 +17804,6 @@ + 1 diff --git a/test-files/golden-tests/symbols/record/class-template-specializations-2.xml b/test-files/golden-tests/symbols/record/class-template-specializations-2.xml index 2fac92c30d..8da9533449 100644 --- a/test-files/golden-tests/symbols/record/class-template-specializations-2.xml +++ b/test-files/golden-tests/symbols/record/class-template-specializations-2.xml @@ -44,6 +44,9 @@ + K6BawvzqAtXZLU2Hm0qPq6aGiS8= + Nkvb8FA0/0YIpaybicEkWLwFOPo= + bcCFiKKGBMnWrAf/IBu1R/sC07s= A @@ -83,6 +86,7 @@ + 1 D @@ -116,6 +120,8 @@ + RdjbfZA0y514GFSR1pCAjUyfq24= + flW1A8++hJYAIoinZHMJ/EargvI= E @@ -147,6 +153,8 @@ + HzSR9lAhcaSZke6x6ggUIqnawQw= + TpBRSCUm33PjLoWxW50FZsR1GSM= E @@ -191,6 +199,7 @@ + 1 F @@ -253,6 +262,7 @@ + 1 G @@ -284,6 +294,7 @@ + zPgrcrIOrcVWP7Qpw8x3Zl2fIpI= G @@ -327,6 +338,7 @@ + 1 D @@ -365,6 +377,7 @@ + 1 E @@ -435,6 +448,7 @@ + 1 F @@ -506,6 +520,7 @@ + 1 B @@ -573,6 +588,7 @@ + 1 B @@ -612,6 +628,7 @@ + 1 C @@ -688,6 +705,7 @@ + 1 B @@ -719,6 +737,10 @@ + HP4W/UatJ6BMg+LZKC5cQM4kCzw= + WeO5ITJRmNS4Q90O2A5hmw/KZc8= + vuv6bo9spUYsHZ3uwTm6i6UxSNI= + 3isZeaf80hT1/O3yko6EPBPmq8s= B @@ -755,6 +777,7 @@ + 1 B @@ -799,6 +822,7 @@ + 1 C diff --git a/test-files/golden-tests/symbols/record/class-template-specializations-3.xml b/test-files/golden-tests/symbols/record/class-template-specializations-3.xml index 47ad39dfb3..3408eb2ef1 100644 --- a/test-files/golden-tests/symbols/record/class-template-specializations-3.xml +++ b/test-files/golden-tests/symbols/record/class-template-specializations-3.xml @@ -48,6 +48,10 @@ + C6fFmGgpPJ7jgwKJA98mfx5cxts= + GFV3P/JtfrnQwjOLVfI9VbJpd9U= + eeh34/7lF7rCmE7zXKBrUC7mz3A= + y/8TvVlacBAIG2ds2aYgZE+zGUU= B @@ -82,6 +86,12 @@ + AmrHzqMyGcAD714oirSEx/XCTwk= + Ax52oDYNHKdb/kayrTPXtP7EnLo= + Pna+OT/o27zekcoRTFxKtb5m+BQ= + X9RyjucPb3aRFUq3aZCNE4g/ZVE= + fSC2izK+T4vA4Kndw3xNjCTDpoQ= + gNJJgsCrBHI+de6/WxRWfc6QUSQ= C @@ -137,6 +147,8 @@ + E3rBDckOC8QkP+2YLNtbMxg69mc= + 8gtdVs8Zc/2hE1ugmc5SJaowDrk= D @@ -173,6 +185,7 @@ + 1 B @@ -212,6 +225,7 @@ + 1 C @@ -267,6 +281,11 @@ + FQCRWOnd4VbpVowmyiWSRR2l2cA= + P+rxL5vI4ct+gzn9YkO97Pt7Ras= + rzmzIDLemEwnRqvVCiQsLO9rHE4= + 2n2EC+ZzX4R61vVgqMqWD1h4Fqc= + 9bJvdwRZpk2+HRV+Az3lOybs1Wc= D @@ -303,6 +322,7 @@ + 1 A @@ -341,6 +361,7 @@ + 1 B @@ -411,6 +432,7 @@ + 1 C @@ -502,6 +524,7 @@ + 1 A @@ -541,6 +564,7 @@ + 1 B @@ -581,6 +605,8 @@ + jvnZWmA3eB78JX83nJawhD8NGhw= + 3fOXhba/en8Im2gUSThzllitRc0= C @@ -636,6 +662,8 @@ + NNxnP63PrqW2AkyLFpJx0uaNuTk= + vu+upAyFdAr9NpomAT9maDrr5VU= D @@ -672,6 +700,7 @@ + 1 B @@ -711,6 +740,7 @@ + 1 C @@ -802,6 +832,7 @@ + 1 B @@ -841,6 +872,7 @@ + 1 C @@ -932,6 +964,7 @@ + 1 A @@ -971,6 +1004,7 @@ + 1 B @@ -1041,6 +1075,7 @@ + 1 C @@ -1132,6 +1167,7 @@ + 1 B @@ -1171,6 +1207,7 @@ + 1 C @@ -1226,6 +1263,7 @@ + eYdoT3vlHlbkG+t3+ckhZAqrnlY= D @@ -1262,6 +1300,7 @@ + 1 A @@ -1301,6 +1340,7 @@ + 1 B @@ -1371,6 +1411,7 @@ + 1 C @@ -1462,6 +1503,7 @@ + 1 B @@ -1501,6 +1543,7 @@ + 1 C @@ -1592,6 +1635,7 @@ + 1 E diff --git a/test-files/golden-tests/symbols/record/specializations-and-guides.adoc b/test-files/golden-tests/symbols/record/specializations-and-guides.adoc new file mode 100644 index 0000000000..649584ca28 --- /dev/null +++ b/test-files/golden-tests/symbols/record/specializations-and-guides.adoc @@ -0,0 +1,124 @@ += Reference +:mrdocs: + +[#index] +== Global namespace + +=== Types + +[cols="1,4"] +|=== +| Name| Description +| link:#A-0e[`A`] +| Primary class template. +| link:#B-00[`B`] +| Class template with a deduction guide. +|=== + + +[#A-0e] +== A + +Primary class template. + +=== Synopsis + +Declared in `<specializations‐and‐guides.cpp>` + +[source,cpp,subs="verbatim,replacements,macros,-callouts"] +---- +template<typename T> +struct A; +---- + +=== Member Functions + +[cols="1,4"] +|=== +| Name| Description +| link:#A-0e-f[`f`] +| A member function. +|=== + + +=== Specializations + +[cols="1,4"] +|=== +| Name| Description +| link:#A-00[`A<int>`] +| Explicit specialization of the primary. +|=== + + +[#A-0e-f] +== link:#A-0e[A]::f + +A member function. + +=== Synopsis + +Declared in `<specializations‐and‐guides.cpp>` + +[source,cpp,subs="verbatim,replacements,macros,-callouts"] +---- +void +f(); +---- + +[#A-00] +== link:#A-0e[A]<int> + +Explicit specialization of the primary. + +=== Synopsis + +Declared in `<specializations‐and‐guides.cpp>` + +[source,cpp,subs="verbatim,replacements,macros,-callouts"] +---- +template<> +struct link:#A-0e[A]<int>; +---- + +[#B-00] +== B + +Class template with a deduction guide. + +=== Synopsis + +Declared in `<specializations‐and‐guides.cpp>` + +[source,cpp,subs="verbatim,replacements,macros,-callouts"] +---- +template<int> +struct B; +---- + +=== Deduction Guides + +[cols="1,4"] +|=== +| Name| Description +| link:#B-0c[`B<0>`] +| Deduction guide for B. +|=== + + +[#B-0c] +== link:#B-00[B<0>] + +Deduction guide for B. + +=== Synopsis + +Declared in `<specializations‐and‐guides.cpp>` + +[source,cpp,subs="verbatim,replacements,macros,-callouts"] +---- +link:#B-00[B<0>](bool) -> link:#B-00[B<0>]; +---- + + +[.small]#Created with https://www.mrdocs.com[MrDocs]# diff --git a/test-files/golden-tests/symbols/record/specializations-and-guides.cpp b/test-files/golden-tests/symbols/record/specializations-and-guides.cpp new file mode 100644 index 0000000000..771190d429 --- /dev/null +++ b/test-files/golden-tests/symbols/record/specializations-and-guides.cpp @@ -0,0 +1,22 @@ +/// Primary class template. +template +struct A +{ + /// A member function. + void f(); +}; + +/// Explicit specialization of the primary. +template <> +struct A +{ +}; + +/// Class template with a deduction guide. +template +struct B +{ +}; + +/// Deduction guide for B. +B(bool) -> B<0>; diff --git a/test-files/golden-tests/symbols/record/specializations-and-guides.yml b/test-files/golden-tests/symbols/record/specializations-and-guides.yml new file mode 100644 index 0000000000..17ffc7a6f1 --- /dev/null +++ b/test-files/golden-tests/symbols/record/specializations-and-guides.yml @@ -0,0 +1 @@ +generator: adoc diff --git a/test-files/golden-tests/symbols/record/template-specialization-inheritance.xml b/test-files/golden-tests/symbols/record/template-specialization-inheritance.xml index b30ebd31a6..6d182e9c90 100644 --- a/test-files/golden-tests/symbols/record/template-specialization-inheritance.xml +++ b/test-files/golden-tests/symbols/record/template-specialization-inheritance.xml @@ -276,6 +276,10 @@ + c7NNZfjOZ8Ztuw0u26xL/h7UKvA= + flxREiXFL5ObY0xUAxojj+jvR54= + nJGs54s6oYf7fHzIpo0tyaCSH9M= + 6Syw3aWFS3pfPUbWU7C8uCE7Jjc= S1 @@ -332,6 +336,7 @@ + 1 S1 @@ -389,6 +394,7 @@ + 1 S0 @@ -421,6 +427,7 @@ + 1 S1 @@ -476,5 +483,6 @@ + 1 diff --git a/test-files/golden-tests/symbols/typedef/decay-to-primary.xml b/test-files/golden-tests/symbols/typedef/decay-to-primary.xml index ecf53d917c..e0f01cdf73 100644 --- a/test-files/golden-tests/symbols/typedef/decay-to-primary.xml +++ b/test-files/golden-tests/symbols/typedef/decay-to-primary.xml @@ -103,6 +103,8 @@ + BWgkCsMw6w/Tkzj0tkQJ8/AWTUo= + nM49pHyBLj9V6pphxxYAxi4tXXc= M0 @@ -193,6 +195,7 @@ + 1 M0 @@ -283,6 +286,7 @@ + 1 M0 diff --git a/test-files/golden-tests/symbols/typedef/implicit-instantiation-member-ref.xml b/test-files/golden-tests/symbols/typedef/implicit-instantiation-member-ref.xml index 748be35ed8..c8f12ae996 100644 --- a/test-files/golden-tests/symbols/typedef/implicit-instantiation-member-ref.xml +++ b/test-files/golden-tests/symbols/typedef/implicit-instantiation-member-ref.xml @@ -111,6 +111,7 @@ + BWgkCsMw6w/Tkzj0tkQJ8/AWTUo= S2 @@ -144,6 +145,7 @@ + LQDMND21bNwDyy/hE3qQoQzFLXY= M2 @@ -234,6 +236,7 @@ + 1 S2 @@ -303,6 +306,7 @@ + 1 M2 diff --git a/test-files/golden-tests/symbols/using/using-alias-template-dependent.xml b/test-files/golden-tests/symbols/using/using-alias-template-dependent.xml index f66d9f2772..f0cab02f92 100644 --- a/test-files/golden-tests/symbols/using/using-alias-template-dependent.xml +++ b/test-files/golden-tests/symbols/using/using-alias-template-dependent.xml @@ -130,6 +130,7 @@ + 6f4GHawhlUckr08SJkt7su9cIDY= type @@ -197,6 +198,7 @@ + 1 is_match diff --git a/test-files/golden-tests/templates/c_mct_expl_inline.xml b/test-files/golden-tests/templates/c_mct_expl_inline.xml index 2a92b6692d..68f3fb8e8f 100644 --- a/test-files/golden-tests/templates/c_mct_expl_inline.xml +++ b/test-files/golden-tests/templates/c_mct_expl_inline.xml @@ -68,6 +68,7 @@ + FxMFFVpoV2/LOOndnkQ2gu3w69U= f @@ -128,6 +129,7 @@ + 1 g diff --git a/test-files/golden-tests/templates/c_mct_expl_outside.xml b/test-files/golden-tests/templates/c_mct_expl_outside.xml index 69e21fb2f9..282bd8ef18 100644 --- a/test-files/golden-tests/templates/c_mct_expl_outside.xml +++ b/test-files/golden-tests/templates/c_mct_expl_outside.xml @@ -68,6 +68,7 @@ + FxMFFVpoV2/LOOndnkQ2gu3w69U= f @@ -128,6 +129,7 @@ + 1 g diff --git a/test-files/golden-tests/templates/c_mft_expl_inline.xml b/test-files/golden-tests/templates/c_mft_expl_inline.xml index 76b185d1e1..60f988e209 100644 --- a/test-files/golden-tests/templates/c_mft_expl_inline.xml +++ b/test-files/golden-tests/templates/c_mft_expl_inline.xml @@ -89,6 +89,7 @@ normal 1 + veV2posfyuimiNezTTVnomiz6tY= f @@ -124,5 +125,6 @@ normal 1 + 1 diff --git a/test-files/golden-tests/templates/c_mft_expl_outside.xml b/test-files/golden-tests/templates/c_mft_expl_outside.xml index 4181a47e63..c0496706ac 100644 --- a/test-files/golden-tests/templates/c_mft_expl_outside.xml +++ b/test-files/golden-tests/templates/c_mft_expl_outside.xml @@ -89,6 +89,7 @@ normal 1 + veV2posfyuimiNezTTVnomiz6tY= f @@ -124,5 +125,6 @@ normal 1 + 1 diff --git a/test-files/golden-tests/templates/ct_expl.xml b/test-files/golden-tests/templates/ct_expl.xml index e7b8a06820..7a8174c22f 100644 --- a/test-files/golden-tests/templates/ct_expl.xml +++ b/test-files/golden-tests/templates/ct_expl.xml @@ -43,6 +43,7 @@ + AKwlChAOi+0ttIAPsD7uitS+gk0= f @@ -103,6 +104,7 @@ + 1 g diff --git a/test-files/golden-tests/templates/ct_mc_expl_outside.xml b/test-files/golden-tests/templates/ct_mc_expl_outside.xml index f4a71e9b82..674c8824dd 100644 --- a/test-files/golden-tests/templates/ct_mc_expl_outside.xml +++ b/test-files/golden-tests/templates/ct_mc_expl_outside.xml @@ -43,6 +43,7 @@ + AKwlChAOi+0ttIAPsD7uitS+gk0= B @@ -128,6 +129,7 @@ + 1 B diff --git a/test-files/golden-tests/templates/ct_mct_expl_inline.xml b/test-files/golden-tests/templates/ct_mct_expl_inline.xml index 6580f28709..b1ba26341c 100644 --- a/test-files/golden-tests/templates/ct_mct_expl_inline.xml +++ b/test-files/golden-tests/templates/ct_mct_expl_inline.xml @@ -75,6 +75,7 @@ + bHsbts/3qH4qdnqFkFXkR6e8OCw= f @@ -135,6 +136,7 @@ + 1 g diff --git a/test-files/golden-tests/templates/ct_mct_expl_outside.xml b/test-files/golden-tests/templates/ct_mct_expl_outside.xml index 86c9fbb084..afef786c29 100644 --- a/test-files/golden-tests/templates/ct_mct_expl_outside.xml +++ b/test-files/golden-tests/templates/ct_mct_expl_outside.xml @@ -43,6 +43,7 @@ + AKwlChAOi+0ttIAPsD7uitS+gk0= B @@ -75,6 +76,7 @@ + IMS2etMN5nj/r7pRC8mVNme6K+o= f @@ -136,6 +138,7 @@ + 1 B @@ -204,6 +207,7 @@ + 1 g diff --git a/test-files/golden-tests/templates/ct_mf_expl_outside.xml b/test-files/golden-tests/templates/ct_mf_expl_outside.xml index b6803bf651..472de47b3a 100644 --- a/test-files/golden-tests/templates/ct_mf_expl_outside.xml +++ b/test-files/golden-tests/templates/ct_mf_expl_outside.xml @@ -43,6 +43,7 @@ + AKwlChAOi+0ttIAPsD7uitS+gk0= f @@ -103,6 +104,7 @@ + 1 f diff --git a/test-files/golden-tests/templates/ct_mft_expl_inline.xml b/test-files/golden-tests/templates/ct_mft_expl_inline.xml index cfbc7a499b..0927eb233d 100644 --- a/test-files/golden-tests/templates/ct_mft_expl_inline.xml +++ b/test-files/golden-tests/templates/ct_mft_expl_inline.xml @@ -96,6 +96,7 @@ normal 1 + TneA5Ayz4v/9oOUbbnRL1ybm8VM= f @@ -131,5 +132,6 @@ normal 1 + 1 diff --git a/test-files/golden-tests/templates/ct_mft_expl_outside.xml b/test-files/golden-tests/templates/ct_mft_expl_outside.xml index 4bf78c294d..c38c982b30 100644 --- a/test-files/golden-tests/templates/ct_mft_expl_outside.xml +++ b/test-files/golden-tests/templates/ct_mft_expl_outside.xml @@ -43,6 +43,7 @@ + AKwlChAOi+0ttIAPsD7uitS+gk0= f @@ -73,6 +74,7 @@ normal 1 + fjcm9F09lrCrLSgw6Swqw9KOBlM= A @@ -110,6 +112,7 @@ + 1 f @@ -205,5 +208,6 @@ normal 1 + 1 diff --git a/test-files/golden-tests/templates/ft_expl.xml b/test-files/golden-tests/templates/ft_expl.xml index 925f1b0e72..8bff955b3e 100644 --- a/test-files/golden-tests/templates/ft_expl.xml +++ b/test-files/golden-tests/templates/ft_expl.xml @@ -63,6 +63,7 @@ normal + ytuvwgqk+lakIfCF209MYkKEp4k= f @@ -97,5 +98,6 @@ PmhXjCXUJYVnj/a7NhfjjSesyp0= normal + 1