mirror of
https://github.com/janet-lang/janet
synced 2024-12-25 16:00:27 +00:00
Range errors for slice
-likes include negatives.
Makes for less confusing errors when calling something like `(slice [] 0 -10)`.
This commit is contained in:
parent
058f63b440
commit
605a205008
@ -2,6 +2,7 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
|
|
||||||
## Unreleased - ???
|
## Unreleased - ???
|
||||||
|
- Add `sh-rule` and `sh-phony` to jpm's dialect of Janet.
|
||||||
- Change C api's `janet_formatb` -> `janet_formatbv`.
|
- Change C api's `janet_formatb` -> `janet_formatbv`.
|
||||||
- Add C `janet_formatb` to C api.
|
- Add C `janet_formatb` to C api.
|
||||||
- Add `edefer` macro to core.
|
- Add `edefer` macro to core.
|
||||||
|
@ -235,18 +235,20 @@ size_t janet_getsize(const Janet *argv, int32_t n) {
|
|||||||
|
|
||||||
int32_t janet_gethalfrange(const Janet *argv, int32_t n, int32_t length, const char *which) {
|
int32_t janet_gethalfrange(const Janet *argv, int32_t n, int32_t length, const char *which) {
|
||||||
int32_t raw = janet_getinteger(argv, n);
|
int32_t raw = janet_getinteger(argv, n);
|
||||||
if (raw < 0) raw += length + 1;
|
int32_t not_raw = raw;
|
||||||
if (raw < 0 || raw > length)
|
if (not_raw < 0) not_raw += length + 1;
|
||||||
janet_panicf("%s index %d out of range [0,%d]", which, raw, length);
|
if (not_raw < 0 || not_raw > length)
|
||||||
return raw;
|
janet_panicf("%s index %d out of range [%d,%d]", which, raw, -length - 1, length);
|
||||||
|
return not_raw;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t janet_getargindex(const Janet *argv, int32_t n, int32_t length, const char *which) {
|
int32_t janet_getargindex(const Janet *argv, int32_t n, int32_t length, const char *which) {
|
||||||
int32_t raw = janet_getinteger(argv, n);
|
int32_t raw = janet_getinteger(argv, n);
|
||||||
if (raw < 0) raw += length;
|
int32_t not_raw = raw;
|
||||||
if (raw < 0 || raw > length)
|
if (not_raw < 0) not_raw += length;
|
||||||
janet_panicf("%s index %d out of range [0,%d)", which, raw, length);
|
if (not_raw < 0 || not_raw > length)
|
||||||
return raw;
|
janet_panicf("%s index %d out of range [%d,%d)", which, raw, -length, length);
|
||||||
|
return not_raw;
|
||||||
}
|
}
|
||||||
|
|
||||||
JanetView janet_getindexed(const Janet *argv, int32_t n) {
|
JanetView janet_getindexed(const Janet *argv, int32_t n) {
|
||||||
|
Loading…
Reference in New Issue
Block a user