diff options
author | Daniel Kolesa <d.kolesa@osg.samsung.com> | 2016-05-20 17:14:38 +0100 |
---|---|---|
committer | Daniel Kolesa <d.kolesa@osg.samsung.com> | 2016-05-20 17:15:20 +0100 |
commit | 9be179d740c9b639b309a376c4cb8265f2f1c7b9 (patch) | |
tree | a647d5169d315bc9eebee74048eccc3fc2a4fafc | |
parent | 9ecc3ba38d0b61dcefe9e2e32fc59f8835679df0 (diff) | |
download | efl-9be179d740c9b639b309a376c4cb8265f2f1c7b9.tar.gz |
eolian: add warnings for class/complex types with pointers (with env var)
-rw-r--r-- | src/lib/eolian/eo_parser.c | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/src/lib/eolian/eo_parser.c b/src/lib/eolian/eo_parser.c index c9456963d5..0d5d18da96 100644 --- a/src/lib/eolian/eo_parser.c +++ b/src/lib/eolian/eo_parser.c @@ -836,7 +836,24 @@ parse_type_void_base(Eo_Lexer *ls, Eina_Bool noptr) parse_ptr: /* check: complex/class type must always be behind a pointer */ if (!noptr && ((def->type == EOLIAN_TYPE_CLASS) || (def->type == EOLIAN_TYPE_COMPLEX))) - check(ls, '*'); + { + if (getenv("EOLIAN_CLASS_NO_PTR")) + { + fprintf(stderr, "eolian:%s:%d:%d: pointer around complex/class type '%s'\n", + def->base.file, line, col, def->full_name); + if (ls->t.token != '*') + { + Eolian_Type *pdef; + pop_type(ls); + pdef = push_type(ls); + FILL_BASE(pdef->base, ls, ls->line_number, ls->column); + pdef->base_type = def; + pdef->type = EOLIAN_TYPE_POINTER; + def = pdef; + } + } + else check(ls, '*'); + } while (ls->t.token == '*') { Eolian_Type *pdef; |