diag: add function to append a simple string to a diag
This commit is contained in:
@@ -76,7 +76,11 @@ void mie_diag_push_msg(
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (msg >= dialect->d_nr_diag_msgs) {
|
if (msg >= dialect->d_nr_diag_msgs
|
||||||
|
|| !dialect->d_diag_msgs[msg].msg_content) {
|
||||||
|
fprintf(stderr, "FATAL: %lu is not a valid %s diag msg\n", msg,
|
||||||
|
dialect_name);
|
||||||
|
abort();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -90,6 +94,20 @@ void mie_diag_push_msg(
|
|||||||
b_queue_push_back(&diag->diag_components, &c_msg->msg_base.c_entry);
|
b_queue_push_back(&diag->diag_components, &c_msg->msg_base.c_entry);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void mie_diag_push_string(struct mie_diag *diag, const char *str)
|
||||||
|
{
|
||||||
|
struct mie_diag_c_msg *c_msg = malloc(sizeof *c_msg);
|
||||||
|
if (!c_msg) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
memset(c_msg, 0x0, sizeof *c_msg);
|
||||||
|
c_msg->msg_base.c_type = MIE_DIAG_COMPONENT_MSG;
|
||||||
|
c_msg->msg_content = b_strdup(str);
|
||||||
|
|
||||||
|
b_queue_push_back(&diag->diag_components, &c_msg->msg_base.c_entry);
|
||||||
|
}
|
||||||
|
|
||||||
void mie_diag_push_snippet(
|
void mie_diag_push_snippet(
|
||||||
struct mie_diag *diag, unsigned long first_line, unsigned long last_line,
|
struct mie_diag *diag, unsigned long first_line, unsigned long last_line,
|
||||||
const struct mie_diag_amendment *amendments, size_t nr_amendments,
|
const struct mie_diag_amendment *amendments, size_t nr_amendments,
|
||||||
|
|||||||
@@ -4,6 +4,39 @@
|
|||||||
#include <blue/core/queue.h>
|
#include <blue/core/queue.h>
|
||||||
#include <mie/parse/file-span.h>
|
#include <mie/parse/file-span.h>
|
||||||
|
|
||||||
|
#define MIE_DIAG_HL(type, span) \
|
||||||
|
{ \
|
||||||
|
.hl_type = MIE_DIAG_HIGHLIGHT_##type, \
|
||||||
|
.hl_span = (span), \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define MIE_DIAG_ADD(str, loc) \
|
||||||
|
{ \
|
||||||
|
.a_type = MIE_DIAG_AMENDMENT_ADD, .__x = strlen(str), \
|
||||||
|
.a_add = { \
|
||||||
|
.a_loc = (loc), \
|
||||||
|
.a_str = (str), \
|
||||||
|
}, \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define MIE_DIAG_REMOVE(len, llc) \
|
||||||
|
{ \
|
||||||
|
.a_type = MIE_DIAG_AMENDMENT_REMOVE, \
|
||||||
|
.a_remove = { \
|
||||||
|
.a_loc = (loc), \
|
||||||
|
.a_length = (len), \
|
||||||
|
}, \
|
||||||
|
}
|
||||||
|
#define MIE_DIAG_REPLACE(len, str, loc) \
|
||||||
|
{ \
|
||||||
|
.a_type = MIE_DIAG_AMENDMENT_REPLACE, .__x = strlen(str), \
|
||||||
|
.a_replace = { \
|
||||||
|
.a_loc = (loc), \
|
||||||
|
.a_length = (len), \
|
||||||
|
.a_str = (str), \
|
||||||
|
}, \
|
||||||
|
}
|
||||||
|
|
||||||
struct mie_ctx;
|
struct mie_ctx;
|
||||||
struct mie_diag_class;
|
struct mie_diag_class;
|
||||||
struct mie_diag_amendment;
|
struct mie_diag_amendment;
|
||||||
@@ -31,6 +64,7 @@ MIE_API void mie_diag_set_location(
|
|||||||
MIE_API void mie_diag_push_msg(
|
MIE_API void mie_diag_push_msg(
|
||||||
struct mie_diag *diag, struct mie_ctx *ctx, const char *dialect,
|
struct mie_diag *diag, struct mie_ctx *ctx, const char *dialect,
|
||||||
unsigned long msg, ...);
|
unsigned long msg, ...);
|
||||||
|
MIE_API void mie_diag_push_string(struct mie_diag *diag, const char *str);
|
||||||
MIE_API void mie_diag_push_snippet(
|
MIE_API void mie_diag_push_snippet(
|
||||||
struct mie_diag *diag, unsigned long first_line, unsigned long last_line,
|
struct mie_diag *diag, unsigned long first_line, unsigned long last_line,
|
||||||
const struct mie_diag_amendment *amendmends, size_t nr_amendments,
|
const struct mie_diag_amendment *amendmends, size_t nr_amendments,
|
||||||
|
|||||||
Reference in New Issue
Block a user