From 1eb9cb80b7a1f736bc0bbd61111a27b81e4da589 Mon Sep 17 00:00:00 2001 From: Gennaro Prota Date: Thu, 16 Apr 2026 11:24:34 +0200 Subject: [PATCH 01/21] feat: auto-generate a JSON Schema for DOM output (--schemas option) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add a --schemas[=] option that writes a JSON Schema file (mrdocs-dom-schema.json) describing every object and field available to Handlebars templates. The schema is derived from the same compile-time reflection metadata used by MapReflectedType.hpp, so it stays in sync with the code automatically. The option requires no config file or source files — it writes the schema and exits immediately. --- include/mrdocs/Schemas/DomSchemaWriter.hpp | 501 ++++++++++++++++++ include/mrdocs/Schemas/JsonEmitter.hpp | 134 +++++ include/mrdocs/Support/MergeReflectedType.hpp | 7 +- src/lib/Gen/xml/XMLWriter.cpp | 11 +- src/test/Schemas/DomSchemaWriter.cpp | 326 ++++++++++++ src/tool/ToolArgs.cpp | 2 + src/tool/ToolArgs.hpp | 13 + src/tool/ToolMain.cpp | 29 + 8 files changed, 1013 insertions(+), 10 deletions(-) create mode 100644 include/mrdocs/Schemas/DomSchemaWriter.hpp create mode 100644 include/mrdocs/Schemas/JsonEmitter.hpp create mode 100644 src/test/Schemas/DomSchemaWriter.cpp diff --git a/include/mrdocs/Schemas/DomSchemaWriter.hpp b/include/mrdocs/Schemas/DomSchemaWriter.hpp new file mode 100644 index 0000000000..1e6cadf2ba --- /dev/null +++ b/include/mrdocs/Schemas/DomSchemaWriter.hpp @@ -0,0 +1,501 @@ +// +// 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_API_SCHEMAS_DOMSCHEMAWRITER_HPP +#define MRDOCS_API_SCHEMAS_DOMSCHEMAWRITER_HPP + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace mrdocs::schema { + +//------------------------------------------------ +// Type -> JSON Schema dispatch +//------------------------------------------------ + +/** Return a JSON Schema `$ref` for a described struct type. +*/ +template +dom::Object refSchema() +{ + dom::Object schema; + std::string ref = "#/$defs/"; + ref += readableTypeName(); + schema.set("$ref", ref); + return schema; +} + +/** Return the JSON Schema for a single member type. + + Mirrors the type dispatch in MapReflectedType.hpp's `mapMember()`. +*/ +template +dom::Object +memberSchema() +{ + using Type = std::decay_t; + dom::Object schema; + + if constexpr (std::is_same_v) + { + schema.set("type", "boolean"); + } + else if constexpr (std::is_same_v || + std::is_same_v) + { + schema.set("type", "string"); + } + else if constexpr (std::is_integral_v) + { + schema.set("type", "integer"); + } + else if constexpr (std::is_same_v) + { + schema.set("type", "string"); + schema.set("description", "Base64-encoded symbol ID"); + } + else if constexpr (std::is_base_of_v) + { + // ExprInfo maps to its Written string in the DOM. + schema.set("type", "string"); + schema.set("description", "C++ expression as written"); + } + else if constexpr (describe::has_describe_enumerators::value) + { + schema.set("type", "string"); + dom::Array values; + describe::for_each( + describe::describe_enumerators{}, + [&](auto const& D) { + values.push_back(toKebabCase(D.name)); + }); + schema.set("enum", std::move(values)); + } + // OperatorKind is the sole non-described enum that + // serializes as integer (via static_cast to underlying type). + else if constexpr (std::is_same_v) + { + schema.set("type", "integer"); + } + // Non-described enums with manual switch-based toString() + // (described enums already handled above). + else if constexpr (std::is_enum_v) + { + schema.set("type", "string"); + } + // Non-described structs with custom ValueFrom that + // serialize as strings (e.g. NoexceptInfo, ExplicitInfo). + else if constexpr (dom::HasValueFromWithoutContext) + { + schema.set("type", "string"); + } + else if constexpr (mrdocs::detail::is_optional_v) + { + // Unwrap optionals — the member is simply not in "required". + schema = memberSchema(); + } + else if constexpr (mrdocs::detail::is_vector_v) + { + schema.set("type", "array"); + schema.set("items", memberSchema()); + } + else if constexpr (mrdocs::detail::is_polymorphic_v) + { + // Polymorphic types use a $ref to their oneOf definition. + schema = refSchema(); + } + else if constexpr (describe::has_describe_members::value) + { + // Described compound types reference $defs. + schema = refSchema(); + } + else + { + // Fallback: any JSON value. + schema.set("description", "unknown type"); + } + + return schema; +} + +//------------------------------------------------ +// Helper: is the member always present? +// +// Mirrors shouldMapValue() in MapReflectedType.hpp: +// Optional, empty string, certain "None" enums, +// and empty ExprInfo are skipped at runtime, so +// those fields are NOT required in the schema. +//------------------------------------------------ + +template +inline constexpr bool is_always_present_v = + !mrdocs::detail::is_optional_v && + !std::is_same_v && + !std::is_same_v && + !std::is_same_v && + !std::is_same_v && + !std::is_base_of_v; + +//------------------------------------------------ +// Struct -> JSON Schema object +//------------------------------------------------ + +/** Add properties from base classes. +*/ +template +void +addBaseProperties(dom::Object& properties, dom::Array& required) +{ + if constexpr (describe::has_describe_bases::value) + { + describe::for_each( + describe::describe_bases{}, + [&](auto const& descriptor) + { + using BaseType = typename std::decay_t::type; + addBaseProperties(properties, required); + + // Add the base's own members. + if constexpr (describe::has_describe_members::value) + { + describe::for_each( + describe::describe_members{}, + [&](auto const& D) { + using M = std::decay_t().*D.pointer)>; + std::string domName = + mrdocs::detail::normalizeMemberName(D.name); + properties.set(domName, memberSchema()); + + if constexpr (is_always_present_v) + { + required.push_back(domName); + } + }); + } + }); + } +} + +/** Build a JSON Schema "object" for a described type T. + + Includes properties from all base classes (recursively) + plus T's own members. +*/ +template +dom::Object +objectSchema() +{ + dom::Object schema; + schema.set("type", "object"); + + dom::Object properties; + dom::Array required; + + addBaseProperties(properties, required); + + // Add T's own members. + if constexpr (describe::has_describe_members::value) + { + describe::for_each( + describe::describe_members{}, + [&](auto const& D) + { + using M = std::decay_t().*D.pointer)>; + std::string domName = + mrdocs::detail::normalizeMemberName(D.name); + properties.set(domName, memberSchema()); + + if constexpr (is_always_present_v) + { + required.push_back(domName); + } + }); + } + + // Custom tag_invoke extensions for Symbol (see SymbolBase.hpp). + // These fields are added by the Symbol tag_invoke overload + // beyond what reflection provides. + if constexpr (std::is_base_of_v) + { + dom::Object classSchema; + classSchema.set("type", "string"); + classSchema.set("const", "symbol"); + properties.set("class", std::move(classSchema)); + + dom::Object boolSchema; + boolSchema.set("type", "boolean"); + properties.set("isRegular", boolSchema); + properties.set("isSeeBelow", boolSchema); + properties.set("isImplementationDefined", boolSchema); + properties.set("isDependency", boolSchema); + + required.push_back("class"); + required.push_back("isRegular"); + required.push_back("isSeeBelow"); + required.push_back("isImplementationDefined"); + required.push_back("isDependency"); + } + + // $meta object (added by addMetaObject in MapReflectedType.hpp). + { + dom::Object metaSchema; + metaSchema.set("type", "object"); + dom::Object metaProps; + dom::Object typeStr; + typeStr.set("type", "string"); + metaProps.set("type", std::move(typeStr)); + dom::Object basesArr; + basesArr.set("type", "array"); + dom::Object strItems; + strItems.set("type", "string"); + basesArr.set("items", std::move(strItems)); + metaProps.set("bases", std::move(basesArr)); + metaSchema.set("properties", std::move(metaProps)); + properties.set("$meta", std::move(metaSchema)); + } + + if (!properties.empty()) + { + schema.set("properties", std::move(properties)); + } + if (!required.empty()) + { + schema.set("required", std::move(required)); + } + + return schema; +} + +//------------------------------------------------ +// Polymorphic oneOf schemas +//------------------------------------------------ + +/** Return a JSON Schema `oneOf` union for a polymorphic base type. + + A full specialization is provided for each polymorphic family + (`Type`, `Name`, `TParam`, `TArg`, `doc::Block`, `doc::Inline`); + it enumerates the concrete subclasses via the family's `.inc` + list and emits a `$ref` per subclass. + + @tparam Base The polymorphic base class. + @return A schema object whose `oneOf` array references every + concrete subclass of `Base`. +*/ +template +dom::Object polymorphicSchema(); + +/** Specialization for the `Type` family (NamedType, PointerType, ...). + + @return `{ "oneOf": [ $ref for each TypeKind ] }`. +*/ +template <> +inline dom::Object +polymorphicSchema() +{ + dom::Array oneOf; + #define INFO(X) oneOf.push_back(refSchema()); + #include + dom::Object schema; + schema.set("oneOf", std::move(oneOf)); + return schema; +} + +/** Specialization for the `Name` family (IdentifierName, SpecializationName). + + @return `{ "oneOf": [ $ref for each NameKind ] }`. +*/ +template <> +inline dom::Object +polymorphicSchema() +{ + dom::Array oneOf; + #define INFO(X) oneOf.push_back(refSchema()); + #include + dom::Object schema; + schema.set("oneOf", std::move(oneOf)); + return schema; +} + +/** Specialization for the `TParam` family (TypeTParam, ConstantTParam, + TemplateTParam). + + @return `{ "oneOf": [ $ref for each TParamKind ] }`. +*/ +template <> +inline dom::Object +polymorphicSchema() +{ + dom::Array oneOf; + #define INFO(X) oneOf.push_back(refSchema()); + #include + dom::Object schema; + schema.set("oneOf", std::move(oneOf)); + return schema; +} + +/** Specialization for the `TArg` family (TypeTArg, ConstantTArg, + TemplateTArg). + + @return `{ "oneOf": [ $ref for each TArgKind ] }`. +*/ +template <> +inline dom::Object +polymorphicSchema() +{ + dom::Array oneOf; + #define INFO(X) oneOf.push_back(refSchema()); + #include + dom::Object schema; + schema.set("oneOf", std::move(oneOf)); + return schema; +} + +/** Specialization for the `doc::Block` family (paragraphs, lists, + headings, and command blocks like brief/param/returns). + + @return `{ "oneOf": [ $ref for each BlockKind ] }`. +*/ +template <> +inline dom::Object +polymorphicSchema() +{ + dom::Array oneOf; + #define INFO(X) oneOf.push_back(refSchema()); + #include + dom::Object schema; + schema.set("oneOf", std::move(oneOf)); + return schema; +} + +/** Specialization for the `doc::Inline` family (text, emphasis, code, + references, etc.). + + @return `{ "oneOf": [ $ref for each InlineKind ] }`. +*/ +template <> +inline dom::Object +polymorphicSchema() +{ + dom::Array oneOf; + #define INFO(X) oneOf.push_back(refSchema()); + #include + dom::Object schema; + schema.set("oneOf", std::move(oneOf)); + return schema; +} + +//------------------------------------------------ +// Register all type definitions +//------------------------------------------------ + +/** Register a single described type in $defs. +*/ +template +void +registerDef(dom::Object& defs) +{ + constexpr std::string_view name = readableTypeName(); + defs.set(std::string(name), objectSchema()); +} + +/** Register all described types in $defs. +*/ +inline void +registerAllDefs(dom::Object& defs) +{ + // Symbol types + #define INFO(X) registerDef(defs); + #include + + // Type variants + #define INFO(X) registerDef(defs); + #include + + // Name variants + #define INFO(X) registerDef(defs); + #include + + // TParam variants + #define INFO(X) registerDef(defs); + #include + + // TArg variants + #define INFO(X) registerDef(defs); + #include + + // Doc block variants + #define INFO(X) registerDef(defs); + #include + + // Doc inline variants + #define INFO(X) registerDef(defs); + #include + + // Polymorphic union types + defs.set("Type", polymorphicSchema()); + defs.set("Name", polymorphicSchema()); + defs.set("TParam", polymorphicSchema()); + defs.set("TArg", polymorphicSchema()); + defs.set("Block", polymorphicSchema()); + defs.set("Inline", polymorphicSchema()); + + // Supporting types + registerDef(defs); + registerDef(defs); + registerDef(defs); + registerDef(defs); + registerDef(defs); + registerDef(defs); +} + +//------------------------------------------------ +// Top-level schema +//------------------------------------------------ + +/** Build the complete DOM JSON Schema document. +*/ +inline dom::Value +buildDomSchema() +{ + dom::Object schema; + schema.set("$schema", "https://json-schema.org/draft/2020-12/schema"); + schema.set("title", "MrDocs DOM Schema"); + schema.set("description", + "Schema for the DOM objects available to Handlebars " + "templates in the MrDocs documentation generator."); + + // Symbol is the entry point — a oneOf over all symbol kinds. + dom::Array symbolOneOf; + #define INFO(X) symbolOneOf.push_back(refSchema()); + #include + schema.set("oneOf", std::move(symbolOneOf)); + + dom::Object defs; + registerAllDefs(defs); + schema.set("$defs", std::move(defs)); + + return schema; +} + +} // mrdocs::schema + +#endif // MRDOCS_API_SCHEMAS_DOMSCHEMAWRITER_HPP diff --git a/include/mrdocs/Schemas/JsonEmitter.hpp b/include/mrdocs/Schemas/JsonEmitter.hpp new file mode 100644 index 0000000000..8d0dffba1c --- /dev/null +++ b/include/mrdocs/Schemas/JsonEmitter.hpp @@ -0,0 +1,134 @@ +// +// 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_API_SCHEMAS_JSONEMITTER_HPP +#define MRDOCS_API_SCHEMAS_JSONEMITTER_HPP + +#include +#include +#include +#include + +namespace mrdocs::schema { + +/** Serialize a dom::Value tree to formatted JSON. + + Handles null, boolean, integer, string, array, and object. +*/ +inline +std::string +toJson(dom::Value const& v, int indent = 0) +{ + std::string result; + auto const pad = [&](int level) -> std::string { + return std::string(level * 2, ' '); + }; + + switch (v.kind()) + { + case dom::Kind::Undefined: + case dom::Kind::Null: + result = "null"; + break; + + case dom::Kind::Boolean: + result = v.getBool() ? "true" : "false"; + break; + + case dom::Kind::Integer: + result = std::to_string(v.getInteger()); + break; + + case dom::Kind::String: + case dom::Kind::SafeString: + { + // Escape special characters. + result = "\""; + for (char c : v.getString().get()) + { + switch (c) + { + case '"': result += "\\\""; break; + case '\\': result += "\\\\"; break; + case '\n': result += "\\n"; break; + case '\r': result += "\\r"; break; + case '\t': result += "\\t"; break; + default: result += c; break; + } + } + result += '"'; + break; + } + + case dom::Kind::Array: + { + auto const& arr = v.getArray(); + if (arr.empty()) + { + result = "[]"; + break; + } + result = "[\n"; + for (std::size_t i = 0; i < arr.size(); ++i) + { + result += pad(indent + 1); + result += toJson(arr.at(i), indent + 1); + if (i + 1 < arr.size()) + { + result += ','; + } + result += '\n'; + } + result += pad(indent); + result += ']'; + break; + } + + case dom::Kind::Object: + { + auto const& obj = v.getObject(); + if (obj.empty()) + { + result = "{}"; + break; + } + result = "{\n"; + bool first = true; + obj.visit([&](dom::String key, dom::Value const& val) -> bool + { + if (!first) + { + result += ",\n"; + } + first = false; + result += pad(indent + 1); + result += '"'; + result += std::string_view(key); + result += "\": "; + result += toJson(val, indent + 1); + return true; + }); + result += '\n'; + result += pad(indent); + result += '}'; + break; + } + + default: + result = "null"; + break; + } + + return result; +} + +} // mrdocs::schema + +#endif // MRDOCS_API_SCHEMAS_JSONEMITTER_HPP diff --git a/include/mrdocs/Support/MergeReflectedType.hpp b/include/mrdocs/Support/MergeReflectedType.hpp index 0a6b43a7fa..810294db9b 100644 --- a/include/mrdocs/Support/MergeReflectedType.hpp +++ b/include/mrdocs/Support/MergeReflectedType.hpp @@ -49,10 +49,13 @@ isDefaultEnum(E value) // from Support/TypeTraits.hpp, which asks the related question // "is `T` some Polymorphic<...>?" without naming the inner type. template -inline constexpr bool is_polymorphic_for_v = false; +struct is_polymorphic_for : std::false_type {}; template -inline constexpr bool is_polymorphic_for_v, U> = true; +struct is_polymorphic_for, U> : std::true_type {}; + +template +inline constexpr bool is_polymorphic_for_v = is_polymorphic_for::value; // Type trait: can we call merge(T&, T&&) via ADL? template diff --git a/src/lib/Gen/xml/XMLWriter.cpp b/src/lib/Gen/xml/XMLWriter.cpp index 30c382856f..f13609a784 100644 --- a/src/lib/Gen/xml/XMLWriter.cpp +++ b/src/lib/Gen/xml/XMLWriter.cpp @@ -32,14 +32,9 @@ namespace mrdocs::xml { namespace { -template struct is_optional : std::false_type {}; -template struct is_optional> : std::true_type {}; - -template struct is_vector : std::false_type {}; -template struct is_vector> : std::true_type {}; - -template struct is_polymorphic : std::false_type {}; -template struct is_polymorphic> : std::true_type {}; +using mrdocs::detail::is_optional; +using mrdocs::detail::is_vector; +using mrdocs::detail::is_polymorphic; std::string removeSuffix(std::string_view s, std::string_view suffix) diff --git a/src/test/Schemas/DomSchemaWriter.cpp b/src/test/Schemas/DomSchemaWriter.cpp new file mode 100644 index 0000000000..5ce3eaef2c --- /dev/null +++ b/src/test/Schemas/DomSchemaWriter.cpp @@ -0,0 +1,326 @@ +// +// 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 +#include +#include + +namespace mrdocs { +namespace { + +// Helpers to navigate the schema dom::Value tree. + +dom::Object +defs(dom::Value const& schema) +{ + return schema.getObject().get("$defs").getObject(); +} + +dom::Object +props(dom::Object const& obj, std::string_view defName) +{ + return obj.get(defName).getObject() + .get("properties").getObject(); +} + +dom::Array +oneOfArray(dom::Object const& obj, std::string_view defName) +{ + return obj.get(defName).getObject() + .get("oneOf").getArray(); +} + +dom::Array +requiredArray(dom::Object const& obj, std::string_view defName) +{ + return obj.get(defName).getObject() + .get("required").getArray(); +} + +bool +arrayContains(dom::Array const& arr, std::string_view value) +{ + for (std::size_t i = 0; i < arr.size(); ++i) + { + if (arr.at(i).getString() == value) + return true; + } + return false; +} + +// ------------------------------------------------------------------ + +struct DomSchemaWriterTest +{ + // -- Top-level structure -------------------------------------- + + void test_top_level() + { + dom::Value schema = schema::buildDomSchema(); + dom::Object root = schema.getObject(); + + BOOST_TEST(root.exists("$schema")); + BOOST_TEST(root.exists("title")); + BOOST_TEST(root.exists("$defs")); + BOOST_TEST(root.exists("oneOf")); + + // The top-level oneOf lists all 12 symbol kinds. + BOOST_TEST(root.get("oneOf").getArray().size() == 12); + } + + // -- Symbol coverage ------------------------------------------ + + void test_all_symbols_in_defs() + { + dom::Value schema = schema::buildDomSchema(); + dom::Object d = defs(schema); + + BOOST_TEST(d.exists("NamespaceSymbol")); + BOOST_TEST(d.exists("RecordSymbol")); + BOOST_TEST(d.exists("FunctionSymbol")); + BOOST_TEST(d.exists("OverloadsSymbol")); + BOOST_TEST(d.exists("EnumSymbol")); + BOOST_TEST(d.exists("EnumConstantSymbol")); + BOOST_TEST(d.exists("TypedefSymbol")); + BOOST_TEST(d.exists("VariableSymbol")); + BOOST_TEST(d.exists("GuideSymbol")); + BOOST_TEST(d.exists("NamespaceAliasSymbol")); + BOOST_TEST(d.exists("UsingSymbol")); + BOOST_TEST(d.exists("ConceptSymbol")); + } + + // -- Polymorphic oneOf ---------------------------------------- + + void test_polymorphic_variants() + { + dom::Value schema = schema::buildDomSchema(); + dom::Object d = defs(schema); + + BOOST_TEST(oneOfArray(d, "Type").size() == 9); + BOOST_TEST(oneOfArray(d, "Name").size() == 2); + BOOST_TEST(oneOfArray(d, "TParam").size() == 3); + BOOST_TEST(oneOfArray(d, "TArg").size() == 3); + BOOST_TEST(oneOfArray(d, "Block").size() == 19); + BOOST_TEST(oneOfArray(d, "Inline").size() == 16); + } + + // -- FunctionSymbol properties -------------------------------- + + void test_function_symbol_properties() + { + dom::Value schema = schema::buildDomSchema(); + dom::Object d = defs(schema); + dom::Object fp = props(d, "FunctionSymbol"); + + // Inherited from Symbol + BOOST_TEST(fp.exists("name")); + BOOST_TEST(fp.exists("kind")); + BOOST_TEST(fp.exists("id")); + BOOST_TEST(fp.exists("access")); + + // Own members + BOOST_TEST(fp.exists("returnType")); + BOOST_TEST(fp.exists("params")); + BOOST_TEST(fp.exists("isVariadic")); + BOOST_TEST(fp.exists("isVirtual")); + BOOST_TEST(fp.exists("isConst")); + BOOST_TEST(fp.exists("funcClass")); + BOOST_TEST(fp.exists("noexcept")); + BOOST_TEST(fp.exists("explicit")); + BOOST_TEST(fp.exists("template")); + + // params is an array + BOOST_TEST(fp.get("params").getObject() + .get("type").getString() == "array"); + + // isVariadic is boolean + BOOST_TEST(fp.get("isVariadic").getObject() + .get("type").getString() == "boolean"); + + // returnType is a $ref + BOOST_TEST(fp.get("returnType").getObject() + .exists("$ref")); + } + + // -- Described enum values ------------------------------------ + + void test_described_enum_values() + { + dom::Value schema = schema::buildDomSchema(); + dom::Object d = defs(schema); + dom::Object fp = props(d, "FunctionSymbol"); + + // ExtractionMode is a described enum (inherited from Symbol). + dom::Object extraction = fp.get("extraction").getObject(); + BOOST_TEST(extraction.get("type").getString() == "string"); + dom::Array values = extraction.get("enum").getArray(); + BOOST_TEST(arrayContains(values, "regular")); + BOOST_TEST(arrayContains(values, "see-below")); + BOOST_TEST(arrayContains(values, "implementation-defined")); + BOOST_TEST(arrayContains(values, "dependency")); + + // FunctionClass is a described enum (own member). + dom::Object funcClass = fp.get("funcClass").getObject(); + BOOST_TEST(funcClass.get("type").getString() == "string"); + dom::Array fcValues = funcClass.get("enum").getArray(); + BOOST_TEST(arrayContains(fcValues, "normal")); + BOOST_TEST(arrayContains(fcValues, "constructor")); + BOOST_TEST(arrayContains(fcValues, "destructor")); + } + + // -- Non-described enums -> string ---------------------------- + + void test_non_described_enums() + { + dom::Value schema = schema::buildDomSchema(); + dom::Object d = defs(schema); + dom::Object fp = props(d, "FunctionSymbol"); + + // AccessKind serializes as string via manual toString(). + BOOST_TEST(fp.get("access").getObject() + .get("type").getString() == "string"); + + // ConstexprKind + BOOST_TEST(fp.get("constexpr").getObject() + .get("type").getString() == "string"); + + // NoexceptInfo + BOOST_TEST(fp.get("noexcept").getObject() + .get("type").getString() == "string"); + + // ExplicitInfo + BOOST_TEST(fp.get("explicit").getObject() + .get("type").getString() == "string"); + + // OperatorKind serializes as integer. + BOOST_TEST(fp.get("overloadedOperator").getObject() + .get("type").getString() == "integer"); + } + + // -- Symbol extension fields ---------------------------------- + + void test_symbol_extensions() + { + dom::Value schema = schema::buildDomSchema(); + dom::Object d = defs(schema); + dom::Object fp = props(d, "FunctionSymbol"); + + // Custom fields from Symbol's tag_invoke overload. + BOOST_TEST(fp.exists("class")); + BOOST_TEST(fp.get("class").getObject() + .get("const").getString() == "symbol"); + + BOOST_TEST(fp.exists("isRegular")); + BOOST_TEST(fp.get("isRegular").getObject() + .get("type").getString() == "boolean"); + + BOOST_TEST(fp.exists("isSeeBelow")); + BOOST_TEST(fp.exists("isImplementationDefined")); + BOOST_TEST(fp.exists("isDependency")); + + // They should all be required. + dom::Array req = requiredArray(d, "FunctionSymbol"); + BOOST_TEST(arrayContains(req, "class")); + BOOST_TEST(arrayContains(req, "isRegular")); + BOOST_TEST(arrayContains(req, "isDependency")); + } + + // -- $meta object --------------------------------------------- + + void test_meta_object() + { + dom::Value schema = schema::buildDomSchema(); + dom::Object d = defs(schema); + dom::Object fp = props(d, "FunctionSymbol"); + + BOOST_TEST(fp.exists("$meta")); + dom::Object meta = fp.get("$meta").getObject(); + BOOST_TEST(meta.get("type").getString() == "object"); + + dom::Object metaProps = meta.get("properties").getObject(); + BOOST_TEST(metaProps.exists("type")); + BOOST_TEST(metaProps.exists("bases")); + + // bases is an array of strings. + dom::Object bases = metaProps.get("bases").getObject(); + BOOST_TEST(bases.get("type").getString() == "array"); + BOOST_TEST(bases.get("items").getObject() + .get("type").getString() == "string"); + } + + // -- Required vs optional ------------------------------------- + + void test_required_fields() + { + dom::Value schema = schema::buildDomSchema(); + dom::Object d = defs(schema); + dom::Array req = requiredArray(d, "FunctionSymbol"); + + // Booleans are always present (shouldMapValue returns true). + BOOST_TEST(arrayContains(req, "isVariadic")); + BOOST_TEST(arrayContains(req, "isVirtual")); + BOOST_TEST(arrayContains(req, "isConst")); + + // Strings can be empty → not required. + BOOST_TEST(!arrayContains(req, "name")); + + // ConstexprKind/StorageClassKind can be None → not required. + BOOST_TEST(!arrayContains(req, "constexpr")); + BOOST_TEST(!arrayContains(req, "storageClass")); + + // ExprInfo can be empty → not required. + BOOST_TEST(!arrayContains(req, "requires")); + } + + // -- Supporting types ----------------------------------------- + + void test_supporting_types() + { + dom::Value schema = schema::buildDomSchema(); + dom::Object d = defs(schema); + + BOOST_TEST(d.exists("Location")); + BOOST_TEST(d.exists("Param")); + BOOST_TEST(d.exists("TemplateInfo")); + BOOST_TEST(d.exists("SourceInfo")); + BOOST_TEST(d.exists("BaseInfo")); + BOOST_TEST(d.exists("FriendInfo")); + + // Location has expected fields. + dom::Object lp = props(d, "Location"); + BOOST_TEST(lp.exists("shortPath")); + BOOST_TEST(lp.exists("lineNumber")); + BOOST_TEST(lp.exists("documented")); + } + + // -- run ------------------------------------------------------ + + void run() + { + test_top_level(); + test_all_symbols_in_defs(); + test_polymorphic_variants(); + test_function_symbol_properties(); + test_described_enum_values(); + test_non_described_enums(); + test_symbol_extensions(); + test_meta_object(); + test_required_fields(); + test_supporting_types(); + } +}; + +} // (anon) + +TEST_SUITE( + DomSchemaWriterTest, + "clang.mrdocs.Schemas.DomSchemaWriter"); + +} // mrdocs diff --git a/src/tool/ToolArgs.cpp b/src/tool/ToolArgs.cpp index 229ea87f01..36afa760b8 100644 --- a/src/tool/ToolArgs.cpp +++ b/src/tool/ToolArgs.cpp @@ -45,6 +45,8 @@ hideForeignOptions() { oursOptions.push_back(std::addressof(opt)); }); + // Options defined in ToolArgs (not generated PublicToolArgs). + oursOptions.push_back(&schemas); auto optionMap = llvm::cl::getRegisteredOptions(); for(auto& opt : optionMap) { diff --git a/src/tool/ToolArgs.hpp b/src/tool/ToolArgs.hpp index 89656140bc..88ba24a69d 100644 --- a/src/tool/ToolArgs.hpp +++ b/src/tool/ToolArgs.hpp @@ -31,6 +31,19 @@ class ToolArgs : public PublicToolArgs char const* usageText; llvm::cl::extrahelp extraHelp; + /** Output directory for JSON Schema files. + + When set, the tool writes schema files describing + the DOM and XML output formats, then exits without + extracting any source files. + */ + llvm::cl::opt schemas{ + "schemas", + llvm::cl::desc("Write JSON Schema files to (default: .) and exit"), + llvm::cl::value_desc("dir"), + llvm::cl::ValueOptional, + llvm::cl::cat(outputCat)}; + // Hide all options that don't belong to us void hideForeignOptions(); diff --git a/src/tool/ToolMain.cpp b/src/tool/ToolMain.cpp index 13f9eac8e5..9889d0a9d5 100644 --- a/src/tool/ToolMain.cpp +++ b/src/tool/ToolMain.cpp @@ -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 // @@ -13,6 +14,8 @@ #include #include #include +#include +#include #include #include #include @@ -21,6 +24,7 @@ #include #include #include +#include #include #include @@ -140,6 +144,31 @@ mrdocs_main(int argc, char const** argv) } + // --schemas writes JSON Schema files and exits immediately, + // without needing a config file or source files. + if (toolArgs.schemas.getNumOccurrences() > 0) + { + std::string dir = toolArgs.schemas.getValue(); + if (dir.empty()) + { + dir = "."; + } + files::createDirectory(dir); + std::string path = files::appendPath(dir, "mrdocs-dom-schema.json"); + std::ofstream os(path, + std::ios_base::binary | + std::ios_base::out | + std::ios_base::trunc); + if (!os.is_open()) + { + llvm::errs() << "error: cannot open \"" + << path << "\" for writing\n"; + return EXIT_FAILURE; + } + os << schema::toJson(schema::buildDomSchema()); + return EXIT_SUCCESS; + } + // Before `DoGenerateAction`, we use an error reporting level. // DoGenerateAction will set the level to whatever is specified in // the command line or the configuration file From 80955ecb0976d9bff210b85083784dcf12ef4912 Mon Sep 17 00:00:00 2001 From: Gennaro Prota Date: Thu, 16 Apr 2026 12:10:22 +0200 Subject: [PATCH 02/21] fix: serialize OperatorKind as a string in the DOM OperatorKind was the only enum serialized as a raw integer. All other enums serialize as human-readable strings. Change tag_invoke to use getOperatorName, consistent with the rest. --- .../Metadata/Specifiers/OperatorKind.hpp | 24 +++++++++---------- include/mrdocs/Schemas/DomSchemaWriter.hpp | 8 +------ src/test/Schemas/DomSchemaWriter.cpp | 4 ++-- 3 files changed, 15 insertions(+), 21 deletions(-) diff --git a/include/mrdocs/Metadata/Specifiers/OperatorKind.hpp b/include/mrdocs/Metadata/Specifiers/OperatorKind.hpp index 669c6f1386..ea4be01bf7 100644 --- a/include/mrdocs/Metadata/Specifiers/OperatorKind.hpp +++ b/include/mrdocs/Metadata/Specifiers/OperatorKind.hpp @@ -120,18 +120,6 @@ enum class OperatorKind Coawait, }; -/** Map an operator kind to a DOM value (its underlying integer). -*/ -inline -void -tag_invoke( - dom::ValueFromTag, - dom::Value& v, - OperatorKind kind) -{ - v = static_cast>(kind); -} - /** Determines whether the operator is potentially unary. */ MRDOCS_DECL @@ -156,6 +144,18 @@ getOperatorName( OperatorKind kind, bool include_keyword = false) noexcept; +/** Map an operator kind to a DOM value. +*/ +inline +void +tag_invoke( + dom::ValueFromTag, + dom::Value& v, + OperatorKind kind) +{ + v = getOperatorName(kind); +} + /** Return the short name of an operator as a string. */ MRDOCS_DECL diff --git a/include/mrdocs/Schemas/DomSchemaWriter.hpp b/include/mrdocs/Schemas/DomSchemaWriter.hpp index 1e6cadf2ba..05bb7a094b 100644 --- a/include/mrdocs/Schemas/DomSchemaWriter.hpp +++ b/include/mrdocs/Schemas/DomSchemaWriter.hpp @@ -88,13 +88,7 @@ memberSchema() }); schema.set("enum", std::move(values)); } - // OperatorKind is the sole non-described enum that - // serializes as integer (via static_cast to underlying type). - else if constexpr (std::is_same_v) - { - schema.set("type", "integer"); - } - // Non-described enums with manual switch-based toString() + // Non-described enums with manual toString() or getOperatorName() // (described enums already handled above). else if constexpr (std::is_enum_v) { diff --git a/src/test/Schemas/DomSchemaWriter.cpp b/src/test/Schemas/DomSchemaWriter.cpp index 5ce3eaef2c..e7b8660cbc 100644 --- a/src/test/Schemas/DomSchemaWriter.cpp +++ b/src/test/Schemas/DomSchemaWriter.cpp @@ -199,9 +199,9 @@ struct DomSchemaWriterTest BOOST_TEST(fp.get("explicit").getObject() .get("type").getString() == "string"); - // OperatorKind serializes as integer. + // OperatorKind BOOST_TEST(fp.get("overloadedOperator").getObject() - .get("type").getString() == "integer"); + .get("type").getString() == "string"); } // -- Symbol extension fields ---------------------------------- From f41c5b55f5c6e1532625a32afd1284ac0a1cc9c1 Mon Sep 17 00:00:00 2001 From: Gennaro Prota Date: Thu, 16 Apr 2026 16:45:32 +0200 Subject: [PATCH 03/21] refactor: describe AccessKind, ConstexprKind, ParamDirection, StorageClassKind Replace manual toString and tag_invoke overloads with MRDOCS_DESCRIBE_ENUM for four enums whose kebab-case names match the existing string representations. The XML writer now emits these fields (e.g. public, constexpr) where they were previously silently skipped. None/none sentinel values are suppressed via a generic has_none_enumerator check. TypeKind stays manual because toKebabCase("LValueReference") produces "l-value-reference", not the established "lvalue-reference". --- .../DocComment/Block/ParamDirection.hpp | 19 +----- .../mrdocs/Metadata/Specifiers/AccessKind.hpp | 22 +------ .../Metadata/Specifiers/ConstexprKind.hpp | 20 +----- .../Metadata/Specifiers/StorageClassKind.hpp | 20 +----- include/mrdocs/Metadata/Type/TypeKind.hpp | 2 +- include/mrdocs/Support/MapReflectedType.hpp | 10 +++ src/lib/Gen/xml/XMLWriter.cpp | 28 ++++++++ src/lib/Metadata/DocComment.cpp | 18 ------ src/lib/Metadata/Specifiers.cpp | 39 ----------- src/lib/Support/Debug.hpp | 2 +- .../brief-from-function-class.xml | 13 ++++ .../brief-from-operator.xml | 5 ++ .../param-from-function-class.xml | 12 ++++ .../param-from-operator.xml | 1 + .../returns-from-brief.xml | 3 + .../returns-from-special.xml | 15 +++++ .../no-auto-function-objects.xml | 2 + .../config/auto-relates/derived.xml | 3 + .../config/auto-relates/remove-friend.xml | 1 + .../config/base-url/out-of-tree-base.xml | 3 + .../extract-implicit-specializations/base.xml | 3 + .../extract-implicit-specializations.xml | 3 + .../no-extract-implicit-specializations.xml | 3 + .../extract-private-virtual.xml | 2 + .../no-extract-private-virtual.xml | 1 + .../base-overload-set.xml | 9 +++ .../copy-dependencies.xml | 44 +++++++++++++ .../config/inherit-base-members/copy.xml | 44 +++++++++++++ .../impl-defined-base.xml | 4 ++ .../config/inherit-base-members/never.xml | 21 ++++++ .../config/inherit-base-members/reference.xml | 38 +++++++++++ .../inherit-base-members/see-below-base.xml | 3 + .../inherit-base-members/skip-special.xml | 54 ++++++++++++++++ .../inherit-base-members/template-base.xml | 8 +++ .../config/legible-names/constructor.xml | 6 ++ .../config/overloads/const-mutable.xml | 3 + .../config/overloads/visibility.xml | 16 +++++ .../sort-members-by-location.xml | 11 ++++ .../sort-members-by/sort-members-by-name.xml | 11 ++++ .../symbol-name/excluded-base-class.xml | 10 +++ .../filters/symbol-name/extraction-mode.xml | 4 ++ .../filters/symbol-name/whitelist_0.xml | 3 + .../golden-tests/javadoc/brief/brief-3.xml | 4 +- .../javadoc/copydoc/conversion.xml | 5 ++ .../javadoc/copydoc/decay-params.xml | 6 +- .../javadoc/copydoc/fundamental.xml | 4 +- .../golden-tests/javadoc/copydoc/no-param.xml | 8 ++- .../javadoc/copydoc/operator-param.xml | 5 ++ .../javadoc/copydoc/param-types.xml | 10 +-- .../javadoc/copydoc/qualified.xml | 16 +++++ .../javadoc/copydoc/qualifiers.xml | 13 ++++ .../function-object/function-object.xml | 5 ++ .../golden-tests/javadoc/inline/styled.xml | 1 + .../golden-tests/javadoc/param/param-1.xml | 3 + .../javadoc/param/param-direction.xml | 14 ++++ .../javadoc/ref/parent_context.xml | 6 +- test-files/golden-tests/javadoc/ref/ref.xml | 46 +++++++++++++ .../golden-tests/javadoc/returns/returns.xml | 2 + .../snippets/options/overloads/overloads.adoc | 8 +-- .../symbols/concept/requires-clause.xml | 4 +- .../friend-and-member-operator-rshift.xml | 2 + .../function/explicit-conv-operator.xml | 4 ++ .../symbols/function/explicit-ctor.xml | 20 ++++++ .../function/explicit-object-parameter.xml | 5 ++ .../function/function-template-template.xml | 1 + .../golden-tests/symbols/function/mem-fn.xml | 33 ++++++++++ .../symbols/function/overloaded-op-1.xml | 1 + .../symbols/function/overloaded-op-2.xml | 1 + .../symbols/overloads/overloads-brief.xml | 24 +++++-- .../symbols/overloads/overloads-metadata.xml | 4 +- .../symbols/overloads/overloads-ostream.xml | 5 ++ .../symbols/overloads/overloads.xml | 15 ++++- .../symbols/record/class-private-alias.xml | 1 + .../symbols/record/class-template.xml | 17 +++++ .../symbols/record/conditional-explicit.xml | 9 +++ .../symbols/record/dtor-overloads.xml | 3 + .../symbols/record/final-class.xml | 2 + .../record/forward-declared-member.xml | 1 + .../symbols/record/friend-duplicate.xml | 1 + .../symbols/record/friend-fn-has-docs.xml | 1 + .../symbols/record/friend-fn-member.xml | 3 + .../symbols/record/friend-fn-multi-2nd.xml | 1 + .../symbols/record/friend-fn-multi-free.xml | 1 + .../symbols/record/friend-fn-multi.xml | 1 + .../golden-tests/symbols/record/friend-fn.xml | 1 + .../symbols/record/local-class.xml | 2 + .../golden-tests/symbols/record/record-1.xml | 8 +++ .../symbols/record/record-access.xml | 9 +++ .../symbols/record/record-data.xml | 16 +++++ .../symbols/record/record-inheritance.xml | 15 +++++ .../golden-tests/symbols/record/union.xml | 5 ++ .../golden-tests/symbols/record/unnamed.xml | 4 ++ .../symbols/typedef/alias-template.xml | 1 + .../typedef/dependency-propagation.xml | 1 + .../symbols/using/using-function-after.xml | 4 +- .../using/using-function-local-overloads.xml | 8 +-- .../using/using-function-overloads.xml | 8 +-- .../symbols/using/using-member-conversion.xml | 5 ++ .../symbols/using/using-member-function.xml | 33 ++++++++++ .../symbols/using/using-typename.xml | 1 + .../symbols/variable/function-objects.xml | 64 ++++++++++++++++++- .../symbols/variable/member-pointer.xml | 2 + .../symbols/variable/ns-variables.xml | 5 ++ .../variable/static-data-def-constexpr.xml | 4 ++ .../symbols/variable/static-data-def.xml | 20 ++++++ .../symbols/variable/static-data-template.xml | 6 ++ .../symbols/variable/var-template.xml | 6 ++ .../templates/ct_expl_dependency.xml | 1 + test-files/golden-tests/templates/ct_mc.xml | 2 + test-files/golden-tests/templates/ct_mct.xml | 2 + test-files/golden-tests/templates/ct_mf.xml | 1 + test-files/golden-tests/templates/ct_mft.xml | 1 + 112 files changed, 915 insertions(+), 175 deletions(-) diff --git a/include/mrdocs/Metadata/DocComment/Block/ParamDirection.hpp b/include/mrdocs/Metadata/DocComment/Block/ParamDirection.hpp index bff93b938e..16c063aaaf 100644 --- a/include/mrdocs/Metadata/DocComment/Block/ParamDirection.hpp +++ b/include/mrdocs/Metadata/DocComment/Block/ParamDirection.hpp @@ -16,6 +16,7 @@ #include #include +#include namespace mrdocs::doc { @@ -33,23 +34,7 @@ enum class ParamDirection inout }; -/** Return the name of the ParamDirection as a string. -*/ -MRDOCS_DECL -dom::String -toString(ParamDirection kind) noexcept; - -/** Return the ParamDirection from a @ref dom::Value string. -*/ -inline -void -tag_invoke( - dom::ValueFromTag, - dom::Value& v, - ParamDirection const kind) -{ - v = toString(kind); -} +MRDOCS_DESCRIBE_ENUM(ParamDirection, none, in, out, inout) } // mrdocs::doc diff --git a/include/mrdocs/Metadata/Specifiers/AccessKind.hpp b/include/mrdocs/Metadata/Specifiers/AccessKind.hpp index 39d78e98fb..d780d0ee2d 100644 --- a/include/mrdocs/Metadata/Specifiers/AccessKind.hpp +++ b/include/mrdocs/Metadata/Specifiers/AccessKind.hpp @@ -14,7 +14,7 @@ #include #include -#include +#include namespace mrdocs { @@ -41,25 +41,7 @@ enum class AccessKind Private, }; -/** Convert access specifier to its string form. -*/ -MRDOCS_DECL -dom::String -toString(AccessKind kind) noexcept; - -/** Return the AccessKind as a @ref dom::Value string. -*/ -inline -void -tag_invoke( - dom::ValueFromTag, - dom::Value& v, - AccessKind const kind) -{ - v = toString(kind); -} - - +MRDOCS_DESCRIBE_ENUM(AccessKind, None, Public, Protected, Private) } // mrdocs diff --git a/include/mrdocs/Metadata/Specifiers/ConstexprKind.hpp b/include/mrdocs/Metadata/Specifiers/ConstexprKind.hpp index 0375e7bed7..6cf86ea30b 100644 --- a/include/mrdocs/Metadata/Specifiers/ConstexprKind.hpp +++ b/include/mrdocs/Metadata/Specifiers/ConstexprKind.hpp @@ -13,7 +13,7 @@ #define MRDOCS_API_METADATA_SPECIFIERS_CONSTEXPRKIND_HPP #include -#include +#include namespace mrdocs { @@ -33,23 +33,7 @@ enum class ConstexprKind Consteval, }; -/** Convert a constexpr/consteval specifier kind to a string. -*/ -MRDOCS_DECL -dom::String -toString(ConstexprKind kind) noexcept; - -/** Return the ConstexprKind as a @ref dom::Value string. -*/ -inline -void -tag_invoke( - dom::ValueFromTag, - dom::Value& v, - ConstexprKind const kind) -{ - v = toString(kind); -} +MRDOCS_DESCRIBE_ENUM(ConstexprKind, None, Constexpr, Consteval) } // mrdocs diff --git a/include/mrdocs/Metadata/Specifiers/StorageClassKind.hpp b/include/mrdocs/Metadata/Specifiers/StorageClassKind.hpp index e09b153c0a..1a8746fe86 100644 --- a/include/mrdocs/Metadata/Specifiers/StorageClassKind.hpp +++ b/include/mrdocs/Metadata/Specifiers/StorageClassKind.hpp @@ -14,7 +14,7 @@ #include #include -#include +#include namespace mrdocs { @@ -40,23 +40,7 @@ enum class StorageClassKind Register }; -/** Convert a storage class kind to its string form. -*/ -MRDOCS_DECL -dom::String -toString(StorageClassKind kind) noexcept; - -/** Return the StorageClassKind as a @ref dom::Value string. -*/ -inline -void -tag_invoke( - dom::ValueFromTag, - dom::Value& v, - StorageClassKind const kind) -{ - v = toString(kind); -} +MRDOCS_DESCRIBE_ENUM(StorageClassKind, None, Extern, Static, Auto, Register) } // mrdocs diff --git a/include/mrdocs/Metadata/Type/TypeKind.hpp b/include/mrdocs/Metadata/Type/TypeKind.hpp index aa138f4bc6..c77586d8f4 100644 --- a/include/mrdocs/Metadata/Type/TypeKind.hpp +++ b/include/mrdocs/Metadata/Type/TypeKind.hpp @@ -41,9 +41,9 @@ MRDOCS_DECL dom::String toString(TypeKind kind) noexcept; -inline /** Map a TypeKind into a DOM value. */ +inline void tag_invoke( dom::ValueFromTag, diff --git a/include/mrdocs/Support/MapReflectedType.hpp b/include/mrdocs/Support/MapReflectedType.hpp index 31c29e1ee8..08e83ea5d7 100644 --- a/include/mrdocs/Support/MapReflectedType.hpp +++ b/include/mrdocs/Support/MapReflectedType.hpp @@ -15,6 +15,8 @@ #include #include #include +#include +#include #include #include #include @@ -114,6 +116,10 @@ shouldMapValue(T const& value) { return !value.empty(); } + else if constexpr (std::is_same_v) + { + return value != AccessKind::None; + } else if constexpr (std::is_same_v) { return value != ConstexprKind::None; @@ -126,6 +132,10 @@ shouldMapValue(T const& value) { return value != StorageClassKind::None; } + else if constexpr (std::is_same_v) + { + return value != doc::ParamDirection::none; + } else if constexpr (std::is_same_v) { return !value.Written.empty(); diff --git a/src/lib/Gen/xml/XMLWriter.cpp b/src/lib/Gen/xml/XMLWriter.cpp index f13609a784..5f5ad65000 100644 --- a/src/lib/Gen/xml/XMLWriter.cpp +++ b/src/lib/Gen/xml/XMLWriter.cpp @@ -56,6 +56,24 @@ std::string tagName() return toKebabCase(name); } +/** True if the described enum has an enumerator named "None" or "none". */ +template +constexpr bool has_none_enumerator() +{ + bool result = false; + describe::for_each( + describe::describe_enumerators{}, + [&](auto const& D) + { + std::string_view name(D.name); + if (name == "None" || name == "none") + { + result = true; + } + }); + return result; +} + } // unnamed namespace //------------------------------------------------ @@ -176,6 +194,16 @@ XMLWriter::writeElement(std::string_view tag, T const& value) { if (value.empty()) return; } else if constexpr (std::is_base_of_v) { if (value.Written.empty()) return; } + else if constexpr (describe::has_describe_enumerators::value) + { + if constexpr (has_none_enumerator()) + { + if (toString(value) == "none") + { + return; + } + } + } // Primitives inline, compounds wrapped. if constexpr (std::is_base_of_v) diff --git a/src/lib/Metadata/DocComment.cpp b/src/lib/Metadata/DocComment.cpp index 71d077fec2..9d6d22bd6f 100644 --- a/src/lib/Metadata/DocComment.cpp +++ b/src/lib/Metadata/DocComment.cpp @@ -46,24 +46,6 @@ toString(AdmonitionKind kind) noexcept } } -dom::String -toString(ParamDirection kind) noexcept -{ - switch(kind) - { - case ParamDirection::none: - return ""; - case ParamDirection::in: - return "in"; - case ParamDirection::out: - return "out"; - case ParamDirection::inout: - return "inout"; - default: - MRDOCS_UNREACHABLE(); - } -} - dom::String toString(Parts kind) noexcept { diff --git a/src/lib/Metadata/Specifiers.cpp b/src/lib/Metadata/Specifiers.cpp index 9f8b458487..5aecb480f0 100644 --- a/src/lib/Metadata/Specifiers.cpp +++ b/src/lib/Metadata/Specifiers.cpp @@ -15,45 +15,6 @@ namespace mrdocs { -dom::String toString(AccessKind kind) noexcept -{ - switch(kind) - { - case AccessKind::Public: return "public"; - case AccessKind::Private: return "private"; - case AccessKind::Protected: return "protected"; - case AccessKind::None: return ""; - default: - MRDOCS_UNREACHABLE(); - } -} - -dom::String toString(StorageClassKind kind) noexcept -{ - switch(kind) - { - case StorageClassKind::None: return ""; - case StorageClassKind::Extern: return "extern"; - case StorageClassKind::Static: return "static"; - case StorageClassKind::Auto: return "auto"; - case StorageClassKind::Register: return "register"; - default: - MRDOCS_UNREACHABLE(); - } -} - -dom::String toString(ConstexprKind kind) noexcept -{ - switch(kind) - { - case ConstexprKind::None: return ""; - case ConstexprKind::Constexpr: return "constexpr"; - case ConstexprKind::Consteval: return "consteval"; - default: - MRDOCS_UNREACHABLE(); - } -} - dom::String toString(ExplicitKind kind) noexcept { switch(kind) diff --git a/src/lib/Support/Debug.hpp b/src/lib/Support/Debug.hpp index ada0ce21d9..02d47390be 100644 --- a/src/lib/Support/Debug.hpp +++ b/src/lib/Support/Debug.hpp @@ -47,7 +47,7 @@ struct std::formatter : std::formatter { template std::format_context::iterator format(mrdocs::AccessKind a, FmtContext &ctx) const { - return std::formatter::format(toString(a).str(), ctx); + return std::formatter::format(toString(a), ctx); } }; diff --git a/test-files/golden-tests/config/auto-function-metadata/brief-from-function-class.xml b/test-files/golden-tests/config/auto-function-metadata/brief-from-function-class.xml index a1bcf0d9ac..cb7c58f1f4 100644 --- a/test-files/golden-tests/config/auto-function-metadata/brief-from-function-class.xml +++ b/test-files/golden-tests/config/auto-function-metadata/brief-from-function-class.xml @@ -114,6 +114,7 @@ overloads iRe6Tyv0qU6vIHNyvLHuISP/Fw4= + public regular ynx5NXMLXqzSXwgOnIP6CHzNx14= @@ -151,6 +152,7 @@ function 6Jx2eK9l4C46QIRucTvox+6PH2k= + public regular ynx5NXMLXqzSXwgOnIP6CHzNx14= @@ -171,6 +173,7 @@ constructor 1 1 + constexpr 1 @@ -185,6 +188,7 @@ function 4C2UEs8la3Eghf4mLyeViCJNOwY= + public regular ynx5NXMLXqzSXwgOnIP6CHzNx14= @@ -226,6 +230,7 @@ constructor 1 1 + constexpr 1 @@ -240,6 +245,7 @@ function ad/AzbLEE6b8dNnnX2OLy1+HxDQ= + public regular ynx5NXMLXqzSXwgOnIP6CHzNx14= @@ -280,6 +286,7 @@ constructor 1 1 + constexpr 1 @@ -294,6 +301,7 @@ function d9h3reyOyp3JT3kwQOTPOI9tmzg= + public regular ynx5NXMLXqzSXwgOnIP6CHzNx14= @@ -350,6 +358,7 @@ function vwV8S8Oz6MQV3vNlcR0jdKhSlfc= + public regular ynx5NXMLXqzSXwgOnIP6CHzNx14= @@ -410,6 +419,7 @@ function ALa0jXrxokW17OgDFIUlk/PCxSQ= + public regular ynx5NXMLXqzSXwgOnIP6CHzNx14= @@ -469,6 +479,7 @@ function HK6hbp0kJrHWxbYoHddN1v/GCWc= + public regular ynx5NXMLXqzSXwgOnIP6CHzNx14= @@ -501,6 +512,7 @@ function CWQgyDAMsfX65S2osLlxVceQp04= + public regular ynx5NXMLXqzSXwgOnIP6CHzNx14= @@ -549,6 +561,7 @@ function ugTeBmZlVDCwimu6VQtRkOKlfL8= + public regular ynx5NXMLXqzSXwgOnIP6CHzNx14= diff --git a/test-files/golden-tests/config/auto-function-metadata/brief-from-operator.xml b/test-files/golden-tests/config/auto-function-metadata/brief-from-operator.xml index 18a690c454..9f533b0ca6 100644 --- a/test-files/golden-tests/config/auto-function-metadata/brief-from-operator.xml +++ b/test-files/golden-tests/config/auto-function-metadata/brief-from-operator.xml @@ -108,6 +108,7 @@ overloads q7aqa6GHOpmWjES40eZPTxdQ3zE= + public regular ynx5NXMLXqzSXwgOnIP6CHzNx14= @@ -145,6 +146,7 @@ function YI7e/5S7mfio0SdtBRI7qUu9Q98= + public regular ynx5NXMLXqzSXwgOnIP6CHzNx14= @@ -208,6 +210,7 @@ function 48zVzrvQYghIK1XcLQx4pbTPMI4= + public regular ynx5NXMLXqzSXwgOnIP6CHzNx14= @@ -270,6 +273,7 @@ function 3QxkEc/c2ugz6330u92HdqOoDNk= + public regular ynx5NXMLXqzSXwgOnIP6CHzNx14= @@ -333,6 +337,7 @@ function fQntJewamOFvdUijvGwzsqA4V+E= + public regular ynx5NXMLXqzSXwgOnIP6CHzNx14= diff --git a/test-files/golden-tests/config/auto-function-metadata/param-from-function-class.xml b/test-files/golden-tests/config/auto-function-metadata/param-from-function-class.xml index 0794d4bc93..870a9e5be7 100644 --- a/test-files/golden-tests/config/auto-function-metadata/param-from-function-class.xml +++ b/test-files/golden-tests/config/auto-function-metadata/param-from-function-class.xml @@ -118,6 +118,7 @@ overloads iRe6Tyv0qU6vIHNyvLHuISP/Fw4= + public regular ynx5NXMLXqzSXwgOnIP6CHzNx14= @@ -154,6 +155,7 @@ function 4C2UEs8la3Eghf4mLyeViCJNOwY= + public regular ynx5NXMLXqzSXwgOnIP6CHzNx14= @@ -207,6 +209,7 @@ function ad/AzbLEE6b8dNnnX2OLy1+HxDQ= + public regular ynx5NXMLXqzSXwgOnIP6CHzNx14= @@ -259,6 +262,7 @@ function d9h3reyOyp3JT3kwQOTPOI9tmzg= + public regular ynx5NXMLXqzSXwgOnIP6CHzNx14= @@ -315,6 +319,7 @@ function vwV8S8Oz6MQV3vNlcR0jdKhSlfc= + public regular ynx5NXMLXqzSXwgOnIP6CHzNx14= @@ -375,6 +380,7 @@ function ALa0jXrxokW17OgDFIUlk/PCxSQ= + public regular ynx5NXMLXqzSXwgOnIP6CHzNx14= @@ -458,6 +464,7 @@ overloads q7aqa6GHOpmWjES40eZPTxdQ3zE= + public regular ynx5NXMLXqzSXwgOnIP6CHzNx14= @@ -497,6 +504,7 @@ function YI7e/5S7mfio0SdtBRI7qUu9Q98= + public regular ynx5NXMLXqzSXwgOnIP6CHzNx14= @@ -560,6 +568,7 @@ function 48zVzrvQYghIK1XcLQx4pbTPMI4= + public regular ynx5NXMLXqzSXwgOnIP6CHzNx14= @@ -622,6 +631,7 @@ function fxM82tl72Q717PPJyP3nb48HbSQ= + public regular ynx5NXMLXqzSXwgOnIP6CHzNx14= @@ -681,6 +691,7 @@ function 3QxkEc/c2ugz6330u92HdqOoDNk= + public regular ynx5NXMLXqzSXwgOnIP6CHzNx14= @@ -744,6 +755,7 @@ function fj22HhjPEq+Xg/+Qrr3suU+8qMs= + public regular ynx5NXMLXqzSXwgOnIP6CHzNx14= diff --git a/test-files/golden-tests/config/auto-function-metadata/param-from-operator.xml b/test-files/golden-tests/config/auto-function-metadata/param-from-operator.xml index dc52f863ff..b8afa66bd7 100644 --- a/test-files/golden-tests/config/auto-function-metadata/param-from-operator.xml +++ b/test-files/golden-tests/config/auto-function-metadata/param-from-operator.xml @@ -107,6 +107,7 @@ function KAGpjhkArISJuf2yO8ueGRkoMRY= + public regular ynx5NXMLXqzSXwgOnIP6CHzNx14= diff --git a/test-files/golden-tests/config/auto-function-metadata/returns-from-brief.xml b/test-files/golden-tests/config/auto-function-metadata/returns-from-brief.xml index 0280a457a9..b28c998083 100644 --- a/test-files/golden-tests/config/auto-function-metadata/returns-from-brief.xml +++ b/test-files/golden-tests/config/auto-function-metadata/returns-from-brief.xml @@ -61,6 +61,7 @@ function NvIeyslj/JtN1AFmvZ8Tij9uTrg= + public regular ynx5NXMLXqzSXwgOnIP6CHzNx14= @@ -101,6 +102,7 @@ function 3xIfjajRSSCEaVNizhf9qh46l4U= + public regular ynx5NXMLXqzSXwgOnIP6CHzNx14= @@ -142,6 +144,7 @@ function 4jz+tDHFk1vY3ErafzS9b537gac= + public regular ynx5NXMLXqzSXwgOnIP6CHzNx14= diff --git a/test-files/golden-tests/config/auto-function-metadata/returns-from-special.xml b/test-files/golden-tests/config/auto-function-metadata/returns-from-special.xml index e467524cd4..cc123a497b 100644 --- a/test-files/golden-tests/config/auto-function-metadata/returns-from-special.xml +++ b/test-files/golden-tests/config/auto-function-metadata/returns-from-special.xml @@ -186,6 +186,7 @@ overloads q7aqa6GHOpmWjES40eZPTxdQ3zE= + public regular ynx5NXMLXqzSXwgOnIP6CHzNx14= @@ -215,6 +216,7 @@ function 3QxkEc/c2ugz6330u92HdqOoDNk= + public regular ynx5NXMLXqzSXwgOnIP6CHzNx14= @@ -278,6 +280,7 @@ function fj22HhjPEq+Xg/+Qrr3suU+8qMs= + public regular ynx5NXMLXqzSXwgOnIP6CHzNx14= @@ -340,6 +343,7 @@ function KAGpjhkArISJuf2yO8ueGRkoMRY= + public regular ynx5NXMLXqzSXwgOnIP6CHzNx14= @@ -402,6 +406,7 @@ function nGRGOmpMUWr4ryyahs3rKCCI6w8= + public regular ynx5NXMLXqzSXwgOnIP6CHzNx14= @@ -444,6 +449,7 @@ function CWQgyDAMsfX65S2osLlxVceQp04= + public regular ynx5NXMLXqzSXwgOnIP6CHzNx14= @@ -492,6 +498,7 @@ function OKqUHUCCTf6jNFJNn97bqGsSeaw= + public regular ynx5NXMLXqzSXwgOnIP6CHzNx14= @@ -547,6 +554,7 @@ function KWAu92L4cHasWWof4vEI3DKRMCM= + public regular ynx5NXMLXqzSXwgOnIP6CHzNx14= @@ -605,6 +613,7 @@ function UKmM2VstAN3S3zdmZKKvDGlIrLM= + public regular ynx5NXMLXqzSXwgOnIP6CHzNx14= @@ -684,6 +693,7 @@ function B4HRW82Qp1vDOpzQsxPdEsZgycs= + public regular ynx5NXMLXqzSXwgOnIP6CHzNx14= @@ -763,6 +773,7 @@ function 851IpIwjxsx0O/etQzbn4pl99xE= + public regular ynx5NXMLXqzSXwgOnIP6CHzNx14= @@ -842,6 +853,7 @@ function h8nEEe+LBIHRvU6iRGyqW04tWgU= + public regular ynx5NXMLXqzSXwgOnIP6CHzNx14= @@ -921,6 +933,7 @@ function cR6bIyYYnXQ30XTeEQusQL16eHI= + public regular ynx5NXMLXqzSXwgOnIP6CHzNx14= @@ -1000,6 +1013,7 @@ function 4tbW1aodVDD/vHYusU0xj6w4Fao= + public regular ynx5NXMLXqzSXwgOnIP6CHzNx14= @@ -1079,6 +1093,7 @@ function ttkN5+GpWIElN9dfCpsZKm/wHH0= + public regular ynx5NXMLXqzSXwgOnIP6CHzNx14= diff --git a/test-files/golden-tests/config/auto-function-objects/no-auto-function-objects.xml b/test-files/golden-tests/config/auto-function-objects/no-auto-function-objects.xml index 6b5928eec4..fde6709801 100644 --- a/test-files/golden-tests/config/auto-function-objects/no-auto-function-objects.xml +++ b/test-files/golden-tests/config/auto-function-objects/no-auto-function-objects.xml @@ -80,6 +80,7 @@ function 11lTy9LCvZbcyORLiyJVo85H/ZE= + public regular atJ19SGK6qD7vR0+k/Q9OWKCjbM= @@ -163,6 +164,7 @@ function 7NEMEfqJ2qq9ya8mcW1t7V5K0DA= + public implementation-defined 8GvlDu9dAD8UG/F0pZ8sAX1YesQ= diff --git a/test-files/golden-tests/config/auto-relates/derived.xml b/test-files/golden-tests/config/auto-relates/derived.xml index a106f5f91a..0ab64ee2d9 100644 --- a/test-files/golden-tests/config/auto-relates/derived.xml +++ b/test-files/golden-tests/config/auto-relates/derived.xml @@ -78,6 +78,7 @@ ABase + public @@ -212,6 +213,7 @@ ABase + public uzZSeC7XnVBhNXRKG+8nlEGg+Is= @@ -288,6 +290,7 @@ AView + public diff --git a/test-files/golden-tests/config/auto-relates/remove-friend.xml b/test-files/golden-tests/config/auto-relates/remove-friend.xml index 078b9abe16..2b02729737 100644 --- a/test-files/golden-tests/config/auto-relates/remove-friend.xml +++ b/test-files/golden-tests/config/auto-relates/remove-friend.xml @@ -136,6 +136,7 @@ function kibUx6k1SXB+HsXkRXroJl9f59w= + public regular //////////////////////////8= diff --git a/test-files/golden-tests/config/base-url/out-of-tree-base.xml b/test-files/golden-tests/config/base-url/out-of-tree-base.xml index fa8825b1c5..f8a113a64c 100644 --- a/test-files/golden-tests/config/base-url/out-of-tree-base.xml +++ b/test-files/golden-tests/config/base-url/out-of-tree-base.xml @@ -63,6 +63,7 @@ ExternalBase + public @@ -87,6 +88,7 @@ function r2FT8w6tN0syeB7bck2xfwAZX28= + public regular 1 yXfQfCJQf6SvVQYn4gaA2krC8tk= @@ -121,6 +123,7 @@ function 1DlxDyIhnIUKFbQOs4tQMjoMTgM= + public regular yXfQfCJQf6SvVQYn4gaA2krC8tk= diff --git a/test-files/golden-tests/config/extract-implicit-specializations/base.xml b/test-files/golden-tests/config/extract-implicit-specializations/base.xml index 1f3c4d72d0..aabb782211 100644 --- a/test-files/golden-tests/config/extract-implicit-specializations/base.xml +++ b/test-files/golden-tests/config/extract-implicit-specializations/base.xml @@ -35,6 +35,7 @@ B + public @@ -58,6 +59,7 @@ function TokaYJ9UI6a6x0IfsXTGliIuJ9k= + public regular 3JsK1DO0O+wZhv+0meptQrbs3fY= @@ -107,6 +109,7 @@ function TokaYJ9UI6a6x0IfsXTGliIuJ9k= + public regular 3JsK1DO0O+wZhv+0meptQrbs3fY= diff --git a/test-files/golden-tests/config/extract-implicit-specializations/extract-implicit-specializations.xml b/test-files/golden-tests/config/extract-implicit-specializations/extract-implicit-specializations.xml index 85b0d5062a..5163028cab 100644 --- a/test-files/golden-tests/config/extract-implicit-specializations/extract-implicit-specializations.xml +++ b/test-files/golden-tests/config/extract-implicit-specializations/extract-implicit-specializations.xml @@ -36,6 +36,7 @@ B + public @@ -59,6 +60,7 @@ function i2Kh9WfDseks8Lnr/kapVaR9r4g= + public regular 1 YrPSaKAbmXgzCAX5WByx4eVoqBM= @@ -118,6 +120,7 @@ function yNvFAvs6ngp6sqCFBzu5nPSIyfk= + public regular Bu/3QcmNOdsc7RSM3OKHnuCxGPU= diff --git a/test-files/golden-tests/config/extract-implicit-specializations/no-extract-implicit-specializations.xml b/test-files/golden-tests/config/extract-implicit-specializations/no-extract-implicit-specializations.xml index af53aa5d12..adbba56e2c 100644 --- a/test-files/golden-tests/config/extract-implicit-specializations/no-extract-implicit-specializations.xml +++ b/test-files/golden-tests/config/extract-implicit-specializations/no-extract-implicit-specializations.xml @@ -36,6 +36,7 @@ B + public @@ -59,6 +60,7 @@ function yNvFAvs6ngp6sqCFBzu5nPSIyfk= + public regular Bu/3QcmNOdsc7RSM3OKHnuCxGPU= @@ -117,6 +119,7 @@ function yNvFAvs6ngp6sqCFBzu5nPSIyfk= + public regular Bu/3QcmNOdsc7RSM3OKHnuCxGPU= diff --git a/test-files/golden-tests/config/extract-private-virtual/extract-private-virtual.xml b/test-files/golden-tests/config/extract-private-virtual/extract-private-virtual.xml index e107e60520..e02a648baf 100644 --- a/test-files/golden-tests/config/extract-private-virtual/extract-private-virtual.xml +++ b/test-files/golden-tests/config/extract-private-virtual/extract-private-virtual.xml @@ -49,6 +49,7 @@ function hLXvGC+nOrLQRH9lODKkgi/oUas= + public regular YrPSaKAbmXgzCAX5WByx4eVoqBM= @@ -74,6 +75,7 @@ function IWP5ktgJAZgjufMQ6EE1eb6mm9g= + private regular YrPSaKAbmXgzCAX5WByx4eVoqBM= diff --git a/test-files/golden-tests/config/extract-private-virtual/no-extract-private-virtual.xml b/test-files/golden-tests/config/extract-private-virtual/no-extract-private-virtual.xml index 0a275370d5..184d0caaa3 100644 --- a/test-files/golden-tests/config/extract-private-virtual/no-extract-private-virtual.xml +++ b/test-files/golden-tests/config/extract-private-virtual/no-extract-private-virtual.xml @@ -48,6 +48,7 @@ function hLXvGC+nOrLQRH9lODKkgi/oUas= + public regular YrPSaKAbmXgzCAX5WByx4eVoqBM= diff --git a/test-files/golden-tests/config/inherit-base-members/base-overload-set.xml b/test-files/golden-tests/config/inherit-base-members/base-overload-set.xml index 44531633fc..b9e16c4c72 100644 --- a/test-files/golden-tests/config/inherit-base-members/base-overload-set.xml +++ b/test-files/golden-tests/config/inherit-base-members/base-overload-set.xml @@ -36,6 +36,7 @@ ConstBase + public BrX2oZup9qgy4SfJloKCuUYZshA= @@ -66,6 +67,7 @@ overloads QHJvDmodINf8DNWem4Zc6XU8nvk= + public regular ZIHuevKEF1ZlGviVwUZq1CEFBRc= normal @@ -92,6 +94,7 @@ function pSUoXAwvwzBmhWkB1ABLnXwZdkY= + public regular ZIHuevKEF1ZlGviVwUZq1CEFBRc= @@ -117,6 +120,7 @@ function hbsgojOPl9JVh9Nb8C7b2dZ389k= + public regular ZIHuevKEF1ZlGviVwUZq1CEFBRc= @@ -154,6 +158,7 @@ Base + public @@ -183,6 +188,7 @@ overloads QHJvDmodINf8DNWem4Zc6XU8nvk= + public regular ZIHuevKEF1ZlGviVwUZq1CEFBRc= normal @@ -209,6 +215,7 @@ function pSUoXAwvwzBmhWkB1ABLnXwZdkY= + public regular ZIHuevKEF1ZlGviVwUZq1CEFBRc= @@ -234,6 +241,7 @@ function hbsgojOPl9JVh9Nb8C7b2dZ389k= + public regular ZIHuevKEF1ZlGviVwUZq1CEFBRc= @@ -286,6 +294,7 @@ function Q5DcZVrEwKvh1JSM5lUHNrOvQlU= + public regular 2iD5AHuu7qrCVJnAauz4We2QkKU= diff --git a/test-files/golden-tests/config/inherit-base-members/copy-dependencies.xml b/test-files/golden-tests/config/inherit-base-members/copy-dependencies.xml index 0f436fdeba..2d42a4e49e 100644 --- a/test-files/golden-tests/config/inherit-base-members/copy-dependencies.xml +++ b/test-files/golden-tests/config/inherit-base-members/copy-dependencies.xml @@ -49,6 +49,7 @@ base_base + public ABxWcxit2TyVLv16ZxoJKAc6LKw= @@ -81,6 +82,7 @@ function 2D7yc6q3buDhuPwzpn4pWzbu8ls= + public regular /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= @@ -124,6 +126,7 @@ function v0BroyWjs67MHzc1SyTlXrSxn8M= + public regular sk8HTAQHhzXfZej4IJliADonAJQ= @@ -167,6 +170,7 @@ function ECBBLxlaKar55qA0k1BCFn6MdH8= + public regular sk8HTAQHhzXfZej4IJliADonAJQ= @@ -210,6 +214,7 @@ function aYhSUMJkgCRo3AZmBb/rre04Ghg= + public regular sk8HTAQHhzXfZej4IJliADonAJQ= @@ -253,6 +258,7 @@ function MEPVWyGd8KdZFR1kBYlQMgPyQlo= + public regular /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= @@ -296,6 +302,7 @@ function TaKAQiDmx8UXkT9p/momqiOZyHU= + protected regular sk8HTAQHhzXfZej4IJliADonAJQ= @@ -339,6 +346,7 @@ function eHxe3z0iWUXdcNyXK0PD2+6DRbs= + protected regular sk8HTAQHhzXfZej4IJliADonAJQ= @@ -382,6 +390,7 @@ function KGOrnDVJV2nPDK1hlkvBm6diYXY= + protected regular sk8HTAQHhzXfZej4IJliADonAJQ= @@ -462,6 +471,7 @@ function 2D7yc6q3buDhuPwzpn4pWzbu8ls= + public regular /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= @@ -505,6 +515,7 @@ function MEPVWyGd8KdZFR1kBYlQMgPyQlo= + public regular /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= @@ -568,6 +579,7 @@ base + public @@ -577,6 +589,7 @@ excluded_base + public @@ -612,6 +625,7 @@ function 2D7yc6q3buDhuPwzpn4pWzbu8ls= + public regular /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= @@ -655,6 +669,7 @@ function v0BroyWjs67MHzc1SyTlXrSxn8M= + public regular sk8HTAQHhzXfZej4IJliADonAJQ= @@ -698,6 +713,7 @@ function ECBBLxlaKar55qA0k1BCFn6MdH8= + public regular sk8HTAQHhzXfZej4IJliADonAJQ= @@ -741,6 +757,7 @@ function MGQhB2O6ghdJWit6wao+PsH30Ew= + public regular ABxWcxit2TyVLv16ZxoJKAc6LKw= @@ -784,6 +801,7 @@ function MEPVWyGd8KdZFR1kBYlQMgPyQlo= + public regular /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= @@ -827,6 +845,7 @@ function rTSnS8Pv8GoWusQQE42y0pgN4cw= + public regular ABxWcxit2TyVLv16ZxoJKAc6LKw= @@ -870,6 +889,7 @@ function P1Eq799RJkNMSTci+0jy+ZejsyU= + public regular 1 ABxWcxit2TyVLv16ZxoJKAc6LKw= @@ -907,6 +927,7 @@ function TaKAQiDmx8UXkT9p/momqiOZyHU= + protected regular sk8HTAQHhzXfZej4IJliADonAJQ= @@ -950,6 +971,7 @@ function eHxe3z0iWUXdcNyXK0PD2+6DRbs= + protected regular sk8HTAQHhzXfZej4IJliADonAJQ= @@ -993,6 +1015,7 @@ function KGOrnDVJV2nPDK1hlkvBm6diYXY= + protected regular sk8HTAQHhzXfZej4IJliADonAJQ= @@ -1036,6 +1059,7 @@ function oW3pQYXjjv2wrXIwIceF6Xd8nTA= + protected regular 1 ABxWcxit2TyVLv16ZxoJKAc6LKw= @@ -1073,6 +1097,7 @@ function IYnrJp6ur6C+AiuhFl5x1YPnxkM= + protected regular 1 ABxWcxit2TyVLv16ZxoJKAc6LKw= @@ -1130,6 +1155,7 @@ base + private @@ -1139,6 +1165,7 @@ excluded_base + private @@ -1164,6 +1191,7 @@ function 9wqRoOH7cwNhkz5vwpTHLeb01BY= + public regular aiF6nWGZXbG8UfC75J5tNuoPMRc= @@ -1207,6 +1235,7 @@ function NJYWKnKWmizdaSr1ldC7FGh7fD0= + public regular aiF6nWGZXbG8UfC75J5tNuoPMRc= @@ -1270,6 +1299,7 @@ base + protected @@ -1279,6 +1309,7 @@ excluded_base + protected @@ -1315,6 +1346,7 @@ function oVVGDloOS5F7d4VIcKLc0YpnsiE= + public regular KpfFXd3FeSffU3rGswegSIkkCrM= @@ -1358,6 +1390,7 @@ function 4ZJznHda5QNdk/tsMca4Psswlj0= + public regular KpfFXd3FeSffU3rGswegSIkkCrM= @@ -1401,6 +1434,7 @@ function 2D7yc6q3buDhuPwzpn4pWzbu8ls= + public regular /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= @@ -1444,6 +1478,7 @@ function v0BroyWjs67MHzc1SyTlXrSxn8M= + public regular sk8HTAQHhzXfZej4IJliADonAJQ= @@ -1487,6 +1522,7 @@ function ECBBLxlaKar55qA0k1BCFn6MdH8= + public regular sk8HTAQHhzXfZej4IJliADonAJQ= @@ -1530,6 +1566,7 @@ function aYhSUMJkgCRo3AZmBb/rre04Ghg= + public regular sk8HTAQHhzXfZej4IJliADonAJQ= @@ -1573,6 +1610,7 @@ function MEPVWyGd8KdZFR1kBYlQMgPyQlo= + public regular /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= @@ -1616,6 +1654,7 @@ function TaKAQiDmx8UXkT9p/momqiOZyHU= + protected regular sk8HTAQHhzXfZej4IJliADonAJQ= @@ -1659,6 +1698,7 @@ function eHxe3z0iWUXdcNyXK0PD2+6DRbs= + protected regular sk8HTAQHhzXfZej4IJliADonAJQ= @@ -1702,6 +1742,7 @@ function KGOrnDVJV2nPDK1hlkvBm6diYXY= + protected regular sk8HTAQHhzXfZej4IJliADonAJQ= @@ -1745,6 +1786,7 @@ function KdkXQxu2xOfAXegJgCMmLcFq8MM= + protected regular 1 KpfFXd3FeSffU3rGswegSIkkCrM= @@ -1782,6 +1824,7 @@ function UysvazUbtV39Omg33c9Me+Gri/M= + protected regular 1 KpfFXd3FeSffU3rGswegSIkkCrM= @@ -1819,6 +1862,7 @@ function H8wEIL8+8s3iNqadfPsH1HWRQU4= + public regular 1 KpfFXd3FeSffU3rGswegSIkkCrM= diff --git a/test-files/golden-tests/config/inherit-base-members/copy.xml b/test-files/golden-tests/config/inherit-base-members/copy.xml index c14839ab4e..e56cf4b9cc 100644 --- a/test-files/golden-tests/config/inherit-base-members/copy.xml +++ b/test-files/golden-tests/config/inherit-base-members/copy.xml @@ -49,6 +49,7 @@ base_base + public ABxWcxit2TyVLv16ZxoJKAc6LKw= @@ -81,6 +82,7 @@ function kuwWLj5gwO5grGVaKw+6QPB7t2k= + public regular 1 sk8HTAQHhzXfZej4IJliADonAJQ= @@ -125,6 +127,7 @@ function v0BroyWjs67MHzc1SyTlXrSxn8M= + public regular sk8HTAQHhzXfZej4IJliADonAJQ= @@ -168,6 +171,7 @@ function ECBBLxlaKar55qA0k1BCFn6MdH8= + public regular sk8HTAQHhzXfZej4IJliADonAJQ= @@ -211,6 +215,7 @@ function aYhSUMJkgCRo3AZmBb/rre04Ghg= + public regular sk8HTAQHhzXfZej4IJliADonAJQ= @@ -254,6 +259,7 @@ function QFvlG37sjpI5QZrNwpdQ06VrrSM= + public regular 1 sk8HTAQHhzXfZej4IJliADonAJQ= @@ -298,6 +304,7 @@ function TaKAQiDmx8UXkT9p/momqiOZyHU= + protected regular sk8HTAQHhzXfZej4IJliADonAJQ= @@ -341,6 +348,7 @@ function eHxe3z0iWUXdcNyXK0PD2+6DRbs= + protected regular sk8HTAQHhzXfZej4IJliADonAJQ= @@ -384,6 +392,7 @@ function KGOrnDVJV2nPDK1hlkvBm6diYXY= + protected regular sk8HTAQHhzXfZej4IJliADonAJQ= @@ -464,6 +473,7 @@ function 2D7yc6q3buDhuPwzpn4pWzbu8ls= + public regular /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= @@ -507,6 +517,7 @@ function MEPVWyGd8KdZFR1kBYlQMgPyQlo= + public regular /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= @@ -570,6 +581,7 @@ base + public @@ -579,6 +591,7 @@ excluded_base + public @@ -614,6 +627,7 @@ function Tt5J064ctbXRBv/qZbRJxCebPs0= + public regular 1 ABxWcxit2TyVLv16ZxoJKAc6LKw= @@ -658,6 +672,7 @@ function Ew/9fVRXcBGEFLrWpdrt3lktMto= + public regular 1 ABxWcxit2TyVLv16ZxoJKAc6LKw= @@ -702,6 +717,7 @@ function VrpbGEQk6hRwzmAJBudLSCOZh7Y= + public regular 1 ABxWcxit2TyVLv16ZxoJKAc6LKw= @@ -746,6 +762,7 @@ function MGQhB2O6ghdJWit6wao+PsH30Ew= + public regular ABxWcxit2TyVLv16ZxoJKAc6LKw= @@ -789,6 +806,7 @@ function 3vFJsBKleDdECAQKJp6m7566RQQ= + public regular 1 ABxWcxit2TyVLv16ZxoJKAc6LKw= @@ -833,6 +851,7 @@ function rTSnS8Pv8GoWusQQE42y0pgN4cw= + public regular ABxWcxit2TyVLv16ZxoJKAc6LKw= @@ -876,6 +895,7 @@ function P1Eq799RJkNMSTci+0jy+ZejsyU= + public regular 1 ABxWcxit2TyVLv16ZxoJKAc6LKw= @@ -913,6 +933,7 @@ function J8r4aXb9++EldZDgHmv2rU2GhW0= + protected regular 1 ABxWcxit2TyVLv16ZxoJKAc6LKw= @@ -957,6 +978,7 @@ function TeAnpSrYd1HafyFwmcm4jG6bj2w= + protected regular 1 ABxWcxit2TyVLv16ZxoJKAc6LKw= @@ -1001,6 +1023,7 @@ function 1BMmFoheKBz9kYkFKzXHyfWZMQg= + protected regular 1 ABxWcxit2TyVLv16ZxoJKAc6LKw= @@ -1045,6 +1068,7 @@ function oW3pQYXjjv2wrXIwIceF6Xd8nTA= + protected regular 1 ABxWcxit2TyVLv16ZxoJKAc6LKw= @@ -1082,6 +1106,7 @@ function IYnrJp6ur6C+AiuhFl5x1YPnxkM= + protected regular 1 ABxWcxit2TyVLv16ZxoJKAc6LKw= @@ -1139,6 +1164,7 @@ base + private @@ -1148,6 +1174,7 @@ excluded_base + private @@ -1173,6 +1200,7 @@ function 9wqRoOH7cwNhkz5vwpTHLeb01BY= + public regular aiF6nWGZXbG8UfC75J5tNuoPMRc= @@ -1216,6 +1244,7 @@ function NJYWKnKWmizdaSr1ldC7FGh7fD0= + public regular aiF6nWGZXbG8UfC75J5tNuoPMRc= @@ -1279,6 +1308,7 @@ base + protected @@ -1288,6 +1318,7 @@ excluded_base + protected @@ -1324,6 +1355,7 @@ function oVVGDloOS5F7d4VIcKLc0YpnsiE= + public regular KpfFXd3FeSffU3rGswegSIkkCrM= @@ -1367,6 +1399,7 @@ function 4ZJznHda5QNdk/tsMca4Psswlj0= + public regular KpfFXd3FeSffU3rGswegSIkkCrM= @@ -1410,6 +1443,7 @@ function fmeE0HcB3oP1daboxYZOH/pxDwU= + public regular 1 KpfFXd3FeSffU3rGswegSIkkCrM= @@ -1454,6 +1488,7 @@ function vIj2+WtgSIJo5ner9NMU/5gSQaE= + public regular 1 KpfFXd3FeSffU3rGswegSIkkCrM= @@ -1498,6 +1533,7 @@ function 8yYxCHdO5GHsa9EDJUegzWA1gsM= + public regular 1 KpfFXd3FeSffU3rGswegSIkkCrM= @@ -1542,6 +1578,7 @@ function 9BTAtv04iyibbbELEv2rF8AH+Uc= + public regular 1 KpfFXd3FeSffU3rGswegSIkkCrM= @@ -1586,6 +1623,7 @@ function Jif8i0TqV0aN5cctSlCwsvdid/s= + public regular 1 KpfFXd3FeSffU3rGswegSIkkCrM= @@ -1630,6 +1668,7 @@ function 99dMSYjVFm3pIP2+aQ+9NrCmzuI= + protected regular 1 KpfFXd3FeSffU3rGswegSIkkCrM= @@ -1674,6 +1713,7 @@ function P4XIUNZt183bxiDCnXrNw4kbmkg= + protected regular 1 KpfFXd3FeSffU3rGswegSIkkCrM= @@ -1718,6 +1758,7 @@ function ZJGKp3yoIaFScOAN2naqfrJMlQQ= + protected regular 1 KpfFXd3FeSffU3rGswegSIkkCrM= @@ -1762,6 +1803,7 @@ function KdkXQxu2xOfAXegJgCMmLcFq8MM= + protected regular 1 KpfFXd3FeSffU3rGswegSIkkCrM= @@ -1799,6 +1841,7 @@ function UysvazUbtV39Omg33c9Me+Gri/M= + protected regular 1 KpfFXd3FeSffU3rGswegSIkkCrM= @@ -1836,6 +1879,7 @@ function H8wEIL8+8s3iNqadfPsH1HWRQU4= + public regular 1 KpfFXd3FeSffU3rGswegSIkkCrM= diff --git a/test-files/golden-tests/config/inherit-base-members/impl-defined-base.xml b/test-files/golden-tests/config/inherit-base-members/impl-defined-base.xml index 113d0568fd..6dda338ba6 100644 --- a/test-files/golden-tests/config/inherit-base-members/impl-defined-base.xml +++ b/test-files/golden-tests/config/inherit-base-members/impl-defined-base.xml @@ -68,6 +68,7 @@ function 0k4Wdt7n3RgOCeAZcrhJ7PruWP0= + public implementation-defined zJyAW21qgGwkRrS6Ea2uUqKSLhE= @@ -116,6 +117,7 @@ + public @@ -141,6 +143,7 @@ function o0JbdzeoEgGm/tWclYdgORU0Qyw= + public regular 1 ABxWcxit2TyVLv16ZxoJKAc6LKw= @@ -174,6 +177,7 @@ function LsIEKTwhFIkvPhRlDXC1p7T+GPU= + public regular ABxWcxit2TyVLv16ZxoJKAc6LKw= diff --git a/test-files/golden-tests/config/inherit-base-members/never.xml b/test-files/golden-tests/config/inherit-base-members/never.xml index 0f10005a1c..4b16777941 100644 --- a/test-files/golden-tests/config/inherit-base-members/never.xml +++ b/test-files/golden-tests/config/inherit-base-members/never.xml @@ -49,6 +49,7 @@ base_base + public ABxWcxit2TyVLv16ZxoJKAc6LKw= @@ -79,6 +80,7 @@ function v0BroyWjs67MHzc1SyTlXrSxn8M= + public regular sk8HTAQHhzXfZej4IJliADonAJQ= @@ -122,6 +124,7 @@ function ECBBLxlaKar55qA0k1BCFn6MdH8= + public regular sk8HTAQHhzXfZej4IJliADonAJQ= @@ -165,6 +168,7 @@ function aYhSUMJkgCRo3AZmBb/rre04Ghg= + public regular sk8HTAQHhzXfZej4IJliADonAJQ= @@ -208,6 +212,7 @@ function TaKAQiDmx8UXkT9p/momqiOZyHU= + protected regular sk8HTAQHhzXfZej4IJliADonAJQ= @@ -251,6 +256,7 @@ function eHxe3z0iWUXdcNyXK0PD2+6DRbs= + protected regular sk8HTAQHhzXfZej4IJliADonAJQ= @@ -294,6 +300,7 @@ function KGOrnDVJV2nPDK1hlkvBm6diYXY= + protected regular sk8HTAQHhzXfZej4IJliADonAJQ= @@ -374,6 +381,7 @@ function 2D7yc6q3buDhuPwzpn4pWzbu8ls= + public regular /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= @@ -417,6 +425,7 @@ function MEPVWyGd8KdZFR1kBYlQMgPyQlo= + public regular /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= @@ -480,6 +489,7 @@ base + public @@ -489,6 +499,7 @@ excluded_base + public @@ -514,6 +525,7 @@ function MGQhB2O6ghdJWit6wao+PsH30Ew= + public regular ABxWcxit2TyVLv16ZxoJKAc6LKw= @@ -557,6 +569,7 @@ function rTSnS8Pv8GoWusQQE42y0pgN4cw= + public regular ABxWcxit2TyVLv16ZxoJKAc6LKw= @@ -620,6 +633,7 @@ base + private @@ -629,6 +643,7 @@ excluded_base + private @@ -654,6 +669,7 @@ function 9wqRoOH7cwNhkz5vwpTHLeb01BY= + public regular aiF6nWGZXbG8UfC75J5tNuoPMRc= @@ -697,6 +713,7 @@ function NJYWKnKWmizdaSr1ldC7FGh7fD0= + public regular aiF6nWGZXbG8UfC75J5tNuoPMRc= @@ -760,6 +777,7 @@ base + protected @@ -769,6 +787,7 @@ excluded_base + protected @@ -794,6 +813,7 @@ function oVVGDloOS5F7d4VIcKLc0YpnsiE= + public regular KpfFXd3FeSffU3rGswegSIkkCrM= @@ -837,6 +857,7 @@ function 4ZJznHda5QNdk/tsMca4Psswlj0= + public regular KpfFXd3FeSffU3rGswegSIkkCrM= diff --git a/test-files/golden-tests/config/inherit-base-members/reference.xml b/test-files/golden-tests/config/inherit-base-members/reference.xml index 3b2028e52b..77954c7822 100644 --- a/test-files/golden-tests/config/inherit-base-members/reference.xml +++ b/test-files/golden-tests/config/inherit-base-members/reference.xml @@ -49,6 +49,7 @@ base_base + public ABxWcxit2TyVLv16ZxoJKAc6LKw= @@ -81,6 +82,7 @@ function 2D7yc6q3buDhuPwzpn4pWzbu8ls= + public regular /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= @@ -124,6 +126,7 @@ function v0BroyWjs67MHzc1SyTlXrSxn8M= + public regular sk8HTAQHhzXfZej4IJliADonAJQ= @@ -167,6 +170,7 @@ function ECBBLxlaKar55qA0k1BCFn6MdH8= + public regular sk8HTAQHhzXfZej4IJliADonAJQ= @@ -210,6 +214,7 @@ function aYhSUMJkgCRo3AZmBb/rre04Ghg= + public regular sk8HTAQHhzXfZej4IJliADonAJQ= @@ -253,6 +258,7 @@ function MEPVWyGd8KdZFR1kBYlQMgPyQlo= + public regular /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= @@ -296,6 +302,7 @@ function TaKAQiDmx8UXkT9p/momqiOZyHU= + protected regular sk8HTAQHhzXfZej4IJliADonAJQ= @@ -339,6 +346,7 @@ function eHxe3z0iWUXdcNyXK0PD2+6DRbs= + protected regular sk8HTAQHhzXfZej4IJliADonAJQ= @@ -382,6 +390,7 @@ function KGOrnDVJV2nPDK1hlkvBm6diYXY= + protected regular sk8HTAQHhzXfZej4IJliADonAJQ= @@ -462,6 +471,7 @@ function 2D7yc6q3buDhuPwzpn4pWzbu8ls= + public regular /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= @@ -505,6 +515,7 @@ function MEPVWyGd8KdZFR1kBYlQMgPyQlo= + public regular /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= @@ -568,6 +579,7 @@ base + public @@ -577,6 +589,7 @@ excluded_base + public @@ -609,6 +622,7 @@ function 2D7yc6q3buDhuPwzpn4pWzbu8ls= + public regular /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= @@ -652,6 +666,7 @@ function v0BroyWjs67MHzc1SyTlXrSxn8M= + public regular sk8HTAQHhzXfZej4IJliADonAJQ= @@ -695,6 +710,7 @@ function ECBBLxlaKar55qA0k1BCFn6MdH8= + public regular sk8HTAQHhzXfZej4IJliADonAJQ= @@ -738,6 +754,7 @@ function MGQhB2O6ghdJWit6wao+PsH30Ew= + public regular ABxWcxit2TyVLv16ZxoJKAc6LKw= @@ -781,6 +798,7 @@ function MEPVWyGd8KdZFR1kBYlQMgPyQlo= + public regular /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= @@ -824,6 +842,7 @@ function rTSnS8Pv8GoWusQQE42y0pgN4cw= + public regular ABxWcxit2TyVLv16ZxoJKAc6LKw= @@ -867,6 +886,7 @@ function TaKAQiDmx8UXkT9p/momqiOZyHU= + protected regular sk8HTAQHhzXfZej4IJliADonAJQ= @@ -910,6 +930,7 @@ function eHxe3z0iWUXdcNyXK0PD2+6DRbs= + protected regular sk8HTAQHhzXfZej4IJliADonAJQ= @@ -953,6 +974,7 @@ function KGOrnDVJV2nPDK1hlkvBm6diYXY= + protected regular sk8HTAQHhzXfZej4IJliADonAJQ= @@ -1016,6 +1038,7 @@ base + private @@ -1025,6 +1048,7 @@ excluded_base + private @@ -1050,6 +1074,7 @@ function 9wqRoOH7cwNhkz5vwpTHLeb01BY= + public regular aiF6nWGZXbG8UfC75J5tNuoPMRc= @@ -1093,6 +1118,7 @@ function NJYWKnKWmizdaSr1ldC7FGh7fD0= + public regular aiF6nWGZXbG8UfC75J5tNuoPMRc= @@ -1156,6 +1182,7 @@ base + protected @@ -1165,6 +1192,7 @@ excluded_base + protected @@ -1198,6 +1226,7 @@ function oVVGDloOS5F7d4VIcKLc0YpnsiE= + public regular KpfFXd3FeSffU3rGswegSIkkCrM= @@ -1241,6 +1270,7 @@ function 4ZJznHda5QNdk/tsMca4Psswlj0= + public regular KpfFXd3FeSffU3rGswegSIkkCrM= @@ -1284,6 +1314,7 @@ function 2D7yc6q3buDhuPwzpn4pWzbu8ls= + public regular /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= @@ -1327,6 +1358,7 @@ function v0BroyWjs67MHzc1SyTlXrSxn8M= + public regular sk8HTAQHhzXfZej4IJliADonAJQ= @@ -1370,6 +1402,7 @@ function ECBBLxlaKar55qA0k1BCFn6MdH8= + public regular sk8HTAQHhzXfZej4IJliADonAJQ= @@ -1413,6 +1446,7 @@ function aYhSUMJkgCRo3AZmBb/rre04Ghg= + public regular sk8HTAQHhzXfZej4IJliADonAJQ= @@ -1456,6 +1490,7 @@ function MEPVWyGd8KdZFR1kBYlQMgPyQlo= + public regular /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= @@ -1499,6 +1534,7 @@ function TaKAQiDmx8UXkT9p/momqiOZyHU= + protected regular sk8HTAQHhzXfZej4IJliADonAJQ= @@ -1542,6 +1578,7 @@ function eHxe3z0iWUXdcNyXK0PD2+6DRbs= + protected regular sk8HTAQHhzXfZej4IJliADonAJQ= @@ -1585,6 +1622,7 @@ function KGOrnDVJV2nPDK1hlkvBm6diYXY= + protected regular sk8HTAQHhzXfZej4IJliADonAJQ= diff --git a/test-files/golden-tests/config/inherit-base-members/see-below-base.xml b/test-files/golden-tests/config/inherit-base-members/see-below-base.xml index 6d18156b69..49b5c6d8ec 100644 --- a/test-files/golden-tests/config/inherit-base-members/see-below-base.xml +++ b/test-files/golden-tests/config/inherit-base-members/see-below-base.xml @@ -83,6 +83,7 @@ + public @@ -108,6 +109,7 @@ function nOVGo4vrMcebHm4Ap0P9O3FPudg= + public regular 1 J1syoWzn2cGgGxt+fceKEo2Jpzc= @@ -141,6 +143,7 @@ function fm0dS2I7h8XX4MVUXEdDThuOKWg= + public regular J1syoWzn2cGgGxt+fceKEo2Jpzc= diff --git a/test-files/golden-tests/config/inherit-base-members/skip-special.xml b/test-files/golden-tests/config/inherit-base-members/skip-special.xml index 6f1e36c4b8..b20ba15423 100644 --- a/test-files/golden-tests/config/inherit-base-members/skip-special.xml +++ b/test-files/golden-tests/config/inherit-base-members/skip-special.xml @@ -39,6 +39,7 @@ base_base + public ABxWcxit2TyVLv16ZxoJKAc6LKw= @@ -73,6 +74,7 @@ function i32Wxo5FwAB92S9eyq4OmJr+PwE= + public regular sk8HTAQHhzXfZej4IJliADonAJQ= @@ -106,6 +108,7 @@ function zem/akJ/sAPS+vXkWB/zJ3kqYho= + public regular sk8HTAQHhzXfZej4IJliADonAJQ= @@ -139,6 +142,7 @@ function 2D7yc6q3buDhuPwzpn4pWzbu8ls= + public regular /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= @@ -175,6 +179,7 @@ function v0BroyWjs67MHzc1SyTlXrSxn8M= + public regular sk8HTAQHhzXfZej4IJliADonAJQ= @@ -211,6 +216,7 @@ function ECBBLxlaKar55qA0k1BCFn6MdH8= + public regular sk8HTAQHhzXfZej4IJliADonAJQ= @@ -247,6 +253,7 @@ function aYhSUMJkgCRo3AZmBb/rre04Ghg= + public regular sk8HTAQHhzXfZej4IJliADonAJQ= @@ -283,6 +290,7 @@ function MEPVWyGd8KdZFR1kBYlQMgPyQlo= + public regular /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= @@ -319,6 +327,7 @@ function TaKAQiDmx8UXkT9p/momqiOZyHU= + protected regular sk8HTAQHhzXfZej4IJliADonAJQ= @@ -355,6 +364,7 @@ function eHxe3z0iWUXdcNyXK0PD2+6DRbs= + protected regular sk8HTAQHhzXfZej4IJliADonAJQ= @@ -391,6 +401,7 @@ function KGOrnDVJV2nPDK1hlkvBm6diYXY= + protected regular sk8HTAQHhzXfZej4IJliADonAJQ= @@ -456,6 +467,7 @@ function 0hT5zKl+ugygmEuMXhib2MIZLpU= + public regular /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= @@ -489,6 +501,7 @@ function pXBvtV7fI6xpBYpqDE+uiFh8oQk= + public regular /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= @@ -522,6 +535,7 @@ function 2D7yc6q3buDhuPwzpn4pWzbu8ls= + public regular /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= @@ -558,6 +572,7 @@ function MEPVWyGd8KdZFR1kBYlQMgPyQlo= + public regular /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= @@ -604,6 +619,7 @@ base + public @@ -613,6 +629,7 @@ excluded_base + public @@ -650,6 +667,7 @@ function Mb8fERE5UxaDv4qmeuyT42BBof8= + public regular ABxWcxit2TyVLv16ZxoJKAc6LKw= @@ -683,6 +701,7 @@ function 6DgPvK2zzHe4kSaF/gWVBDdJ74U= + public regular ABxWcxit2TyVLv16ZxoJKAc6LKw= @@ -716,6 +735,7 @@ function 2D7yc6q3buDhuPwzpn4pWzbu8ls= + public regular /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= @@ -752,6 +772,7 @@ function v0BroyWjs67MHzc1SyTlXrSxn8M= + public regular sk8HTAQHhzXfZej4IJliADonAJQ= @@ -788,6 +809,7 @@ function ECBBLxlaKar55qA0k1BCFn6MdH8= + public regular sk8HTAQHhzXfZej4IJliADonAJQ= @@ -824,6 +846,7 @@ function MGQhB2O6ghdJWit6wao+PsH30Ew= + public regular ABxWcxit2TyVLv16ZxoJKAc6LKw= @@ -860,6 +883,7 @@ function MEPVWyGd8KdZFR1kBYlQMgPyQlo= + public regular /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= @@ -896,6 +920,7 @@ function rTSnS8Pv8GoWusQQE42y0pgN4cw= + public regular ABxWcxit2TyVLv16ZxoJKAc6LKw= @@ -932,6 +957,7 @@ function P1Eq799RJkNMSTci+0jy+ZejsyU= + public regular 1 ABxWcxit2TyVLv16ZxoJKAc6LKw= @@ -969,6 +995,7 @@ function TaKAQiDmx8UXkT9p/momqiOZyHU= + protected regular sk8HTAQHhzXfZej4IJliADonAJQ= @@ -1005,6 +1032,7 @@ function eHxe3z0iWUXdcNyXK0PD2+6DRbs= + protected regular sk8HTAQHhzXfZej4IJliADonAJQ= @@ -1041,6 +1069,7 @@ function KGOrnDVJV2nPDK1hlkvBm6diYXY= + protected regular sk8HTAQHhzXfZej4IJliADonAJQ= @@ -1077,6 +1106,7 @@ function oW3pQYXjjv2wrXIwIceF6Xd8nTA= + protected regular 1 ABxWcxit2TyVLv16ZxoJKAc6LKw= @@ -1114,6 +1144,7 @@ function IYnrJp6ur6C+AiuhFl5x1YPnxkM= + protected regular 1 ABxWcxit2TyVLv16ZxoJKAc6LKw= @@ -1161,6 +1192,7 @@ base + private @@ -1170,6 +1202,7 @@ excluded_base + private @@ -1197,6 +1230,7 @@ function jCqo+0V7MK+reBG7J4tBA/8VGiI= + public regular aiF6nWGZXbG8UfC75J5tNuoPMRc= @@ -1230,6 +1264,7 @@ function v41bk6Gd1CiDPZueTqvYeEM6DqU= + public regular aiF6nWGZXbG8UfC75J5tNuoPMRc= @@ -1263,6 +1298,7 @@ function 9wqRoOH7cwNhkz5vwpTHLeb01BY= + public regular aiF6nWGZXbG8UfC75J5tNuoPMRc= @@ -1299,6 +1335,7 @@ function NJYWKnKWmizdaSr1ldC7FGh7fD0= + public regular aiF6nWGZXbG8UfC75J5tNuoPMRc= @@ -1355,6 +1392,7 @@ base + protected @@ -1364,6 +1402,7 @@ excluded_base + protected @@ -1402,6 +1441,7 @@ function P0+PNfj+C0MyzTnJ6ITq8JvjciM= + public regular KpfFXd3FeSffU3rGswegSIkkCrM= @@ -1435,6 +1475,7 @@ function dhUWdRyTi/gQAcf2yVfnV5Jf1sg= + public regular KpfFXd3FeSffU3rGswegSIkkCrM= @@ -1468,6 +1509,7 @@ function oVVGDloOS5F7d4VIcKLc0YpnsiE= + public regular KpfFXd3FeSffU3rGswegSIkkCrM= @@ -1511,6 +1553,7 @@ function 4ZJznHda5QNdk/tsMca4Psswlj0= + public regular KpfFXd3FeSffU3rGswegSIkkCrM= @@ -1554,6 +1597,7 @@ function 2D7yc6q3buDhuPwzpn4pWzbu8ls= + public regular /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= @@ -1590,6 +1634,7 @@ function v0BroyWjs67MHzc1SyTlXrSxn8M= + public regular sk8HTAQHhzXfZej4IJliADonAJQ= @@ -1626,6 +1671,7 @@ function ECBBLxlaKar55qA0k1BCFn6MdH8= + public regular sk8HTAQHhzXfZej4IJliADonAJQ= @@ -1662,6 +1708,7 @@ function aYhSUMJkgCRo3AZmBb/rre04Ghg= + public regular sk8HTAQHhzXfZej4IJliADonAJQ= @@ -1698,6 +1745,7 @@ function MEPVWyGd8KdZFR1kBYlQMgPyQlo= + public regular /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= @@ -1734,6 +1782,7 @@ function TaKAQiDmx8UXkT9p/momqiOZyHU= + protected regular sk8HTAQHhzXfZej4IJliADonAJQ= @@ -1770,6 +1819,7 @@ function eHxe3z0iWUXdcNyXK0PD2+6DRbs= + protected regular sk8HTAQHhzXfZej4IJliADonAJQ= @@ -1806,6 +1856,7 @@ function KGOrnDVJV2nPDK1hlkvBm6diYXY= + protected regular sk8HTAQHhzXfZej4IJliADonAJQ= @@ -1842,6 +1893,7 @@ function KdkXQxu2xOfAXegJgCMmLcFq8MM= + protected regular 1 KpfFXd3FeSffU3rGswegSIkkCrM= @@ -1879,6 +1931,7 @@ function UysvazUbtV39Omg33c9Me+Gri/M= + protected regular 1 KpfFXd3FeSffU3rGswegSIkkCrM= @@ -1916,6 +1969,7 @@ function H8wEIL8+8s3iNqadfPsH1HWRQU4= + public regular 1 KpfFXd3FeSffU3rGswegSIkkCrM= diff --git a/test-files/golden-tests/config/inherit-base-members/template-base.xml b/test-files/golden-tests/config/inherit-base-members/template-base.xml index 8d1d4b0835..9300d58888 100644 --- a/test-files/golden-tests/config/inherit-base-members/template-base.xml +++ b/test-files/golden-tests/config/inherit-base-members/template-base.xml @@ -72,6 +72,7 @@ function POYVSjIb9yYJwMJ0idlrE7qVb8s= + public regular ZLNgZaGs9JV18Yo8wi3pzzp4vfE= @@ -107,6 +108,7 @@ function Jykv51AJ/2ySE5tqs91b5BH4PR0= + public regular ZLNgZaGs9JV18Yo8wi3pzzp4vfE= @@ -179,6 +181,7 @@ base + public @@ -203,6 +206,7 @@ function 9X0U5wi8aI04GBZwYXOMit+BPNs= + public regular 1 qSoIJ38D4p+grUCWP6X5kItp3a8= @@ -229,6 +233,7 @@ function fJuJ+E/X6B4WdSCqYQX0onTsvhs= + public regular 1 qSoIJ38D4p+grUCWP6X5kItp3a8= @@ -303,6 +308,7 @@ base + public @@ -328,6 +334,7 @@ function w8SzajsNCB5ck0YpsMvHduC9g1E= + public regular 1 VmATJ/H4380dpA0mtYd7uf/hcZA= @@ -364,6 +371,7 @@ function vt7li1a/kZQyCXxHvrdak2VBJQw= + public regular 1 VmATJ/H4380dpA0mtYd7uf/hcZA= diff --git a/test-files/golden-tests/config/legible-names/constructor.xml b/test-files/golden-tests/config/legible-names/constructor.xml index d8cbc77f82..b0cd448faa 100644 --- a/test-files/golden-tests/config/legible-names/constructor.xml +++ b/test-files/golden-tests/config/legible-names/constructor.xml @@ -72,6 +72,7 @@ overloads iRe6Tyv0qU6vIHNyvLHuISP/Fw4= + public regular ynx5NXMLXqzSXwgOnIP6CHzNx14= @@ -108,6 +109,7 @@ function 6Jx2eK9l4C46QIRucTvox+6PH2k= + public regular ynx5NXMLXqzSXwgOnIP6CHzNx14= @@ -140,6 +142,7 @@ function 4C2UEs8la3Eghf4mLyeViCJNOwY= + public regular ynx5NXMLXqzSXwgOnIP6CHzNx14= @@ -193,6 +196,7 @@ function ad/AzbLEE6b8dNnnX2OLy1+HxDQ= + public regular ynx5NXMLXqzSXwgOnIP6CHzNx14= @@ -245,6 +249,7 @@ function bzCqmNJXWfd3zGOkytPkJL6K6VQ= + public regular ynx5NXMLXqzSXwgOnIP6CHzNx14= @@ -301,6 +306,7 @@ function d9h3reyOyp3JT3kwQOTPOI9tmzg= + public regular ynx5NXMLXqzSXwgOnIP6CHzNx14= diff --git a/test-files/golden-tests/config/overloads/const-mutable.xml b/test-files/golden-tests/config/overloads/const-mutable.xml index 8536f9cd89..933224b4ce 100644 --- a/test-files/golden-tests/config/overloads/const-mutable.xml +++ b/test-files/golden-tests/config/overloads/const-mutable.xml @@ -54,6 +54,7 @@ overloads 4/AwllBtll8FuW0tFA3cMUpR8Sg= + public regular BrX2oZup9qgy4SfJloKCuUYZshA= normal @@ -80,6 +81,7 @@ function umtiZdZUSDxw3juVm+S7M40tpXQ= + public regular BrX2oZup9qgy4SfJloKCuUYZshA= @@ -105,6 +107,7 @@ function c8FMK37zKpqJXH2ZioM0tYziY1g= + public regular BrX2oZup9qgy4SfJloKCuUYZshA= diff --git a/test-files/golden-tests/config/overloads/visibility.xml b/test-files/golden-tests/config/overloads/visibility.xml index 90339a7e98..aa484cb4d8 100644 --- a/test-files/golden-tests/config/overloads/visibility.xml +++ b/test-files/golden-tests/config/overloads/visibility.xml @@ -57,6 +57,7 @@ overloads 4/AwllBtll8FuW0tFA3cMUpR8Sg= + public regular BrX2oZup9qgy4SfJloKCuUYZshA= normal @@ -81,6 +82,7 @@ function umtiZdZUSDxw3juVm+S7M40tpXQ= + public regular BrX2oZup9qgy4SfJloKCuUYZshA= @@ -104,6 +106,7 @@ function ZlzGLjjc8rseQAYYNLgCZvhC28g= + public regular BrX2oZup9qgy4SfJloKCuUYZshA= @@ -141,6 +144,7 @@ overloads NcMo7ffWjuFftsr66BskEGEgREc= + public regular BrX2oZup9qgy4SfJloKCuUYZshA= normal @@ -165,6 +169,7 @@ function /FdiOdEzqaZeg+AJKJir7X+Te/U= + public regular BrX2oZup9qgy4SfJloKCuUYZshA= @@ -182,6 +187,7 @@ normal + static 1 @@ -196,6 +202,7 @@ function UNX9B8tS+5rPg6IDVPCp65KU9K8= + public regular BrX2oZup9qgy4SfJloKCuUYZshA= @@ -221,6 +228,7 @@ normal + static 1 @@ -241,6 +249,7 @@ overloads TMteh8/S1VX9JEEHtJWh5Th1uZg= + protected regular BrX2oZup9qgy4SfJloKCuUYZshA= normal @@ -265,6 +274,7 @@ function o2jTMMUUPQBbGJOrh0qwurUTaTc= + protected regular BrX2oZup9qgy4SfJloKCuUYZshA= @@ -304,6 +314,7 @@ function xtm3DYSrIA4dEog7ntDc3s6rKHs= + protected regular BrX2oZup9qgy4SfJloKCuUYZshA= @@ -357,6 +368,7 @@ overloads SO7h8EG4J1fko32lzeE1EufNKsY= + protected regular BrX2oZup9qgy4SfJloKCuUYZshA= normal @@ -381,6 +393,7 @@ function B3IB3WYPg106i0ziVCj3FHkRNAE= + protected regular BrX2oZup9qgy4SfJloKCuUYZshA= @@ -414,6 +427,7 @@ normal + static 1 @@ -428,6 +442,7 @@ function 9QPd0C7ERvmPWPhi4ucPT1LXybM= + protected regular BrX2oZup9qgy4SfJloKCuUYZshA= @@ -469,6 +484,7 @@ normal + static 1 diff --git a/test-files/golden-tests/config/sort-members-by/sort-members-by-location.xml b/test-files/golden-tests/config/sort-members-by/sort-members-by-location.xml index df94dcadf6..2a69c2beb0 100644 --- a/test-files/golden-tests/config/sort-members-by/sort-members-by-location.xml +++ b/test-files/golden-tests/config/sort-members-by/sort-members-by-location.xml @@ -62,6 +62,7 @@ overloads Cnsc4OfzqGbrnICr/PmPGh6bkZc= + public regular NQ8uQgTcafPcttyBMHHLHAXA4MA= @@ -95,6 +96,7 @@ function aQWtFVa4Xa+eceLXiLW74q44JRk= + public regular NQ8uQgTcafPcttyBMHHLHAXA4MA= @@ -151,6 +153,7 @@ function WltomC+2IcmzMN0COGL0OWWmbZk= + public regular NQ8uQgTcafPcttyBMHHLHAXA4MA= @@ -183,6 +186,7 @@ function HMG56OCQ5OpB2E9hu4bG3/hoOho= + public regular NQ8uQgTcafPcttyBMHHLHAXA4MA= @@ -215,6 +219,7 @@ function lBA1besl9J3wAZAcEn9C+K05hf4= + public regular NQ8uQgTcafPcttyBMHHLHAXA4MA= @@ -239,6 +244,7 @@ function gRx0djRTyQ5zuzBd9ujP7LLlWNg= + public regular NQ8uQgTcafPcttyBMHHLHAXA4MA= @@ -263,6 +269,7 @@ function zQ0DYAZMF+xhfbo8hUyqZRNKJ+U= + public regular NQ8uQgTcafPcttyBMHHLHAXA4MA= @@ -317,6 +324,7 @@ function rjPdhFxUkaC43tWXi+kka78JQxI= + public regular NQ8uQgTcafPcttyBMHHLHAXA4MA= @@ -375,6 +383,7 @@ function atwUGLD+QHVhH3x1+8qzINNxzMY= + public regular NQ8uQgTcafPcttyBMHHLHAXA4MA= @@ -454,6 +463,7 @@ function CB0pXrzU8BKZ2LF0BSpclxIfgrs= + public regular NQ8uQgTcafPcttyBMHHLHAXA4MA= @@ -533,6 +543,7 @@ function 6/NYLeQdPqWrbu5kHnTpE3u6Yg4= + public regular NQ8uQgTcafPcttyBMHHLHAXA4MA= diff --git a/test-files/golden-tests/config/sort-members-by/sort-members-by-name.xml b/test-files/golden-tests/config/sort-members-by/sort-members-by-name.xml index b2146c68cd..1c3f56c83e 100644 --- a/test-files/golden-tests/config/sort-members-by/sort-members-by-name.xml +++ b/test-files/golden-tests/config/sort-members-by/sort-members-by-name.xml @@ -62,6 +62,7 @@ overloads Cnsc4OfzqGbrnICr/PmPGh6bkZc= + public regular NQ8uQgTcafPcttyBMHHLHAXA4MA= @@ -95,6 +96,7 @@ function WltomC+2IcmzMN0COGL0OWWmbZk= + public regular NQ8uQgTcafPcttyBMHHLHAXA4MA= @@ -127,6 +129,7 @@ function aQWtFVa4Xa+eceLXiLW74q44JRk= + public regular NQ8uQgTcafPcttyBMHHLHAXA4MA= @@ -183,6 +186,7 @@ function HMG56OCQ5OpB2E9hu4bG3/hoOho= + public regular NQ8uQgTcafPcttyBMHHLHAXA4MA= @@ -215,6 +219,7 @@ function gRx0djRTyQ5zuzBd9ujP7LLlWNg= + public regular NQ8uQgTcafPcttyBMHHLHAXA4MA= @@ -239,6 +244,7 @@ function lBA1besl9J3wAZAcEn9C+K05hf4= + public regular NQ8uQgTcafPcttyBMHHLHAXA4MA= @@ -263,6 +269,7 @@ function zQ0DYAZMF+xhfbo8hUyqZRNKJ+U= + public regular NQ8uQgTcafPcttyBMHHLHAXA4MA= @@ -317,6 +324,7 @@ function rjPdhFxUkaC43tWXi+kka78JQxI= + public regular NQ8uQgTcafPcttyBMHHLHAXA4MA= @@ -375,6 +383,7 @@ function atwUGLD+QHVhH3x1+8qzINNxzMY= + public regular NQ8uQgTcafPcttyBMHHLHAXA4MA= @@ -454,6 +463,7 @@ function CB0pXrzU8BKZ2LF0BSpclxIfgrs= + public regular NQ8uQgTcafPcttyBMHHLHAXA4MA= @@ -533,6 +543,7 @@ function 6/NYLeQdPqWrbu5kHnTpE3u6Yg4= + public regular NQ8uQgTcafPcttyBMHHLHAXA4MA= diff --git a/test-files/golden-tests/filters/symbol-name/excluded-base-class.xml b/test-files/golden-tests/filters/symbol-name/excluded-base-class.xml index c14bf55a2f..03012df967 100644 --- a/test-files/golden-tests/filters/symbol-name/excluded-base-class.xml +++ b/test-files/golden-tests/filters/symbol-name/excluded-base-class.xml @@ -59,6 +59,7 @@ + public @@ -85,6 +86,7 @@ function BcIYmKdVh0f6TsMPCA/M0Cmr9VI= + public regular 1 /TldxA72JGXtufh5RbJgxLW2mwU= @@ -109,6 +111,7 @@ function o+85JO3Sv4bIWiG3+bfyUw5gJWI= + public regular /TldxA72JGXtufh5RbJgxLW2mwU= @@ -134,6 +137,7 @@ function NiHV825xQJhfQDhKCeAex3UuHGY= + public regular /TldxA72JGXtufh5RbJgxLW2mwU= @@ -159,6 +163,7 @@ function d5/JtPJCrP6OG8ToxUKNR5xqJ4I= + public regular /TldxA72JGXtufh5RbJgxLW2mwU= @@ -198,6 +203,7 @@ + public @@ -224,6 +230,7 @@ function e7VYD0d5BKg0c6yEn8zt92t304s= + public regular 1 ejPqzkotYMoiJcYkJf0fmJ0UNFM= @@ -248,6 +255,7 @@ function JgPp0cAF/suYYKB1RQalvRP+hjk= + public regular 1 ejPqzkotYMoiJcYkJf0fmJ0UNFM= @@ -274,6 +282,7 @@ function KiY+7o+uUp3h7bndNOpI2AuCrAE= + public regular ejPqzkotYMoiJcYkJf0fmJ0UNFM= @@ -299,6 +308,7 @@ function 0wO8aZwuOLvF7/RooHUZJ5SyKzk= + public regular ejPqzkotYMoiJcYkJf0fmJ0UNFM= diff --git a/test-files/golden-tests/filters/symbol-name/extraction-mode.xml b/test-files/golden-tests/filters/symbol-name/extraction-mode.xml index e728175f12..32e6ebcc99 100644 --- a/test-files/golden-tests/filters/symbol-name/extraction-mode.xml +++ b/test-files/golden-tests/filters/symbol-name/extraction-mode.xml @@ -194,6 +194,7 @@ record HIH1h4hOIdF5+btaX+gwmErtATY= + public regular uwCvFwfbmTvoEwwfxdL9EV+P8/c= @@ -229,6 +230,7 @@ record ZZiAG+2jvp211xfxhzPQi3p+JQU= + public regular HIH1h4hOIdF5+btaX+gwmErtATY= @@ -959,6 +961,7 @@ record bCLHAM9lOQrXlNa5dlpbk5UpW2k= + public regular cw0xJkxH12xMAqMkCi84zr2R6nQ= @@ -994,6 +997,7 @@ record cF5hGQlXVxQ9lU9qT768m47j5fE= + public regular bCLHAM9lOQrXlNa5dlpbk5UpW2k= diff --git a/test-files/golden-tests/filters/symbol-name/whitelist_0.xml b/test-files/golden-tests/filters/symbol-name/whitelist_0.xml index 8d7e3fea1a..06cb754d9b 100644 --- a/test-files/golden-tests/filters/symbol-name/whitelist_0.xml +++ b/test-files/golden-tests/filters/symbol-name/whitelist_0.xml @@ -584,6 +584,7 @@ record WRUY2j3O9l2Pd1qDymu1ksSw07c= + public regular BrX2oZup9qgy4SfJloKCuUYZshA= @@ -626,6 +627,7 @@ function /QkJ00FbaOOH1IQKxpOPbklxM0c= + public regular WRUY2j3O9l2Pd1qDymu1ksSw07c= @@ -666,6 +668,7 @@ function vL6CN4hW4T9Ah0GmoIu9Hx4iaPo= + public regular BrX2oZup9qgy4SfJloKCuUYZshA= diff --git a/test-files/golden-tests/javadoc/brief/brief-3.xml b/test-files/golden-tests/javadoc/brief/brief-3.xml index 32485ecf07..028a0ce920 100644 --- a/test-files/golden-tests/javadoc/brief/brief-3.xml +++ b/test-files/golden-tests/javadoc/brief/brief-3.xml @@ -8,7 +8,7 @@ //////////////////////////8= regular - x0B55dWJmTMqTXm6ZEu790gmPxY= + GDxqxKc4bkmO2HKXdEn9Zgy37O8= @@ -44,7 +44,7 @@ overloads - x0B55dWJmTMqTXm6ZEu790gmPxY= + GDxqxKc4bkmO2HKXdEn9Zgy37O8= regular //////////////////////////8= diff --git a/test-files/golden-tests/javadoc/copydoc/conversion.xml b/test-files/golden-tests/javadoc/copydoc/conversion.xml index 1e0142412f..d071a70682 100644 --- a/test-files/golden-tests/javadoc/copydoc/conversion.xml +++ b/test-files/golden-tests/javadoc/copydoc/conversion.xml @@ -60,6 +60,7 @@ overloads TBURMVj9++7bBh2sg4BgMGmdMP4= + public regular YrPSaKAbmXgzCAX5WByx4eVoqBM= @@ -112,6 +113,7 @@ function gnscUVeCG+RVOHYPi/rKmD4KT3k= + public regular YrPSaKAbmXgzCAX5WByx4eVoqBM= @@ -176,6 +178,7 @@ function CGrNRU4S73WU6e3HjSzK2ehtLi0= + public regular YrPSaKAbmXgzCAX5WByx4eVoqBM= @@ -241,6 +244,7 @@ function KpKT2IPgl8pNnQdWRqrAmcPRtV0= + public regular YrPSaKAbmXgzCAX5WByx4eVoqBM= @@ -283,6 +287,7 @@ function DKM26GOkLsGMoiNoOqDVjK/yk6A= + public regular YrPSaKAbmXgzCAX5WByx4eVoqBM= diff --git a/test-files/golden-tests/javadoc/copydoc/decay-params.xml b/test-files/golden-tests/javadoc/copydoc/decay-params.xml index 08ccc14115..c45af03630 100644 --- a/test-files/golden-tests/javadoc/copydoc/decay-params.xml +++ b/test-files/golden-tests/javadoc/copydoc/decay-params.xml @@ -9,7 +9,7 @@ regular mHoykrvnCPrloD8rIG6+dIga8dM= - IPZj2cmKd30EV/ztyuacllbdZcg= + pcjPlb94+CIWLp/GqtdwNH0kKCY= @@ -84,6 +84,7 @@ a normal + constexpr foo @@ -111,7 +112,7 @@ overloads - IPZj2cmKd30EV/ztyuacllbdZcg= + pcjPlb94+CIWLp/GqtdwNH0kKCY= regular //////////////////////////8= @@ -332,5 +333,6 @@ a normal + constexpr diff --git a/test-files/golden-tests/javadoc/copydoc/fundamental.xml b/test-files/golden-tests/javadoc/copydoc/fundamental.xml index 66db07fb9b..ed15384ead 100644 --- a/test-files/golden-tests/javadoc/copydoc/fundamental.xml +++ b/test-files/golden-tests/javadoc/copydoc/fundamental.xml @@ -8,7 +8,7 @@ //////////////////////////8= regular - x0B55dWJmTMqTXm6ZEu790gmPxY= + GDxqxKc4bkmO2HKXdEn9Zgy37O8= YeUN6nJ9c4mQKDbDWPlXFODDK1Y= AF4Au7CviDbKZx+hVBlelmlAwJ0= @@ -32,7 +32,7 @@ overloads - x0B55dWJmTMqTXm6ZEu790gmPxY= + GDxqxKc4bkmO2HKXdEn9Zgy37O8= regular //////////////////////////8= diff --git a/test-files/golden-tests/javadoc/copydoc/no-param.xml b/test-files/golden-tests/javadoc/copydoc/no-param.xml index de06d32f8c..1d5af907d5 100644 --- a/test-files/golden-tests/javadoc/copydoc/no-param.xml +++ b/test-files/golden-tests/javadoc/copydoc/no-param.xml @@ -10,7 +10,7 @@ w/4YwvbadDuW7Jcd/fzixfCXP54= 3y+Rt2TVgN8SW9EozffoZoL4lCI= - IPZj2cmKd30EV/ztyuacllbdZcg= + pcjPlb94+CIWLp/GqtdwNH0kKCY= @@ -73,6 +73,7 @@ normal + constexpr copyfromOverloads @@ -127,6 +128,7 @@ normal + constexpr foo @@ -147,7 +149,7 @@ overloads - IPZj2cmKd30EV/ztyuacllbdZcg= + pcjPlb94+CIWLp/GqtdwNH0kKCY= regular //////////////////////////8= @@ -243,6 +245,7 @@ normal + constexpr foo @@ -314,5 +317,6 @@ ch normal + constexpr diff --git a/test-files/golden-tests/javadoc/copydoc/operator-param.xml b/test-files/golden-tests/javadoc/copydoc/operator-param.xml index eab467ca8a..8d00b43908 100644 --- a/test-files/golden-tests/javadoc/copydoc/operator-param.xml +++ b/test-files/golden-tests/javadoc/copydoc/operator-param.xml @@ -56,6 +56,7 @@ overloads iwz19PoDb0ZmejgAK2mR0j19c9I= + public regular YrPSaKAbmXgzCAX5WByx4eVoqBM= @@ -106,6 +107,7 @@ function +yVVNLbCaXDXfZPFoKE5xv2xPZQ= + public regular YrPSaKAbmXgzCAX5WByx4eVoqBM= @@ -156,6 +158,7 @@ ch normal + constexpr 1 1 @@ -172,6 +175,7 @@ function tslXb2aqh8tYThe+A16a9felw5M= + public regular YrPSaKAbmXgzCAX5WByx4eVoqBM= @@ -221,6 +225,7 @@ ch normal + constexpr 1 1 diff --git a/test-files/golden-tests/javadoc/copydoc/param-types.xml b/test-files/golden-tests/javadoc/copydoc/param-types.xml index f63c1e6365..af30f307b0 100644 --- a/test-files/golden-tests/javadoc/copydoc/param-types.xml +++ b/test-files/golden-tests/javadoc/copydoc/param-types.xml @@ -12,8 +12,8 @@ YrPSaKAbmXgzCAX5WByx4eVoqBM= 5uZOiQm8Wn76QPmEs/Kkcw4y7Uc= pUJEk/x997P8q+ILVKlwge3u5Ag= - x0B55dWJmTMqTXm6ZEu790gmPxY= - 9JfSlZfEThLXiWTez3b8eT/AbZU= + GDxqxKc4bkmO2HKXdEn9Zgy37O8= + yrBu1PLNI6d+uEC9ml1Q/9KAt4o= @@ -165,6 +165,7 @@ function ZtNDo4tS35tJKrXxGM1LJZVrCwA= + public regular YrPSaKAbmXgzCAX5WByx4eVoqBM= @@ -242,6 +243,7 @@ function c2hExG7/ditEkntdYONY88sivsA= + public regular YrPSaKAbmXgzCAX5WByx4eVoqBM= @@ -495,7 +497,7 @@ overloads - x0B55dWJmTMqTXm6ZEu790gmPxY= + GDxqxKc4bkmO2HKXdEn9Zgy37O8= regular //////////////////////////8= @@ -1362,7 +1364,7 @@ overloads - 9JfSlZfEThLXiWTez3b8eT/AbZU= + yrBu1PLNI6d+uEC9ml1Q/9KAt4o= regular //////////////////////////8= diff --git a/test-files/golden-tests/javadoc/copydoc/qualified.xml b/test-files/golden-tests/javadoc/copydoc/qualified.xml index fc8060380a..3458b10289 100644 --- a/test-files/golden-tests/javadoc/copydoc/qualified.xml +++ b/test-files/golden-tests/javadoc/copydoc/qualified.xml @@ -70,6 +70,7 @@ record xp72Inw+cnb6GxbVsJgjH7TkgII= + public regular xFab/Y8fwS0B1mPatfT5Qz3HpRI= struct @@ -144,6 +145,7 @@ overloads VwIx9C7xzurmuUedpdVgpyfl23w= + public regular xFab/Y8fwS0B1mPatfT5Qz3HpRI= @@ -193,6 +195,7 @@ function pUFM90f8kBr9AsLuseHTO2tsfaM= + public regular xFab/Y8fwS0B1mPatfT5Qz3HpRI= @@ -252,6 +255,7 @@ function sdXtSkU3z9AnRNxz51/MgSpAzhc= + public regular xFab/Y8fwS0B1mPatfT5Qz3HpRI= @@ -311,6 +315,7 @@ function 6IcyV8zPUVI0rQ9Cb7I4fWxuKOw= + public regular xFab/Y8fwS0B1mPatfT5Qz3HpRI= @@ -370,6 +375,7 @@ function D9aUerVEX7T3i7vZrYEez8hDwJQ= + public regular xFab/Y8fwS0B1mPatfT5Qz3HpRI= @@ -429,6 +435,7 @@ function LPZyZzCf0L+0jI1iS+qmDhm0/KM= + public regular xFab/Y8fwS0B1mPatfT5Qz3HpRI= @@ -488,6 +495,7 @@ function ku9bOec7VX6p5+pyDlhlgll7QfY= + public regular xFab/Y8fwS0B1mPatfT5Qz3HpRI= @@ -547,6 +555,7 @@ function l8nlq2W8r0sGfJplanVYEUfvO8o= + public regular xFab/Y8fwS0B1mPatfT5Qz3HpRI= @@ -606,6 +615,7 @@ function c8O1q40UylpJzj8XWv17OnPP6Ow= + public regular xFab/Y8fwS0B1mPatfT5Qz3HpRI= @@ -672,6 +682,7 @@ overloads buGkrq4c7sN9WxxEp57nMvk43N0= + public regular xFab/Y8fwS0B1mPatfT5Qz3HpRI= @@ -721,6 +732,7 @@ function pkByPldRuMDs8h9fkQnHTrf/rxM= + public regular xFab/Y8fwS0B1mPatfT5Qz3HpRI= @@ -779,6 +791,7 @@ function bDQUNJ3SHpCjwF8zCqo7Jw8Cjic= + public regular xFab/Y8fwS0B1mPatfT5Qz3HpRI= @@ -843,6 +856,7 @@ overloads XzuysJJQNENYd3Lg4r+yuMp2bnw= + public regular xFab/Y8fwS0B1mPatfT5Qz3HpRI= @@ -892,6 +906,7 @@ function 8LU2TGwTCTeuAKkMvJpmvMdlTeE= + public regular xFab/Y8fwS0B1mPatfT5Qz3HpRI= @@ -960,6 +975,7 @@ function aEsACCmKRAV5MPYavFglHXgugn0= + public regular xFab/Y8fwS0B1mPatfT5Qz3HpRI= diff --git a/test-files/golden-tests/javadoc/copydoc/qualifiers.xml b/test-files/golden-tests/javadoc/copydoc/qualifiers.xml index 32f600f9df..a3b85dc98b 100644 --- a/test-files/golden-tests/javadoc/copydoc/qualifiers.xml +++ b/test-files/golden-tests/javadoc/copydoc/qualifiers.xml @@ -54,6 +54,7 @@ record mHefDbLazHBw57+qAsFRfF7H528= + public regular YrPSaKAbmXgzCAX5WByx4eVoqBM= class @@ -78,6 +79,7 @@ record js4a2N+AFdpGVqiwDoP6CRe5qnw= + public regular YrPSaKAbmXgzCAX5WByx4eVoqBM= class @@ -110,6 +112,7 @@ overloads MmuFIkmRn2CIRDHWFph0P7qxq6s= + public regular YrPSaKAbmXgzCAX5WByx4eVoqBM= @@ -161,6 +164,7 @@ function bHIVx85/epfX445qui1ES+eXxAE= + public regular YrPSaKAbmXgzCAX5WByx4eVoqBM= @@ -209,6 +213,7 @@ function wdqJSwTs1MoRjomfd+M0f99GpL0= + public regular YrPSaKAbmXgzCAX5WByx4eVoqBM= @@ -258,6 +263,7 @@ function nrGLN7FWjL9EkildFya4MufPTi8= + public regular YrPSaKAbmXgzCAX5WByx4eVoqBM= @@ -308,6 +314,7 @@ function up/n+NenUj2VFy/iJnzCQL2/j3E= + public regular YrPSaKAbmXgzCAX5WByx4eVoqBM= @@ -374,6 +381,7 @@ overloads X2obKmJv3pBU/lvZ6h+2rPfxXow= + public regular YrPSaKAbmXgzCAX5WByx4eVoqBM= @@ -420,6 +428,7 @@ function UdqSOVfju1IlXGfdLPp3gwh4bQo= + public regular YrPSaKAbmXgzCAX5WByx4eVoqBM= @@ -463,6 +472,7 @@ function 51kEb0dyrnHV5CD4f0ndIecmNig= + public regular YrPSaKAbmXgzCAX5WByx4eVoqBM= @@ -506,6 +516,7 @@ function RPHQosc2m05tKyyFkpodac2CBUU= + public regular YrPSaKAbmXgzCAX5WByx4eVoqBM= @@ -551,6 +562,7 @@ function eQB30nnNgju4ULQ5w/fxpDFoRmI= + public regular YrPSaKAbmXgzCAX5WByx4eVoqBM= @@ -596,6 +608,7 @@ function 6KwEPWneBuFYEn0I8T3yYt0yN+k= + public regular YrPSaKAbmXgzCAX5WByx4eVoqBM= diff --git a/test-files/golden-tests/javadoc/function-object/function-object.xml b/test-files/golden-tests/javadoc/function-object/function-object.xml index 8743a5e992..6870ea992d 100644 --- a/test-files/golden-tests/javadoc/function-object/function-object.xml +++ b/test-files/golden-tests/javadoc/function-object/function-object.xml @@ -66,6 +66,7 @@ function SJcq0OY0c+Sn2qeErP31YsnigRE= + public implementation-defined DBR3jN3uyfnI20zmAUSKJdd5czg= @@ -142,6 +143,7 @@ function WetcQwZF2HLFqHvCelvdZkd3uKw= + public implementation-defined wkfZ7hBp72uNy/H08ouKSfh83xw= @@ -226,6 +228,7 @@ function dPBhh3IXC4bo1W1R+KW7DKUhWXc= + public implementation-defined btOmu4Wi+12LN0yOtwktdItL6TI= @@ -263,6 +266,7 @@ function yzemSe6FSS2yygjwWU0fDjnApag= + public implementation-defined btOmu4Wi+12LN0yOtwktdItL6TI= @@ -329,6 +333,7 @@ function ADXCgWvBcGrBZsanaYhrkqsGrm0= + public implementation-defined 8MtMw2t61OoqkEmw6hklgOf9YUY= diff --git a/test-files/golden-tests/javadoc/inline/styled.xml b/test-files/golden-tests/javadoc/inline/styled.xml index 5bcbba48f2..3cfdc9d4ef 100644 --- a/test-files/golden-tests/javadoc/inline/styled.xml +++ b/test-files/golden-tests/javadoc/inline/styled.xml @@ -106,6 +106,7 @@ function CKPqawUTt6FNIN9qEFTMcdnvPkI= + public regular YrPSaKAbmXgzCAX5WByx4eVoqBM= diff --git a/test-files/golden-tests/javadoc/param/param-1.xml b/test-files/golden-tests/javadoc/param/param-1.xml index 2c5da8d5e7..22fb52bc73 100644 --- a/test-files/golden-tests/javadoc/param/param-1.xml +++ b/test-files/golden-tests/javadoc/param/param-1.xml @@ -80,6 +80,7 @@ int i + in @@ -122,6 +123,7 @@ int i + out @@ -166,6 +168,7 @@ int i + inout diff --git a/test-files/golden-tests/javadoc/param/param-direction.xml b/test-files/golden-tests/javadoc/param/param-direction.xml index 1f2c003193..46df07731b 100644 --- a/test-files/golden-tests/javadoc/param/param-direction.xml +++ b/test-files/golden-tests/javadoc/param/param-direction.xml @@ -114,6 +114,7 @@ y1 + in @@ -187,6 +188,7 @@ y2 + out @@ -245,6 +247,7 @@ x3 + in param @@ -260,6 +263,7 @@ y3 + out @@ -333,6 +337,7 @@ y4 + inout @@ -391,6 +396,7 @@ x5 + out param @@ -406,6 +412,7 @@ y5 + in param @@ -488,6 +495,7 @@ x6 + out param @@ -518,6 +526,7 @@ z6 + in @@ -600,6 +609,7 @@ x7 + in param @@ -615,6 +625,7 @@ y7 + out @@ -680,6 +691,7 @@ x8 + in @@ -736,6 +748,7 @@ x9 + in param @@ -751,6 +764,7 @@ x9 + out diff --git a/test-files/golden-tests/javadoc/ref/parent_context.xml b/test-files/golden-tests/javadoc/ref/parent_context.xml index 50e41756f5..274d4308ac 100644 --- a/test-files/golden-tests/javadoc/ref/parent_context.xml +++ b/test-files/golden-tests/javadoc/ref/parent_context.xml @@ -45,7 +45,7 @@ +jO0pmMB/RXahxtatVUYoEwUKWs= iyqzr2bAIIz4tcVOh2wjYTkCOC0= - RgmcrbKVGmXz6c3Lxk0nacbfXkg= + hR1icsm+sLZATXeAwQs0Rg3Bgbc= @@ -109,7 +109,7 @@ reference final_virtual_ptr - RgmcrbKVGmXz6c3Lxk0nacbfXkg= + hR1icsm+sLZATXeAwQs0Rg3Bgbc= @@ -147,7 +147,7 @@ overloads - RgmcrbKVGmXz6c3Lxk0nacbfXkg= + hR1icsm+sLZATXeAwQs0Rg3Bgbc= regular 8vOLQN1FS3phbXzrBx8KohfFQCw= normal diff --git a/test-files/golden-tests/javadoc/ref/ref.xml b/test-files/golden-tests/javadoc/ref/ref.xml index 55c2f7dd66..c72b2a5c71 100644 --- a/test-files/golden-tests/javadoc/ref/ref.xml +++ b/test-files/golden-tests/javadoc/ref/ref.xml @@ -118,6 +118,7 @@ function UrNEyy62P/QaY1BkJmO7NDGZSj4= + public regular w1h8sAoo8RqYTF+5WQRakdFasXg= @@ -168,6 +169,7 @@ function zsIKv6vJxoUhHtYtugUJIB9aWMo= + public regular DJrmic0LRMkHQmpzqYXGqAbcxAc= @@ -191,6 +193,7 @@ function 8ScA2YfwRe5KHsj/rEbtJeXWYz8= + public regular DJrmic0LRMkHQmpzqYXGqAbcxAc= @@ -225,6 +228,7 @@ C + public @@ -251,6 +255,7 @@ record 10qzjzJQhBscbAmic63bnI+Xm4g= + public regular /TldxA72JGXtufh5RbJgxLW2mwU= @@ -313,6 +318,7 @@ function zsIKv6vJxoUhHtYtugUJIB9aWMo= + public regular DJrmic0LRMkHQmpzqYXGqAbcxAc= @@ -336,6 +342,7 @@ function BJ7/Ds7ODvX+B2GNt69Xylatb0M= + public regular /TldxA72JGXtufh5RbJgxLW2mwU= @@ -471,6 +478,7 @@ function 4kEX5cyrkrbZqQhxb/7zuwJe06c= + public regular 47VHAvq/9ANwJboZT8J8RwBjMLU= @@ -506,6 +514,7 @@ function 73SLmNIvWuD1x05NFJfjN5Tw9dI= + public regular 47VHAvq/9ANwJboZT8J8RwBjMLU= @@ -541,6 +550,7 @@ function eH/S82KH2Afa//Il8eL+eetP2oY= + public regular 47VHAvq/9ANwJboZT8J8RwBjMLU= @@ -576,6 +586,7 @@ function Ua+I8TjggG4f6Kh9Cd4PqWl+L3c= + public regular 47VHAvq/9ANwJboZT8J8RwBjMLU= @@ -611,6 +622,7 @@ function q1RRcpfiolN+sGlkQKFIR7zXw3Y= + public regular 47VHAvq/9ANwJboZT8J8RwBjMLU= @@ -646,6 +658,7 @@ function s8Sj0SHvk8ztPnOv7kqTpLOFym0= + public regular 47VHAvq/9ANwJboZT8J8RwBjMLU= @@ -681,6 +694,7 @@ function dgeFs66S2JTHtYJ46SdfSKrTHpw= + public regular 47VHAvq/9ANwJboZT8J8RwBjMLU= @@ -716,6 +730,7 @@ function 6E9Wc51OXC1EuYFyXcfnRKyaSUQ= + public regular 47VHAvq/9ANwJboZT8J8RwBjMLU= @@ -751,6 +766,7 @@ function iRsJO4RJUDxRReCEOEGUr8z2Dog= + public regular 47VHAvq/9ANwJboZT8J8RwBjMLU= @@ -786,6 +802,7 @@ function uWgcvJSykruOksCy3oG6mliThTU= + public regular 47VHAvq/9ANwJboZT8J8RwBjMLU= @@ -821,6 +838,7 @@ function ayIMyqIPvK5ooT3+6bzqvikAe2M= + public regular 47VHAvq/9ANwJboZT8J8RwBjMLU= @@ -844,6 +862,7 @@ function PJEPb391sh5h9UGcBsg9S+NbbOc= + public regular 47VHAvq/9ANwJboZT8J8RwBjMLU= @@ -879,6 +898,7 @@ function MdfknCJ8anbDNS7X0ZYzre/aWQQ= + public regular 47VHAvq/9ANwJboZT8J8RwBjMLU= @@ -914,6 +934,7 @@ function gvnFfUpiWSxAgTxhtpuiEjIoCb4= + public regular 47VHAvq/9ANwJboZT8J8RwBjMLU= @@ -949,6 +970,7 @@ function IMTroH5DZKQ9XB1WksK3iSCShbU= + public regular 47VHAvq/9ANwJboZT8J8RwBjMLU= @@ -972,6 +994,7 @@ function KDQr8/lEqgd8pJtSdTnd3fC66vY= + public regular 47VHAvq/9ANwJboZT8J8RwBjMLU= @@ -1007,6 +1030,7 @@ function jEkSq3UPl4dH1KNAwrVl3jY5lw4= + public regular 47VHAvq/9ANwJboZT8J8RwBjMLU= @@ -1030,6 +1054,7 @@ function O/dGYwCIdWpqL6atSM3pmq8Yk98= + public regular 47VHAvq/9ANwJboZT8J8RwBjMLU= @@ -1065,6 +1090,7 @@ function CqAcZ21y0JP32hw7PHO31UxiviA= + public regular 47VHAvq/9ANwJboZT8J8RwBjMLU= @@ -1100,6 +1126,7 @@ function nlXVuPy3T3MP7qelm3WGXP9sxHs= + public regular 47VHAvq/9ANwJboZT8J8RwBjMLU= @@ -1135,6 +1162,7 @@ function rn2dr+lEU1Y+nZ76RvF705Amt7Y= + public regular 47VHAvq/9ANwJboZT8J8RwBjMLU= @@ -1170,6 +1198,7 @@ function UW/rnK+Cj7mGybqf3Ftz8ov8AAk= + public regular 47VHAvq/9ANwJboZT8J8RwBjMLU= @@ -1205,6 +1234,7 @@ function P2xgjlanIonF9IWlntd4b45qHv8= + public regular 47VHAvq/9ANwJboZT8J8RwBjMLU= @@ -1240,6 +1270,7 @@ function 3JThobgsU4rdNkfW2McxqHS/9CA= + public regular 47VHAvq/9ANwJboZT8J8RwBjMLU= @@ -1275,6 +1306,7 @@ function SSFNeC35i5KtYL6Tno8HnVjyX4U= + public regular 47VHAvq/9ANwJboZT8J8RwBjMLU= @@ -1310,6 +1342,7 @@ function PCZOPisEjvPudnFdMOV2Wqc+HDI= + public regular 47VHAvq/9ANwJboZT8J8RwBjMLU= @@ -1345,6 +1378,7 @@ function MJ6J65nDyFc+MnN7Jx4/DjOFJGw= + public regular 47VHAvq/9ANwJboZT8J8RwBjMLU= @@ -1380,6 +1414,7 @@ function oSeQzrs59Zd9rcweG2DRZVa6OpQ= + public regular 47VHAvq/9ANwJboZT8J8RwBjMLU= @@ -1415,6 +1450,7 @@ function GKmeopHLbzp3t6uxUtanpR4Tdk4= + public regular 47VHAvq/9ANwJboZT8J8RwBjMLU= @@ -1450,6 +1486,7 @@ function i0ULCt5GV/PS0YAGQP2fValTik8= + public regular 47VHAvq/9ANwJboZT8J8RwBjMLU= @@ -1473,6 +1510,7 @@ function 1pkl7XGJ2JVw7Xbm/xwSNKmflV4= + public regular 47VHAvq/9ANwJboZT8J8RwBjMLU= @@ -1508,6 +1546,7 @@ function ZoClmvCX93Yg08gfEaOD38rj0EM= + public regular 47VHAvq/9ANwJboZT8J8RwBjMLU= @@ -1531,6 +1570,7 @@ function k1TITJ9F+RdpX68VCHzCVjpumSE= + public regular 47VHAvq/9ANwJboZT8J8RwBjMLU= @@ -1566,6 +1606,7 @@ function +h1YcypZimsCxOl2AOqurQDO6/w= + public regular 47VHAvq/9ANwJboZT8J8RwBjMLU= @@ -1601,6 +1642,7 @@ function qZqDjtbfsftj0EhxY2cdp4y5r6E= + public regular 47VHAvq/9ANwJboZT8J8RwBjMLU= @@ -1636,6 +1678,7 @@ function 0rK5iNi5hwJI0k+ajN7X/jsUDew= + public regular 47VHAvq/9ANwJboZT8J8RwBjMLU= @@ -1671,6 +1714,7 @@ function im95jlqAf+bFSRJ6laltkGbJj38= + public regular 47VHAvq/9ANwJboZT8J8RwBjMLU= @@ -1706,6 +1750,7 @@ function c1PYDvrte7rUAE4DaiUopjWnAWY= + public regular 47VHAvq/9ANwJboZT8J8RwBjMLU= @@ -1741,6 +1786,7 @@ function cqSDwRFzB3Z6A5z95/VLPQSp5GI= + public regular 47VHAvq/9ANwJboZT8J8RwBjMLU= diff --git a/test-files/golden-tests/javadoc/returns/returns.xml b/test-files/golden-tests/javadoc/returns/returns.xml index 6ba754c46d..4af30f5e4d 100644 --- a/test-files/golden-tests/javadoc/returns/returns.xml +++ b/test-files/golden-tests/javadoc/returns/returns.xml @@ -70,6 +70,7 @@ variable zYZRwoC/XWBesPi1AQs+kPHibHI= + public regular Hu9BKPbk/tFDZMVcFeVpIqFnAJE= @@ -92,6 +93,7 @@ variable AfaC9XI9L85KNgrioXVThVhljqA= + public regular Hu9BKPbk/tFDZMVcFeVpIqFnAJE= diff --git a/test-files/golden-tests/snippets/options/overloads/overloads.adoc b/test-files/golden-tests/snippets/options/overloads/overloads.adoc index a4078a1a8d..e3f00375a1 100644 --- a/test-files/golden-tests/snippets/options/overloads/overloads.adoc +++ b/test-files/golden-tests/snippets/options/overloads/overloads.adoc @@ -1,7 +1,7 @@ = Reference :mrdocs: -[#abs-043] +[#abs-0e] == abs Compute the absolute value of an integer. @@ -16,10 +16,10 @@ Compute the absolute value of an integer. [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- int -link:#abs-04b[abs](int x); +link:#abs-04[abs](int x); ---- -[.small]#link:#abs-04b[_» more..._]# +[.small]#link:#abs-04[_» more..._]# Compute the absolute value of an integer. @@ -32,7 +32,7 @@ link:#abs-01[abs](long x); [.small]#link:#abs-01[_» more..._]# -[#abs-04b] +[#abs-04] == abs Compute the absolute value of an integer. diff --git a/test-files/golden-tests/symbols/concept/requires-clause.xml b/test-files/golden-tests/symbols/concept/requires-clause.xml index ed2c11e5d2..8b801f16b9 100644 --- a/test-files/golden-tests/symbols/concept/requires-clause.xml +++ b/test-files/golden-tests/symbols/concept/requires-clause.xml @@ -11,7 +11,7 @@ kkH6jADpFuYV65W9qUpVvq20Cgs= EBNjyD4nMb0o/Bpkztrno/0a+tA= PmhXjCXUJYVnj/a7NhfjjSesyp0= - 9JfSlZfEThLXiWTez3b8eT/AbZU= + yrBu1PLNI6d+uEC9ml1Q/9KAt4o= @@ -143,7 +143,7 @@ overloads - 9JfSlZfEThLXiWTez3b8eT/AbZU= + yrBu1PLNI6d+uEC9ml1Q/9KAt4o= regular //////////////////////////8= normal diff --git a/test-files/golden-tests/symbols/friend/friend-and-member-operator-rshift.xml b/test-files/golden-tests/symbols/friend/friend-and-member-operator-rshift.xml index 20b3902fc1..3d36a23136 100644 --- a/test-files/golden-tests/symbols/friend/friend-and-member-operator-rshift.xml +++ b/test-files/golden-tests/symbols/friend/friend-and-member-operator-rshift.xml @@ -89,6 +89,7 @@ function LFBJIEiE8seUws6ttMfR5DodiGs= + public regular EOLlVkgHSwHfoF79RB5z5u63swE= @@ -188,6 +189,7 @@ function 2iIZZF467cENdcSgE3k9ICUfoY8= + public regular //////////////////////////8= diff --git a/test-files/golden-tests/symbols/function/explicit-conv-operator.xml b/test-files/golden-tests/symbols/function/explicit-conv-operator.xml index 35c1e9fbd9..2c286707cb 100644 --- a/test-files/golden-tests/symbols/function/explicit-conv-operator.xml +++ b/test-files/golden-tests/symbols/function/explicit-conv-operator.xml @@ -51,6 +51,7 @@ function 64zY8rVu+TzEUayzMrnV65i9nFc= + public regular bonobNKGOblPVcRjxpiPan4nYnc= @@ -141,6 +142,7 @@ function q6N8XkMK9WWWGKNQnlx/o2E1EYc= + public regular ztb0u1Q4SVBUQ0roTOM7MFlUt/o= @@ -219,6 +221,7 @@ function hJXOxv26Y9uxUYMMVZRsp3Wps4A= + public regular Lt5u3k14Z7EBxY7Ike3h9qkJ0fo= @@ -297,6 +300,7 @@ function 9tpZWv9eJGfWj37jmTdNTg+gp14= + public regular htdCGapMsdazR1XkXoanrOCkvDE= diff --git a/test-files/golden-tests/symbols/function/explicit-ctor.xml b/test-files/golden-tests/symbols/function/explicit-ctor.xml index 2e8c1a432a..cb37109058 100644 --- a/test-files/golden-tests/symbols/function/explicit-ctor.xml +++ b/test-files/golden-tests/symbols/function/explicit-ctor.xml @@ -69,6 +69,7 @@ overloads Q0rFzGKBYJzUfWemkMds75mPjJU= + public regular bonobNKGOblPVcRjxpiPan4nYnc= @@ -104,6 +105,7 @@ function JPrjQsrkg+QoApI2wln2eGwCGP4= + public regular bonobNKGOblPVcRjxpiPan4nYnc= @@ -136,6 +138,7 @@ function CuzDbFSxtCdVcGerq2UySnHF7po= + public regular bonobNKGOblPVcRjxpiPan4nYnc= @@ -189,6 +192,7 @@ function saOH3agrCzNHcRhbXHOM0FYFxGc= + public regular bonobNKGOblPVcRjxpiPan4nYnc= @@ -241,6 +245,7 @@ function Oj6cGCOaarVfZXkgsr/pOPOOiFY= + public regular bonobNKGOblPVcRjxpiPan4nYnc= @@ -344,6 +349,7 @@ overloads f+Hwm4zWY/Tvp2r3/j/hgeahqjE= + public regular ztb0u1Q4SVBUQ0roTOM7MFlUt/o= @@ -379,6 +385,7 @@ function s6L5UKI8FLTRiyny1rXgYxG/f/0= + public regular ztb0u1Q4SVBUQ0roTOM7MFlUt/o= @@ -411,6 +418,7 @@ function Ty1Sv+L6at7TykYdCITSQKmXwVs= + public regular ztb0u1Q4SVBUQ0roTOM7MFlUt/o= @@ -464,6 +472,7 @@ function gDoLCstIvgYYJng1jhLOLe/yz+Q= + public regular ztb0u1Q4SVBUQ0roTOM7MFlUt/o= @@ -516,6 +525,7 @@ function J31K1hQq31LWiQhVy5ro0V+1pD0= + public regular ztb0u1Q4SVBUQ0roTOM7MFlUt/o= @@ -607,6 +617,7 @@ overloads dnlN/iFc3Ih19qTLmv3gczFwHjA= + public regular Lt5u3k14Z7EBxY7Ike3h9qkJ0fo= @@ -642,6 +653,7 @@ function GVN7KvqFotNClBLUnxR3nnPlH7Y= + public regular Lt5u3k14Z7EBxY7Ike3h9qkJ0fo= @@ -674,6 +686,7 @@ function gsl+2i8v8v4Lifq3SZ5sFhSfseQ= + public regular Lt5u3k14Z7EBxY7Ike3h9qkJ0fo= @@ -727,6 +740,7 @@ function qXjKOO0FQ3p2vTehkEQl2kIKpFs= + public regular Lt5u3k14Z7EBxY7Ike3h9qkJ0fo= @@ -779,6 +793,7 @@ function T0aRgSzz7xtFbPWKv3q57ueIYlI= + public regular Lt5u3k14Z7EBxY7Ike3h9qkJ0fo= @@ -870,6 +885,7 @@ overloads EX6X/2XknCtjmarXemc0JA+x364= + public regular htdCGapMsdazR1XkXoanrOCkvDE= @@ -905,6 +921,7 @@ function 3sd37ryB4gMx1BgYdDdQzVJFniU= + public regular htdCGapMsdazR1XkXoanrOCkvDE= @@ -937,6 +954,7 @@ function Tj9uY+jY7QBYQC8IsjplHuoDgQo= + public regular htdCGapMsdazR1XkXoanrOCkvDE= @@ -990,6 +1008,7 @@ function iQOO8pEh0iNSnpupVwR9tCVIf8U= + public regular htdCGapMsdazR1XkXoanrOCkvDE= @@ -1042,6 +1061,7 @@ function XCoHYDLlYJYpV6Ut7Ms0GjcQKjM= + public regular htdCGapMsdazR1XkXoanrOCkvDE= diff --git a/test-files/golden-tests/symbols/function/explicit-object-parameter.xml b/test-files/golden-tests/symbols/function/explicit-object-parameter.xml index bc4963059d..d04266338b 100644 --- a/test-files/golden-tests/symbols/function/explicit-object-parameter.xml +++ b/test-files/golden-tests/symbols/function/explicit-object-parameter.xml @@ -54,6 +54,7 @@ overloads yAoBkmRqQkJsKfweNOdQt2SnUkc= + public regular /TAtWMuvF+kz/B0ChmDlGQtnkaA= normal @@ -76,6 +77,7 @@ function XLLL4h9bZlRyA4AQMlfVPCuwMoU= + public regular /TAtWMuvF+kz/B0ChmDlGQtnkaA= @@ -102,6 +104,7 @@ normal 1 + constexpr 1 @@ -116,6 +119,7 @@ function aOpxAmSvyM7g6X3lLAJG5i3CTZA= + public regular /TAtWMuvF+kz/B0ChmDlGQtnkaA= @@ -151,6 +155,7 @@ normal 1 + constexpr 1 diff --git a/test-files/golden-tests/symbols/function/function-template-template.xml b/test-files/golden-tests/symbols/function/function-template-template.xml index c82d2cc0c9..63f860cc79 100644 --- a/test-files/golden-tests/symbols/function/function-template-template.xml +++ b/test-files/golden-tests/symbols/function/function-template-template.xml @@ -52,5 +52,6 @@ normal + constexpr diff --git a/test-files/golden-tests/symbols/function/mem-fn.xml b/test-files/golden-tests/symbols/function/mem-fn.xml index cd386b9270..8f48600147 100644 --- a/test-files/golden-tests/symbols/function/mem-fn.xml +++ b/test-files/golden-tests/symbols/function/mem-fn.xml @@ -65,6 +65,7 @@ function dmtEtFE6EVKE6hWuugP9vFuib6Y= + public regular O2UBDeG42PMrk1up8f8PGVFhIGk= @@ -113,6 +114,7 @@ function QPLurkQ2BXODb4xY6bw1mlNtQ28= + public regular H+pnPDuG6B+W6+srjVP2qhqXCrQ= @@ -122,6 +124,7 @@ normal + static 1 @@ -161,6 +164,7 @@ function p6A5dCCvCkASDE6pH4cJA/27/o8= + public regular rM+ml6ikwiS9Twa1IwpCHbSHTbg= @@ -209,6 +213,7 @@ function G71rDzcAZPSKGoGGoDswQjD1JuA= + public regular MBpLzhyCDdQBHul4AN2i2fR8fw0= @@ -257,6 +262,7 @@ function rWLMsKBEv1FtDyk7Y7XNzcgmt68= + public regular 5s81XyCIgauM5viJN9KAwx2A6DU= @@ -306,6 +312,7 @@ function A3MUO5+pwkURxw+SBeh1y0BKv7c= + public regular SzwXGFnhX4HlHjHolU7XF/KEqDs= @@ -315,6 +322,7 @@ normal + constexpr 1 @@ -354,6 +362,7 @@ function jlrEtbnYd1B6OAjYlF0gQ/oYu5w= + public regular WU9ZeQm0IOT8cYJkWXom3NXeWsM= @@ -402,6 +411,7 @@ function u+MePKsNF/sYSk6UpgNS65+USGU= + public regular SX7tpa77UInh7a4AsMFjfiCtoLY= @@ -450,6 +460,7 @@ function 0hjrVGeDlQhdYkOu4shvWWPqNKU= + public regular TJnjDRnoO8E/5XEw8BaODsKxlwQ= @@ -499,6 +510,7 @@ function +NevzZlqigIe1KSKS7eqq7pCd40= + public regular MXMa4TZZfdRkREzWSLpIF6ruUyw= @@ -548,6 +560,7 @@ function I0S8eMgTnTkagm+IrM34MBiU4XI= + public regular 7rg34TfmIwu+7zOd7DN+Dq8mLCc= @@ -597,6 +610,7 @@ function 5d5eSOvkYwBOnpbLcrkRuFvJGP4= + public regular NyLraUP0R3lYeyTpHQYZpyZMstc= @@ -648,6 +662,7 @@ function 1Lz3aFupR+OsCqiPOaIFWqGuyCc= + public regular SLJhBKx+2u4KxSJ78Fg6wqlObPc= @@ -699,6 +714,7 @@ function wSFf8IAx5Twq6aD5T8XdnXGuhw8= + public regular Bu7lz+fvOPzOR6oSlAo9R8R0alg= @@ -748,6 +764,7 @@ function OEX+TUed8FjXJPiI4c3+9WHzJl4= + public regular 75395VGvKeZbe1EhfJwktZuWLs0= @@ -757,6 +774,7 @@ normal + static 1 @@ -782,6 +800,7 @@ T14 + public @@ -805,6 +824,7 @@ function 5+yfyWtDpz80IwKT3xugro18Ev0= + public regular HL3/1NhKSels2G5ay7F0IYzlSLs= @@ -858,6 +878,7 @@ function DBXd564vaQo7GHkh6XCC6HV78/I= + public regular FLgkhM3m0U3Lo2o3XLPUizWPH00= @@ -869,6 +890,7 @@ normal 1 1 + constexpr 1 1 1 @@ -885,6 +907,7 @@ function YOkqb7VjZXBs2Rg5gWCOYGX3Tnw= + public regular FLgkhM3m0U3Lo2o3XLPUizWPH00= @@ -913,6 +936,7 @@ function II436kVwM/ZBYOf9q474VxRXK6c= + public regular FLgkhM3m0U3Lo2o3XLPUizWPH00= @@ -923,6 +947,8 @@ normal 1 + constexpr + static 1 @@ -948,6 +974,7 @@ U + public @@ -973,6 +1000,7 @@ function DBXd564vaQo7GHkh6XCC6HV78/I= + public regular FLgkhM3m0U3Lo2o3XLPUizWPH00= @@ -984,6 +1012,7 @@ normal 1 1 + constexpr 1 1 1 @@ -1000,6 +1029,7 @@ function /C2pxLlwRMKnr6YRbVnykUArzEI= + public regular 9kzYwt0WPztMEDUaFxul1Jvqqs8= @@ -1027,6 +1057,7 @@ function II436kVwM/ZBYOf9q474VxRXK6c= + public regular FLgkhM3m0U3Lo2o3XLPUizWPH00= @@ -1037,6 +1068,8 @@ normal 1 + constexpr + static 1 diff --git a/test-files/golden-tests/symbols/function/overloaded-op-1.xml b/test-files/golden-tests/symbols/function/overloaded-op-1.xml index 6a17c0bf9e..9a958db8b5 100644 --- a/test-files/golden-tests/symbols/function/overloaded-op-1.xml +++ b/test-files/golden-tests/symbols/function/overloaded-op-1.xml @@ -48,6 +48,7 @@ function 2JysU2zJdfiiAb7nyNnvkDzkKvU= + public regular CgGNdHpW5mG/i5741WPYQDw28OQ= diff --git a/test-files/golden-tests/symbols/function/overloaded-op-2.xml b/test-files/golden-tests/symbols/function/overloaded-op-2.xml index 2af1afc77a..1ad0a70317 100644 --- a/test-files/golden-tests/symbols/function/overloaded-op-2.xml +++ b/test-files/golden-tests/symbols/function/overloaded-op-2.xml @@ -48,6 +48,7 @@ function LhEvBUAmiZm97R+EE8Wp8+CtOwU= + public regular CgGNdHpW5mG/i5741WPYQDw28OQ= diff --git a/test-files/golden-tests/symbols/overloads/overloads-brief.xml b/test-files/golden-tests/symbols/overloads/overloads-brief.xml index 0c8234d9cd..692ad32e33 100644 --- a/test-files/golden-tests/symbols/overloads/overloads-brief.xml +++ b/test-files/golden-tests/symbols/overloads/overloads-brief.xml @@ -10,9 +10,9 @@ YrPSaKAbmXgzCAX5WByx4eVoqBM= 3JsK1DO0O+wZhv+0meptQrbs3fY= - RjY3QWFLXBVMaEm9BnT1iH8A5JU= - lk5hZ+u3TPuYLv5UfIl4hOGGzjM= - fSdp0tRtLwcb+V3z/2Nwq8IdAAU= + /hucOiT8pcqRdkW15dk2G/D7xlU= + jE+MGE9EsNiR3aQKMfpwCmL6a/k= + /2uLQOeZ13kuKGEODAupW4G5i8o= @@ -78,6 +78,7 @@ overloads +yf24/wS549V5ZqYWGboHExPRoY= + public regular YrPSaKAbmXgzCAX5WByx4eVoqBM= @@ -120,6 +121,7 @@ function NsCpw4jurMmwsYzp5jE+NgG1eLE= + public regular YrPSaKAbmXgzCAX5WByx4eVoqBM= @@ -153,6 +155,7 @@ function HkGsg4usg6CytwvmqPS1ZbH99t8= + public regular YrPSaKAbmXgzCAX5WByx4eVoqBM= @@ -210,6 +213,7 @@ overloads TBURMVj9++7bBh2sg4BgMGmdMP4= + public regular YrPSaKAbmXgzCAX5WByx4eVoqBM= @@ -265,6 +269,7 @@ function RRhK09XtJWQqLWvHlgZUv4deW1E= + public regular YrPSaKAbmXgzCAX5WByx4eVoqBM= @@ -332,6 +337,7 @@ function aOkWiNwfbs/JSs8z9GP/vTAwsbA= + public regular YrPSaKAbmXgzCAX5WByx4eVoqBM= @@ -402,6 +408,7 @@ overloads DqUsxXtK/1rFeA0YoMBaT2oD5iw= + public regular YrPSaKAbmXgzCAX5WByx4eVoqBM= @@ -455,6 +462,7 @@ function ycaQWu1bpL50KsLIdks09uNq0fw= + public regular YrPSaKAbmXgzCAX5WByx4eVoqBM= @@ -516,6 +524,7 @@ function 4jg29DjTLdYrWC4PLhyeE68ztvQ= + public regular YrPSaKAbmXgzCAX5WByx4eVoqBM= @@ -588,6 +597,7 @@ overloads nmsbNfdtYwc961rRlS7GTlnL3ik= + public regular YrPSaKAbmXgzCAX5WByx4eVoqBM= @@ -630,6 +640,7 @@ function JJtrUCsKraCMZOeI5dC8UzKCEmI= + public regular YrPSaKAbmXgzCAX5WByx4eVoqBM= @@ -678,6 +689,7 @@ function x8gblCF18xnamr/xm7nsLiL0taU= + public regular YrPSaKAbmXgzCAX5WByx4eVoqBM= @@ -792,7 +804,7 @@ overloads - RjY3QWFLXBVMaEm9BnT1iH8A5JU= + /hucOiT8pcqRdkW15dk2G/D7xlU= regular //////////////////////////8= @@ -929,7 +941,7 @@ overloads - lk5hZ+u3TPuYLv5UfIl4hOGGzjM= + jE+MGE9EsNiR3aQKMfpwCmL6a/k= regular //////////////////////////8= @@ -1107,7 +1119,7 @@ overloads - fSdp0tRtLwcb+V3z/2Nwq8IdAAU= + /2uLQOeZ13kuKGEODAupW4G5i8o= regular //////////////////////////8= diff --git a/test-files/golden-tests/symbols/overloads/overloads-metadata.xml b/test-files/golden-tests/symbols/overloads/overloads-metadata.xml index 36c6db7e16..7465bf5f78 100644 --- a/test-files/golden-tests/symbols/overloads/overloads-metadata.xml +++ b/test-files/golden-tests/symbols/overloads/overloads-metadata.xml @@ -8,7 +8,7 @@ //////////////////////////8= regular - x0B55dWJmTMqTXm6ZEu790gmPxY= + GDxqxKc4bkmO2HKXdEn9Zgy37O8= @@ -37,7 +37,7 @@ overloads - x0B55dWJmTMqTXm6ZEu790gmPxY= + GDxqxKc4bkmO2HKXdEn9Zgy37O8= regular //////////////////////////8= diff --git a/test-files/golden-tests/symbols/overloads/overloads-ostream.xml b/test-files/golden-tests/symbols/overloads/overloads-ostream.xml index db5255e98f..1861d379c7 100644 --- a/test-files/golden-tests/symbols/overloads/overloads-ostream.xml +++ b/test-files/golden-tests/symbols/overloads/overloads-ostream.xml @@ -74,6 +74,7 @@ overloads CHEdD6V2JZOWqrKOrzrAFB01ag4= + public regular mPR5L0+aXmfmkEAliRYGzCDx/No= @@ -110,6 +111,7 @@ function 933XchiQ+t56rbxrI6xHFc4VHpg= + public regular mPR5L0+aXmfmkEAliRYGzCDx/No= @@ -169,6 +171,7 @@ function uV72HdBWsWZ4EwLG0yd905Rczwc= + public regular mPR5L0+aXmfmkEAliRYGzCDx/No= @@ -387,6 +390,7 @@ overloads /s4tLGsRLchmoXSCfp1huP12grE= + public regular S5XtDqY96X0u1hXzl3cx6YoVW8A= @@ -423,6 +427,7 @@ function 1fuMcZHDrARpZPSclbAk4IYVnps= + public regular S5XtDqY96X0u1hXzl3cx6YoVW8A= diff --git a/test-files/golden-tests/symbols/overloads/overloads.xml b/test-files/golden-tests/symbols/overloads/overloads.xml index b1f00d884d..9ae63760b6 100644 --- a/test-files/golden-tests/symbols/overloads/overloads.xml +++ b/test-files/golden-tests/symbols/overloads/overloads.xml @@ -10,7 +10,7 @@ YrPSaKAbmXgzCAX5WByx4eVoqBM= 3JsK1DO0O+wZhv+0meptQrbs3fY= - x0B55dWJmTMqTXm6ZEu790gmPxY= + GDxqxKc4bkmO2HKXdEn9Zgy37O8= c3LDQg7wK1RzpLzXObmUCRAFDco= @@ -64,6 +64,7 @@ overloads ct3b2BagsWFMKFtMRx/UVwhsQmo= + public regular YrPSaKAbmXgzCAX5WByx4eVoqBM= normal @@ -84,6 +85,7 @@ function hLXvGC+nOrLQRH9lODKkgi/oUas= + public regular YrPSaKAbmXgzCAX5WByx4eVoqBM= @@ -107,6 +109,7 @@ function 7Bg4Ruo9NHdsGok6ICFQWW1MBuE= + public regular YrPSaKAbmXgzCAX5WByx4eVoqBM= @@ -144,6 +147,7 @@ overloads 2gneMpbsIf1Dp6ctLj6MDFw9p/w= + public regular YrPSaKAbmXgzCAX5WByx4eVoqBM= normal @@ -164,6 +168,7 @@ function qw8/QuVZ7n9UkJWa5gz1gYkPlBc= + public regular YrPSaKAbmXgzCAX5WByx4eVoqBM= @@ -173,6 +178,7 @@ normal + static 1 @@ -187,6 +193,7 @@ function E2RBHdoNQKveCfR6zUiWe+Ztmtk= + public regular YrPSaKAbmXgzCAX5WByx4eVoqBM= @@ -204,6 +211,7 @@ normal + static 1 @@ -259,7 +267,7 @@ overloads - x0B55dWJmTMqTXm6ZEu790gmPxY= + GDxqxKc4bkmO2HKXdEn9Zgy37O8= regular //////////////////////////8= normal @@ -350,6 +358,7 @@ overloads c3LDQg7wK1RzpLzXObmUCRAFDco= + public regular //////////////////////////8= @@ -385,6 +394,7 @@ function 7bqo4XOxyyg5NIOu+8i4lZ3L47c= + public regular //////////////////////////8= @@ -476,6 +486,7 @@ function pqHl3WkOZfX6m6ltquhjuQtzXp4= + public regular //////////////////////////8= diff --git a/test-files/golden-tests/symbols/record/class-private-alias.xml b/test-files/golden-tests/symbols/record/class-private-alias.xml index 80921fe568..5a08d0834b 100644 --- a/test-files/golden-tests/symbols/record/class-private-alias.xml +++ b/test-files/golden-tests/symbols/record/class-private-alias.xml @@ -49,6 +49,7 @@ function rEl08eLCQtT5kTV7R87YlkuVPa8= + public regular pOYGF6pLJlICuiGO0Xj0daDb/to= diff --git a/test-files/golden-tests/symbols/record/class-template.xml b/test-files/golden-tests/symbols/record/class-template.xml index 8b3acc250d..fca4c2dcf5 100644 --- a/test-files/golden-tests/symbols/record/class-template.xml +++ b/test-files/golden-tests/symbols/record/class-template.xml @@ -62,6 +62,7 @@ record gx6LdMT9nBMQKB26lZXGWbB7N6c= + public regular sv7ww7qclY8KsvAbFHXaKZnSO80= struct @@ -87,6 +88,7 @@ variable sdv932bFyf1dJzPblqxQGqsy8G4= + public regular gx6LdMT9nBMQKB26lZXGWbB7N6c= @@ -109,6 +111,7 @@ variable ySFHEWJe6/b1dbtjDC2IAvT2vmU= + public regular sv7ww7qclY8KsvAbFHXaKZnSO80= @@ -131,6 +134,7 @@ variable 81imwKxfuTfd7lfVGnF+fKx46lY= + public regular sv7ww7qclY8KsvAbFHXaKZnSO80= @@ -154,6 +158,7 @@ variable UKBRhwzQ0PeL6ZwfxmreRBoDQSY= + public regular sv7ww7qclY8KsvAbFHXaKZnSO80= @@ -202,6 +207,7 @@ record F1Cyqn/faLYbjTU4RfGsepUiiZw= + public regular tm2khHa6qZM0lj1f7IwBdxVxDgE= struct @@ -236,6 +242,7 @@ variable bQCgblScrSKOxQMVJxT7vFw9W4I= + public regular F1Cyqn/faLYbjTU4RfGsepUiiZw= @@ -259,6 +266,7 @@ variable phg6+zMhjV0SJ7vav871OGqoPPQ= + public regular F1Cyqn/faLYbjTU4RfGsepUiiZw= @@ -281,6 +289,7 @@ variable 53ijFg2EUlLuOP8qvufgjwZDNoI= + public regular F1Cyqn/faLYbjTU4RfGsepUiiZw= @@ -303,6 +312,7 @@ variable Q0itZUB0O9hts+pFPk9DO415Lo8= + public regular tm2khHa6qZM0lj1f7IwBdxVxDgE= @@ -358,6 +368,7 @@ record xljI5oOqNOhyyR4QzmKvFB3nEfw= + public regular IIPz8Fm6nqKoYQpeJ/kvZaWvtI8= struct @@ -393,6 +404,7 @@ variable bLX5mthqXMHAtLNEc87RKLQSUyU= + public regular xljI5oOqNOhyyR4QzmKvFB3nEfw= @@ -416,6 +428,7 @@ variable qSNOAAxaet7aBxvD7WvFqJOpm3A= + public regular xljI5oOqNOhyyR4QzmKvFB3nEfw= @@ -438,6 +451,7 @@ variable P9x8qHxDv7huDL0MyNORJ/enU0Q= + public regular xljI5oOqNOhyyR4QzmKvFB3nEfw= @@ -460,6 +474,7 @@ variable pRO2j7I5aEQI+ktDwT1fLJPqy28= + public regular xljI5oOqNOhyyR4QzmKvFB3nEfw= @@ -482,6 +497,7 @@ variable rvAO5HvzEvS8z9PgbRoqkyTi+1c= + public regular IIPz8Fm6nqKoYQpeJ/kvZaWvtI8= @@ -542,6 +558,7 @@ variable 28J+g16kE2M7qwnrP4yzW4hHlIg= + public regular x60FzYL65XgZZRrxrZuC5jemrwQ= diff --git a/test-files/golden-tests/symbols/record/conditional-explicit.xml b/test-files/golden-tests/symbols/record/conditional-explicit.xml index a74cffd24a..a7615cb61e 100644 --- a/test-files/golden-tests/symbols/record/conditional-explicit.xml +++ b/test-files/golden-tests/symbols/record/conditional-explicit.xml @@ -81,6 +81,7 @@ overloads 90LmpTUv2mRF4c7fOK5KY82aqfg= + public regular 5tUSuMtQqtYE49jBjSYSWp0DJAM= @@ -117,6 +118,7 @@ function tu1aWR2dJXMP1qCjx0wfqGbHUrU= + public regular 5tUSuMtQqtYE49jBjSYSWp0DJAM= @@ -167,6 +169,7 @@ function AXLv33SreHARdqogAHAgfhC3lFA= + public regular 5tUSuMtQqtYE49jBjSYSWp0DJAM= @@ -217,6 +220,7 @@ function F4U5PyaDoe8VKg41ubwK8aze9QE= + public regular 5tUSuMtQqtYE49jBjSYSWp0DJAM= @@ -267,6 +271,7 @@ function Lh5IpjK5DH9VZV67YWZB6MBX3eg= + public regular 5tUSuMtQqtYE49jBjSYSWp0DJAM= @@ -324,6 +329,7 @@ function 8QQvac4UAEj232hkdEvLmrs4iXo= + public regular 5tUSuMtQqtYE49jBjSYSWp0DJAM= @@ -379,6 +385,7 @@ function BQIWwUrUqUCA8gEZNkinmhykZiw= + public regular 5tUSuMtQqtYE49jBjSYSWp0DJAM= @@ -427,6 +434,7 @@ function RoN1eWo04RrcRuREabBhJcBRP9g= + public regular 5tUSuMtQqtYE49jBjSYSWp0DJAM= @@ -475,6 +483,7 @@ function G/Kyu+7RZ7YjYMEcMH57nQNmUeQ= + public regular 5tUSuMtQqtYE49jBjSYSWp0DJAM= diff --git a/test-files/golden-tests/symbols/record/dtor-overloads.xml b/test-files/golden-tests/symbols/record/dtor-overloads.xml index 017f166557..f3bd6d570c 100644 --- a/test-files/golden-tests/symbols/record/dtor-overloads.xml +++ b/test-files/golden-tests/symbols/record/dtor-overloads.xml @@ -61,6 +61,7 @@ overloads LEZJddSqCEXJZ++1t8aAiluL0/E= + public regular 5tUSuMtQqtYE49jBjSYSWp0DJAM= @@ -94,6 +95,7 @@ function x5T8zVxBVmg1ModTwgEAXcXWKDg= + public regular 5tUSuMtQqtYE49jBjSYSWp0DJAM= @@ -127,6 +129,7 @@ function uiH+ZSS+bYC5efGHgbdzlzXaV/o= + public regular 5tUSuMtQqtYE49jBjSYSWp0DJAM= diff --git a/test-files/golden-tests/symbols/record/final-class.xml b/test-files/golden-tests/symbols/record/final-class.xml index 69144317ca..98a4da953d 100644 --- a/test-files/golden-tests/symbols/record/final-class.xml +++ b/test-files/golden-tests/symbols/record/final-class.xml @@ -96,6 +96,7 @@ B1 + public @@ -105,6 +106,7 @@ B2 + public diff --git a/test-files/golden-tests/symbols/record/forward-declared-member.xml b/test-files/golden-tests/symbols/record/forward-declared-member.xml index b70089cdbd..b86b2b85cb 100644 --- a/test-files/golden-tests/symbols/record/forward-declared-member.xml +++ b/test-files/golden-tests/symbols/record/forward-declared-member.xml @@ -58,6 +58,7 @@ + public diff --git a/test-files/golden-tests/symbols/record/friend-duplicate.xml b/test-files/golden-tests/symbols/record/friend-duplicate.xml index a2a47369ad..3e2c7b4ceb 100644 --- a/test-files/golden-tests/symbols/record/friend-duplicate.xml +++ b/test-files/golden-tests/symbols/record/friend-duplicate.xml @@ -92,6 +92,7 @@ function s6nsa+zVhpzzrN+yUVPP5rvdXqs= + public regular //////////////////////////8= diff --git a/test-files/golden-tests/symbols/record/friend-fn-has-docs.xml b/test-files/golden-tests/symbols/record/friend-fn-has-docs.xml index fa41dd7257..44213552f5 100644 --- a/test-files/golden-tests/symbols/record/friend-fn-has-docs.xml +++ b/test-files/golden-tests/symbols/record/friend-fn-has-docs.xml @@ -58,6 +58,7 @@ function s6nsa+zVhpzzrN+yUVPP5rvdXqs= + public regular //////////////////////////8= diff --git a/test-files/golden-tests/symbols/record/friend-fn-member.xml b/test-files/golden-tests/symbols/record/friend-fn-member.xml index ebca7dcb04..f323847d47 100644 --- a/test-files/golden-tests/symbols/record/friend-fn-member.xml +++ b/test-files/golden-tests/symbols/record/friend-fn-member.xml @@ -84,6 +84,7 @@ function 6Jx2eK9l4C46QIRucTvox+6PH2k= + public regular ynx5NXMLXqzSXwgOnIP6CHzNx14= @@ -116,6 +117,7 @@ function HK6hbp0kJrHWxbYoHddN1v/GCWc= + public regular ynx5NXMLXqzSXwgOnIP6CHzNx14= @@ -149,6 +151,7 @@ function wZtQh+QR5vgNZmk34MnRmnKO5MI= + public regular ynx5NXMLXqzSXwgOnIP6CHzNx14= diff --git a/test-files/golden-tests/symbols/record/friend-fn-multi-2nd.xml b/test-files/golden-tests/symbols/record/friend-fn-multi-2nd.xml index 6f9027c3b8..9c3c16d535 100644 --- a/test-files/golden-tests/symbols/record/friend-fn-multi-2nd.xml +++ b/test-files/golden-tests/symbols/record/friend-fn-multi-2nd.xml @@ -85,6 +85,7 @@ function s6nsa+zVhpzzrN+yUVPP5rvdXqs= + public regular //////////////////////////8= diff --git a/test-files/golden-tests/symbols/record/friend-fn-multi-free.xml b/test-files/golden-tests/symbols/record/friend-fn-multi-free.xml index 0e02686f9e..0109b13ef3 100644 --- a/test-files/golden-tests/symbols/record/friend-fn-multi-free.xml +++ b/test-files/golden-tests/symbols/record/friend-fn-multi-free.xml @@ -86,6 +86,7 @@ function s6nsa+zVhpzzrN+yUVPP5rvdXqs= + public regular //////////////////////////8= diff --git a/test-files/golden-tests/symbols/record/friend-fn-multi.xml b/test-files/golden-tests/symbols/record/friend-fn-multi.xml index f7176b33cc..f431e440e0 100644 --- a/test-files/golden-tests/symbols/record/friend-fn-multi.xml +++ b/test-files/golden-tests/symbols/record/friend-fn-multi.xml @@ -86,6 +86,7 @@ function s6nsa+zVhpzzrN+yUVPP5rvdXqs= + public regular //////////////////////////8= diff --git a/test-files/golden-tests/symbols/record/friend-fn.xml b/test-files/golden-tests/symbols/record/friend-fn.xml index c60d6273c2..8867e060eb 100644 --- a/test-files/golden-tests/symbols/record/friend-fn.xml +++ b/test-files/golden-tests/symbols/record/friend-fn.xml @@ -52,6 +52,7 @@ function s6nsa+zVhpzzrN+yUVPP5rvdXqs= + public regular //////////////////////////8= diff --git a/test-files/golden-tests/symbols/record/local-class.xml b/test-files/golden-tests/symbols/record/local-class.xml index 3028a464df..bd606cd3fc 100644 --- a/test-files/golden-tests/symbols/record/local-class.xml +++ b/test-files/golden-tests/symbols/record/local-class.xml @@ -50,6 +50,7 @@ function jCCBBuUPAMKbCDHSsikdFgCuMPQ= + public regular iyPnRqvK5CeWtYJ+M257FJexgOs= @@ -80,6 +81,7 @@ f() + public diff --git a/test-files/golden-tests/symbols/record/record-1.xml b/test-files/golden-tests/symbols/record/record-1.xml index a9d9a7a337..a1ee84b505 100644 --- a/test-files/golden-tests/symbols/record/record-1.xml +++ b/test-files/golden-tests/symbols/record/record-1.xml @@ -55,6 +55,7 @@ typedef 6UtddyCJy89K/bZpTmDb5jVXwAY= + public regular CgGNdHpW5mG/i5741WPYQDw28OQ= @@ -77,6 +78,7 @@ typedef wwp4SQjMPktMmsnvq1thxjxFHFs= + public regular CgGNdHpW5mG/i5741WPYQDw28OQ= @@ -98,6 +100,7 @@ function 9sznTZ3/SXQNZpCsoMG8KWGLuEc= + public regular CgGNdHpW5mG/i5741WPYQDw28OQ= @@ -121,6 +124,7 @@ function w0ONazxXaWlB0RQLjfDqDWICUwo= + public regular CgGNdHpW5mG/i5741WPYQDw28OQ= @@ -144,6 +148,7 @@ function TkBjWwqMDycyUbq+TJZ9qfUhSn0= + public regular CgGNdHpW5mG/i5741WPYQDw28OQ= @@ -168,6 +173,7 @@ function /xzUDYrXtCl2xCoyCvXqIZ4fKfA= + protected regular CgGNdHpW5mG/i5741WPYQDw28OQ= @@ -208,6 +214,7 @@ function flHl59B/bdRwuiNeh3sHqCycic0= + protected regular CgGNdHpW5mG/i5741WPYQDw28OQ= @@ -248,6 +255,7 @@ function DKxv4h+rP37b0u6O1qbB+u416ZY= + protected regular CgGNdHpW5mG/i5741WPYQDw28OQ= diff --git a/test-files/golden-tests/symbols/record/record-access.xml b/test-files/golden-tests/symbols/record/record-access.xml index 2e45a06910..15cd6b39ff 100644 --- a/test-files/golden-tests/symbols/record/record-access.xml +++ b/test-files/golden-tests/symbols/record/record-access.xml @@ -52,6 +52,7 @@ function ZOAAp99eH9zKUZqx0JzW6AuhRTQ= + public regular sTaqkoFcVbtntbfpe777v5/pWL0= @@ -75,6 +76,7 @@ function EyRDT2mXtRNmcISD2rsC6/mLusw= + protected regular sTaqkoFcVbtntbfpe777v5/pWL0= @@ -98,6 +100,7 @@ function IdInRLjINkaIuyTqWyEUhoM1DZM= + private regular sTaqkoFcVbtntbfpe777v5/pWL0= @@ -148,6 +151,7 @@ function STTnU4grbgOl2xPE6okWC57zruc= + public regular u38+snleg17KL7EQuD9FV1Z8b9E= @@ -171,6 +175,7 @@ function IaPeEIwn9q94M3MuwxsB3qhBOSE= + protected regular u38+snleg17KL7EQuD9FV1Z8b9E= @@ -194,6 +199,7 @@ function QicvGhxlL09TrpXiFYAS+pz8/9g= + private regular u38+snleg17KL7EQuD9FV1Z8b9E= @@ -244,6 +250,7 @@ function eY4R9etszWK2H42p4kWNm5XfpnE= + public regular SHIJWZPzfYtLVfe/rzFAmeVpANk= @@ -267,6 +274,7 @@ function KjiG7Uufpmd65dhiSV+Jv2RjgHA= + protected regular SHIJWZPzfYtLVfe/rzFAmeVpANk= @@ -290,6 +298,7 @@ function KXASSTkImsSKBg6l0hOSkbt1K7M= + private regular SHIJWZPzfYtLVfe/rzFAmeVpANk= diff --git a/test-files/golden-tests/symbols/record/record-data.xml b/test-files/golden-tests/symbols/record/record-data.xml index 03e09f178e..f2c3b0c776 100644 --- a/test-files/golden-tests/symbols/record/record-data.xml +++ b/test-files/golden-tests/symbols/record/record-data.xml @@ -56,6 +56,7 @@ variable 91xV6rCFObgi6i1/U2uZ/GnD3WM= + public regular CgGNdHpW5mG/i5741WPYQDw28OQ= @@ -78,6 +79,7 @@ variable g7xcHrg43mq7PlaOEmNvMHlU+Hk= + public regular CgGNdHpW5mG/i5741WPYQDw28OQ= @@ -100,6 +102,7 @@ variable DDn/yzxAAKSmBASeK+/IuU+FvzM= + public regular CgGNdHpW5mG/i5741WPYQDw28OQ= @@ -123,6 +126,7 @@ variable wmuk99bazNMSdS8W8oD/7vIsIhQ= + public regular CgGNdHpW5mG/i5741WPYQDw28OQ= @@ -147,6 +151,7 @@ variable 8Olj7aMWgTqR7bHtl+C3EZ5wILI= + public regular CgGNdHpW5mG/i5741WPYQDw28OQ= @@ -196,6 +201,7 @@ variable LvEIBVXJYQQL4yraOaQv7ijMDng= + public regular FLgkhM3m0U3Lo2o3XLPUizWPH00= @@ -246,6 +252,7 @@ variable VKvx+Pci4bUmtjCsXJqKb7SNYqw= + protected regular 9kzYwt0WPztMEDUaFxul1Jvqqs8= @@ -268,6 +275,7 @@ variable EWXCzRl9erjnMQFZ8VmHC5cVkLM= + private regular 9kzYwt0WPztMEDUaFxul1Jvqqs8= @@ -290,6 +298,7 @@ variable iKr1oLycejUWY6AnSgoQnbmaCEE= + private regular 9kzYwt0WPztMEDUaFxul1Jvqqs8= @@ -337,6 +346,7 @@ variable 2akJUSKKPN7IylZjqGMRlhXupds= + public regular 6OhcFM3BV6KlrvmfpsljaMHxpdA= @@ -408,6 +418,7 @@ typedef nkW23Ykh9wywIjUzLqEQlHf8R5k= + public regular XSI9u4gB6ZYb6pWxN29K8+iKza4= @@ -430,6 +441,7 @@ variable WMA7IrW+2LvVbOV8OxRgz1lZtgs= + public regular XSI9u4gB6ZYb6pWxN29K8+iKza4= @@ -453,6 +465,7 @@ variable 9mHoUUHldwcRXKA3lf94KNCXALA= + public regular XSI9u4gB6ZYb6pWxN29K8+iKza4= @@ -475,6 +488,7 @@ variable BBtkYfP6w9XgHxk01Va2e1WZHo0= + public regular XSI9u4gB6ZYb6pWxN29K8+iKza4= @@ -500,6 +514,7 @@ variable nnQtR7SV1kLSZgMv0quXSh0M8/A= + public regular XSI9u4gB6ZYb6pWxN29K8+iKza4= @@ -523,6 +538,7 @@ variable iixsM8X5M740uqb1jSRUfUuvNo0= + public regular XSI9u4gB6ZYb6pWxN29K8+iKza4= diff --git a/test-files/golden-tests/symbols/record/record-inheritance.xml b/test-files/golden-tests/symbols/record/record-inheritance.xml index 84175e1582..1bea4301b1 100644 --- a/test-files/golden-tests/symbols/record/record-inheritance.xml +++ b/test-files/golden-tests/symbols/record/record-inheritance.xml @@ -74,6 +74,7 @@ C0 + private @@ -107,6 +108,7 @@ C0 + public @@ -140,6 +142,7 @@ C0 + protected @@ -173,6 +176,7 @@ C0 + private @@ -206,6 +210,7 @@ C0 + private 1 RoJyFLcF4tn+I7Xvlv0H+vBkIE4= @@ -241,6 +246,7 @@ C1 + private 1 RoJyFLcF4tn+I7Xvlv0H+vBkIE4= @@ -276,6 +282,7 @@ C5 + public @@ -285,6 +292,7 @@ C6 + public @@ -374,6 +382,7 @@ S0 + public OkKbIK8En3Y5FbOBQVeHnAsZ0aY= @@ -408,6 +417,7 @@ S1 + public OkKbIK8En3Y5FbOBQVeHnAsZ0aY= @@ -442,6 +452,7 @@ S2 + public @@ -451,6 +462,7 @@ S3 + public @@ -484,6 +496,7 @@ S0 + private @@ -493,6 +506,7 @@ S1 + protected @@ -534,6 +548,7 @@ Ts + public diff --git a/test-files/golden-tests/symbols/record/union.xml b/test-files/golden-tests/symbols/record/union.xml index db9e446050..7095e0aba0 100644 --- a/test-files/golden-tests/symbols/record/union.xml +++ b/test-files/golden-tests/symbols/record/union.xml @@ -50,6 +50,7 @@ variable Be23kXXQRAQHfKNTp2HOM2jouJo= + public regular rOga+mYntM7ytFb7bhJSklZ0r34= @@ -73,6 +74,7 @@ variable HqUCV+CnE+akUirdwlf8maZxw40= + public regular rOga+mYntM7ytFb7bhJSklZ0r34= @@ -123,6 +125,7 @@ variable QtOrWpj/+5ytPBCEoNlbW+uW/oA= + public regular 3JsK1DO0O+wZhv+0meptQrbs3fY= @@ -146,6 +149,7 @@ variable 8o+2/UVx4hIiDLQRYohp688sXmI= + public regular 3JsK1DO0O+wZhv+0meptQrbs3fY= @@ -169,6 +173,7 @@ variable zTVqdWL2ShJziu85kaeOk2wfYFs= + public regular 3JsK1DO0O+wZhv+0meptQrbs3fY= diff --git a/test-files/golden-tests/symbols/record/unnamed.xml b/test-files/golden-tests/symbols/record/unnamed.xml index 3add224bc7..cb6953d5fb 100644 --- a/test-files/golden-tests/symbols/record/unnamed.xml +++ b/test-files/golden-tests/symbols/record/unnamed.xml @@ -51,6 +51,7 @@ function yiR+Q9T0kIzuR5+cO8MjyUGxhD4= + public implementation-defined F1Jq7+g4G9C/ONGL1uiGY4NNso4= @@ -110,6 +111,7 @@ variable 4Sy+GbRmqI4igByqQo0hAnRUahY= + public regular 8AwuUPjsLEReggyF5UohZMvrh8k= @@ -182,6 +184,7 @@ 8AwuUPjsLEReggyF5UohZMvrh8k= + extern y @@ -213,5 +216,6 @@ 8AwuUPjsLEReggyF5UohZMvrh8k= + extern diff --git a/test-files/golden-tests/symbols/typedef/alias-template.xml b/test-files/golden-tests/symbols/typedef/alias-template.xml index 43c137c9d8..4acbb2a3fd 100644 --- a/test-files/golden-tests/symbols/typedef/alias-template.xml +++ b/test-files/golden-tests/symbols/typedef/alias-template.xml @@ -155,6 +155,7 @@ typedef STM3CgeaOEakPrQJdlRWWM4MMFo= + public regular i5oK/nki0o3BH2ZAgkGyaGib07g= diff --git a/test-files/golden-tests/symbols/typedef/dependency-propagation.xml b/test-files/golden-tests/symbols/typedef/dependency-propagation.xml index 0f77ffc660..c5e5f3361b 100644 --- a/test-files/golden-tests/symbols/typedef/dependency-propagation.xml +++ b/test-files/golden-tests/symbols/typedef/dependency-propagation.xml @@ -177,6 +177,7 @@ + public diff --git a/test-files/golden-tests/symbols/using/using-function-after.xml b/test-files/golden-tests/symbols/using/using-function-after.xml index a2324318bd..82a5b864a5 100644 --- a/test-files/golden-tests/symbols/using/using-function-after.xml +++ b/test-files/golden-tests/symbols/using/using-function-after.xml @@ -33,7 +33,7 @@ regular //////////////////////////8= - gAFZ/q+ghQPrWK8SOl+US+U0jTU= + MWV4pZAIXJFn1I+74ARAr+ZOmkw= @@ -55,7 +55,7 @@ overloads - gAFZ/q+ghQPrWK8SOl+US+U0jTU= + MWV4pZAIXJFn1I+74ARAr+ZOmkw= regular jQQu/8mLNzRQvGtbkKMwwloVDpw= diff --git a/test-files/golden-tests/symbols/using/using-function-local-overloads.xml b/test-files/golden-tests/symbols/using/using-function-local-overloads.xml index 4e8bc5a5b3..d777482e0c 100644 --- a/test-files/golden-tests/symbols/using/using-function-local-overloads.xml +++ b/test-files/golden-tests/symbols/using/using-function-local-overloads.xml @@ -28,7 +28,7 @@ regular //////////////////////////8= - gAFZ/q+ghQPrWK8SOl+US+U0jTU= + MWV4pZAIXJFn1I+74ARAr+ZOmkw= @@ -57,7 +57,7 @@ overloads - gAFZ/q+ghQPrWK8SOl+US+U0jTU= + MWV4pZAIXJFn1I+74ARAr+ZOmkw= regular jQQu/8mLNzRQvGtbkKMwwloVDpw= @@ -271,7 +271,7 @@ A - gAFZ/q+ghQPrWK8SOl+US+U0jTU= + MWV4pZAIXJFn1I+74ARAr+ZOmkw= f @@ -299,7 +299,7 @@ overloads - gAFZ/q+ghQPrWK8SOl+US+U0jTU= + MWV4pZAIXJFn1I+74ARAr+ZOmkw= regular jQQu/8mLNzRQvGtbkKMwwloVDpw= diff --git a/test-files/golden-tests/symbols/using/using-function-overloads.xml b/test-files/golden-tests/symbols/using/using-function-overloads.xml index 8f18ed647e..05ab70a2b3 100644 --- a/test-files/golden-tests/symbols/using/using-function-overloads.xml +++ b/test-files/golden-tests/symbols/using/using-function-overloads.xml @@ -27,7 +27,7 @@ regular //////////////////////////8= - gAFZ/q+ghQPrWK8SOl+US+U0jTU= + MWV4pZAIXJFn1I+74ARAr+ZOmkw= @@ -56,7 +56,7 @@ overloads - gAFZ/q+ghQPrWK8SOl+US+U0jTU= + MWV4pZAIXJFn1I+74ARAr+ZOmkw= regular jQQu/8mLNzRQvGtbkKMwwloVDpw= @@ -240,7 +240,7 @@ A - gAFZ/q+ghQPrWK8SOl+US+U0jTU= + MWV4pZAIXJFn1I+74ARAr+ZOmkw= f @@ -268,7 +268,7 @@ overloads - gAFZ/q+ghQPrWK8SOl+US+U0jTU= + MWV4pZAIXJFn1I+74ARAr+ZOmkw= regular jQQu/8mLNzRQvGtbkKMwwloVDpw= diff --git a/test-files/golden-tests/symbols/using/using-member-conversion.xml b/test-files/golden-tests/symbols/using/using-member-conversion.xml index 397cd8e640..591cc697da 100644 --- a/test-files/golden-tests/symbols/using/using-member-conversion.xml +++ b/test-files/golden-tests/symbols/using/using-member-conversion.xml @@ -98,6 +98,7 @@ function Yyyb35deIA+gpVYakhwVjtGJBkQ= + public regular ynx5NXMLXqzSXwgOnIP6CHzNx14= @@ -160,6 +161,7 @@ X + public @@ -185,6 +187,7 @@ function Yyyb35deIA+gpVYakhwVjtGJBkQ= + public regular ynx5NXMLXqzSXwgOnIP6CHzNx14= @@ -227,6 +230,7 @@ using EFiZJ7JGhYhYwHH32s8HA+C+gns= + public regular yi1fc3tRK4IAsSp9WUPwfU6MSc8= @@ -263,6 +267,7 @@ function Yyyb35deIA+gpVYakhwVjtGJBkQ= + public regular ynx5NXMLXqzSXwgOnIP6CHzNx14= diff --git a/test-files/golden-tests/symbols/using/using-member-function.xml b/test-files/golden-tests/symbols/using/using-member-function.xml index 2aad594114..3f8e5f5b27 100644 --- a/test-files/golden-tests/symbols/using/using-member-function.xml +++ b/test-files/golden-tests/symbols/using/using-member-function.xml @@ -68,6 +68,7 @@ function nGMtjL9NQBvDG5i6/RUEWr+GrRg= + public regular YrPSaKAbmXgzCAX5WByx4eVoqBM= @@ -154,6 +155,7 @@ function xY3rr0vMQ99dtCUUyDbfqsakgww= + protected regular 3JsK1DO0O+wZhv+0meptQrbs3fY= @@ -232,6 +234,7 @@ function PvNGaaAeF9VeSz8kIOeaPmy37BQ= + public regular BrX2oZup9qgy4SfJloKCuUYZshA= @@ -310,6 +313,7 @@ function mEbr7lEslKhZ3jpVBYzcTiHp/oA= + protected regular CSFzdUEgi4+pu0K2D3isHXeaoFQ= @@ -388,6 +392,7 @@ function CEIniuKR4So6PAYFUcT6B+Nx+H8= + public regular KJWEqOD/QXinlGIqVHqmIlA5Z6E= @@ -466,6 +471,7 @@ function 5FJgzIcro5VIoeXTsaIxTaVD91s= + protected regular 47VHAvq/9ANwJboZT8J8RwBjMLU= @@ -581,6 +587,7 @@ A + public @@ -590,6 +597,7 @@ B + public @@ -599,6 +607,7 @@ C + protected @@ -608,6 +617,7 @@ D + protected @@ -645,6 +655,7 @@ function nGMtjL9NQBvDG5i6/RUEWr+GrRg= + public regular YrPSaKAbmXgzCAX5WByx4eVoqBM= @@ -694,6 +705,7 @@ using rmQLRfXW6vtP8GPIdyNNwtpI+fw= + public regular FLgkhM3m0U3Lo2o3XLPUizWPH00= @@ -729,6 +741,7 @@ using G3OvpIVH5hy5WK887jqrPTyl37g= + public regular FLgkhM3m0U3Lo2o3XLPUizWPH00= @@ -764,6 +777,7 @@ using HTq6bF0wwPrK9aYY2w2AP0w7n4M= + public regular FLgkhM3m0U3Lo2o3XLPUizWPH00= @@ -799,6 +813,7 @@ using zZluhP9Ym1VXLys/h+I2mnz4A6E= + public regular FLgkhM3m0U3Lo2o3XLPUizWPH00= @@ -834,6 +849,7 @@ using T+dE7rV3VUFcNGkSQ5sS+TE3ovE= + public regular FLgkhM3m0U3Lo2o3XLPUizWPH00= @@ -869,6 +885,7 @@ using YoyYEMZ0BckFWg9oBMs6hEGFY1o= + public regular FLgkhM3m0U3Lo2o3XLPUizWPH00= @@ -904,6 +921,7 @@ using DND4SGqk7GU/0r60b5NpJlihpCI= + public regular FLgkhM3m0U3Lo2o3XLPUizWPH00= @@ -940,6 +958,7 @@ function nGMtjL9NQBvDG5i6/RUEWr+GrRg= + public regular YrPSaKAbmXgzCAX5WByx4eVoqBM= @@ -989,6 +1008,7 @@ using vu1xdQQ6LH5sjZHsW8XwytWstO8= + public regular FLgkhM3m0U3Lo2o3XLPUizWPH00= @@ -1025,6 +1045,7 @@ function xY3rr0vMQ99dtCUUyDbfqsakgww= + protected regular 3JsK1DO0O+wZhv+0meptQrbs3fY= @@ -1067,6 +1088,7 @@ using 91+ZMOvfXn2lxSqWzq2TgM9xueo= + public regular FLgkhM3m0U3Lo2o3XLPUizWPH00= @@ -1103,6 +1125,7 @@ function PvNGaaAeF9VeSz8kIOeaPmy37BQ= + public regular BrX2oZup9qgy4SfJloKCuUYZshA= @@ -1145,6 +1168,7 @@ using CQN3Y3phH+3gaj82D6tq5au3JMQ= + public regular FLgkhM3m0U3Lo2o3XLPUizWPH00= @@ -1181,6 +1205,7 @@ function mEbr7lEslKhZ3jpVBYzcTiHp/oA= + protected regular CSFzdUEgi4+pu0K2D3isHXeaoFQ= @@ -1223,6 +1248,7 @@ using vYTRrgx7/KOCWsM9RR5gIdgaRsw= + public regular FLgkhM3m0U3Lo2o3XLPUizWPH00= @@ -1259,6 +1285,7 @@ function CEIniuKR4So6PAYFUcT6B+Nx+H8= + public regular KJWEqOD/QXinlGIqVHqmIlA5Z6E= @@ -1301,6 +1328,7 @@ using IrXefx1M56k6Iagrba7mfDBpg80= + public regular FLgkhM3m0U3Lo2o3XLPUizWPH00= @@ -1337,6 +1365,7 @@ function 5FJgzIcro5VIoeXTsaIxTaVD91s= + protected regular 47VHAvq/9ANwJboZT8J8RwBjMLU= @@ -1393,6 +1422,7 @@ overloads fRZCjYpQKv6bmUv7+MW+i+lpbAc= + protected regular FLgkhM3m0U3Lo2o3XLPUizWPH00= @@ -1435,6 +1465,7 @@ function xY3rr0vMQ99dtCUUyDbfqsakgww= + protected regular 3JsK1DO0O+wZhv+0meptQrbs3fY= @@ -1477,6 +1508,7 @@ function PvNGaaAeF9VeSz8kIOeaPmy37BQ= + public regular BrX2oZup9qgy4SfJloKCuUYZshA= @@ -1519,6 +1551,7 @@ function mEbr7lEslKhZ3jpVBYzcTiHp/oA= + protected regular CSFzdUEgi4+pu0K2D3isHXeaoFQ= diff --git a/test-files/golden-tests/symbols/using/using-typename.xml b/test-files/golden-tests/symbols/using/using-typename.xml index 3b34a688dc..5598010103 100644 --- a/test-files/golden-tests/symbols/using/using-typename.xml +++ b/test-files/golden-tests/symbols/using/using-typename.xml @@ -56,6 +56,7 @@ typedef GJwWDf/H5L0HhOr2GLrume6MtVg= + public regular pOlR4JvM07kjg0dk5WSjWZiChpc= diff --git a/test-files/golden-tests/symbols/variable/function-objects.xml b/test-files/golden-tests/symbols/variable/function-objects.xml index a7bacedfb2..7c137e63aa 100644 --- a/test-files/golden-tests/symbols/variable/function-objects.xml +++ b/test-files/golden-tests/symbols/variable/function-objects.xml @@ -64,7 +64,7 @@ jheJbElDtz8sRPC5LnSDQq8lZxk= Q7TeXaooeWBCT9SU99nyB5CtK+s= U4zTCtzSQV8IWSGvNJ9yVS05DrI= - aH5Pl0fbmu90J23OrryO2sgW4nQ= + xR65goSvHe3iHYZOSCxa3obFJxU= CKAGfUg3xu9aj/61O8lvzoUtJ1Y= oZ3I+KHvN54JGuKNFFjwQbrpV/s= gqHyzWPULraMQqYE5Z7KRclfhlU= @@ -160,6 +160,7 @@ function ncXmIInH4q8y85ElLYqPtp4Sh7k= + public implementation-defined 2LfkQhwiuDwFsKFjyyY80x+aQlo= @@ -261,6 +262,7 @@ function z4MsJNxheGTP8zz11tDKbex/Zmg= + public implementation-defined dz4ofw8qgvj3+fcNASP+amk1UNM= @@ -336,6 +338,7 @@ function b/HysfrapANFiwuzDbaP4vFpQ60= + public implementation-defined V3WwbBFpxCbUh0q1EW7VPy75Jz0= @@ -421,6 +424,7 @@ overloads NUvxcQ9Cgz6qTi0dPJwX33aEujc= + public implementation-defined mZtv21AdBSGdGVNkTV5gNP0Hn/s= @@ -455,6 +459,7 @@ function 5SxFoaISsZsYzIp9HRw7tVX/TBY= + public implementation-defined mZtv21AdBSGdGVNkTV5gNP0Hn/s= @@ -475,6 +480,7 @@ constructor 1 1 + constexpr 1 @@ -489,6 +495,7 @@ function LYHk7iBgu2JeT2lpllNkJBcGHLQ= + public implementation-defined mZtv21AdBSGdGVNkTV5gNP0Hn/s= @@ -530,6 +537,7 @@ constructor 1 1 + constexpr 1 @@ -544,6 +552,7 @@ function lRw3HhK40/l+C3AHJ9IXZ0YiR/U= + public implementation-defined mZtv21AdBSGdGVNkTV5gNP0Hn/s= @@ -584,6 +593,7 @@ constructor 1 1 + constexpr 1 @@ -598,6 +608,7 @@ function njwFVAfRvQKdhOoe3xOPwxaPATY= + public implementation-defined mZtv21AdBSGdGVNkTV5gNP0Hn/s= @@ -618,6 +629,7 @@ destructor 1 1 + constexpr 1 @@ -632,6 +644,7 @@ overloads 4fr25Ymu72J1jfBMI4M7C2nWJBM= + public implementation-defined mZtv21AdBSGdGVNkTV5gNP0Hn/s= @@ -668,6 +681,7 @@ function 6VFxN0vFHQ1ltsX6WvDNzolS25o= + public implementation-defined mZtv21AdBSGdGVNkTV5gNP0Hn/s= @@ -719,6 +733,7 @@ normal 1 1 + constexpr 1 @@ -733,6 +748,7 @@ function UqbIsgY8DwZ8/6gwpjlHbkxC2bM= + public implementation-defined mZtv21AdBSGdGVNkTV5gNP0Hn/s= @@ -783,6 +799,7 @@ normal 1 1 + constexpr 1 @@ -798,6 +815,7 @@ function 9N/DoqP9RHp9oKIyjd88SuxV/rY= + public implementation-defined mZtv21AdBSGdGVNkTV5gNP0Hn/s= @@ -881,6 +899,7 @@ function Lfqm/zhq8Q8oS9Q0D2bS6UyswPY= + public implementation-defined D8IWM+7P/nyQQB/NcuOZMF8WDCo= @@ -942,6 +961,7 @@ function sx7jOM1J8Bx2DQECVEuJjtUWYMQ= + public implementation-defined D8IWM+7P/nyQQB/NcuOZMF8WDCo= @@ -1032,6 +1052,7 @@ function J6kTsHT7fNdgA7bSU4ZOMKLM04w= + public implementation-defined KzRcRDf1l+SCwO6jl7+0aO9JJIQ= @@ -1148,6 +1169,7 @@ function 646BAjJD4AjEZDXn0F7WmTCVnJA= + public implementation-defined +MYTjwT3NRZ4i0BUpsmhZ1YaAOs= @@ -1184,6 +1206,7 @@ 0 constructor + constexpr 1 @@ -1199,6 +1222,7 @@ function SBSUA5qD7n1g5kE4lOaTinh2gvg= + public implementation-defined +MYTjwT3NRZ4i0BUpsmhZ1YaAOs= @@ -1282,6 +1306,7 @@ function kBLhEu0L9QFIGvGeOITcw2renN0= + public implementation-defined Az+6QP9SgQCZ4pUqFjmL9Ycbg0c= @@ -1366,6 +1391,7 @@ function Dor3XY0DNbRqrq6o3VxmPSzwEPw= + public implementation-defined 8GvlDu9dAD8UG/F0pZ8sAX1YesQ= @@ -1403,6 +1429,7 @@ function 7NEMEfqJ2qq9ya8mcW1t7V5K0DA= + public implementation-defined 8GvlDu9dAD8UG/F0pZ8sAX1YesQ= @@ -1479,6 +1506,7 @@ record /wWRZ47l3RGQk0A5qVxlYjTR7sA= + public implementation-defined ZbHWoM9CoNiYVmufn0FnQWFE1ZQ= struct @@ -1505,6 +1533,7 @@ function nKjbGVj5I947gr5VfJysn6vnTe8= + public implementation-defined /wWRZ47l3RGQk0A5qVxlYjTR7sA= @@ -1546,6 +1575,7 @@ function rKnLJR7lcC0C6lxW9+MhJd/snzI= + public regular ZbHWoM9CoNiYVmufn0FnQWFE1ZQ= @@ -1620,6 +1650,7 @@ record HAgVk74XB+nAkzBERa0oYoigmBY= + public regular 3kuCvqZIS5FgwyOIBUEhgYmqu0E= struct @@ -1646,6 +1677,7 @@ function /hS1hRoPxuWySkopC1x6FD0nDZs= + public regular HAgVk74XB+nAkzBERa0oYoigmBY= @@ -1722,6 +1754,7 @@ record Giq2nqOt5SEaT5yKq9j2bejuWvs= + public implementation-defined uwDbzoOh24VM871hbgoix965hvM= struct @@ -1748,6 +1781,7 @@ function LjkioF0I8g9FaNmeTIt55ASSryw= + public implementation-defined Giq2nqOt5SEaT5yKq9j2bejuWvs= @@ -1789,6 +1823,7 @@ function 4grFl9KUVcmgR4SaG47T6S4hBcg= + protected regular uwDbzoOh24VM871hbgoix965hvM= @@ -1865,6 +1900,7 @@ function o734JPIfZePYuyAyua3N+JYwItg= + public implementation-defined XFQrzDfbt/aT3nLEC8SIREJ5+7E= @@ -1898,6 +1934,7 @@ function spf/dXaQav7IqxEsfSwHdsLfHWA= + public implementation-defined XFQrzDfbt/aT3nLEC8SIREJ5+7E= @@ -1990,6 +2027,7 @@ function sqKzgkIg6wchew4YY2o9aHpXB5k= + public implementation-defined Q9BKcT6i3Nm4PivgU7CqtfQE0Ac= @@ -2048,6 +2086,7 @@ function StQp0Y2/XG9TgxxTnrLdK5J14tc= + public implementation-defined Q9BKcT6i3Nm4PivgU7CqtfQE0Ac= @@ -2081,6 +2120,7 @@ variable IXlACVGYZDttXUeLMB8kTaDmKxI= + public implementation-defined Q9BKcT6i3Nm4PivgU7CqtfQE0Ac= @@ -2155,6 +2195,7 @@ overloads 4yMh7Vr6W8B4tNabZDXG8+DRxCk= + public implementation-defined WqZB1D86sSU2lzC30xcTY6pwqHk= @@ -2212,6 +2253,7 @@ function 3pFm3c1ouZFHVz2VuYyh06UPI8k= + public implementation-defined WqZB1D86sSU2lzC30xcTY6pwqHk= @@ -2253,6 +2295,7 @@ function QnmIVR1Ls62IV8fNUQH/87RT+rw= + public implementation-defined WqZB1D86sSU2lzC30xcTY6pwqHk= @@ -2369,6 +2412,7 @@ function ObkoK/8a36a2cpcglnOZeQ0CK6c= + public implementation-defined wR6zAGIhJWV1xy/X/ML6Op9S+u0= @@ -2444,6 +2488,7 @@ function SzUbNth6+mFqhSkU3FRUROTwn8I= + public regular E/A/OzFlfSba7YOnb9pdx6Kzl6g= @@ -2504,6 +2549,7 @@ function VP74GFLyNdozTrTey2tdfoaKjUY= + public regular /CKyuk1DFM5gAFSwM3GfxffLRNY= @@ -2528,6 +2574,7 @@ function Bm5H0TkZTEkMu+OEU9dcfKqFe20= + public regular /CKyuk1DFM5gAFSwM3GfxffLRNY= @@ -2622,6 +2669,7 @@ function BinZVJt4PqUyP1CO2JwuP1ErFQ8= + public implementation-defined s8nEdmju6kIl769Zvq7LJHs8AKk= @@ -2705,6 +2753,7 @@ function NZU9vrif2JKVBHco3BSjU081qx0= + public regular yVsgdCQ8HsNP7QyqPoq5iBc9f0M= @@ -2772,6 +2821,7 @@ function s6JXEmJmgs/H6a+GJMvxyFG2e4w= + public regular yVsgdCQ8HsNP7QyqPoq5iBc9f0M= @@ -2855,6 +2905,7 @@ function s5A+2w1YzMHk0ociR6NK5lJqCfY= + public implementation-defined GRVLpM4dLol3Ue3NbyG8bey66g0= @@ -2978,6 +3029,7 @@ overloads e+cfJyIox6lE1iWy1zo7AAzH+gk= + public regular DRkO3nVEpuQnXYIVWnNBGj2hiaU= @@ -3011,6 +3063,7 @@ function WIOS77QIsEF9HDdKTHvR3vrhYFM= + public regular DRkO3nVEpuQnXYIVWnNBGj2hiaU= @@ -3031,6 +3084,7 @@ constructor 1 1 + constexpr 1 @@ -3045,6 +3099,7 @@ function Vymw5R4e5hNHeWpujcciD/MqyDA= + public regular DRkO3nVEpuQnXYIVWnNBGj2hiaU= @@ -3109,6 +3164,7 @@ function HKwRMG1TCcdL9/dO4RHiRSkYj+4= + public regular DRkO3nVEpuQnXYIVWnNBGj2hiaU= @@ -3199,6 +3255,7 @@ function dSYqwa5823mxb9MxBFg2LyhF9Es= + public implementation-defined Cs8nEj6ZkCT7h1GP1HjjcVxOUlI= @@ -3284,6 +3341,7 @@ function huKuawyv71bSszEI0u56adA4Lwo= + public implementation-defined h5HKx53sOtPBzVoVIKOnPpebeA4= @@ -3334,6 +3392,7 @@ function kqTsWjHssMexPe9Mf2RuIb8S1s4= + public implementation-defined xK7ya2AjlmpquvBT9IAYtgjz4J0= @@ -3925,7 +3984,7 @@ overloads - aH5Pl0fbmu90J23OrryO2sgW4nQ= + xR65goSvHe3iHYZOSCxa3obFJxU= regular aq/rzLqHv/iV3WBl6G2uDMW2aTo= @@ -4660,6 +4719,7 @@ function /29KnLYPswG8mop699YNDxPe6/w= + public regular wNm1kb23AfA8iHR4axtiYb0LV1g= diff --git a/test-files/golden-tests/symbols/variable/member-pointer.xml b/test-files/golden-tests/symbols/variable/member-pointer.xml index 4f9c1d5eea..a79241a5e3 100644 --- a/test-files/golden-tests/symbols/variable/member-pointer.xml +++ b/test-files/golden-tests/symbols/variable/member-pointer.xml @@ -61,6 +61,7 @@ variable DXJlc6wJoMqdyInhGyTWrnqPjXQ= + public regular pOYGF6pLJlICuiGO0Xj0daDb/to= @@ -83,6 +84,7 @@ variable Nf9nw1tdylSujfxB7RZlc/qmkeM= + public regular pOYGF6pLJlICuiGO0Xj0daDb/to= diff --git a/test-files/golden-tests/symbols/variable/ns-variables.xml b/test-files/golden-tests/symbols/variable/ns-variables.xml index a04a26898d..36c0ce4d5e 100644 --- a/test-files/golden-tests/symbols/variable/ns-variables.xml +++ b/test-files/golden-tests/symbols/variable/ns-variables.xml @@ -117,6 +117,7 @@ 1 + extern 1 @@ -146,6 +147,7 @@ 1 + extern 1 @@ -191,6 +193,7 @@ T + extern x0 @@ -236,6 +239,7 @@ 0 + static 1 @@ -259,6 +263,7 @@ 0 + static 1 1 diff --git a/test-files/golden-tests/symbols/variable/static-data-def-constexpr.xml b/test-files/golden-tests/symbols/variable/static-data-def-constexpr.xml index fee36e32d5..2525d19ab1 100644 --- a/test-files/golden-tests/symbols/variable/static-data-def-constexpr.xml +++ b/test-files/golden-tests/symbols/variable/static-data-def-constexpr.xml @@ -55,6 +55,7 @@ variable Sugb8cWjf0PRq2dN0pOEbkKY9C4= + public regular pOYGF6pLJlICuiGO0Xj0daDb/to= @@ -65,6 +66,7 @@ S{} + static 1 1 @@ -111,6 +113,7 @@ variable +nDx93NmBRbrBZ8RlBwzPk8rp8I= + public regular CgGNdHpW5mG/i5741WPYQDw28OQ= @@ -120,6 +123,7 @@ 0 + static 1 1 1 diff --git a/test-files/golden-tests/symbols/variable/static-data-def.xml b/test-files/golden-tests/symbols/variable/static-data-def.xml index 31412bd5e5..6faee51828 100644 --- a/test-files/golden-tests/symbols/variable/static-data-def.xml +++ b/test-files/golden-tests/symbols/variable/static-data-def.xml @@ -70,6 +70,7 @@ variable rW6h+mCfZLROHlYzwXFIUPN6oSE= + public regular 5tUSuMtQqtYE49jBjSYSWp0DJAM= @@ -79,6 +80,7 @@ 0 + static v1 @@ -98,6 +100,7 @@ variable nkB0lMmDvMsu9GDrKr3Mzwi5g6I= + public regular 5tUSuMtQqtYE49jBjSYSWp0DJAM= @@ -107,6 +110,7 @@ 1 + static 1 @@ -127,6 +131,7 @@ variable e48c97dC3AIWJHWE5T0yWVxezgg= + public regular 5tUSuMtQqtYE49jBjSYSWp0DJAM= @@ -136,6 +141,7 @@ 2 + static 1 1 @@ -157,6 +163,7 @@ variable Wx5S5oWv5o4nV7I+zFEKTvWl40g= + public regular 5tUSuMtQqtYE49jBjSYSWp0DJAM= @@ -167,6 +174,7 @@ 3 + static 1 @@ -187,6 +195,7 @@ variable 6a2wBN4mHiuAAqV0gYgYQeqFNVM= + public regular 5tUSuMtQqtYE49jBjSYSWp0DJAM= @@ -197,6 +206,7 @@ 4 + static v5 @@ -210,6 +220,7 @@ variable Q96okKllwtE2Tg+t7HAkms6flbk= + public regular 5tUSuMtQqtYE49jBjSYSWp0DJAM= @@ -219,6 +230,7 @@ 5 + static 1 @@ -233,6 +245,7 @@ variable 0Xh4ypD2+Eipbqc5Z8n4fEkXZ8c= + public regular 5tUSuMtQqtYE49jBjSYSWp0DJAM= @@ -243,6 +256,7 @@ 6 + static 1 @@ -257,6 +271,7 @@ variable VCnmz8Cp9RtJzQQQ7yw57uzbQAY= + public regular 5tUSuMtQqtYE49jBjSYSWp0DJAM= @@ -266,6 +281,7 @@ 7 + static 1 1 @@ -313,6 +329,7 @@ variable +yhNlGuTVY4spCfBXSTBkEDzi30= + public regular 3JsK1DO0O+wZhv+0meptQrbs3fY= @@ -323,6 +340,7 @@ 0 + static 1 @@ -337,6 +355,7 @@ variable vNYWHh2ovZiBP3uVEeJhMkaiF3w= + public regular 3JsK1DO0O+wZhv+0meptQrbs3fY= @@ -346,6 +365,7 @@ 0 + static 1 1 1 diff --git a/test-files/golden-tests/symbols/variable/static-data-template.xml b/test-files/golden-tests/symbols/variable/static-data-template.xml index 19b8e7410b..64256d4fb5 100644 --- a/test-files/golden-tests/symbols/variable/static-data-template.xml +++ b/test-files/golden-tests/symbols/variable/static-data-template.xml @@ -57,6 +57,7 @@ variable XzfcXqh7M7tQVHWKvlB891KIC/0= + public regular 5tUSuMtQqtYE49jBjSYSWp0DJAM= @@ -78,6 +79,7 @@ 0 + static 1 1 @@ -93,6 +95,7 @@ variable eKdgKT44WwfN7UkQXGEqVJssIPM= + public regular 5tUSuMtQqtYE49jBjSYSWp0DJAM= @@ -122,6 +125,7 @@ 2 + static 1 1 @@ -137,6 +141,7 @@ variable odTOUblgmooUozrBqW3qKzPWSO4= + public regular 5tUSuMtQqtYE49jBjSYSWp0DJAM= @@ -173,6 +178,7 @@ 1 + static 1 1 diff --git a/test-files/golden-tests/symbols/variable/var-template.xml b/test-files/golden-tests/symbols/variable/var-template.xml index e6cc18cd84..214f29b144 100644 --- a/test-files/golden-tests/symbols/variable/var-template.xml +++ b/test-files/golden-tests/symbols/variable/var-template.xml @@ -53,6 +53,7 @@ variable kMNXdSEDYBD+T4RYbkq3ekR+jUU= + public regular 3JsK1DO0O+wZhv+0meptQrbs3fY= @@ -69,6 +70,7 @@ 0 + static 1 @@ -83,6 +85,7 @@ variable Wtlw7VEK38lEEBeqNoDOjTkJE+U= + public regular 3JsK1DO0O+wZhv+0meptQrbs3fY= @@ -103,6 +106,7 @@ -1 + static 1 @@ -117,6 +121,7 @@ variable wvoZkG3eTMaiFAf971AFdvmHCDE= + public regular 3JsK1DO0O+wZhv+0meptQrbs3fY= @@ -144,6 +149,7 @@ sizeof(T) + static 1 diff --git a/test-files/golden-tests/templates/ct_expl_dependency.xml b/test-files/golden-tests/templates/ct_expl_dependency.xml index 1d21184ee7..f8b0eef6a6 100644 --- a/test-files/golden-tests/templates/ct_expl_dependency.xml +++ b/test-files/golden-tests/templates/ct_expl_dependency.xml @@ -59,6 +59,7 @@ function NCn1LYKSU8X/x/ejZTTGKsJQLug= + public regular AKwlChAOi+0ttIAPsD7uitS+gk0= diff --git a/test-files/golden-tests/templates/ct_mc.xml b/test-files/golden-tests/templates/ct_mc.xml index 774d2efff5..15cdc59510 100644 --- a/test-files/golden-tests/templates/ct_mc.xml +++ b/test-files/golden-tests/templates/ct_mc.xml @@ -55,6 +55,7 @@ record fWoD36lD5WiSb4UmeWlbUQhHuXU= + public regular 5tUSuMtQqtYE49jBjSYSWp0DJAM= struct @@ -80,6 +81,7 @@ function FBE8MWhdRJutTkraJIXajcEr4U0= + public regular fWoD36lD5WiSb4UmeWlbUQhHuXU= diff --git a/test-files/golden-tests/templates/ct_mct.xml b/test-files/golden-tests/templates/ct_mct.xml index a144c48625..7dc5a12532 100644 --- a/test-files/golden-tests/templates/ct_mct.xml +++ b/test-files/golden-tests/templates/ct_mct.xml @@ -55,6 +55,7 @@ record dKDSVrZun8skBV/NUCmJyCUOvJA= + public regular 5tUSuMtQqtYE49jBjSYSWp0DJAM= struct @@ -87,6 +88,7 @@ function E/7hys/9wYX9YmsaiN5VHroNb8A= + public regular dKDSVrZun8skBV/NUCmJyCUOvJA= diff --git a/test-files/golden-tests/templates/ct_mf.xml b/test-files/golden-tests/templates/ct_mf.xml index 8d593fd26a..89bc8cd82b 100644 --- a/test-files/golden-tests/templates/ct_mf.xml +++ b/test-files/golden-tests/templates/ct_mf.xml @@ -55,6 +55,7 @@ function c4jAAYDw9qnOxUCpXquNT7fALUY= + public regular 5tUSuMtQqtYE49jBjSYSWp0DJAM= diff --git a/test-files/golden-tests/templates/ct_mft.xml b/test-files/golden-tests/templates/ct_mft.xml index 20b403c803..283fb7194a 100644 --- a/test-files/golden-tests/templates/ct_mft.xml +++ b/test-files/golden-tests/templates/ct_mft.xml @@ -55,6 +55,7 @@ function fycIFVnUjGsczEihLemEC7pcV4w= + public regular 5tUSuMtQqtYE49jBjSYSWp0DJAM= From d50c23709a36ba6351da79151f75779753aac4ec Mon Sep 17 00:00:00 2001 From: Gennaro Prota Date: Thu, 16 Apr 2026 12:29:52 +0200 Subject: [PATCH 04/21] feat: have --schemas also generate an XML schema --schemas now writes both mrdocs-dom-schema.json (Handlebars DOM) and mrdocs.rnc (XML output). The XML schema mirrors XMLWriter.cpp's serialization. --- include/mrdocs/Schemas/DomSchemaWriter.hpp | 12 + include/mrdocs/Schemas/JsonEmitter.hpp | 8 + include/mrdocs/Schemas/RncSchemaWriter.hpp | 837 +++++++++++++++++++++ src/tool/ToolMain.cpp | 16 + 4 files changed, 873 insertions(+) create mode 100644 include/mrdocs/Schemas/RncSchemaWriter.hpp diff --git a/include/mrdocs/Schemas/DomSchemaWriter.hpp b/include/mrdocs/Schemas/DomSchemaWriter.hpp index 05bb7a094b..b26e7ab890 100644 --- a/include/mrdocs/Schemas/DomSchemaWriter.hpp +++ b/include/mrdocs/Schemas/DomSchemaWriter.hpp @@ -24,6 +24,12 @@ #include #include +/** Schema writers for the MrDocs output formats. + + Houses the JSON-Schema writer for the DOM (Handlebars) objects + and the RELAX NG Compact writer for the XML generator's output. + The writers are driven by reflection over described types. +*/ namespace mrdocs::schema { //------------------------------------------------ @@ -138,6 +144,12 @@ memberSchema() // those fields are NOT required in the schema. //------------------------------------------------ +/** True if `M` is always serialized, i.e. never skipped by + `shouldMapValue()` in `MapReflectedType.hpp`. + + Members of such a type must appear in the JSON Schema's + `required` array. +*/ template inline constexpr bool is_always_present_v = !mrdocs::detail::is_optional_v && diff --git a/include/mrdocs/Schemas/JsonEmitter.hpp b/include/mrdocs/Schemas/JsonEmitter.hpp index 8d0dffba1c..3202c8b1b8 100644 --- a/include/mrdocs/Schemas/JsonEmitter.hpp +++ b/include/mrdocs/Schemas/JsonEmitter.hpp @@ -21,6 +21,14 @@ namespace mrdocs::schema { /** Serialize a dom::Value tree to formatted JSON. Handles null, boolean, integer, string, array, and object. + + @param v The value to serialize. + @param indent Current indentation level in units of two spaces. + Callers should pass `0` for the top-level call; recursive calls + increment it for nested arrays and objects. + @return The JSON text. Arrays and objects are pretty-printed + with two-space indentation; scalars are emitted without + surrounding whitespace. */ inline std::string diff --git a/include/mrdocs/Schemas/RncSchemaWriter.hpp b/include/mrdocs/Schemas/RncSchemaWriter.hpp new file mode 100644 index 0000000000..6884870ec7 --- /dev/null +++ b/include/mrdocs/Schemas/RncSchemaWriter.hpp @@ -0,0 +1,837 @@ +// +// 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_API_SCHEMAS_RNCSCHEMAWRITER_HPP +#define MRDOCS_API_SCHEMAS_RNCSCHEMAWRITER_HPP + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace mrdocs::schema { + +// --------------------------------------------------------------- +// Helpers +// --------------------------------------------------------------- + +/** Implementation details for the RNC schema writer. +*/ +namespace rnc_detail { + +/** Remove `suffix` from the end of `s`, if present. + + @param s The input string. + @param suffix The suffix to strip. + @return `s` with the trailing `suffix` removed, or an + unchanged copy of `s` if the suffix is not present. +*/ +inline std::string +removeSuffix(std::string_view s, std::string_view suffix) +{ + // Strict greater-than guards against emptying the result when + // a base struct (e.g. the bare `Type`) shares its name with a + // listed suffix. + return s.size() > suffix.size() && + s.substr(s.size() - suffix.size()) == suffix + ? std::string(s.substr(0, s.size() - suffix.size())) + : std::string(s); +} + +/** XML element tag name for a described type (mirrors XMLWriter). + + @tparam T A described type. + @return The kebab-case tag name produced by stripping well-known + suffixes (Symbol, Info, TypeInfo, Type, TParam, TArg, Block, + Inline) from the type's unqualified name. TParam-derived types + are suffixed with "-tparam" and TArg-derived types with "-targ" + to mirror XMLWriter's polymorphic dispatch (e.g. TypeTParam + becomes "type-tparam"). The "Name" suffix is intentionally not + stripped: the base struct `Name` itself stays "name" and concrete + name types like `IdentifierName` stay "identifier-name", matching + XMLWriter's writePolymorphic which uses the base/concrete type + name directly. +*/ +template +std::string tagName() +{ + std::string raw(readableTypeName()); + // Detect TParam/TArg derivation by suffix on the raw type name + // (avoids needing TParam/TArg base types in template-instantiation + // contexts where they may be incomplete). + bool const isTParamSub = + raw.size() > 6 && raw.substr(raw.size() - 6) == "TParam"; + bool const isTArgSub = + raw.size() > 4 && raw.substr(raw.size() - 4) == "TArg"; + + std::string name = raw; + for (std::string_view const suffix : + {"Symbol", "Info", "TypeInfo", "Type", + "TParam", "TArg", "Block", "Inline"}) + { + name = removeSuffix(name, suffix); + } + std::string out = toKebabCase(name); + if (isTParamSub) + { + out += "-tparam"; + } + else if (isTArgSub) + { + out += "-targ"; + } + return out; +} + +/** RNC pattern name (PascalCase, used for definitions). + + @tparam T A described type. + @return The unqualified type name of `T`, used as the RNC + pattern identifier on the left-hand side of a grammar rule. +*/ +template +std::string patternName() +{ + return std::string(readableTypeName()); +} + +// --------------------------------------------------------------- +// RNC content type for a C++ member type +// --------------------------------------------------------------- + +/** RNC pattern reference for the content of a member. + + @tparam T The C++ member type. + @return The RNC expression describing the allowed content: + a primitive (`text`, `Bool`, `SymbolID`) for scalar/string-like + types, the pattern name of a described struct, or the + appropriate union pattern (`AnyType`, `AnyTParam`, `AnyTArg`, + `BlockNode`, `InlineNode`, or `Name`) for polymorphic members. + `Optional` and `vector` unwrap to their element type. +*/ +template +std::string rncMember() +{ + using Type = std::decay_t; + + if constexpr (std::is_same_v) + { + return "Bool"; + } + else if constexpr (std::is_same_v || + std::is_same_v) + { + return "text"; + } + else if constexpr (std::is_integral_v) + { + return "text"; + } + else if constexpr (std::is_same_v) + { + return "SymbolID"; + } + else if constexpr (std::is_base_of_v) + { + return "text"; + } + else if constexpr (describe::has_describe_enumerators::value) + { + return patternName(); + } + else if constexpr (mrdocs::detail::is_optional_v) + { + return rncMember(); + } + else if constexpr (mrdocs::detail::is_vector_v) + { + return rncMember(); + } + else if constexpr (mrdocs::detail::is_polymorphic_v) + { + using V = typename Type::value_type; + if constexpr (std::is_same_v) + { + return "AnyType"; + } + else if constexpr (std::is_same_v) + { + // XMLWriter's writePolymorphic for Polymorphic + // falls into the generic case where T is deduced to the + // base `Name` (Polymorphic::operator* returns a base + // reference), so the element opened is always + // with the base's described members. + return "Name"; + } + else if constexpr (std::is_same_v) + { + return "AnyTParam"; + } + else if constexpr (std::is_same_v) + { + return "AnyTArg"; + } + else if constexpr (std::is_same_v) + { + return "BlockNode"; + } + else if constexpr (std::is_same_v) + { + return "InlineNode"; + } + else + { + return "text"; + } + } + else if constexpr (describe::has_describe_members::value) + { + return patternName(); + } + else + { + return "text"; + } +} + +/** RNC quantifier for a member type. + + @tparam T The C++ member type. + @return `"*"` for `std::vector` (zero or more occurrences), + `"?"` for everything else (optional, since XMLWriter skips + empty values). +*/ +template +std::string rncQuantifier() +{ + using Type = std::decay_t; + + if constexpr (mrdocs::detail::is_vector_v) + { + return "*"; + } + else + { + // Almost everything in the XML output is optional + // (XMLWriter's writeElement skips empty values). + return "?"; + } +} + +/** True if this member type is skipped by XMLWriter. + + Non-described enums and non-described structs without + explicit handling in XMLWriter::write() (NoexceptInfo, + ExplicitInfo) fall through without producing output. +*/ +template +inline constexpr bool rnc_is_omitted_v = + (std::is_enum_v && !describe::has_describe_enumerators::value) || + std::is_same_v || + std::is_same_v; + +/** True if a described struct T (XMLWriter uses tagName as the + element name, dropping the member name). */ +template +inline constexpr bool rnc_is_compound_v = + describe::has_describe_members>::value && + !describe::has_describe_enumerators>::value && + !mrdocs::detail::is_optional_v> && + !mrdocs::detail::is_vector_v> && + !mrdocs::detail::is_polymorphic_v>; + +/** Unwrap Optional and vector to T; otherwise leaves T unchanged. + Used to check whether the "inner" type is a compound described struct. +*/ +template +struct unwrap_type { + /// The unwrapped inner type (equal to `std::decay_t` by default). + using type = std::decay_t; +}; + +/** Partial specialization that unwraps `Optional` to `T`. */ +template +struct unwrap_type> { + /// The unwrapped inner type. + using type = std::decay_t; +}; + +/** Partial specialization that unwraps `std::vector` to `T`. */ +template +struct unwrap_type> { + /// The unwrapped element type. + using type = std::decay_t; +}; + +/** Alias for `unwrap_type::type`. + + @tparam M The C++ member type to unwrap. +*/ +template +using unwrap_type_t = typename unwrap_type>::type; + +/** True if the member wraps (via Optional/vector) a described struct. */ +template +inline constexpr bool rnc_is_wrapped_compound_v = + (mrdocs::detail::is_optional_v> || + mrdocs::detail::is_vector_v>) && + rnc_is_compound_v>; + +/** True if the member is a Polymorphic (uses AnyXxx pattern). */ +template +inline constexpr bool rnc_is_polymorphic_v = + mrdocs::detail::is_polymorphic_v>; + +/** True if the member is a vector of Polymorphic. */ +template +struct is_vector_of_polymorphic : std::false_type {}; + +/** Specialization recognizing `std::vector, A>`. */ +template +struct is_vector_of_polymorphic, A>> + : std::true_type {}; + +/** Variable template alias for @ref is_vector_of_polymorphic. */ +template +inline constexpr bool rnc_is_vector_of_polymorphic_v = + is_vector_of_polymorphic>::value; + +/** True if the member is an Optional>. + + XMLWriter's writeElement strips the outer Optional and dispatches + on the polymorphic value, so the member-name wrapper is not used. +*/ +template +struct is_optional_of_polymorphic : std::false_type {}; + +/** Specialization recognizing `Optional>`. */ +template +struct is_optional_of_polymorphic>> + : std::true_type {}; + +/** Variable template alias for @ref is_optional_of_polymorphic. */ +template +inline constexpr bool rnc_is_optional_of_polymorphic_v = + is_optional_of_polymorphic>::value; + +} // namespace rnc_detail + +// --------------------------------------------------------------- +// RNC emitter +// --------------------------------------------------------------- + +/** Streaming builder for the MrDocs RELAX NG Compact (RNC) schema. + + Accumulates pattern definitions and finally returns the full + grammar via @ref build. Pattern definitions are produced by + reflecting over described types (enums, structs, and the + polymorphic node families). +*/ +class RncEmitter +{ + std::string out_; + int indent_ = 0; + + void line(std::string_view s = {}) + { + if (!s.empty()) + { + out_ += std::string(indent_ * 4, ' '); + out_ += s; + } + out_ += '\n'; + } + +public: + /** Emit RNC for a described enum. */ + template + void emitEnum() + { + std::string def = rnc_detail::patternName(); + def += " = "; + bool first = true; + describe::for_each( + describe::describe_enumerators{}, + [&](auto const& D) { + if (!first) + { + def += " | "; + } + first = false; + def += '"'; + def += toKebabCase(D.name); + def += '"'; + }); + line(def); + } + + /** Emit RNC for the members of a described type (bases + own). */ + template + void emitMembers() + { + // Base class members first. + if constexpr (describe::has_describe_bases::value) + { + describe::for_each( + describe::describe_bases{}, + [&](auto const& descriptor) + { + using BaseType = typename std::decay_t< + decltype(descriptor)>::type; + emitMembers(); + }); + } + + // Own members. + if constexpr (describe::has_describe_members::value) + { + describe::for_each( + describe::describe_members{}, + [&](auto const& D) + { + using M = std::decay_t().*D.pointer)>; + + // Skip types that XMLWriter silently omits. + if constexpr (rnc_detail::rnc_is_omitted_v) + { + return; + } + // Polymorphic members: use AnyXxx pattern directly. + else if constexpr (rnc_detail::rnc_is_polymorphic_v) + { + std::string l = rnc_detail::rncMember(); + l += rnc_detail::rncQuantifier(); + line(l + ","); + } + // Vectors of polymorphic: AnyXxx*. + else if constexpr (rnc_detail::rnc_is_vector_of_polymorphic_v) + { + using Inner = typename std::decay_t::value_type; + std::string l = rnc_detail::rncMember(); + l += "*,"; + line(l); + } + // Optional>: AnyXxx? — XMLWriter + // unwraps both layers and dispatches to the + // polymorphic kind, so no member-name wrapper. + else if constexpr (rnc_detail::rnc_is_optional_of_polymorphic_v) + { + using Inner = typename std::decay_t::value_type; + std::string l = rnc_detail::rncMember(); + l += "?,"; + line(l); + } + // Described structs (bare or wrapped in Optional/vector): + // XMLWriter uses the type's tag name, so we reference + // the pattern directly without an element wrapper. + else if constexpr (rnc_detail::rnc_is_compound_v || + rnc_detail::rnc_is_wrapped_compound_v) + { + using Inner = rnc_detail::unwrap_type_t; + std::string l = rnc_detail::patternName(); + l += rnc_detail::rncQuantifier(); + l += ','; + line(l); + } + // Primitive/enum members: element { type }?. + else + { + std::string l = "element "; + l += toKebabCase(D.name); + l += " { "; + l += rnc_detail::rncMember(); + l += " }"; + l += rnc_detail::rncQuantifier(); + l += ','; + line(l); + } + }); + } + } + + /** Emit a group pattern for a described type (no element wrapper). + + Used for abstract base types like `Name` whose members are + embedded directly in a containing element. + */ + template + void emitGroupDef() + { + std::string pattern = rnc_detail::patternName(); + line(pattern + " ="); + ++indent_; + line("("); + ++indent_; + emitMembers(); + auto pos = out_.rfind(','); + if (pos != std::string::npos && pos > out_.size() - 20) + { + out_.erase(pos, 1); + } + --indent_; + line(")"); + --indent_; + line(); + } + + /** Emit a full element definition for a described type. */ + template + void emitElementDef() + { + std::string tag = rnc_detail::tagName(); + std::string pattern = rnc_detail::patternName(); + line(pattern + " ="); + ++indent_; + line("element " + tag); + line("{"); + ++indent_; + emitMembers(); + // Remove trailing comma from last member. + auto pos = out_.rfind(','); + if (pos != std::string::npos && pos > out_.size() - 20) + { + out_.erase(pos, 1); + } + --indent_; + line("}"); + --indent_; + line(); + } + + /** Build the complete RNC schema. + + @return The full grammar text, ready to be written to + `mrdocs.rnc`. + */ + std::string build() + { + // ------------------------------------------------------- + // Header + // ------------------------------------------------------- + line("#"); + line("# Auto-generated by mrdocs --schemas."); + line("# Do not edit manually."); + line("#"); + line("# https://relaxng.org/compact-tutorial-20030326.html"); + line("#"); + line(); + line("namespace xsi= \"http://www.w3.org/2001/XMLSchema-instance\""); + line(); + line("grammar"); + line("{"); + + indent_ = 1; + + // ------------------------------------------------------- + // Root + // ------------------------------------------------------- + line("start = Mrdocs | Tagfile"); + line(); + line("Mrdocs ="); + line(" element mrdocs"); + line(" {"); + line(" attribute xsi:noNamespaceSchemaLocation { text }?,"); + line(" AnySymbol*"); + line(" }"); + line(); + line("Tagfile ="); + line(" element tagfile"); + line(" {"); + line(" TagCompound+"); + line(" }"); + line(); + line("TagCompound ="); + line(" element compound"); + line(" {"); + line(" attribute kind { \"namespace\" | \"class\" },"); + line(" element name { text },"); + line(" element filename { text },"); + line(" (TagClass | TagMember)*"); + line(" }"); + line(); + line("TagClass ="); + line(" element class"); + line(" {"); + line(" attribute kind { \"class\" },"); + line(" text"); + line(" }"); + line(); + line("TagMember ="); + line(" element member"); + line(" {"); + line(" attribute kind { \"function\" },"); + line(" element type { text },"); + line(" element name { text },"); + line(" element anchorfile { text },"); + line(" element anchor { text },"); + line(" element arglist { text }"); + line(" }"); + line(); + + // ------------------------------------------------------- + // Common types + // ------------------------------------------------------- + line("#---------------------------------------------"); + line("# Common types"); + line("#---------------------------------------------"); + line(); + line("SymbolID = text # Base64-encoded"); + line(); + line("Bool = \"1\""); + line(); + + // ------------------------------------------------------- + // Described enums + // ------------------------------------------------------- + line("#---------------------------------------------"); + line("# Enums"); + line("#---------------------------------------------"); + line(); + emitEnum(); + emitEnum(); + emitEnum(); + emitEnum(); + emitEnum(); + emitEnum(); + emitEnum(); + emitEnum(); + emitEnum(); + emitEnum(); + emitEnum(); + emitEnum(); + emitEnum(); + emitEnum(); + emitEnum(); + emitEnum(); + emitEnum(); + emitEnum(); + line(); + + // ------------------------------------------------------- + // Types (polymorphic) + // ------------------------------------------------------- + line("#---------------------------------------------"); + line("# Types (polymorphic)"); + line("#---------------------------------------------"); + line(); + #define INFO(X) emitElementDef(); + #include + + line("AnyType ="); + { + std::string choice = " "; + bool first = true; + #define INFO(X) \ + if (!first) { choice += " |\n "; } \ + first = false; \ + choice += rnc_detail::patternName(); + #include + line(choice); + } + line(); + + // ------------------------------------------------------- + // Names + // ------------------------------------------------------- + line("#---------------------------------------------"); + line("# Names"); + line("#---------------------------------------------"); + line(); + #define INFO(X) emitElementDef(); + #include + + line("AnyName ="); + { + std::string choice = " "; + bool first = true; + #define INFO(X) \ + if (!first) { choice += " |\n "; } \ + first = false; \ + choice += rnc_detail::patternName(); + #include + line(choice); + } + line(); + + // ------------------------------------------------------- + // Template parameters + // ------------------------------------------------------- + line("#---------------------------------------------"); + line("# Template parameters (polymorphic)"); + line("#---------------------------------------------"); + line(); + #define INFO(X) emitElementDef(); + #include + + line("AnyTParam = "); + { + std::string choice = " "; + bool first = true; + #define INFO(X) \ + if (!first) { choice += " | "; } \ + first = false; \ + choice += rnc_detail::patternName(); + #include + line(choice); + } + line(); + + // ------------------------------------------------------- + // Template arguments + // ------------------------------------------------------- + line("#---------------------------------------------"); + line("# Template arguments (polymorphic)"); + line("#---------------------------------------------"); + line(); + #define INFO(X) emitElementDef(); + #include + + line("AnyTArg = "); + { + std::string choice = " "; + bool first = true; + #define INFO(X) \ + if (!first) { choice += " | "; } \ + first = false; \ + choice += rnc_detail::patternName(); + #include + line(choice); + } + line(); + + // ------------------------------------------------------- + // Supporting types + // ------------------------------------------------------- + line("#---------------------------------------------"); + line("# Supporting types"); + line("#---------------------------------------------"); + line(); + emitElementDef(); + emitElementDef(); + emitElementDef(); + emitElementDef(); + emitElementDef(); + emitElementDef(); + emitElementDef(); + emitElementDef(); + emitElementDef(); + emitElementDef(); + emitElementDef(); + emitElementDef(); + emitElementDef(); + emitElementDef(); + emitElementDef(); + + // ------------------------------------------------------- + // Symbols + // ------------------------------------------------------- + line("#---------------------------------------------"); + line("# Symbols"); + line("#---------------------------------------------"); + line(); + #define INFO(X) emitElementDef(); + #include + + line("AnySymbol ="); + { + std::string choice = " "; + bool first = true; + #define INFO(X) \ + if (!first) { choice += " |\n "; } \ + first = false; \ + choice += rnc_detail::patternName(); + #include + line(choice); + } + line(); + + // ------------------------------------------------------- + // DocComment + // ------------------------------------------------------- + line("#---------------------------------------------"); + line("# DocComment"); + line("#---------------------------------------------"); + line(); + emitElementDef(); + + // Block nodes + line("#---------------------------------------------"); + line("# Block nodes"); + line("#---------------------------------------------"); + line(); + #define INFO(X) emitElementDef(); + #include + + line("BlockNode ="); + { + std::string choice = " "; + bool first = true; + #define INFO(X) \ + if (!first) { choice += " |\n "; } \ + first = false; \ + choice += rnc_detail::patternName(); + #include + line(choice); + } + line(); + + // Inline nodes + line("#---------------------------------------------"); + line("# Inline nodes"); + line("#---------------------------------------------"); + line(); + #define INFO(X) emitElementDef(); + #include + + line("InlineNode ="); + { + std::string choice = " "; + bool first = true; + #define INFO(X) \ + if (!first) { choice += " |\n "; } \ + first = false; \ + choice += rnc_detail::patternName(); + #include + line(choice); + } + line(); + + // ------------------------------------------------------- + // Close grammar + // ------------------------------------------------------- + indent_ = 0; + line("}"); + + return out_; + } +}; + +/** Build the complete RNC schema string. + + @return The full RELAX NG Compact grammar for the MrDocs XML + output, suitable for writing directly to `mrdocs.rnc`. +*/ +inline std::string +buildRncSchema() +{ + RncEmitter emitter; + return emitter.build(); +} + +} // mrdocs::schema + +#endif // MRDOCS_API_SCHEMAS_RNCSCHEMAWRITER_HPP diff --git a/src/tool/ToolMain.cpp b/src/tool/ToolMain.cpp index 9889d0a9d5..a3e8df3c7c 100644 --- a/src/tool/ToolMain.cpp +++ b/src/tool/ToolMain.cpp @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include @@ -166,6 +167,21 @@ mrdocs_main(int argc, char const** argv) return EXIT_FAILURE; } os << schema::toJson(schema::buildDomSchema()); + + // Write RNC schema (replaces hand-maintained mrdocs.rnc). + std::string rncPath = files::appendPath(dir, "mrdocs.rnc"); + std::ofstream rncOs(rncPath, + std::ios_base::binary | + std::ios_base::out | + std::ios_base::trunc); + if (!rncOs.is_open()) + { + llvm::errs() << "error: cannot open \"" + << rncPath << "\" for writing\n"; + return EXIT_FAILURE; + } + rncOs << schema::buildRncSchema(); + return EXIT_SUCCESS; } From 8036804e37d37231cd05806cb3933f1d2b0886e2 Mon Sep 17 00:00:00 2001 From: Gennaro Prota Date: Thu, 16 Apr 2026 17:02:58 +0200 Subject: [PATCH 05/21] build: replace the hand-written mrdocs.rnc with the one generated via --schemas This guarantees the RELAX NG schema stays in sync with the C++ type definitions. Every CI run now validates all golden test XML files against a schema derived from the same reflection metadata that produces the XML. --- CMakeLists.txt | 15 +- mrdocs.rnc | 995 -------------------- util/bootstrap/src/configs/run_configs.py | 11 +- util/bootstrap/src/configs/visual_studio.py | 2 +- util/bootstrap/tests/test_ide_configs.py | 2 +- 5 files changed, 23 insertions(+), 1002 deletions(-) delete mode 100644 mrdocs.rnc diff --git a/CMakeLists.txt b/CMakeLists.txt index 9afaefb8a3..12d02060a9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -589,12 +589,19 @@ if (MRDOCS_BUILD_TESTS) message(FATAL_ERROR "Java is needed to run xml-lint") endif() + # Generate mrdocs.rnc via the --schemas option, then + # convert it to a .rng for xmllint validation. + add_custom_command( + COMMAND mrdocs --schemas=${CMAKE_CURRENT_BINARY_DIR} + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/mrdocs.rnc + DEPENDS mrdocs + COMMENT "Generating mrdocs.rnc from --schemas") add_custom_command( COMMAND ${Java_JAVA_EXECUTABLE} -jar ${CMAKE_CURRENT_SOURCE_DIR}/util/trang.jar - ${CMAKE_CURRENT_SOURCE_DIR}/mrdocs.rnc ${CMAKE_CURRENT_BINARY_DIR}/mrdocs.rng - OUTPUT mrdocs.rng - DEPENDS mrdocs.rnc) - add_custom_target(mrdocs_rng ALL DEPENDS mrdocs.rng) + ${CMAKE_CURRENT_BINARY_DIR}/mrdocs.rnc ${CMAKE_CURRENT_BINARY_DIR}/mrdocs.rng + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/mrdocs.rng + DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/mrdocs.rnc) + add_custom_target(mrdocs_rng ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/mrdocs.rng) file(GLOB_RECURSE XML_SOURCES CONFIGURE_DEPENDS test-files/golden-tests/*.xml) add_test(NAME xml-lint diff --git a/mrdocs.rnc b/mrdocs.rnc deleted file mode 100644 index 9f87ea440e..0000000000 --- a/mrdocs.rnc +++ /dev/null @@ -1,995 +0,0 @@ -# -# 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) 2023 Klemens Morgenstern (klemens.morgenstern@gmx.net) -# Copyright (c) 2023 Krystian Stasiowski (sdkrystian@gmail.com) -# Copyright (c) 2024 Fernando Pelliccioni (fpelliccioni@gmail.com) -# Copyright (c) 2024 Alan de Freitas (alandefreitas@gmail.com) -# Copyright (c) 2026 Gennaro Prota (gennaro.prota@gmail.com) -# -# Official repository: https://github.com/cppalliance/mrdocs -# -# https://relaxng.org/compact-tutorial-20030326.html -# -# convert to mrdocs.rng with tools/trang.jar (https://relaxng.org/jclark/trang.html) -# when commiting because xmllint doesn't understand the compact format -# - -namespace xsi= "http://www.w3.org/2001/XMLSchema-instance" - -grammar -{ - start = Mrdocs | Tagfile - - Mrdocs = - element mrdocs - { - attribute xsi:noNamespaceSchemaLocation { text }?, - AnySymbol* - } - - Tagfile = - element tagfile - { - TagCompound+ - } - - TagCompound = - element compound - { - attribute kind { "namespace" | "class" }, - element name { text }, - element filename { text }, - (TagClass | TagMember)* - } - - TagClass = - element class - { - attribute kind { "class" }, - text - } - - TagMember = - element member - { - attribute kind { "function" }, - element type { text }, - element name { text }, - element anchorfile { text }, - element anchor { text }, - element arglist { text } - } - - #--------------------------------------------- - # Common types - #--------------------------------------------- - - SymbolID = text # Base64-encoded - - Bool = "1" - - #--------------------------------------------- - # Enums - #--------------------------------------------- - - ExtractionMode = "regular" | "see-below" | "implementation-defined" | "dependency" - - FileKind = "source" | "system" | "other" - - FunctionClass = "normal" | "constructor" | "conversion" | "destructor" - - RecordKeyKind = "struct" | "class" | "union" - - UsingClass = "normal" | "typename" | "enum" - - AccessSpecifier = "public" | "private" | "protected" - - AdmonitionKind = "note" | "tip" | "important" | "warning" | "caution" - - ListKind = "ordered" | "unordered" | "task" - - ParamDirection = "in" | "out" | "in-out" - - TableAlignmentKind = "left" | "center" | "right" - - #--------------------------------------------- - # Name (used inside types, not for symbol names) - #--------------------------------------------- - - Name = - element name - { - element kind { text }?, - element id { SymbolID }?, - element identifier { text }?, - Name? - } - - #--------------------------------------------- - # Location & Source - #--------------------------------------------- - - Location = - element location - { - element short-path { text }?, - element source-path { text }?, - element line-number { text }?, - element column-number { text }?, - element documented { Bool }? - } - - SourceInfo = - element source - { - Location* - } - - #--------------------------------------------- - # Symbol base - #--------------------------------------------- - - SymbolBase = - ( - element name { text }?, - SourceInfo, - element kind { text }?, - element id { SymbolID }?, - element access { AccessSpecifier }?, - element extraction { ExtractionMode }?, - element is-copy-from-inherited { Bool }?, - element parent { SymbolID }?, - DocComment?, - AnyAttribute* - ) - - #--------------------------------------------- - # Attributes (polymorphic) - #--------------------------------------------- - - AttributeBase = - ( - element name { text }?, - element balanced-tokens { text }* - ) - - AnyAttribute = - OtherAttribute | NoreturnAttribute | CarriesDependencyAttribute | - DeprecatedAttribute | FallthroughAttribute | MaybeUnusedAttribute | - NodiscardAttribute | LikelyAttribute | UnlikelyAttribute | - NoUniqueAddressAttribute | AssumeAttribute | IndeterminateAttribute - - OtherAttribute = element other-attribute { AttributeBase } - NoreturnAttribute = element noreturn-attribute { AttributeBase } - CarriesDependencyAttribute = element carries-dependency-attribute { AttributeBase } - FallthroughAttribute = element fallthrough-attribute { AttributeBase } - MaybeUnusedAttribute = element maybe-unused-attribute { AttributeBase } - LikelyAttribute = element likely-attribute { AttributeBase } - UnlikelyAttribute = element unlikely-attribute { AttributeBase } - NoUniqueAddressAttribute = element no-unique-address-attribute { AttributeBase } - IndeterminateAttribute = element indeterminate-attribute { AttributeBase } - - DeprecatedAttribute = - element deprecated-attribute - { - AttributeBase, - element message { text }? - } - - NodiscardAttribute = - element nodiscard-attribute - { - AttributeBase, - element reason { text }? - } - - AssumeAttribute = - element assume-attribute - { - AttributeBase, - element expression { text }? - } - - #--------------------------------------------- - # Types (polymorphic) - #--------------------------------------------- - - TypeBase = - ( - element is-pack-expansion { Bool }?, - element is-const { Bool }?, - element is-volatile { Bool }?, - element constraints { text }? - ) - - ArrayType = - element array - { - TypeBase, - AnyType?, - element bounds { text }? - } - - AutoType = - element auto - { - TypeBase, - Name?, - element keyword { text }?, - element constraint { text }? - } - - DecltypeType = - element decltype - { - TypeBase, - element operand { text }? - } - - FunctionType = - element function - { - TypeBase, - AnyType*, - element ref-qualifier { text }?, - element exception-spec { text }?, - element is-variadic { Bool }? - } - - LValueReferenceType = - element l-value-reference - { - TypeBase, - AnyType? - } - - RValueReferenceType = - element r-value-reference - { - TypeBase, - AnyType? - } - - PointerType = - element pointer - { - TypeBase, - AnyType? - } - - MemberPointerType = - element member-pointer - { - TypeBase, - AnyType* - } - - NamedType = - element named - { - TypeBase, - Name?, - element fundamental-type { text }? - } - - AnyType = - ArrayType | AutoType | DecltypeType | FunctionType | - LValueReferenceType | RValueReferenceType | PointerType | - MemberPointerType | NamedType - - #--------------------------------------------- - # Template parameters (polymorphic) - #--------------------------------------------- - - TParamBase = - ( - element kind { text }?, - element name { text }?, - element is-parameter-pack { Bool }?, - AnyTArg? - ) - - TypeTParam = - element type-tparam - { - TParamBase, - element key-kind { text }?, - Name? - } - - ConstantTParam = - element constant-tparam - { - TParamBase, - AnyType? - } - - TemplateTParam = - element template-tparam - { - TParamBase, - AnyTParam* - } - - AnyTParam = TypeTParam | ConstantTParam | TemplateTParam - - #--------------------------------------------- - # Template arguments (polymorphic) - #--------------------------------------------- - - TArgBase = - ( - element kind { text }?, - element is-pack-expansion { Bool }? - ) - - TypeTArg = - element type-targ - { - TArgBase, - AnyType? - } - - ConstantTArg = - element constant-targ - { - TArgBase, - element value { text }? - } - - TemplateTArg = - element template-targ - { - TArgBase, - element name { text }?, - element template { text }? - } - - AnyTArg = TypeTArg | ConstantTArg | TemplateTArg - - #--------------------------------------------- - # Template - #--------------------------------------------- - - TemplateInfo = - element template - { - AnyTParam*, - AnyTArg*, - element requires { text }?, - element primary { SymbolID }? - } - - #--------------------------------------------- - # Param - #--------------------------------------------- - - Param = - element param - { - AnyType?, - element name { text }?, - element default { text }? - } - - #--------------------------------------------- - # Symbols - #--------------------------------------------- - - Namespace = - element namespace - { - SymbolBase, - element is-inline { Bool }?, - element is-anonymous { Bool }?, - Name*, - NamespaceTranche? - } - - NamespaceTranche = - element namespace-tranche - { - element namespaces { SymbolID }*, - element namespace-aliases { SymbolID }*, - element typedefs { SymbolID }*, - element records { SymbolID }*, - element enums { SymbolID }*, - element functions { SymbolID }*, - element variables { SymbolID }*, - element concepts { SymbolID }*, - element guides { SymbolID }*, - element usings { SymbolID }* - } - - #--------------------------------------------- - - Record = - element record - { - SymbolBase, - element key-kind { RecordKeyKind }?, - TemplateInfo?, - element is-type-def { Bool }?, - element is-final { Bool }?, - element is-final-destructor { Bool }?, - BaseInfo*, - element derived { SymbolID }*, - RecordInterface?, - FriendInfo*, - element is-listed-on-primary { Bool }?, - element specializations { SymbolID }*, - element deduction-guides { SymbolID }* - } - - BaseInfo = - element base - { - AnyType?, - element access { AccessSpecifier }?, - element is-virtual { Bool }? - } - - RecordInterface = - element record-interface - { - RecordTranche* - } - - RecordTranche = - element record-tranche - { - element namespace-aliases { SymbolID }*, - element typedefs { SymbolID }*, - element records { SymbolID }*, - element enums { SymbolID }*, - element functions { SymbolID }*, - element static-functions { SymbolID }*, - element variables { SymbolID }*, - element static-variables { SymbolID }*, - element concepts { SymbolID }*, - element guides { SymbolID }*, - element usings { SymbolID }* - } - - FriendInfo = - element friend - { - AnyType?, - element id { SymbolID }? - } - - #--------------------------------------------- - - Function = - element function - { - SymbolBase, - AnyType?, - Param*, - TemplateInfo?, - element func-class { FunctionClass }?, - element noexcept { text }?, - element requires { text }?, - element is-variadic { Bool }?, - element is-defaulted { Bool }?, - element is-explicitly-defaulted { Bool }?, - element is-deleted { Bool }?, - element is-deleted-as-written { Bool }?, - element has-override-attr { Bool }?, - element has-trailing-return { Bool }?, - element is-explicit-object-member-function { Bool }?, - element constexpr { text }?, - element overloaded-operator { text }?, - element storage-class { text }?, - element is-record-method { Bool }?, - element is-virtual { Bool }?, - element is-virtual-as-written { Bool }?, - element is-pure { Bool }?, - element is-const { Bool }?, - element is-volatile { Bool }?, - element is-final { Bool }?, - element ref-qualifier { text }?, - element explicit { text }?, - element function-object-impl { SymbolID }?, - element is-listed-on-primary { Bool }?, - element specializations { SymbolID }* - } - - #--------------------------------------------- - - Guide = - element guide - { - SymbolBase, - AnyType?, - TemplateInfo?, - Param*, - element explicit { text }? - } - - #--------------------------------------------- - - Enum = - element enum - { - SymbolBase, - element scoped { Bool }?, - AnyType?, - element constants { SymbolID }* - } - - EnumConstant = - element enum-constant - { - SymbolBase, - element initializer { text }? - } - - #--------------------------------------------- - - Typedef = - element typedef - { - SymbolBase, - AnyType?, - element is-using { Bool }?, - TemplateInfo? - } - - #--------------------------------------------- - - Variable = - element variable - { - SymbolBase, - AnyType?, - TemplateInfo?, - element initializer { text }?, - element storage-class { text }?, - element is-inline { Bool }?, - element is-constexpr { Bool }?, - element is-constinit { Bool }?, - element is-thread-local { Bool }?, - element is-record-field { Bool }?, - element is-mutable { Bool }?, - element is-variant { Bool }?, - element is-bitfield { Bool }?, - element bitfield-width { text }? - } - - #--------------------------------------------- - - NamespaceAlias = - element namespace-alias - { - SymbolBase, - IdentifierName? - } - - IdentifierName = - element identifier-name - { - element kind { text }?, - element id { SymbolID }?, - element identifier { text }?, - Name? - } - - #--------------------------------------------- - - Using = - element using - { - SymbolBase, - element class { UsingClass }?, - Name?, - element shadow-declarations { SymbolID }* - } - - #--------------------------------------------- - - Concept = - element concept - { - SymbolBase, - TemplateInfo?, - element constraint { text }? - } - - #--------------------------------------------- - - Overloads = - element overloads - { - SymbolBase, - element func-class { FunctionClass }?, - element overloaded-operator { text }?, - element members { SymbolID }*, - AnyType? - } - - #--------------------------------------------- - # All symbol types (flat at top level) - #--------------------------------------------- - - AnySymbol = - ( - Namespace | - Record | - Function | - Typedef | - Enum | - EnumConstant | - Variable | - Guide | - NamespaceAlias | - Using | - Concept | - Overloads - ) - - #--------------------------------------------- - # - # DocComment - # - #--------------------------------------------- - - DocComment = - element doc-comment - { - BlockNode* - } - - #--------------------------------------------- - # Block nodes - #--------------------------------------------- - - BlockNode = - ( - AdmonitionBlock | - BriefBlock | - CodeBlock | - HeadingBlock | - ParagraphBlock | - ListBlock | - DefinitionListBlock | - QuoteBlock | - ThematicBreakBlock | - FootnoteDefinitionBlock | - TableBlock | - MathBlock | - ParamBlock | - PostconditionBlock | - PreconditionBlock | - ReferenceBlock | - ReturnsBlock | - SeeBlock | - ThrowsBlock | - TParamBlock - ) - - BlockBase = - element kind { text }? - - AdmonitionBlock = - element admonition - { - BlockBase, - BlockNode*, - element admonish { AdmonitionKind }? - } - - BriefBlock = - element brief - { - BlockBase, - InlineNode*, - element copied-from { SymbolID }* - } - - CodeBlock = - element code - { - BlockBase, - element literal { text }?, - element info { text }? - } - - HeadingBlock = - element heading - { - BlockBase, - InlineNode*, - element level { text }? - } - - ParagraphBlock = - element paragraph - { - BlockBase, - InlineNode* - } - - ListItem = - element list-item - { - BlockNode* - } - - ListBlock = - element list - { - BlockBase, - ListItem*, - element list-kind { ListKind }? - } - - DefinitionListItem = - element definition-list-item - { - BlockNode*, - element term { InlineNode }* - } - - DefinitionListBlock = - element definition-list - { - BlockBase, - DefinitionListItem* - } - - QuoteBlock = - element quote - { - BlockBase, - BlockNode* - } - - ThematicBreakBlock = - element thematic-break - { - BlockBase - } - - FootnoteDefinitionBlock = - element footnote-definition - { - BlockBase, - BlockNode*, - element label { text }? - } - - TableCell = - element table-cell - { - InlineNode* - } - - TableRow = - element table-row - { - element is-header { Bool }?, - TableCell* - } - - TableBlock = - element table - { - BlockBase, - element alignments { TableAlignmentKind }*, - TableRow* - } - - MathBlock = - element math - { - BlockBase, - element literal { text }? - } - - ParamBlock = - element param - { - BlockBase, - InlineNode*, - element name { text }?, - element direction { ParamDirection }? - } - - PostconditionBlock = - element postcondition - { - BlockBase, - InlineNode* - } - - PreconditionBlock = - element precondition - { - BlockBase, - InlineNode* - } - - ReferenceBlock = - element reference - { - BlockBase, - element literal { text }?, - element id { SymbolID }? - } - - ReturnsBlock = - element returns - { - BlockBase, - InlineNode* - } - - SeeBlock = - element see - { - BlockBase, - InlineNode* - } - - ThrowsBlock = - element throws - { - BlockBase, - InlineNode*, - element exception { text }? - } - - TParamBlock = - element t-param - { - BlockBase, - InlineNode*, - element name { text }? - } - - #--------------------------------------------- - # Inline nodes - #--------------------------------------------- - - InlineNode = - ( - TextInline | - CodeInline | - MathInline | - EmphInline | - StrongInline | - HighlightInline | - StrikethroughInline | - SubscriptInline | - SuperscriptInline | - LinkInline | - ReferenceInline | - ImageInline | - FootnoteReferenceInline | - CopyDetailsInline | - LineBreakInline | - SoftBreakInline - ) - - InlineBase = - element kind { text }? - - TextInline = - element text - { - InlineBase, - element literal { text }? - } - - CodeInline = - element code - { - InlineBase, - InlineNode* - } - - MathInline = - element math - { - InlineBase, - element literal { text }? - } - - EmphInline = - element emph - { - InlineBase, - InlineNode* - } - - StrongInline = - element strong - { - InlineBase, - InlineNode* - } - - HighlightInline = - element highlight - { - InlineBase, - InlineNode* - } - - StrikethroughInline = - element strikethrough - { - InlineBase, - InlineNode* - } - - SubscriptInline = - element subscript - { - InlineBase, - InlineNode* - } - - SuperscriptInline = - element superscript - { - InlineBase, - InlineNode* - } - - LinkInline = - element link - { - InlineBase, - InlineNode*, - element href { text }? - } - - ReferenceInline = - element reference - { - InlineBase, - element literal { text }?, - element id { SymbolID }? - } - - ImageInline = - element image - { - InlineBase, - InlineNode*, - element src { text }?, - element alt { text }? - } - - FootnoteReferenceInline = - element footnote-reference - { - InlineBase, - element label { text }? - } - - CopyDetailsInline = - element copy-details - { - InlineBase, - element string { text }?, - element id { SymbolID }? - } - - LineBreakInline = - element line-break - { - InlineBase - } - - SoftBreakInline = - element soft-break - { - InlineBase - } -} diff --git a/util/bootstrap/src/configs/run_configs.py b/util/bootstrap/src/configs/run_configs.py index 420b0b859d..071fa73e95 100644 --- a/util/bootstrap/src/configs/run_configs.py +++ b/util/bootstrap/src/configs/run_configs.py @@ -342,6 +342,15 @@ def get_dynamic_run_configs( # XML / RelaxNG tasks requiring Java and libxml2 if java_path: + configs.append({ + "name": "Generate Schemas", + "group": "Codegen", + "script": os.path.join(options.build_dir, "bin", "mrdocs"), + "args": [ + "--schemas=" + options.build_dir, + ], + "cwd": options.source_dir, + }) configs.append({ "name": "Generate RelaxNG Schema", "group": "Codegen", @@ -349,7 +358,7 @@ def get_dynamic_run_configs( "args": [ "-jar", os.path.join(options.source_dir, "util", "trang.jar"), - os.path.join(options.source_dir, "mrdocs.rnc"), + os.path.join(options.build_dir, "mrdocs.rnc"), os.path.join(options.build_dir, "mrdocs.rng"), ], "cwd": options.source_dir, diff --git a/util/bootstrap/src/configs/visual_studio.py b/util/bootstrap/src/configs/visual_studio.py index 8dbc4bacf2..48e933a656 100644 --- a/util/bootstrap/src/configs/visual_studio.py +++ b/util/bootstrap/src/configs/visual_studio.py @@ -168,7 +168,7 @@ def vs_config_project_target(config): new_task["appliesTo"] = os.path.join(new_task["workingDirectory"], "package.json") new_task["appliesTo"] = rel_to_mrdocs_dir(new_task["appliesTo"], source_dir) elif new_task["taskLabel"] == "Generate RelaxNG Schema": - new_task["appliesTo"] = "mrdocs.rnc" + new_task["appliesTo"] = "*" elif new_task["taskLabel"] == "XML Lint with RelaxNG Schema": new_task["appliesTo"] = "mrdocs.rng" diff --git a/util/bootstrap/tests/test_ide_configs.py b/util/bootstrap/tests/test_ide_configs.py index 65d32bfc4a..d1553ab522 100644 --- a/util/bootstrap/tests/test_ide_configs.py +++ b/util/bootstrap/tests/test_ide_configs.py @@ -785,7 +785,7 @@ def test_relaxng_schema_task(self, mock_ensure, mock_load, mock_write): ) tasks_data = json.loads(mock_write.call_args_list[1][0][1]) task = tasks_data["tasks"][0] - self.assertEqual(task["appliesTo"], "mrdocs.rnc") + self.assertEqual(task["appliesTo"], "*") @patch("src.configs.visual_studio.write_text") @patch("src.configs.visual_studio.load_json_file", return_value=None) From 69293c5e4814992909ff8bf29ec0fec9755c889c Mon Sep 17 00:00:00 2001 From: Gennaro Prota Date: Fri, 1 May 2026 16:16:57 +0200 Subject: [PATCH 06/21] feat(schemas): describe DOM types and members in the JSON schema This adds a small lookup table keyed by (typeName, memberName) carrying hand-written descriptions for the DOM seen by Handlebars templates which become "description" fields in the JSON schema. --- include/mrdocs/Schemas/DomDescriptions.hpp | 761 +++++++++++++++++++++ include/mrdocs/Schemas/DomSchemaWriter.hpp | 109 ++- 2 files changed, 844 insertions(+), 26 deletions(-) create mode 100644 include/mrdocs/Schemas/DomDescriptions.hpp diff --git a/include/mrdocs/Schemas/DomDescriptions.hpp b/include/mrdocs/Schemas/DomDescriptions.hpp new file mode 100644 index 0000000000..b976932815 --- /dev/null +++ b/include/mrdocs/Schemas/DomDescriptions.hpp @@ -0,0 +1,761 @@ +// +// 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_API_SCHEMAS_DOMDESCRIPTIONS_HPP +#define MRDOCS_API_SCHEMAS_DOMDESCRIPTIONS_HPP + +#include + +/** Hand-curated descriptions for the JSON Schema produced by + @ref DomSchemaWriter. + + The DOM that Handlebars templates see is a projection of the + C++ corpus types. Its field names and shapes are derived + automatically by reflection, but the *meaning* of each field + cannot be inferred from the C++ types alone (e.g. the C++ doc + comment describes the C++ class, not the DOM projection; + synthesized fields like `class` or `isSeeBelow` have no C++ + counterpart at all). + + This header carries a small lookup table indexed by + `(typeName, memberName)`. The schema writer consults it when + emitting each `$defs` entry and each property; matched entries + become `description` fields in the JSON Schema and propagate + automatically to any human-readable rendering of it. + + A `memberName` of `""` denotes the type-level description. +*/ +namespace mrdocs::schema { + +/** A single description entry. + + `type` matches the readable type name produced by + `readableTypeName()` (e.g. `"FunctionSymbol"`, + `"NamedType"`). + + `member` matches the DOM-normalized field name (the + C++ identifier with its first letter lowercased), or + `""` for a description of the type itself. +*/ +struct DomDescription +{ + std::string_view type; + std::string_view member; + std::string_view text; +}; + +/** Retrieve the description for `(type, member)`, or `""` if + no entry exists. +*/ +constexpr std::string_view +findDomDescription( + std::string_view type, + std::string_view member = "") noexcept; + +namespace detail { + +inline constexpr DomDescription kDomDescriptions[] = { + // ----- Symbol (base) ------------------------------------------- + {"Symbol", "", + "Common base of every C++ symbol the corpus exposes. " + "Concrete symbols (function, record, namespace, etc.) " + "extend this with their kind-specific fields."}, + {"Symbol", "name", + "Unqualified name of the symbol, as written in the source."}, + {"Symbol", "id", + "Stable, base64-encoded identifier used for cross-references " + "between DOM objects."}, + {"Symbol", "kind", + "Discriminator selecting the symbol kind (e.g. " + "`\"function\"`, `\"record\"`). Each concrete symbol type " + "constrains this field to a single literal value."}, + {"Symbol", "access", + "Access specifier (`\"public\"`, `\"protected\"`, " + "`\"private\"`); empty for namespace-scope members."}, + {"Symbol", "extraction", + "Why the symbol was extracted: `\"regular\"`, " + "`\"see-below\"`, `\"implementation-defined\"`, or " + "`\"dependency\"`."}, + {"Symbol", "isCopyFromInherited", + "True when the symbol is a synthesized copy of an " + "inherited member (see the `inherit-base-members` " + "configuration option)."}, + {"Symbol", "parent", + "Identifier of the enclosing scope, or empty when the " + "symbol lives in the global namespace."}, + {"Symbol", "doc", + "Parsed documentation comment attached to the symbol, " + "or absent when the symbol is undocumented."}, + {"Symbol", "loc", + "Source location information for the symbol's declaration " + "and definition."}, + + // ----- Symbol synthesized fields ------------------------------- + {"Symbol", "class", + "Tag set to the literal `\"symbol\"`. Lets templates " + "discriminate symbol DOM objects from auxiliary types " + "(`type`, `name`, etc.) without inspecting `kind`."}, + {"Symbol", "isRegular", + "Convenience boolean equivalent to " + "`extraction === \"regular\"`."}, + {"Symbol", "isSeeBelow", + "Convenience boolean equivalent to " + "`extraction === \"see-below\"`."}, + {"Symbol", "isImplementationDefined", + "Convenience boolean equivalent to " + "`extraction === \"implementation-defined\"`."}, + {"Symbol", "isDependency", + "Convenience boolean equivalent to " + "`extraction === \"dependency\"`."}, + + // ----- FunctionSymbol ------------------------------------------ + {"FunctionSymbol", "", + "A function declaration, including free functions, " + "member functions, constructors, destructors, and " + "user-defined operators."}, + {"FunctionSymbol", "params", + "Function parameter list, in declaration order."}, + {"FunctionSymbol", "returnType", + "Return type. Absent for constructors and destructors."}, + {"FunctionSymbol", "template", + "Template head if this is a function template; absent " + "for non-templates."}, + {"FunctionSymbol", "funcClass", + "Special-function classification (`\"constructor\"`, " + "`\"destructor\"`, `\"conversion\"`, etc.) or empty for " + "ordinary functions."}, + {"FunctionSymbol", "noexcept", + "Rendered `noexcept` specifier, if any."}, + {"FunctionSymbol", "requires", + "Trailing `requires`-clause expression as written."}, + {"FunctionSymbol", "isVariadic", + "True when the function accepts a C-style `...` " + "argument list."}, + {"FunctionSymbol", "isDefaulted", + "True when the function is `= default`."}, + {"FunctionSymbol", "isExplicitlyDefaulted", + "True when the function carries an explicit `= default` " + "in source (not just an implicit defaulted special " + "member)."}, + {"FunctionSymbol", "isDeleted", + "True when the function is `= delete` (whether written " + "explicitly or implied by language rules)."}, + {"FunctionSymbol", "isDeletedAsWritten", + "True only when the function is `= delete` as written in " + "source; distinguishes user-deleted from implicitly " + "deleted."}, + {"FunctionSymbol", "isNoReturn", + "True when the function is marked `[[noreturn]]`."}, + {"FunctionSymbol", "hasOverrideAttr", + "True when the function carries the `override` " + "specifier."}, + {"FunctionSymbol", "hasTrailingReturn", + "True when the function uses trailing-return-type " + "syntax (`auto ... -> T`)."}, + {"FunctionSymbol", "isNodiscard", + "True when the function is marked `[[nodiscard]]`."}, + {"FunctionSymbol", "isExplicitObjectMemberFunction", + "True when the function declares an explicit object " + "parameter (deducing-this member function)."}, + {"FunctionSymbol", "constexpr", + "Constexpr level: `\"constexpr\"`, `\"consteval\"`, or " + "empty."}, + {"FunctionSymbol", "overloadedOperator", + "Overloaded operator name (e.g. `\"operator+\"`) or " + "empty if not an operator."}, + {"FunctionSymbol", "storageClass", + "Storage class: `\"static\"`, `\"extern\"`, etc., or " + "empty."}, + {"FunctionSymbol", "isRecordMethod", + "True when the function is a member of a class, struct, " + "or union."}, + {"FunctionSymbol", "isVirtual", + "True when the function is virtual (whether by `virtual` " + "keyword or by overriding a virtual function)."}, + {"FunctionSymbol", "isVirtualAsWritten", + "True only when the `virtual` keyword appears in source."}, + {"FunctionSymbol", "isPure", + "True when the function is pure virtual (`= 0`)."}, + {"FunctionSymbol", "isConst", + "True when the function is a `const` member function."}, + {"FunctionSymbol", "isVolatile", + "True when the function is a `volatile` member " + "function."}, + {"FunctionSymbol", "isFinal", + "True when the function is declared `final`."}, + {"FunctionSymbol", "refQualifier", + "Reference qualifier on the implicit object parameter: " + "`\"&\"`, `\"&&\"`, or empty."}, + {"FunctionSymbol", "explicit", + "Rendered `explicit` specifier (with optional condition) " + "for constructors and conversion functions."}, + {"FunctionSymbol", "attributes", + "Attributes attached to the declaration."}, + + // ----- RecordSymbol -------------------------------------------- + {"RecordSymbol", "", + "A class, struct, or union declaration."}, + {"RecordSymbol", "keyKind", + "The introducing keyword: `\"class\"`, `\"struct\"`, " + "or `\"union\"`."}, + {"RecordSymbol", "isFinal", + "True if the class is declared `final`."}, + {"RecordSymbol", "bases", + "Direct base classes, in declaration order."}, + {"RecordSymbol", "template", + "Template head if this is a class template; absent " + "for non-templates."}, + {"RecordSymbol", "interface", + "Per-access summary of the record's members (public, " + "protected, private, plus aggregated views)."}, + {"RecordSymbol", "isTypeDef", + "True when the record was introduced by an anonymous " + "`typedef struct { ... } Name;` declaration."}, + {"RecordSymbol", "isFinalDestructor", + "True when the record's destructor is declared `final`."}, + {"RecordSymbol", "derived", + "Identifiers of records that derive from this one and " + "appear in the corpus."}, + {"RecordSymbol", "friends", + "List of friend declarations attached to the record."}, + + // ----- NamespaceSymbol ----------------------------------------- + {"NamespaceSymbol", "", + "A namespace declaration. The implicit global namespace " + "appears as a namespace symbol with an empty name and " + "no parent."}, + {"NamespaceSymbol", "isInline", + "True if the namespace is declared `inline`."}, + {"NamespaceSymbol", "isAnonymous", + "True if the namespace has no name in source."}, + {"NamespaceSymbol", "members", + "All members of the namespace, grouped into tranches " + "by kind."}, + {"NamespaceSymbol", "usingDirectives", + "List of `using namespace` directives found in this " + "namespace's scope."}, + + // ----- EnumSymbol ---------------------------------------------- + {"EnumSymbol", "", + "An enum declaration (scoped or unscoped)."}, + {"EnumSymbol", "scoped", + "True for `enum class` / `enum struct`; false for " + "unscoped enums."}, + {"EnumSymbol", "underlyingType", + "Underlying integer type, when an explicit one was " + "specified."}, + {"EnumSymbol", "constants", + "Identifiers of the enum's constants, in declaration " + "order."}, + + // ----- EnumConstantSymbol -------------------------------------- + {"EnumConstantSymbol", "", + "A single enumerator within an enum declaration."}, + {"EnumConstantSymbol", "initializer", + "Initializer expression as written, or empty when the " + "enumerator takes its implicit value."}, + + // ----- TypedefSymbol ------------------------------------------- + {"TypedefSymbol", "", + "A type alias declaration (`typedef` or `using`)."}, + {"TypedefSymbol", "type", + "Aliased type."}, + {"TypedefSymbol", "isUsing", + "True for `using`-style aliases; false for the " + "`typedef` keyword."}, + {"TypedefSymbol", "template", + "Template head if this is an alias template; absent " + "for non-templates."}, + + // ----- VariableSymbol ------------------------------------------ + {"VariableSymbol", "", + "A variable declaration: namespace-scope variable, " + "static data member, or non-static data member."}, + {"VariableSymbol", "type", + "Declared type of the variable."}, + {"VariableSymbol", "template", + "Template head if this is a variable template."}, + {"VariableSymbol", "initializer", + "Initializer expression as written, or empty when the " + "variable has no initializer."}, + {"VariableSymbol", "storageClass", + "Storage class: `\"static\"`, `\"extern\"`, " + "`\"thread_local\"`, etc., or empty."}, + {"VariableSymbol", "isInline", + "True when the variable is declared `inline`."}, + {"VariableSymbol", "isConstexpr", + "True when the variable is declared `constexpr`."}, + {"VariableSymbol", "isConstinit", + "True when the variable is declared `constinit`."}, + {"VariableSymbol", "isThreadLocal", + "True when the variable has thread-storage duration."}, + {"VariableSymbol", "isMaybeUnused", + "True when the variable carries `[[maybe_unused]]`."}, + {"VariableSymbol", "isDeprecated", + "True when the variable carries `[[deprecated]]`."}, + {"VariableSymbol", "hasNoUniqueAddress", + "True when the data member carries " + "`[[no_unique_address]]`."}, + {"VariableSymbol", "isRecordField", + "True when the variable is a non-static data member of " + "a class, struct, or union."}, + {"VariableSymbol", "isMutable", + "True when the data member is declared `mutable`."}, + {"VariableSymbol", "isVariant", + "True when the data member is part of an anonymous " + "union."}, + {"VariableSymbol", "isBitfield", + "True when the data member is a bit-field."}, + {"VariableSymbol", "bitfieldWidth", + "Bit-field width expression, when the member is a " + "bit-field."}, + {"VariableSymbol", "attributes", + "Attributes attached to the declaration."}, + + // ----- ConceptSymbol ------------------------------------------- + {"ConceptSymbol", "", + "A concept declaration."}, + {"ConceptSymbol", "template", + "Concept's template parameter list."}, + {"ConceptSymbol", "constraint", + "Constraint expression that defines the concept."}, + + // ----- GuideSymbol --------------------------------------------- + {"GuideSymbol", "", + "A user-provided class-template deduction guide."}, + {"GuideSymbol", "deduced", + "Deduced class-template specialization the guide produces."}, + {"GuideSymbol", "template", + "Template parameters of the deduction guide."}, + {"GuideSymbol", "params", + "Parameter list used for argument deduction."}, + {"GuideSymbol", "explicit", + "Rendered `explicit` specifier, if any."}, + + // ----- NamespaceAliasSymbol ------------------------------------ + {"NamespaceAliasSymbol", "", + "A namespace-alias declaration " + "(`namespace alias = target;`)."}, + {"NamespaceAliasSymbol", "aliasedSymbol", + "Reference to the namespace this alias refers to."}, + + // ----- UsingSymbol --------------------------------------------- + {"UsingSymbol", "", + "A `using`-declaration (introduces names from another " + "scope, including using-enum)."}, + {"UsingSymbol", "class", + "Kind of `using`-declaration: ordinary, typename, or " + "enum."}, + {"UsingSymbol", "introducedName", + "Name introduced into the current scope, qualified by " + "the source scope."}, + {"UsingSymbol", "shadowDeclarations", + "Symbols brought into scope by the using-declaration."}, + + // ----- OverloadsSymbol ----------------------------------------- + {"OverloadsSymbol", "", + "An aggregate of overloaded functions sharing a name. " + "Used to group overload sets in the corpus."}, + {"OverloadsSymbol", "funcClass", + "Shared special-function classification of the overload " + "set, when applicable."}, + {"OverloadsSymbol", "overloadedOperator", + "Shared overloaded-operator name when the overload set " + "is for an operator."}, + {"OverloadsSymbol", "members", + "Identifiers of the function declarations belonging to " + "this overload set."}, + {"OverloadsSymbol", "returnType", + "Common return type when every overload shares it; " + "absent otherwise."}, + + // ----- Polymorphic union types --------------------------------- + {"Type", "", + "A C++ type. The DOM serializes the most-derived kind " + "(named, pointer, reference, array, function, etc.); see " + "the `oneOf` entries for the per-kind shape."}, + {"Name", "", + "A (possibly qualified) name occurring in source, " + "such as the name of a base class or the type referenced " + "by a `NamedType`."}, + {"Block", "", + "A block-level node in a parsed documentation comment " + "(paragraphs, lists, headings, and command blocks like " + "`@brief` / `@param` / `@returns`)."}, + {"Inline", "", + "An inline-level node in a parsed documentation comment " + "(text, emphasis, code spans, references, etc.)."}, + + // ----- Type variants ------------------------------------------- + {"NamedType", "", + "A type referred to by name (a class, an enum, a typedef, " + "or a fundamental type like `int`)."}, + {"NamedType", "name", + "The name as written, including any qualifications and " + "template arguments."}, + {"NamedType", "fundamentalType", + "Fundamental-type tag (`\"int\"`, `\"double\"`, ...) when " + "the named type is a built-in type; empty otherwise."}, + + {"DecltypeType", "", + "A type expressed as `decltype(expr)`."}, + {"DecltypeType", "operand", + "The expression inside `decltype(...)`."}, + + {"AutoType", "", + "A placeholder type introduced by `auto` or " + "`decltype(auto)`."}, + {"AutoType", "keyword", + "Which placeholder was used: `\"auto\"` or " + "`\"decltype(auto)\"`."}, + {"AutoType", "constraint", + "Concept constraint applied to the placeholder, if any."}, + + {"LValueReferenceType", "", + "An lvalue-reference type (`T&`)."}, + {"LValueReferenceType", "pointeeType", + "The referenced type."}, + + {"RValueReferenceType", "", + "An rvalue-reference type (`T&&`)."}, + {"RValueReferenceType", "pointeeType", + "The referenced type."}, + + {"PointerType", "", + "A pointer type (`T*`)."}, + {"PointerType", "pointeeType", + "The pointed-to type."}, + + {"MemberPointerType", "", + "A pointer-to-member type (`T C::*`)."}, + {"MemberPointerType", "parentType", + "The class type the pointer is a member of."}, + {"MemberPointerType", "pointeeType", + "The type of the member being pointed to."}, + + {"ArrayType", "", + "An array type (`T[N]`)."}, + {"ArrayType", "elementType", + "The element type."}, + {"ArrayType", "bounds", + "Array bound expression as written, or empty for " + "unknown-bound arrays."}, + + {"FunctionType", "", + "A function type (used for function pointers, " + "pointers-to-members, etc.)."}, + {"FunctionType", "returnType", + "The return type."}, + {"FunctionType", "paramTypes", + "Parameter types, in declaration order."}, + {"FunctionType", "refQualifier", + "Reference qualifier on the implicit object parameter " + "(for member-function types): `\"&\"`, `\"&&\"`, or " + "empty."}, + {"FunctionType", "exceptionSpec", + "Rendered exception specification, if any."}, + {"FunctionType", "isVariadic", + "True when the function type accepts a C-style `...` " + "argument list."}, + + // ----- Name variants ------------------------------------------- + {"IdentifierName", "", + "A plain (possibly qualified) name without template " + "arguments, e.g. `std::vector` or `MyClass::nested`."}, + {"SpecializationName", "", + "A template-id: a name applied to template arguments, " + "e.g. `std::vector` or `Outer::Inner`."}, + {"SpecializationName", "templateArgs", + "Template arguments applied to the name, in declaration " + "order."}, + + // ----- Param --------------------------------------------------- + {"Param", "", + "A function parameter."}, + {"Param", "name", + "Parameter name as written in the declaration. Empty " + "for unnamed parameters."}, + {"Param", "type", + "Declared parameter type."}, + {"Param", "default", + "Default argument expression as written, or absent if " + "the parameter has no default."}, + + // ----- Location ------------------------------------------------ + {"Location", "", + "A source location (file path plus line/column)."}, + {"Location", "fullPath", + "Absolute path to the source file."}, + {"Location", "shortPath", + "Path relative to the configured source root, suitable " + "for display."}, + {"Location", "sourcePath", + "Path relative to the source-root setting, used for " + "documentation cross-references."}, + {"Location", "lineNumber", + "1-based line number of the location."}, + {"Location", "columnNumber", + "1-based column number of the location."}, + {"Location", "documented", + "True when a doc comment was attached at this location."}, + + // ----- TArg variants ------------------------------------------- + {"TypeTArg", "", + "A template argument that is a type, e.g. `int` in " + "`std::vector`."}, + {"TypeTArg", "type", + "The argument type."}, + + {"ConstantTArg", "", + "A template argument that is a non-type value, e.g. " + "`42` in `std::array`."}, + {"ConstantTArg", "value", + "The argument expression as written."}, + + {"TemplateTArg", "", + "A template argument that is itself a template, used " + "for template-template parameters."}, + {"TemplateTArg", "template", + "Identifier of the referenced template."}, + {"TemplateTArg", "name", + "Name of the template as written."}, + + // ----- TParam variants ----------------------------------------- + {"TypeTParam", "", + "A type template parameter (`template ` or " + "`template `)."}, + {"TypeTParam", "keyKind", + "Introducing keyword: `\"typename\"` or `\"class\"`."}, + {"TypeTParam", "constraint", + "Concept constraint applied to the parameter, if any."}, + + {"ConstantTParam", "", + "A non-type template parameter " + "(`template `, `template `, ...)."}, + {"ConstantTParam", "type", + "Declared type of the parameter."}, + + {"TemplateTParam", "", + "A template template parameter " + "(`template @@ -159,10 +159,10 @@ 1 - + identifier int - + @@ -202,11 +202,11 @@ - + identifier xf6YhxRw8JpsHMwP6Tgyroti2gw= E - + normal @@ -252,11 +252,25 @@ - + specialization Xw0FzsI74YygQXKG0MGYooG1ALg= SmallVector - + + type + + + identifier + xf6YhxRw8JpsHMwP6Tgyroti2gw= + E + + + + + constant + 3 + + normal @@ -302,11 +316,21 @@ - + specialization WLbdUmKVwrFg6XIcb9E1rmv/6pg= Result - + + type + + + identifier + xf6YhxRw8JpsHMwP6Tgyroti2gw= + E + + + + normal diff --git a/test-files/golden-tests/config/auto-relates/no-auto-relates.xml b/test-files/golden-tests/config/auto-relates/no-auto-relates.xml index 29dbccc9ca..1e02b3aab7 100644 --- a/test-files/golden-tests/config/auto-relates/no-auto-relates.xml +++ b/test-files/golden-tests/config/auto-relates/no-auto-relates.xml @@ -76,18 +76,18 @@ - + identifier void - + - + identifier YrPSaKAbmXgzCAX5WByx4eVoqBM= A - + normal @@ -117,19 +117,19 @@ - + identifier void - + - + identifier YrPSaKAbmXgzCAX5WByx4eVoqBM= A - + @@ -160,20 +160,20 @@ - + identifier void - + 1 - + identifier YrPSaKAbmXgzCAX5WByx4eVoqBM= A - + @@ -204,19 +204,19 @@ - + identifier void - + - + identifier YrPSaKAbmXgzCAX5WByx4eVoqBM= A - + @@ -247,20 +247,20 @@ - + identifier void - + 1 - + identifier YrPSaKAbmXgzCAX5WByx4eVoqBM= A - + @@ -291,20 +291,20 @@ - + identifier void - + 1 - + identifier YrPSaKAbmXgzCAX5WByx4eVoqBM= A - + diff --git a/test-files/golden-tests/config/auto-relates/qualified.xml b/test-files/golden-tests/config/auto-relates/qualified.xml index 4a9203fdc3..c4309a388a 100644 --- a/test-files/golden-tests/config/auto-relates/qualified.xml +++ b/test-files/golden-tests/config/auto-relates/qualified.xml @@ -84,25 +84,25 @@ - + identifier void - + 1 - + identifier OK8gV4cJbIGaWnFVpW0/DO1qdUI= B - + identifier rjlMNXAaWNMkQYMTJzRA1DR0DiE= N - - + + @@ -192,19 +192,19 @@ - + identifier void - + - + identifier YrPSaKAbmXgzCAX5WByx4eVoqBM= A - + @@ -240,25 +240,25 @@ - + identifier void - + 1 - + identifier OK8gV4cJbIGaWnFVpW0/DO1qdUI= B - + identifier rjlMNXAaWNMkQYMTJzRA1DR0DiE= N - - + + @@ -312,25 +312,25 @@ - + identifier void - + 1 - + identifier OK8gV4cJbIGaWnFVpW0/DO1qdUI= B - + identifier rjlMNXAaWNMkQYMTJzRA1DR0DiE= N - - + + @@ -410,20 +410,20 @@ - + identifier void - + 1 - + identifier YrPSaKAbmXgzCAX5WByx4eVoqBM= A - + @@ -459,25 +459,25 @@ - + identifier void - + 1 - + identifier OK8gV4cJbIGaWnFVpW0/DO1qdUI= B - + identifier rjlMNXAaWNMkQYMTJzRA1DR0DiE= N - - + + diff --git a/test-files/golden-tests/config/auto-relates/remove-friend.xml b/test-files/golden-tests/config/auto-relates/remove-friend.xml index 2b02729737..d38053c9c0 100644 --- a/test-files/golden-tests/config/auto-relates/remove-friend.xml +++ b/test-files/golden-tests/config/auto-relates/remove-friend.xml @@ -102,21 +102,21 @@ 1 - + identifier char - + 1 - + identifier YrPSaKAbmXgzCAX5WByx4eVoqBM= A - + a @@ -186,20 +186,20 @@ - + identifier bool - + 1 - + identifier YrPSaKAbmXgzCAX5WByx4eVoqBM= A - + lhs @@ -208,11 +208,11 @@ 1 - + identifier YrPSaKAbmXgzCAX5WByx4eVoqBM= A - + rhs diff --git a/test-files/golden-tests/config/auto-relates/return-type.xml b/test-files/golden-tests/config/auto-relates/return-type.xml index a2742dda92..1e8bb0ad56 100644 --- a/test-files/golden-tests/config/auto-relates/return-type.xml +++ b/test-files/golden-tests/config/auto-relates/return-type.xml @@ -151,10 +151,10 @@ constant N - + identifier unsigned long - + @@ -204,11 +204,11 @@ - + identifier YrPSaKAbmXgzCAX5WByx4eVoqBM= A - + normal @@ -254,11 +254,25 @@ - + specialization Xw0FzsI74YygQXKG0MGYooG1ALg= SmallVector - + + type + + + identifier + YrPSaKAbmXgzCAX5WByx4eVoqBM= + A + + + + + constant + 3 + + normal @@ -304,11 +318,21 @@ - + specialization WLbdUmKVwrFg6XIcb9E1rmv/6pg= Result - + + type + + + identifier + YrPSaKAbmXgzCAX5WByx4eVoqBM= + A + + + + normal diff --git a/test-files/golden-tests/config/base-url/base-url.xml b/test-files/golden-tests/config/base-url/base-url.xml index 2840f0f84d..6a5a1839b0 100644 --- a/test-files/golden-tests/config/base-url/base-url.xml +++ b/test-files/golden-tests/config/base-url/base-url.xml @@ -26,10 +26,10 @@ regular //////////////////////////8= - + identifier void - + normal diff --git a/test-files/golden-tests/config/base-url/out-of-tree-base.xml b/test-files/golden-tests/config/base-url/out-of-tree-base.xml index f8a113a64c..7812109be4 100644 --- a/test-files/golden-tests/config/base-url/out-of-tree-base.xml +++ b/test-files/golden-tests/config/base-url/out-of-tree-base.xml @@ -57,11 +57,11 @@ struct - + identifier BmCrcf+XE+ozOs7VIbREWw02pf0= ExternalBase - + public @@ -102,10 +102,10 @@ - + identifier void - + normal 1 @@ -136,10 +136,10 @@ - + identifier void - + normal 1 diff --git a/test-files/golden-tests/config/extract-all/no-extract-all.xml b/test-files/golden-tests/config/extract-all/no-extract-all.xml index 8d34ff97cb..5f7eb5eaea 100644 --- a/test-files/golden-tests/config/extract-all/no-extract-all.xml +++ b/test-files/golden-tests/config/extract-all/no-extract-all.xml @@ -37,10 +37,10 @@ - + identifier void - + normal @@ -69,10 +69,10 @@ - + identifier void - + normal diff --git a/test-files/golden-tests/config/extract-all/warn-when-undocumented.xml b/test-files/golden-tests/config/extract-all/warn-when-undocumented.xml index f35b24be08..d1139033e4 100644 --- a/test-files/golden-tests/config/extract-all/warn-when-undocumented.xml +++ b/test-files/golden-tests/config/extract-all/warn-when-undocumented.xml @@ -71,10 +71,10 @@ - + identifier void - + normal diff --git a/test-files/golden-tests/config/extract-implicit-specializations/base.xml b/test-files/golden-tests/config/extract-implicit-specializations/base.xml index aabb782211..34209f22bb 100644 --- a/test-files/golden-tests/config/extract-implicit-specializations/base.xml +++ b/test-files/golden-tests/config/extract-implicit-specializations/base.xml @@ -29,11 +29,11 @@ struct - + identifier 3JsK1DO0O+wZhv+0meptQrbs3fY= B - + public @@ -63,10 +63,10 @@ regular 3JsK1DO0O+wZhv+0meptQrbs3fY= - + identifier int - + normal 1 @@ -113,10 +113,10 @@ regular 3JsK1DO0O+wZhv+0meptQrbs3fY= - + identifier int - + normal 1 diff --git a/test-files/golden-tests/config/extract-implicit-specializations/extract-implicit-specializations.xml b/test-files/golden-tests/config/extract-implicit-specializations/extract-implicit-specializations.xml index 5163028cab..6d9669d6f5 100644 --- a/test-files/golden-tests/config/extract-implicit-specializations/extract-implicit-specializations.xml +++ b/test-files/golden-tests/config/extract-implicit-specializations/extract-implicit-specializations.xml @@ -30,11 +30,20 @@ struct - + specialization Bu/3QcmNOdsc7RSM3OKHnuCxGPU= B - + + type + + + identifier + int + + + + public @@ -66,10 +75,10 @@ YrPSaKAbmXgzCAX5WByx4eVoqBM= - + identifier int - + normal @@ -125,10 +134,10 @@ Bu/3QcmNOdsc7RSM3OKHnuCxGPU= - + identifier T - + normal diff --git a/test-files/golden-tests/config/extract-implicit-specializations/no-extract-implicit-specializations.xml b/test-files/golden-tests/config/extract-implicit-specializations/no-extract-implicit-specializations.xml index adbba56e2c..0a549cf0cb 100644 --- a/test-files/golden-tests/config/extract-implicit-specializations/no-extract-implicit-specializations.xml +++ b/test-files/golden-tests/config/extract-implicit-specializations/no-extract-implicit-specializations.xml @@ -30,11 +30,20 @@ struct - + specialization Bu/3QcmNOdsc7RSM3OKHnuCxGPU= B - + + type + + + identifier + int + + + + public @@ -65,10 +74,10 @@ Bu/3QcmNOdsc7RSM3OKHnuCxGPU= - + identifier T - + normal @@ -124,10 +133,10 @@ Bu/3QcmNOdsc7RSM3OKHnuCxGPU= - + identifier T - + normal diff --git a/test-files/golden-tests/config/extract-local-classes/extract-local-classes.xml b/test-files/golden-tests/config/extract-local-classes/extract-local-classes.xml index a6f46e5e3f..74acca5e31 100644 --- a/test-files/golden-tests/config/extract-local-classes/extract-local-classes.xml +++ b/test-files/golden-tests/config/extract-local-classes/extract-local-classes.xml @@ -76,10 +76,10 @@ regular //////////////////////////8= - + identifier void - + normal diff --git a/test-files/golden-tests/config/extract-local-classes/no-extract-local-classes.xml b/test-files/golden-tests/config/extract-local-classes/no-extract-local-classes.xml index 2cf55f1033..acde7fd7ba 100644 --- a/test-files/golden-tests/config/extract-local-classes/no-extract-local-classes.xml +++ b/test-files/golden-tests/config/extract-local-classes/no-extract-local-classes.xml @@ -26,10 +26,10 @@ regular //////////////////////////8= - + identifier void - + normal diff --git a/test-files/golden-tests/config/extract-private-virtual/extract-private-virtual.xml b/test-files/golden-tests/config/extract-private-virtual/extract-private-virtual.xml index e02a648baf..9a1780e145 100644 --- a/test-files/golden-tests/config/extract-private-virtual/extract-private-virtual.xml +++ b/test-files/golden-tests/config/extract-private-virtual/extract-private-virtual.xml @@ -53,10 +53,10 @@ regular YrPSaKAbmXgzCAX5WByx4eVoqBM= - + identifier void - + normal 1 @@ -79,10 +79,10 @@ regular YrPSaKAbmXgzCAX5WByx4eVoqBM= - + identifier void - + normal 1 diff --git a/test-files/golden-tests/config/extract-private-virtual/no-extract-private-virtual.xml b/test-files/golden-tests/config/extract-private-virtual/no-extract-private-virtual.xml index 184d0caaa3..d12f0bb6c6 100644 --- a/test-files/golden-tests/config/extract-private-virtual/no-extract-private-virtual.xml +++ b/test-files/golden-tests/config/extract-private-virtual/no-extract-private-virtual.xml @@ -52,10 +52,10 @@ regular YrPSaKAbmXgzCAX5WByx4eVoqBM= - + identifier void - + normal 1 diff --git a/test-files/golden-tests/config/inherit-base-members/base-overload-set.xml b/test-files/golden-tests/config/inherit-base-members/base-overload-set.xml index b9e16c4c72..719ba6b86d 100644 --- a/test-files/golden-tests/config/inherit-base-members/base-overload-set.xml +++ b/test-files/golden-tests/config/inherit-base-members/base-overload-set.xml @@ -30,11 +30,11 @@ class - + identifier 2iD5AHuu7qrCVJnAauz4We2QkKU= ConstBase - + public @@ -75,10 +75,10 @@ hbsgojOPl9JVh9Nb8C7b2dZ389k= - + identifier int - + @@ -99,10 +99,10 @@ ZIHuevKEF1ZlGviVwUZq1CEFBRc= - + identifier int - + normal @@ -125,10 +125,10 @@ ZIHuevKEF1ZlGviVwUZq1CEFBRc= - + identifier int - + normal @@ -152,11 +152,11 @@ class - + identifier ZIHuevKEF1ZlGviVwUZq1CEFBRc= Base - + public @@ -196,10 +196,10 @@ hbsgojOPl9JVh9Nb8C7b2dZ389k= - + identifier int - + @@ -220,10 +220,10 @@ ZIHuevKEF1ZlGviVwUZq1CEFBRc= - + identifier int - + normal @@ -246,10 +246,10 @@ ZIHuevKEF1ZlGviVwUZq1CEFBRc= - + identifier int - + normal @@ -299,10 +299,10 @@ 2iD5AHuu7qrCVJnAauz4We2QkKU= - + identifier int - + normal diff --git a/test-files/golden-tests/config/inherit-base-members/copy-dependencies.xml b/test-files/golden-tests/config/inherit-base-members/copy-dependencies.xml index 2d42a4e49e..c77b14bce1 100644 --- a/test-files/golden-tests/config/inherit-base-members/copy-dependencies.xml +++ b/test-files/golden-tests/config/inherit-base-members/copy-dependencies.xml @@ -43,11 +43,11 @@ class - + identifier /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= base_base - + public @@ -103,11 +103,11 @@ - + identifier /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= base_base - + normal @@ -147,11 +147,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -191,11 +191,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -235,11 +235,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -279,11 +279,11 @@ - + identifier /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= base_base - + normal @@ -323,11 +323,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -367,11 +367,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -411,11 +411,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -492,11 +492,11 @@ - + identifier /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= base_base - + normal @@ -536,11 +536,11 @@ - + identifier /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= base_base - + normal @@ -573,21 +573,21 @@ class - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + public - + identifier ZFBKKIr2vNG5u3bxIaTbccBBkvQ= excluded_base - + public @@ -646,11 +646,11 @@ - + identifier /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= base_base - + normal @@ -690,11 +690,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -734,11 +734,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -778,11 +778,11 @@ - + identifier ABxWcxit2TyVLv16ZxoJKAc6LKw= derived - + normal @@ -822,11 +822,11 @@ - + identifier /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= base_base - + normal @@ -866,11 +866,11 @@ - + identifier ABxWcxit2TyVLv16ZxoJKAc6LKw= derived - + normal @@ -904,11 +904,11 @@ - + identifier ZFBKKIr2vNG5u3bxIaTbccBBkvQ= excluded_base - + normal @@ -948,11 +948,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -992,11 +992,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -1036,11 +1036,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -1074,11 +1074,11 @@ - + identifier ZFBKKIr2vNG5u3bxIaTbccBBkvQ= excluded_base - + normal @@ -1112,11 +1112,11 @@ - + identifier ZFBKKIr2vNG5u3bxIaTbccBBkvQ= excluded_base - + normal @@ -1149,21 +1149,21 @@ class - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + private - + identifier ZFBKKIr2vNG5u3bxIaTbccBBkvQ= excluded_base - + private @@ -1212,11 +1212,11 @@ - + identifier aiF6nWGZXbG8UfC75J5tNuoPMRc= private_derived - + normal @@ -1256,11 +1256,11 @@ - + identifier aiF6nWGZXbG8UfC75J5tNuoPMRc= private_derived - + normal @@ -1293,21 +1293,21 @@ class - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + protected - + identifier ZFBKKIr2vNG5u3bxIaTbccBBkvQ= excluded_base - + protected @@ -1367,11 +1367,11 @@ - + identifier KpfFXd3FeSffU3rGswegSIkkCrM= protected_derived - + normal @@ -1411,11 +1411,11 @@ - + identifier KpfFXd3FeSffU3rGswegSIkkCrM= protected_derived - + normal @@ -1455,11 +1455,11 @@ - + identifier /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= base_base - + normal @@ -1499,11 +1499,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -1543,11 +1543,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -1587,11 +1587,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -1631,11 +1631,11 @@ - + identifier /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= base_base - + normal @@ -1675,11 +1675,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -1719,11 +1719,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -1763,11 +1763,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -1801,11 +1801,11 @@ - + identifier ZFBKKIr2vNG5u3bxIaTbccBBkvQ= excluded_base - + normal @@ -1839,11 +1839,11 @@ - + identifier ZFBKKIr2vNG5u3bxIaTbccBBkvQ= excluded_base - + normal @@ -1877,11 +1877,11 @@ - + identifier ZFBKKIr2vNG5u3bxIaTbccBBkvQ= excluded_base - + normal diff --git a/test-files/golden-tests/config/inherit-base-members/copy.xml b/test-files/golden-tests/config/inherit-base-members/copy.xml index e56cf4b9cc..4cabd24b5d 100644 --- a/test-files/golden-tests/config/inherit-base-members/copy.xml +++ b/test-files/golden-tests/config/inherit-base-members/copy.xml @@ -43,11 +43,11 @@ class - + identifier /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= base_base - + public @@ -104,11 +104,11 @@ - + identifier /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= base_base - + normal @@ -148,11 +148,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -192,11 +192,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -236,11 +236,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -281,11 +281,11 @@ - + identifier /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= base_base - + normal @@ -325,11 +325,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -369,11 +369,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -413,11 +413,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -494,11 +494,11 @@ - + identifier /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= base_base - + normal @@ -538,11 +538,11 @@ - + identifier /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= base_base - + normal @@ -575,21 +575,21 @@ class - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + public - + identifier ZFBKKIr2vNG5u3bxIaTbccBBkvQ= excluded_base - + public @@ -649,11 +649,11 @@ - + identifier /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= base_base - + normal @@ -694,11 +694,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -739,11 +739,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -783,11 +783,11 @@ - + identifier ABxWcxit2TyVLv16ZxoJKAc6LKw= derived - + normal @@ -828,11 +828,11 @@ - + identifier /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= base_base - + normal @@ -872,11 +872,11 @@ - + identifier ABxWcxit2TyVLv16ZxoJKAc6LKw= derived - + normal @@ -910,11 +910,11 @@ - + identifier ZFBKKIr2vNG5u3bxIaTbccBBkvQ= excluded_base - + normal @@ -955,11 +955,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -1000,11 +1000,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -1045,11 +1045,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -1083,11 +1083,11 @@ - + identifier ZFBKKIr2vNG5u3bxIaTbccBBkvQ= excluded_base - + normal @@ -1121,11 +1121,11 @@ - + identifier ZFBKKIr2vNG5u3bxIaTbccBBkvQ= excluded_base - + normal @@ -1158,21 +1158,21 @@ class - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + private - + identifier ZFBKKIr2vNG5u3bxIaTbccBBkvQ= excluded_base - + private @@ -1221,11 +1221,11 @@ - + identifier aiF6nWGZXbG8UfC75J5tNuoPMRc= private_derived - + normal @@ -1265,11 +1265,11 @@ - + identifier aiF6nWGZXbG8UfC75J5tNuoPMRc= private_derived - + normal @@ -1302,21 +1302,21 @@ class - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + protected - + identifier ZFBKKIr2vNG5u3bxIaTbccBBkvQ= excluded_base - + protected @@ -1376,11 +1376,11 @@ - + identifier KpfFXd3FeSffU3rGswegSIkkCrM= protected_derived - + normal @@ -1420,11 +1420,11 @@ - + identifier KpfFXd3FeSffU3rGswegSIkkCrM= protected_derived - + normal @@ -1465,11 +1465,11 @@ - + identifier /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= base_base - + normal @@ -1510,11 +1510,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -1555,11 +1555,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -1600,11 +1600,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -1645,11 +1645,11 @@ - + identifier /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= base_base - + normal @@ -1690,11 +1690,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -1735,11 +1735,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -1780,11 +1780,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -1818,11 +1818,11 @@ - + identifier ZFBKKIr2vNG5u3bxIaTbccBBkvQ= excluded_base - + normal @@ -1856,11 +1856,11 @@ - + identifier ZFBKKIr2vNG5u3bxIaTbccBBkvQ= excluded_base - + normal @@ -1894,11 +1894,11 @@ - + identifier ZFBKKIr2vNG5u3bxIaTbccBBkvQ= excluded_base - + normal diff --git a/test-files/golden-tests/config/inherit-base-members/impl-defined-base.xml b/test-files/golden-tests/config/inherit-base-members/impl-defined-base.xml index 6dda338ba6..be477ed14f 100644 --- a/test-files/golden-tests/config/inherit-base-members/impl-defined-base.xml +++ b/test-files/golden-tests/config/inherit-base-members/impl-defined-base.xml @@ -81,10 +81,10 @@ - + identifier void - + normal 1 @@ -106,16 +106,16 @@ struct - + identifier zJyAW21qgGwkRrS6Ea2uUqKSLhE= base_detail - + identifier aMJtdgJFybRcdkRG712j3iC7JeM= detail - - + + public @@ -157,10 +157,10 @@ - + identifier void - + normal 1 @@ -181,10 +181,10 @@ regular ABxWcxit2TyVLv16ZxoJKAc6LKw= - + identifier void - + normal 1 diff --git a/test-files/golden-tests/config/inherit-base-members/never.xml b/test-files/golden-tests/config/inherit-base-members/never.xml index 4b16777941..1cf2f72294 100644 --- a/test-files/golden-tests/config/inherit-base-members/never.xml +++ b/test-files/golden-tests/config/inherit-base-members/never.xml @@ -43,11 +43,11 @@ class - + identifier /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= base_base - + public @@ -101,11 +101,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -145,11 +145,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -189,11 +189,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -233,11 +233,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -277,11 +277,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -321,11 +321,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -402,11 +402,11 @@ - + identifier /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= base_base - + normal @@ -446,11 +446,11 @@ - + identifier /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= base_base - + normal @@ -483,21 +483,21 @@ class - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + public - + identifier ZFBKKIr2vNG5u3bxIaTbccBBkvQ= excluded_base - + public @@ -546,11 +546,11 @@ - + identifier ABxWcxit2TyVLv16ZxoJKAc6LKw= derived - + normal @@ -590,11 +590,11 @@ - + identifier ABxWcxit2TyVLv16ZxoJKAc6LKw= derived - + normal @@ -627,21 +627,21 @@ class - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + private - + identifier ZFBKKIr2vNG5u3bxIaTbccBBkvQ= excluded_base - + private @@ -690,11 +690,11 @@ - + identifier aiF6nWGZXbG8UfC75J5tNuoPMRc= private_derived - + normal @@ -734,11 +734,11 @@ - + identifier aiF6nWGZXbG8UfC75J5tNuoPMRc= private_derived - + normal @@ -771,21 +771,21 @@ class - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + protected - + identifier ZFBKKIr2vNG5u3bxIaTbccBBkvQ= excluded_base - + protected @@ -834,11 +834,11 @@ - + identifier KpfFXd3FeSffU3rGswegSIkkCrM= protected_derived - + normal @@ -878,11 +878,11 @@ - + identifier KpfFXd3FeSffU3rGswegSIkkCrM= protected_derived - + normal diff --git a/test-files/golden-tests/config/inherit-base-members/reference.xml b/test-files/golden-tests/config/inherit-base-members/reference.xml index 77954c7822..61d52ae8ac 100644 --- a/test-files/golden-tests/config/inherit-base-members/reference.xml +++ b/test-files/golden-tests/config/inherit-base-members/reference.xml @@ -43,11 +43,11 @@ class - + identifier /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= base_base - + public @@ -103,11 +103,11 @@ - + identifier /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= base_base - + normal @@ -147,11 +147,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -191,11 +191,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -235,11 +235,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -279,11 +279,11 @@ - + identifier /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= base_base - + normal @@ -323,11 +323,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -367,11 +367,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -411,11 +411,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -492,11 +492,11 @@ - + identifier /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= base_base - + normal @@ -536,11 +536,11 @@ - + identifier /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= base_base - + normal @@ -573,21 +573,21 @@ class - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + public - + identifier ZFBKKIr2vNG5u3bxIaTbccBBkvQ= excluded_base - + public @@ -643,11 +643,11 @@ - + identifier /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= base_base - + normal @@ -687,11 +687,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -731,11 +731,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -775,11 +775,11 @@ - + identifier ABxWcxit2TyVLv16ZxoJKAc6LKw= derived - + normal @@ -819,11 +819,11 @@ - + identifier /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= base_base - + normal @@ -863,11 +863,11 @@ - + identifier ABxWcxit2TyVLv16ZxoJKAc6LKw= derived - + normal @@ -907,11 +907,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -951,11 +951,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -995,11 +995,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -1032,21 +1032,21 @@ class - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + private - + identifier ZFBKKIr2vNG5u3bxIaTbccBBkvQ= excluded_base - + private @@ -1095,11 +1095,11 @@ - + identifier aiF6nWGZXbG8UfC75J5tNuoPMRc= private_derived - + normal @@ -1139,11 +1139,11 @@ - + identifier aiF6nWGZXbG8UfC75J5tNuoPMRc= private_derived - + normal @@ -1176,21 +1176,21 @@ class - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + protected - + identifier ZFBKKIr2vNG5u3bxIaTbccBBkvQ= excluded_base - + protected @@ -1247,11 +1247,11 @@ - + identifier KpfFXd3FeSffU3rGswegSIkkCrM= protected_derived - + normal @@ -1291,11 +1291,11 @@ - + identifier KpfFXd3FeSffU3rGswegSIkkCrM= protected_derived - + normal @@ -1335,11 +1335,11 @@ - + identifier /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= base_base - + normal @@ -1379,11 +1379,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -1423,11 +1423,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -1467,11 +1467,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -1511,11 +1511,11 @@ - + identifier /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= base_base - + normal @@ -1555,11 +1555,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -1599,11 +1599,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -1643,11 +1643,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal diff --git a/test-files/golden-tests/config/inherit-base-members/see-below-base.xml b/test-files/golden-tests/config/inherit-base-members/see-below-base.xml index 49b5c6d8ec..2e4319e5d2 100644 --- a/test-files/golden-tests/config/inherit-base-members/see-below-base.xml +++ b/test-files/golden-tests/config/inherit-base-members/see-below-base.xml @@ -72,16 +72,16 @@ struct - + identifier ZFLr7GRQIMnYkYf3EtAsQX/ibQE= base_see - + identifier exW9PGqoF7V7OCpvgUIZOhj7WwI= see_below_ns - - + + public @@ -123,10 +123,10 @@ - + identifier void - + normal 1 @@ -147,10 +147,10 @@ regular J1syoWzn2cGgGxt+fceKEo2Jpzc= - + identifier void - + normal 1 diff --git a/test-files/golden-tests/config/inherit-base-members/skip-special.xml b/test-files/golden-tests/config/inherit-base-members/skip-special.xml index b20ba15423..3977a2c6df 100644 --- a/test-files/golden-tests/config/inherit-base-members/skip-special.xml +++ b/test-files/golden-tests/config/inherit-base-members/skip-special.xml @@ -33,11 +33,11 @@ class - + identifier /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= base_base - + public @@ -87,10 +87,10 @@ - + identifier void - + constructor 1 @@ -121,10 +121,10 @@ - + identifier void - + destructor 1 @@ -156,11 +156,11 @@ - + identifier /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= base_base - + normal @@ -193,11 +193,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -230,11 +230,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -267,11 +267,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -304,11 +304,11 @@ - + identifier /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= base_base - + normal @@ -341,11 +341,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -378,11 +378,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -415,11 +415,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -480,10 +480,10 @@ - + identifier void - + constructor 1 @@ -514,10 +514,10 @@ - + identifier void - + destructor 1 @@ -549,11 +549,11 @@ - + identifier /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= base_base - + normal @@ -586,11 +586,11 @@ - + identifier /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= base_base - + normal @@ -613,21 +613,21 @@ class - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + public - + identifier ZFBKKIr2vNG5u3bxIaTbccBBkvQ= excluded_base - + public @@ -680,10 +680,10 @@ - + identifier void - + constructor 1 @@ -714,10 +714,10 @@ - + identifier void - + destructor 1 @@ -749,11 +749,11 @@ - + identifier /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= base_base - + normal @@ -786,11 +786,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -823,11 +823,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -860,11 +860,11 @@ - + identifier ABxWcxit2TyVLv16ZxoJKAc6LKw= derived - + normal @@ -897,11 +897,11 @@ - + identifier /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= base_base - + normal @@ -934,11 +934,11 @@ - + identifier ABxWcxit2TyVLv16ZxoJKAc6LKw= derived - + normal @@ -972,11 +972,11 @@ - + identifier ZFBKKIr2vNG5u3bxIaTbccBBkvQ= excluded_base - + normal @@ -1009,11 +1009,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -1046,11 +1046,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -1083,11 +1083,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -1121,11 +1121,11 @@ - + identifier ZFBKKIr2vNG5u3bxIaTbccBBkvQ= excluded_base - + normal @@ -1159,11 +1159,11 @@ - + identifier ZFBKKIr2vNG5u3bxIaTbccBBkvQ= excluded_base - + normal @@ -1186,21 +1186,21 @@ class - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + private - + identifier ZFBKKIr2vNG5u3bxIaTbccBBkvQ= excluded_base - + private @@ -1243,10 +1243,10 @@ - + identifier void - + constructor 1 @@ -1277,10 +1277,10 @@ - + identifier void - + destructor 1 @@ -1312,11 +1312,11 @@ - + identifier aiF6nWGZXbG8UfC75J5tNuoPMRc= private_derived - + normal @@ -1349,11 +1349,11 @@ - + identifier aiF6nWGZXbG8UfC75J5tNuoPMRc= private_derived - + normal @@ -1386,21 +1386,21 @@ class - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + protected - + identifier ZFBKKIr2vNG5u3bxIaTbccBBkvQ= excluded_base - + protected @@ -1454,10 +1454,10 @@ - + identifier void - + constructor 1 @@ -1488,10 +1488,10 @@ - + identifier void - + destructor 1 @@ -1530,11 +1530,11 @@ - + identifier KpfFXd3FeSffU3rGswegSIkkCrM= protected_derived - + normal @@ -1574,11 +1574,11 @@ - + identifier KpfFXd3FeSffU3rGswegSIkkCrM= protected_derived - + normal @@ -1611,11 +1611,11 @@ - + identifier /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= base_base - + normal @@ -1648,11 +1648,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -1685,11 +1685,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -1722,11 +1722,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -1759,11 +1759,11 @@ - + identifier /PcbLGG9Q7grLgSOV/R/ZnEg9Cs= base_base - + normal @@ -1796,11 +1796,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -1833,11 +1833,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -1870,11 +1870,11 @@ - + identifier sk8HTAQHhzXfZej4IJliADonAJQ= base - + normal @@ -1908,11 +1908,11 @@ - + identifier ZFBKKIr2vNG5u3bxIaTbccBBkvQ= excluded_base - + normal @@ -1946,11 +1946,11 @@ - + identifier ZFBKKIr2vNG5u3bxIaTbccBBkvQ= excluded_base - + normal @@ -1984,11 +1984,11 @@ - + identifier ZFBKKIr2vNG5u3bxIaTbccBBkvQ= excluded_base - + normal diff --git a/test-files/golden-tests/config/inherit-base-members/template-base.xml b/test-files/golden-tests/config/inherit-base-members/template-base.xml index 9300d58888..28a79eec17 100644 --- a/test-files/golden-tests/config/inherit-base-members/template-base.xml +++ b/test-files/golden-tests/config/inherit-base-members/template-base.xml @@ -86,10 +86,10 @@ - + identifier T - + normal @@ -130,18 +130,18 @@ - + identifier T - + - + identifier int - + n @@ -175,11 +175,20 @@ class - + specialization ZLNgZaGs9JV18Yo8wi3pzzp4vfE= base - + + type + + + identifier + int + + + + public @@ -212,10 +221,10 @@ qSoIJ38D4p+grUCWP6X5kItp3a8= - + identifier int - + normal @@ -239,18 +248,18 @@ qSoIJ38D4p+grUCWP6X5kItp3a8= - + identifier int - + - + identifier int - + n @@ -302,11 +311,20 @@ - + specialization ZLNgZaGs9JV18Yo8wi3pzzp4vfE= base - + + type + + + identifier + T + + + + public @@ -349,10 +367,10 @@ - + identifier T - + normal @@ -394,18 +412,18 @@ - + identifier T - + - + identifier int - + n diff --git a/test-files/golden-tests/config/legible-names/constructor.xml b/test-files/golden-tests/config/legible-names/constructor.xml index b0cd448faa..8926adb0ae 100644 --- a/test-files/golden-tests/config/legible-names/constructor.xml +++ b/test-files/golden-tests/config/legible-names/constructor.xml @@ -91,10 +91,10 @@ bzCqmNJXWfd3zGOkytPkJL6K6VQ= d9h3reyOyp3JT3kwQOTPOI9tmzg= - + identifier void - + @@ -122,10 +122,10 @@ - + identifier void - + constructor 1 @@ -163,20 +163,20 @@ - + identifier void - + 1 - + identifier ynx5NXMLXqzSXwgOnIP6CHzNx14= X - + other @@ -217,19 +217,19 @@ - + identifier void - + - + identifier ynx5NXMLXqzSXwgOnIP6CHzNx14= X - + other @@ -277,17 +277,17 @@ - + identifier void - + - + identifier double - + value @@ -334,17 +334,17 @@ - + identifier void - + - + identifier int - + value diff --git a/test-files/golden-tests/config/missing-include-prefixes/main.xml b/test-files/golden-tests/config/missing-include-prefixes/main.xml index c2b0312caf..aa216cc592 100644 --- a/test-files/golden-tests/config/missing-include-prefixes/main.xml +++ b/test-files/golden-tests/config/missing-include-prefixes/main.xml @@ -29,11 +29,11 @@ regular //////////////////////////8= - + identifier KJQiUzqS/DyA8gVUV+KMxND3bns= unknown_type - + normal @@ -52,16 +52,16 @@ regular //////////////////////////8= - + identifier crCUrZiBv5bX9bGLig2c8iHIQTw= unknown_type - + identifier FSD/uKhIsgLLMoCQGwUzTPIPF6s= unknown_ns - - + + normal diff --git a/test-files/golden-tests/config/missing-include-shims/main.xml b/test-files/golden-tests/config/missing-include-shims/main.xml index 36ef87b167..5c112ce133 100644 --- a/test-files/golden-tests/config/missing-include-shims/main.xml +++ b/test-files/golden-tests/config/missing-include-shims/main.xml @@ -44,16 +44,16 @@ - + identifier 7PyvYkwEUjqZ90L8TvRpXXrIUqA= StringRef - + identifier AKTakQzBfC0KTDMPjnNxxSVhb0E= llvm - - + + normal diff --git a/test-files/golden-tests/config/overloads/const-mutable.xml b/test-files/golden-tests/config/overloads/const-mutable.xml index 933224b4ce..10b58ad456 100644 --- a/test-files/golden-tests/config/overloads/const-mutable.xml +++ b/test-files/golden-tests/config/overloads/const-mutable.xml @@ -62,10 +62,10 @@ c8FMK37zKpqJXH2ZioM0tYziY1g= - + identifier int - + @@ -86,10 +86,10 @@ BrX2oZup9qgy4SfJloKCuUYZshA= - + identifier int - + normal @@ -112,10 +112,10 @@ BrX2oZup9qgy4SfJloKCuUYZshA= - + identifier int - + normal diff --git a/test-files/golden-tests/config/overloads/visibility.xml b/test-files/golden-tests/config/overloads/visibility.xml index aa484cb4d8..29dd0441b8 100644 --- a/test-files/golden-tests/config/overloads/visibility.xml +++ b/test-files/golden-tests/config/overloads/visibility.xml @@ -64,10 +64,10 @@ umtiZdZUSDxw3juVm+S7M40tpXQ= ZlzGLjjc8rseQAYYNLgCZvhC28g= - + identifier int - + @@ -86,10 +86,10 @@ regular BrX2oZup9qgy4SfJloKCuUYZshA= - + identifier int - + normal 1 @@ -110,17 +110,17 @@ regular BrX2oZup9qgy4SfJloKCuUYZshA= - + identifier int - + - + identifier bool - + normal @@ -151,10 +151,10 @@ /FdiOdEzqaZeg+AJKJir7X+Te/U= UNX9B8tS+5rPg6IDVPCp65KU9K8= - + identifier int - + @@ -173,17 +173,17 @@ regular BrX2oZup9qgy4SfJloKCuUYZshA= - + identifier int - + - + identifier int - + normal @@ -206,25 +206,25 @@ regular BrX2oZup9qgy4SfJloKCuUYZshA= - + identifier int - + - + identifier int - + - + identifier bool - + normal @@ -256,10 +256,10 @@ o2jTMMUUPQBbGJOrh0qwurUTaTc= xtm3DYSrIA4dEog7ntDc3s6rKHs= - + identifier int - + @@ -278,25 +278,25 @@ regular BrX2oZup9qgy4SfJloKCuUYZshA= - + identifier int - + - + identifier int - + - + identifier int - + normal @@ -318,33 +318,33 @@ regular BrX2oZup9qgy4SfJloKCuUYZshA= - + identifier int - + - + identifier int - + - + identifier int - + - + identifier bool - + normal @@ -375,10 +375,10 @@ B3IB3WYPg106i0ziVCj3FHkRNAE= 9QPd0C7ERvmPWPhi4ucPT1LXybM= - + identifier int - + @@ -397,33 +397,33 @@ regular BrX2oZup9qgy4SfJloKCuUYZshA= - + identifier int - + - + identifier int - + - + identifier int - + - + identifier int - + normal @@ -446,41 +446,41 @@ regular BrX2oZup9qgy4SfJloKCuUYZshA= - + identifier int - + - + identifier int - + - + identifier int - + - + identifier int - + - + identifier bool - + normal diff --git a/test-files/golden-tests/config/sfinae/alias.xml b/test-files/golden-tests/config/sfinae/alias.xml index 91287298ef..b1cd681973 100644 --- a/test-files/golden-tests/config/sfinae/alias.xml +++ b/test-files/golden-tests/config/sfinae/alias.xml @@ -30,10 +30,10 @@ //////////////////////////8= C - + identifier T - + 1