mirror of
https://github.com/janet-lang/janet
synced 2024-11-28 11:09:54 +00:00
Handle missing get case.
This commit is contained in:
parent
9ccdab0bc7
commit
9911c90b1d
@ -229,7 +229,8 @@ Janet janet_get(Janet ds, Janet key) {
|
|||||||
return (type->get)(abst, key);
|
return (type->get)(abst, key);
|
||||||
}
|
}
|
||||||
case JANET_ARRAY:
|
case JANET_ARRAY:
|
||||||
case JANET_TUPLE: {
|
case JANET_TUPLE:
|
||||||
|
case JANET_BUFFER: {
|
||||||
if (!janet_checkint(key)) return janet_wrap_nil();
|
if (!janet_checkint(key)) return janet_wrap_nil();
|
||||||
int32_t index = janet_unwrap_integer(key);
|
int32_t index = janet_unwrap_integer(key);
|
||||||
if (index < 0) return janet_wrap_nil();
|
if (index < 0) return janet_wrap_nil();
|
||||||
@ -237,6 +238,10 @@ Janet janet_get(Janet ds, Janet key) {
|
|||||||
JanetArray *a = janet_unwrap_array(ds);
|
JanetArray *a = janet_unwrap_array(ds);
|
||||||
if (index >= a->count) return janet_wrap_nil();
|
if (index >= a->count) return janet_wrap_nil();
|
||||||
return a->data[index];
|
return a->data[index];
|
||||||
|
} else if (t == JANET_BUFFER) {
|
||||||
|
JanetBuffer *b = janet_unwrap_buffer(ds);
|
||||||
|
if (index >= b->count) return janet_wrap_nil();
|
||||||
|
return janet_wrap_integer(b->data[index]);
|
||||||
} else {
|
} else {
|
||||||
const Janet *t = janet_unwrap_tuple(ds);
|
const Janet *t = janet_unwrap_tuple(ds);
|
||||||
if (index >= janet_tuple_length(t)) return janet_wrap_nil();
|
if (index >= janet_tuple_length(t)) return janet_wrap_nil();
|
||||||
|
@ -55,6 +55,8 @@
|
|||||||
(assert (= (get @{} 1) nil) "get nil from empty table")
|
(assert (= (get @{} 1) nil) "get nil from empty table")
|
||||||
(assert (= (get {:boop :bap} :boop) :bap) "get non nil from struct")
|
(assert (= (get {:boop :bap} :boop) :bap) "get non nil from struct")
|
||||||
(assert (= (get @{:boop :bap} :boop) :bap) "get non nil from table")
|
(assert (= (get @{:boop :bap} :boop) :bap) "get non nil from table")
|
||||||
|
(assert (= (get @"\0" 0) 0) "get non nil from buffer")
|
||||||
|
(assert (= (get @"\0" 1) nil) "get nil from buffer oob")
|
||||||
(assert (put @{} :boop :bap) "can add to empty table")
|
(assert (put @{} :boop :bap) "can add to empty table")
|
||||||
(assert (put @{1 3} :boop :bap) "can add to non-empty table")
|
(assert (put @{1 3} :boop :bap) "can add to non-empty table")
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user