|
8 | 8 | createInvalidMemberWarning,
|
9 | 9 | } = require('../annotations');
|
10 | 10 | const parseObject = require('../parseObject');
|
| 11 | +const parseReference = require('../parseReference'); |
11 | 12 | const pipeParseResult = require('../../pipeParseResult');
|
12 | 13 | const parseSchemaObject = require('./parseSchemaObject');
|
13 | 14 | const parseParameterObject = require('./parseParameterObject');
|
@@ -130,22 +131,25 @@ function parseComponentsObject(context, element) {
|
130 | 131 | * @returns ParseResult<ObjectElement>
|
131 | 132 | * @private
|
132 | 133 | */
|
133 |
| - const parseComponentObjectMember = (parser) => { |
| 134 | + const parseComponentObjectMember = R.curry((parser, member) => { |
| 135 | + const component = member.key.toValue(); |
| 136 | + |
134 | 137 | const parseMember = parseComponentMember(context, parser);
|
| 138 | + const parseMemberOrRef = m => parseReference(component, () => parseMember(m), context, m.value, false, true); |
135 | 139 |
|
136 |
| - return member => pipeParseResult(context.namespace, |
| 140 | + return pipeParseResult(context.namespace, |
137 | 141 | validateIsObject,
|
138 |
| - R.compose(parseObject(context, name, parseMember), getValue), |
| 142 | + R.compose(parseObject(context, name, parseMemberOrRef), getValue), |
139 | 143 | (object) => {
|
140 |
| - const contextMember = context.state.components.getMember(member.key.toValue()); |
| 144 | + const contextMember = context.state.components.getMember(component); |
141 | 145 |
|
142 | 146 | if (contextMember) {
|
143 | 147 | contextMember.value = object;
|
144 | 148 | }
|
145 | 149 |
|
146 | 150 | return object;
|
147 | 151 | })(member);
|
148 |
| - }; |
| 152 | + }); |
149 | 153 |
|
150 | 154 | const setDataStructureId = (dataStructure, key) => {
|
151 | 155 | if (dataStructure) {
|
|
0 commit comments