forked from enlightenment/efl
eolian: validate eo/legacy prefix to be [a-z_][a-z0-9_]*
This commit is contained in:
parent
2ae2790604
commit
bf2c0c3405
|
@ -1642,6 +1642,30 @@ parse_events(Eo_Lexer *ls)
|
||||||
check_match(ls, '}', '{', line, col);
|
check_match(ls, '}', '{', line, col);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_validate_pfx(Eo_Lexer *ls)
|
||||||
|
{
|
||||||
|
char ebuf[PATH_MAX];
|
||||||
|
check(ls, TOK_VALUE);
|
||||||
|
const char *str = ls->t.value.s;
|
||||||
|
if ((*str != '_') && ((*str < 'a') || (*str > 'z')))
|
||||||
|
goto error;
|
||||||
|
for (++str; *str; ++str)
|
||||||
|
{
|
||||||
|
if (*str == '_')
|
||||||
|
continue;
|
||||||
|
if ((*str >= 'a') && (*str <= 'z'))
|
||||||
|
continue;
|
||||||
|
if ((*str >= '0') && (*str <= '9'))
|
||||||
|
continue;
|
||||||
|
goto error;
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
error:
|
||||||
|
snprintf(ebuf, sizeof(ebuf), "invalid prefix '%s'", ls->t.value.s);
|
||||||
|
eo_lexer_syntax_error(ls, ebuf);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
parse_class_body(Eo_Lexer *ls, Eolian_Class_Type type)
|
parse_class_body(Eo_Lexer *ls, Eolian_Class_Type type)
|
||||||
{
|
{
|
||||||
|
@ -1663,7 +1687,7 @@ parse_class_body(Eo_Lexer *ls, Eolian_Class_Type type)
|
||||||
CASE_LOCK(ls, legacy_prefix, "legacy prefix definition")
|
CASE_LOCK(ls, legacy_prefix, "legacy prefix definition")
|
||||||
eo_lexer_get(ls);
|
eo_lexer_get(ls);
|
||||||
check_next(ls, ':');
|
check_next(ls, ':');
|
||||||
check(ls, TOK_VALUE);
|
_validate_pfx(ls);
|
||||||
ls->tmp.kls->legacy_prefix = eina_stringshare_ref(ls->t.value.s);
|
ls->tmp.kls->legacy_prefix = eina_stringshare_ref(ls->t.value.s);
|
||||||
eo_lexer_get(ls);
|
eo_lexer_get(ls);
|
||||||
check_next(ls, ';');
|
check_next(ls, ';');
|
||||||
|
@ -1672,7 +1696,7 @@ parse_class_body(Eo_Lexer *ls, Eolian_Class_Type type)
|
||||||
CASE_LOCK(ls, eo_prefix, "eo prefix definition")
|
CASE_LOCK(ls, eo_prefix, "eo prefix definition")
|
||||||
eo_lexer_get(ls);
|
eo_lexer_get(ls);
|
||||||
check_next(ls, ':');
|
check_next(ls, ':');
|
||||||
check(ls, TOK_VALUE);
|
_validate_pfx(ls);
|
||||||
ls->tmp.kls->eo_prefix = eina_stringshare_ref(ls->t.value.s);
|
ls->tmp.kls->eo_prefix = eina_stringshare_ref(ls->t.value.s);
|
||||||
eo_lexer_get(ls);
|
eo_lexer_get(ls);
|
||||||
check_next(ls, ';');
|
check_next(ls, ';');
|
||||||
|
|
Loading…
Reference in New Issue