diff options
author | Daniel Kolesa <d.kolesa@samsung.com> | 2019-01-28 15:50:05 +0100 |
---|---|---|
committer | Daniel Kolesa <d.kolesa@samsung.com> | 2019-02-28 01:09:02 +0100 |
commit | 57d8f24016f32961e97e3eac9c188da8da0c26a4 (patch) | |
tree | 221d94d0ec06acfa68dad3b5d42faa7b0a313bb3 | |
parent | 53a80761db24abf9b7501011f5e0bb80d8dbf996 (diff) | |
download | efl-57d8f24016f32961e97e3eac9c188da8da0c26a4.tar.gz |
eolian: make sure inlist/inarray only take value types
While technically valid, it doesn't make sense for inlist/inarray
to contain non-value types, as then one might as well just use a
list.
-rw-r--r-- | src/lib/eolian/database_validate.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/lib/eolian/database_validate.c b/src/lib/eolian/database_validate.c index 09ca6e5de3..4d3ae294c3 100644 --- a/src/lib/eolian/database_validate.c +++ b/src/lib/eolian/database_validate.c @@ -277,6 +277,19 @@ _validate_type(Validate_State *vals, Eolian_Type *tp) if (tp->base_type) { int kwid = eo_lexer_keyword_str_to_id(tp->base.name); + if (kwid == KW_inlist || kwid == KW_inarray) + { + if (database_type_is_ownable(src, tp->base_type, EINA_FALSE)) + { + _eo_parser_log(&tp->base_type->base, + "%s can only contain value types (%s)", + tp->base.name, tp->base_type->base.name); + return EINA_FALSE; + } + if (!_validate_type(vals, tp->base_type)) + return EINA_FALSE; + return _validate(&tp->base); + } if (!tp->freefunc && kwid > KW_void) { tp->freefunc = eina_stringshare_add(eo_complex_frees[ |