Skip to content

Commit 5786512

Browse files
committed
nested
1 parent 7ad5f0b commit 5786512

26 files changed

+1728
-681
lines changed

src/lib/Metadata/Finalizers/BaseMembersFinalizer.cpp

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -221,10 +221,22 @@ operator()(RecordInfo& I)
221221
operator()(*baseRecord);
222222
inheritBaseMembers(I, *baseRecord, baseI.Access);
223223
}
224-
finalizeRecords(I.Interface.Public.Records);
225-
finalizeRecords(I.Interface.Protected.Records);
226-
finalizeRecords(I.Interface.Private.Records);
227224
finalized_.emplace(I.id);
225+
226+
auto RecordMembers =
227+
I.Members |
228+
std::views::filter([this](MemberInfo const& member) {
229+
return member.Kind == InfoKind::Record;
230+
}) |
231+
std::ranges::views::transform(&MemberInfo::id);
232+
for (SymbolID const& memberId: RecordMembers)
233+
{
234+
Info* infoPtr = corpus_.find(memberId);
235+
MRDOCS_CHECK_OR_CONTINUE(infoPtr);
236+
auto* record = infoPtr->asRecordPtr();
237+
MRDOCS_CHECK_OR_CONTINUE(record);
238+
operator()(*record);
239+
}
228240
}
229241

230242
} // clang::mrdocs

test-files/golden-tests/config/inherit-base-members/copy-dependencies.adoc

Lines changed: 64 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,6 @@ class base
6161
| This function should shadow the excluded_base function.
6262
| link:#base-derived_shadowed[`derived_shadowed`]
6363
| This function should be shadowed by derived classes.
64-
| link:#base_base-do_base_base_inherited[`do_base_base_inherited`]
65-
| This function should be indirectly inherited by derived classes.
6664
|===
6765

6866
=== Protected Member Functions
@@ -71,6 +69,8 @@ class base
7169
|===
7270
| Name
7371
| Description
72+
| link:#base_base-do_base_base_inherited[`do_base_base_inherited`]
73+
| This function should be indirectly inherited by derived classes.
7474
| link:#base-do_base_inherited[`do_base_inherited`]
7575
| This function should be inherited by derived classes.
7676
| link:#base-do_base_shadowed[`do_base_shadowed`]
@@ -225,6 +225,14 @@ class base_base;
225225
| Description
226226
| link:#base_base-base_base_inherited[`base_base_inherited`]
227227
| This function should be indirectly inherited by derived classes.
228+
|===
229+
230+
=== Protected Member Functions
231+
232+
[cols=2]
233+
|===
234+
| Name
235+
| Description
228236
| link:#base_base-do_base_base_inherited[`do_base_base_inherited`]
229237
| This function should be indirectly inherited by derived classes.
230238
|===
@@ -319,10 +327,6 @@ class derived
319327
| This function should shadow the excluded_base function.
320328
| link:#derived-derived_shadowed[`derived_shadowed`]
321329
| This function should shadow the base class function.
322-
| link:#base_base-do_base_base_inherited[`do_base_base_inherited`]
323-
| This function should be indirectly inherited by derived classes.
324-
| link:#derived-do_derived_shadowed[`do_derived_shadowed`]
325-
| This function should shadow the base class function.
326330
| link:#derived-excluded_inherited[`excluded_inherited`]
327331
| This function should be inherited by derived classes.
328332
|===
@@ -333,10 +337,14 @@ class derived
333337
|===
334338
| Name
335339
| Description
340+
| link:#base_base-do_base_base_inherited[`do_base_base_inherited`]
341+
| This function should be indirectly inherited by derived classes.
336342
| link:#base-do_base_inherited[`do_base_inherited`]
337343
| This function should be inherited by derived classes.
338344
| link:#base-do_base_shadowed[`do_base_shadowed`]
339345
| This function should shadow the excluded_base function.
346+
| link:#derived-do_derived_shadowed[`do_derived_shadowed`]
347+
| This function should shadow the base class function.
340348
| link:#derived-do_excluded_inherited[`do_excluded_inherited`]
341349
| This function should be inherited by derived classes.
342350
| link:#derived-do_shadowed[`do_shadowed`]
@@ -362,40 +370,40 @@ derived_shadowed();
362370

363371
A class that derives from base and excluded_base
364372

365-
[#derived-do_derived_shadowed]
366-
== link:#derived[derived]::do_derived_shadowed
373+
[#derived-excluded_inherited]
374+
== link:#derived[derived]::excluded_inherited
367375

368-
This function should shadow the base class function.
376+
This function should be inherited by derived classes.
369377

370378
=== Synopsis
371379

372380
Declared in `<copy‐dependencies.cpp>`
373381

374382
[source,cpp,subs="verbatim,replacements,macros,-callouts"]
375383
----
376-
link:#derived[derived]&
377-
do_derived_shadowed();
384+
excluded_base&
385+
excluded_inherited();
378386
----
379387

380-
=== Return Value
381-
382-
A class that derives from base and excluded_base
383-
384-
[#derived-excluded_inherited]
385-
== link:#derived[derived]::excluded_inherited
388+
[#derived-do_derived_shadowed]
389+
== link:#derived[derived]::do_derived_shadowed
386390

387-
This function should be inherited by derived classes.
391+
This function should shadow the base class function.
388392

389393
=== Synopsis
390394

391395
Declared in `<copy‐dependencies.cpp>`
392396

393397
[source,cpp,subs="verbatim,replacements,macros,-callouts"]
394398
----
395-
excluded_base&
396-
excluded_inherited();
399+
link:#derived[derived]&
400+
do_derived_shadowed();
397401
----
398402

403+
=== Return Value
404+
405+
A class that derives from base and excluded_base
406+
399407
[#derived-do_excluded_inherited]
400408
== link:#derived[derived]::do_excluded_inherited
401409

@@ -456,10 +464,6 @@ class private_derived
456464
| This function should shadow the excluded_base function.
457465
| link:#private_derived-derived_shadowed[`derived_shadowed`]
458466
| This function should shadow the base class function.
459-
| link:#base_base-do_base_base_inherited[`do_base_base_inherited`]
460-
| This function should be indirectly inherited by derived classes.
461-
| link:#private_derived-do_derived_shadowed[`do_derived_shadowed`]
462-
| This function should shadow the base class function.
463467
| link:#private_derived-excluded_inherited[`excluded_inherited`]
464468
| This function should be inherited by derived classes.
465469
|===
@@ -470,10 +474,14 @@ class private_derived
470474
|===
471475
| Name
472476
| Description
477+
| link:#base_base-do_base_base_inherited[`do_base_base_inherited`]
478+
| This function should be indirectly inherited by derived classes.
473479
| link:#base-do_base_inherited[`do_base_inherited`]
474480
| This function should be inherited by derived classes.
475481
| link:#base-do_base_shadowed[`do_base_shadowed`]
476482
| This function should shadow the excluded_base function.
483+
| link:#private_derived-do_derived_shadowed[`do_derived_shadowed`]
484+
| This function should shadow the base class function.
477485
| link:#private_derived-do_excluded_inherited[`do_excluded_inherited`]
478486
| This function should be inherited by derived classes.
479487
| link:#private_derived-do_shadowed[`do_shadowed`]
@@ -499,40 +507,40 @@ derived_shadowed();
499507

500508
A class that uses private inheritance only
501509

502-
[#private_derived-do_derived_shadowed]
503-
== link:#private_derived[private_derived]::do_derived_shadowed
510+
[#private_derived-excluded_inherited]
511+
== link:#private_derived[private_derived]::excluded_inherited
504512

505-
This function should shadow the base class function.
513+
This function should be inherited by derived classes.
506514

507515
=== Synopsis
508516

509517
Declared in `<copy‐dependencies.cpp>`
510518

511519
[source,cpp,subs="verbatim,replacements,macros,-callouts"]
512520
----
513-
link:#private_derived[private_derived]&
514-
do_derived_shadowed();
521+
excluded_base&
522+
excluded_inherited();
515523
----
516524

517-
=== Return Value
518-
519-
A class that uses private inheritance only
520-
521-
[#private_derived-excluded_inherited]
522-
== link:#private_derived[private_derived]::excluded_inherited
525+
[#private_derived-do_derived_shadowed]
526+
== link:#private_derived[private_derived]::do_derived_shadowed
523527

524-
This function should be inherited by derived classes.
528+
This function should shadow the base class function.
525529

526530
=== Synopsis
527531

528532
Declared in `<copy‐dependencies.cpp>`
529533

530534
[source,cpp,subs="verbatim,replacements,macros,-callouts"]
531535
----
532-
excluded_base&
533-
excluded_inherited();
536+
link:#private_derived[private_derived]&
537+
do_derived_shadowed();
534538
----
535539

540+
=== Return Value
541+
542+
A class that uses private inheritance only
543+
536544
[#private_derived-do_excluded_inherited]
537545
== link:#private_derived[private_derived]::do_excluded_inherited
538546

@@ -605,10 +613,6 @@ class protected_derived
605613
| This function should shadow the excluded_base function.
606614
| link:#protected_derived-derived_shadowed[`derived_shadowed`]
607615
| This function should shadow the base class function.
608-
| link:#base_base-do_base_base_inherited[`do_base_base_inherited`]
609-
| This function should be indirectly inherited by derived classes.
610-
| link:#protected_derived-do_derived_shadowed[`do_derived_shadowed`]
611-
| This function should shadow the base class function.
612616
| link:#protected_derived-excluded_inherited[`excluded_inherited`]
613617
| This function should be inherited by derived classes.
614618
|===
@@ -619,10 +623,14 @@ class protected_derived
619623
|===
620624
| Name
621625
| Description
626+
| link:#base_base-do_base_base_inherited[`do_base_base_inherited`]
627+
| This function should be indirectly inherited by derived classes.
622628
| link:#base-do_base_inherited[`do_base_inherited`]
623629
| This function should be inherited by derived classes.
624630
| link:#base-do_base_shadowed[`do_base_shadowed`]
625631
| This function should shadow the excluded_base function.
632+
| link:#protected_derived-do_derived_shadowed[`do_derived_shadowed`]
633+
| This function should shadow the base class function.
626634
| link:#protected_derived-do_excluded_inherited[`do_excluded_inherited`]
627635
| This function should be inherited by derived classes.
628636
| link:#protected_derived-do_shadowed[`do_shadowed`]
@@ -648,40 +656,40 @@ derived_shadowed();
648656

649657
A class that should inherit functions as protected.
650658

651-
[#protected_derived-do_derived_shadowed]
652-
== link:#protected_derived[protected_derived]::do_derived_shadowed
659+
[#protected_derived-excluded_inherited]
660+
== link:#protected_derived[protected_derived]::excluded_inherited
653661

654-
This function should shadow the base class function.
662+
This function should be inherited by derived classes.
655663

656664
=== Synopsis
657665

658666
Declared in `<copy‐dependencies.cpp>`
659667

660668
[source,cpp,subs="verbatim,replacements,macros,-callouts"]
661669
----
662-
link:#protected_derived[protected_derived]&
663-
do_derived_shadowed();
670+
excluded_base&
671+
excluded_inherited();
664672
----
665673

666-
=== Return Value
667-
668-
A class that should inherit functions as protected.
669-
670-
[#protected_derived-excluded_inherited]
671-
== link:#protected_derived[protected_derived]::excluded_inherited
674+
[#protected_derived-do_derived_shadowed]
675+
== link:#protected_derived[protected_derived]::do_derived_shadowed
672676

673-
This function should be inherited by derived classes.
677+
This function should shadow the base class function.
674678

675679
=== Synopsis
676680

677681
Declared in `<copy‐dependencies.cpp>`
678682

679683
[source,cpp,subs="verbatim,replacements,macros,-callouts"]
680684
----
681-
excluded_base&
682-
excluded_inherited();
685+
link:#protected_derived[protected_derived]&
686+
do_derived_shadowed();
683687
----
684688

689+
=== Return Value
690+
691+
A class that should inherit functions as protected.
692+
685693
[#protected_derived-do_excluded_inherited]
686694
== link:#protected_derived[protected_derived]::do_excluded_inherited
687695

test-files/golden-tests/config/inherit-base-members/copy-dependencies.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ class base_base {
2121
public:
2222
/// This function should be indirectly inherited by derived classes.
2323
base_base& base_base_inherited();
24-
public:
24+
protected:
2525
/// This function should be indirectly inherited by derived classes.
2626
base_base& do_base_base_inherited();
2727
};
@@ -54,7 +54,7 @@ class derived
5454
public:
5555
/// This function should shadow the base class function.
5656
derived& derived_shadowed();
57-
public:
57+
protected:
5858
/// This function should shadow the base class function.
5959
derived& do_derived_shadowed();
6060
};
@@ -67,7 +67,7 @@ class protected_derived
6767
public:
6868
/// This function should shadow the base class function.
6969
protected_derived& derived_shadowed();
70-
public:
70+
protected:
7171
/// This function should shadow the base class function.
7272
protected_derived& do_derived_shadowed();
7373
};
@@ -80,7 +80,7 @@ class private_derived
8080
public:
8181
/// This function should shadow the base class function.
8282
private_derived& derived_shadowed();
83-
public:
83+
protected:
8484
/// This function should shadow the base class function.
8585
private_derived& do_derived_shadowed();
8686
};

0 commit comments

Comments
 (0)