Skip to content

Commit d20245f

Browse files
committed
improve error message
1 parent dce4a62 commit d20245f

File tree

2 files changed

+8
-10
lines changed

2 files changed

+8
-10
lines changed

source/mir/ndslice/internal.d

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -153,10 +153,8 @@ size_t[] reverse()(size_t[] ar)
153153
return ar;
154154
}
155155

156-
enum indexError(size_t pos, size_t N) =
157-
"index at position " ~ pos.stringof
158-
~ " from the range [0 .." ~ N.stringof ~ ")"
159-
~ " must be less than corresponding length.";
156+
enum indexError(DeepElement, int pos, int N) =
157+
N.stringof ~ "D slice of " ~ DeepElement.stringof ~ ": bounds check failed at " ~ (pos + 1).stringof ~ " dimension";
160158

161159
enum string tailErrorMessage(
162160
string fun = __FUNCTION__,

source/mir/ndslice/slice.d

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -785,39 +785,39 @@ package(mir):
785785
static if (kind == Contiguous)
786786
{
787787
enum E = I - 1;
788-
assert(_indices[E] < _lengths[E], indexError!(E, N));
788+
assert(_indices[E] < _lengths[E], indexError!(DeepElement, E, N));
789789
ptrdiff_t ball = this._stride!E;
790790
ptrdiff_t stride = _indices[E] * ball;
791791
foreach_reverse (i; Iota!E) //static
792792
{
793793
ball *= _lengths[i + 1];
794-
assert(_indices[i] < _lengths[i], indexError!(i, N));
794+
assert(_indices[i] < _lengths[i], indexError!(DeepElement, i, N));
795795
stride += ball * _indices[i];
796796
}
797797
}
798798
else
799799
static if (kind == Canonical)
800800
{
801801
enum E = I - 1;
802-
assert(_indices[E] < _lengths[E], indexError!(E, N));
802+
assert(_indices[E] < _lengths[E], indexError!(DeepElement, E, N));
803803
static if (I == N)
804804
size_t stride = _indices[E];
805805
else
806806
size_t stride = _strides[E] * _indices[E];
807807
foreach_reverse (i; Iota!E) //static
808808
{
809-
assert(_indices[i] < _lengths[i], indexError!(i, N));
809+
assert(_indices[i] < _lengths[i], indexError!(DeepElement, i, N));
810810
stride += _strides[i] * _indices[i];
811811
}
812812
}
813813
else
814814
{
815815
enum E = I - 1;
816-
assert(_indices[E] < _lengths[E], indexError!(E, N));
816+
assert(_indices[E] < _lengths[E], indexError!(DeepElement, E, N));
817817
size_t stride = _strides[E] * _indices[E];
818818
foreach_reverse (i; Iota!E) //static
819819
{
820-
assert(_indices[i] < _lengths[i], indexError!(i, N));
820+
assert(_indices[i] < _lengths[i], indexError!(DeepElement, i, N));
821821
stride += _strides[i] * _indices[i];
822822
}
823823
}

0 commit comments

Comments
 (0)