Skip to content

Commit 1b9e9f1

Browse files
committed
Handle merging with wildcard range
1 parent dbf26e0 commit 1b9e9f1

File tree

2 files changed

+22
-0
lines changed

2 files changed

+22
-0
lines changed

lib/preprocess/GenericsContext.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,14 @@ export class GenericsContext {
195195
return rangeB;
196196
}
197197

198+
// If a range is a wildcard, return the other type
199+
if (rangeA.isA('ParameterRangeWildcard')) {
200+
return rangeB;
201+
}
202+
if (rangeB.isA('ParameterRangeWildcard')) {
203+
return rangeA;
204+
}
205+
198206
// Ranges always match with generic references
199207
if (rangeA.isA('ParameterRangeGenericTypeReference')) {
200208
return rangeB;

test/unit/preprocess/GenericsContexts-test.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -292,6 +292,20 @@ describe('GenericsContext', () => {
292292
)!.term).toEqualRdfTerm(objectLoader.createCompactedResource('xsd:integer').term);
293293
});
294294

295+
it('should return right if left is a wildcard', () => {
296+
expect(genericsContext.mergeRanges(
297+
objectLoader.createCompactedResource({ '@type': 'ParameterRangeWildcard' }),
298+
objectLoader.createCompactedResource('xsd:integer'),
299+
)!.term).toEqualRdfTerm(objectLoader.createCompactedResource('xsd:integer').term);
300+
});
301+
302+
it('should return left if right is a wildcard', () => {
303+
expect(genericsContext.mergeRanges(
304+
objectLoader.createCompactedResource('xsd:integer'),
305+
objectLoader.createCompactedResource({ '@type': 'ParameterRangeWildcard' }),
306+
)!.term).toEqualRdfTerm(objectLoader.createCompactedResource('xsd:integer').term);
307+
});
308+
295309
it('should return right if left is a generic', () => {
296310
expect(genericsContext.mergeRanges(
297311
objectLoader.createCompactedResource({ '@type': 'ParameterRangeGenericTypeReference' }),

0 commit comments

Comments
 (0)