mirror of
https://github.com/janet-lang/janet
synced 2024-11-29 03:19:54 +00:00
Add noreturn attribute to panic functions.
This commit is contained in:
parent
26513a7a16
commit
2acc81d1c5
@ -447,7 +447,7 @@ static void builder_cleanup(Builder *b) {
|
|||||||
janet_v_free(b->bytecode);
|
janet_v_free(b->bytecode);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void peg_panic(Builder *b, const char *msg) {
|
JANET_NO_RETURN static void peg_panic(Builder *b, const char *msg) {
|
||||||
builder_cleanup(b);
|
builder_cleanup(b);
|
||||||
janet_panicf("grammar error in %p, %s", b->form, msg);
|
janet_panicf("grammar error in %p, %s", b->form, msg);
|
||||||
}
|
}
|
||||||
|
@ -151,7 +151,6 @@ Janet janet_get(Janet ds, Janet key) {
|
|||||||
switch (janet_type(ds)) {
|
switch (janet_type(ds)) {
|
||||||
default:
|
default:
|
||||||
janet_panicf("expected %T, got %v", JANET_TFLAG_LENGTHABLE, ds);
|
janet_panicf("expected %T, got %v", JANET_TFLAG_LENGTHABLE, ds);
|
||||||
value = janet_wrap_nil();
|
|
||||||
break;
|
break;
|
||||||
case JANET_STRUCT:
|
case JANET_STRUCT:
|
||||||
value = janet_struct_get(janet_unwrap_struct(ds), key);
|
value = janet_struct_get(janet_unwrap_struct(ds), key);
|
||||||
@ -219,7 +218,6 @@ Janet janet_get(Janet ds, Janet key) {
|
|||||||
value = (type->get)(janet_unwrap_abstract(ds), key);
|
value = (type->get)(janet_unwrap_abstract(ds), key);
|
||||||
} else {
|
} else {
|
||||||
janet_panicf("no getter for %v ", ds);
|
janet_panicf("no getter for %v ", ds);
|
||||||
value = janet_wrap_nil();
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -233,7 +231,6 @@ Janet janet_getindex(Janet ds, int32_t index) {
|
|||||||
switch (janet_type(ds)) {
|
switch (janet_type(ds)) {
|
||||||
default:
|
default:
|
||||||
janet_panicf("expected %T, got %v", JANET_TFLAG_LENGTHABLE, ds);
|
janet_panicf("expected %T, got %v", JANET_TFLAG_LENGTHABLE, ds);
|
||||||
value = janet_wrap_nil();
|
|
||||||
break;
|
break;
|
||||||
case JANET_STRING:
|
case JANET_STRING:
|
||||||
case JANET_SYMBOL:
|
case JANET_SYMBOL:
|
||||||
@ -277,7 +274,6 @@ Janet janet_getindex(Janet ds, int32_t index) {
|
|||||||
value = (type->get)(janet_unwrap_abstract(ds), janet_wrap_integer(index));
|
value = (type->get)(janet_unwrap_abstract(ds), janet_wrap_integer(index));
|
||||||
} else {
|
} else {
|
||||||
janet_panicf("no getter for %v ", ds);
|
janet_panicf("no getter for %v ", ds);
|
||||||
value = janet_wrap_nil();
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -289,7 +285,6 @@ int32_t janet_length(Janet x) {
|
|||||||
switch (janet_type(x)) {
|
switch (janet_type(x)) {
|
||||||
default:
|
default:
|
||||||
janet_panicf("expected %T, got %v", JANET_TFLAG_LENGTHABLE, x);
|
janet_panicf("expected %T, got %v", JANET_TFLAG_LENGTHABLE, x);
|
||||||
return 0;
|
|
||||||
case JANET_STRING:
|
case JANET_STRING:
|
||||||
case JANET_SYMBOL:
|
case JANET_SYMBOL:
|
||||||
case JANET_KEYWORD:
|
case JANET_KEYWORD:
|
||||||
@ -312,7 +307,6 @@ void janet_putindex(Janet ds, int32_t index, Janet value) {
|
|||||||
default:
|
default:
|
||||||
janet_panicf("expected %T, got %v",
|
janet_panicf("expected %T, got %v",
|
||||||
JANET_TFLAG_ARRAY | JANET_TFLAG_BUFFER | JANET_TFLAG_TABLE, ds);
|
JANET_TFLAG_ARRAY | JANET_TFLAG_BUFFER | JANET_TFLAG_TABLE, ds);
|
||||||
break;
|
|
||||||
case JANET_ARRAY: {
|
case JANET_ARRAY: {
|
||||||
JanetArray *array = janet_unwrap_array(ds);
|
JanetArray *array = janet_unwrap_array(ds);
|
||||||
if (index >= array->count) {
|
if (index >= array->count) {
|
||||||
@ -355,7 +349,6 @@ void janet_put(Janet ds, Janet key, Janet value) {
|
|||||||
default:
|
default:
|
||||||
janet_panicf("expected %T, got %v",
|
janet_panicf("expected %T, got %v",
|
||||||
JANET_TFLAG_ARRAY | JANET_TFLAG_BUFFER | JANET_TFLAG_TABLE, ds);
|
JANET_TFLAG_ARRAY | JANET_TFLAG_BUFFER | JANET_TFLAG_TABLE, ds);
|
||||||
break;
|
|
||||||
case JANET_ARRAY: {
|
case JANET_ARRAY: {
|
||||||
int32_t index;
|
int32_t index;
|
||||||
JanetArray *array = janet_unwrap_array(ds);
|
JanetArray *array = janet_unwrap_array(ds);
|
||||||
|
@ -152,6 +152,15 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* Tell complier some functions don't return */
|
||||||
|
#ifndef JANET_NO_RETURN
|
||||||
|
#ifdef JANET_WINDOWS
|
||||||
|
#define JANET_NO_RETURN __declspec(noreturn)
|
||||||
|
#else
|
||||||
|
#define JANET_NO_RETURN __attribute__ ((noreturn))
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Prevent some recursive functions from recursing too deeply
|
/* Prevent some recursive functions from recursing too deeply
|
||||||
* ands crashing (the parser). Instead, error out. */
|
* ands crashing (the parser). Instead, error out. */
|
||||||
#define JANET_RECURSION_GUARD 1024
|
#define JANET_RECURSION_GUARD 1024
|
||||||
@ -1293,13 +1302,13 @@ JANET_API void janet_register(const char *name, JanetCFunction cfun);
|
|||||||
} \
|
} \
|
||||||
JANET_API void _janet_init
|
JANET_API void _janet_init
|
||||||
|
|
||||||
JANET_API void janet_panicv(Janet message);
|
JANET_NO_RETURN JANET_API void janet_panicv(Janet message);
|
||||||
JANET_API void janet_panic(const char *message);
|
JANET_NO_RETURN JANET_API void janet_panic(const char *message);
|
||||||
JANET_API void janet_panics(const uint8_t *message);
|
JANET_NO_RETURN JANET_API void janet_panics(const uint8_t *message);
|
||||||
JANET_API void janet_panicf(const char *format, ...);
|
JANET_NO_RETURN JANET_API void janet_panicf(const char *format, ...);
|
||||||
JANET_API void janet_printf(const char *format, ...);
|
JANET_API void janet_printf(const char *format, ...);
|
||||||
JANET_API void janet_panic_type(Janet x, int32_t n, int expected);
|
JANET_NO_RETURN JANET_API void janet_panic_type(Janet x, int32_t n, int expected);
|
||||||
JANET_API void janet_panic_abstract(Janet x, int32_t n, const JanetAbstractType *at);
|
JANET_NO_RETURN JANET_API void janet_panic_abstract(Janet x, int32_t n, const JanetAbstractType *at);
|
||||||
JANET_API void janet_arity(int32_t arity, int32_t min, int32_t max);
|
JANET_API void janet_arity(int32_t arity, int32_t min, int32_t max);
|
||||||
JANET_API void janet_fixarity(int32_t arity, int32_t fix);
|
JANET_API void janet_fixarity(int32_t arity, int32_t fix);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user