1# SPDX-License-Identifier: BSD-3-Clause
2#
3# Binding file for testing diamond inheritance (top-bottom).
4#
5#                diamond.yaml
6#                  /    \
7#                 /      \
8#   base_amend.yaml      thing.yaml
9#                \         /
10#                 \       /
11#                 base.yaml
12#
13# Which properties are specified at which levels is summarized below
14# for convenience.
15#
16# * Binding level.
17#   Diamond's left:
18#   - prop-1 (amended in base_amend.yaml)
19#   - prop-enum (amended in base_amend.yaml)
20#   - prop-default (inherited from base.yaml)
21#   Diamond's right:
22#   - prop-1 (last amended in thing.yaml)
23#   - prop-enum (amended in thing.yaml)
24#   - prop-thing (inherited from thing.yaml)
25#   Diamond's top:
26#   - prop-enum (last amended here)
27#   - prop-diamond
28#
29# * Child-binding level:
30#   Diamond's left:
31#   - child-prop-1 (amended in base_amend.yaml)
32#   - child-prop-enum (amended in base_amend.yaml)
33#   - child-prop-default (inherited from base.yaml)
34#   Diamond's right:
35#   - child-prop-1 (last amended in thing.yaml)
36#   - child-prop-enum (amended in thing.yaml)
37#   - child-prop-thing (inherited from thing.yaml)
38#   Diamond's top:
39#   - child-prop-enum (last amended here)
40#   - child-prop-diamond
41#
42# * Grandchild-binding level:
43#   Diamond's left:
44#   - grandchild-prop-1 (amended in base_amend.yaml)
45#   - grandchild-prop-enum (amended in base_amend.yaml)
46#   - grandchild-prop-default (inherited from base.yaml)
47#   Diamond's right:
48#   - grandchild-prop-1 (last amended in thing.yaml)
49#   - grandchild-prop-enum (amended in thing.yaml)
50#   - grandchild-prop-thing (inherited from thing.yaml)
51#   Diamond's top:
52#   - grandchild-prop-enum (last amended here)
53#   - grandchild-prop-diamond
54
55description: Diamond's top.
56
57compatible: diamond
58
59include:
60  # Diamond's left.
61  - name: base_amend.yaml
62    property-allowlist: [prop-1, prop-enum, prop-default]
63    child-binding:
64      property-allowlist: [child-prop-1, child-prop-enum, child-prop-default]
65      child-binding:
66        property-allowlist: [grandchild-prop-1, grandchild-prop-enum, grandchild-prop-default]
67  # Diamond's right.
68  - name: thing.yaml
69
70properties:
71  prop-diamond:
72    type: int
73  prop-enum:
74    description: Overwritten in diamond.yaml.
75    default: FOO
76
77child-binding:
78  description: Diamond's child-binding.
79
80  properties:
81    child-prop-diamond:
82      type: int
83    child-prop-enum:
84      description: Overwritten in diamond.yaml (child).
85      default: CHILD_FOO
86
87  child-binding:
88    properties:
89      grandchild-prop-diamond:
90        type: int
91      grandchild-prop-enum:
92        description: Overwritten in diamond.yaml (grandchild).
93        default: GRANDCHILD_FOO
94