mirror of
				https://github.com/janet-lang/janet
				synced 2025-11-04 09:33:02 +00:00 
			
		
		
		
	Handle missing get case.
This commit is contained in:
		@@ -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")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user