What’s the expected semantics of this range?
There can be several options. Note that the behavior should be consistent/explainable in the context of other ranges (sometimes it makes sense to define the specialized behavior, but a very strong case for it should be done).
Basically, the two options you have currently:
“The method usually returns a range of some type, I want a range of this type, but an empty (non-iterable) one.” It is easily represented by val...val (say, for numerics: 0...0). Its size would be 0, each would do nothing. Its begin/end are not nil, but depending on the logic of the program, it might be actually more consistent with the expectations of the method, and more reasonable to define;
“We don’t know where the range begins and where it ends, just that it is some Range”: nil..nil. It would have nil for begin, end and size, and can’t be iterated (= would throw an exception).
I think that reflecting upon which is more suitable for the further program and gives its the clearest semantics might be more useful than defining new kinds of the Range.