Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 21 additions & 4 deletions src/descriptors-field.adb
Original file line number Diff line number Diff line change
Expand Up @@ -156,11 +156,28 @@ package body Descriptors.Field is

elsif Tag = "enumeratedValues" then
declare
Enum : constant Descriptors.Enumerate.Enumerate_T :=
Descriptors.Enumerate.Read_Enumerate
(Child, Result.Enums, Result.Acc = Write_Only);
use Descriptors.Enumerate.Enumerate_Vectors;

-- A derivedFrom attribute on this element may
-- refer to a named enumeratedValues defined in a
-- sibling field of the same register, not just
-- one already defined within this field, so the
-- lookup vector must include both.
All_Enums : Vector := Result.Enums;
begin
Result.Enums.Append (Enum);
for F of Vec loop
for E of F.Enums loop
All_Enums.Append (E);
end loop;
end loop;

declare
Enum : constant Descriptors.Enumerate.Enumerate_T :=
Descriptors.Enumerate.Read_Enumerate
(Child, All_Enums, Result.Acc = Write_Only);
begin
Result.Enums.Append (Enum);
end;
end;

else
Expand Down