diff options
author | Daniel Kolesa <d.kolesa@osg.samsung.com> | 2017-08-28 17:22:09 +0200 |
---|---|---|
committer | Daniel Kolesa <d.kolesa@osg.samsung.com> | 2017-08-28 17:22:09 +0200 |
commit | eeca57fdb0bf1bc370356418a6ff830851e5639d (patch) | |
tree | 493f6ad9d5040f98be6030e281e6dc012b8da9ff /src/lib/eolian | |
parent | 700ec978cc2243af5d02b5876b3f9f4f2a0bda3a (diff) | |
download | efl-eeca57fdb0bf1bc370356418a6ff830851e5639d.tar.gz |
eolian: less clumsy return type handling
Diffstat (limited to 'src/lib/eolian')
-rw-r--r-- | src/lib/eolian/eo_parser.c | 15 |
1 files changed, 5 insertions, 10 deletions
diff --git a/src/lib/eolian/eo_parser.c b/src/lib/eolian/eo_parser.c index 4c2f14fa33..655936e32d 100644 --- a/src/lib/eolian/eo_parser.c +++ b/src/lib/eolian/eo_parser.c @@ -1002,7 +1002,7 @@ typedef struct _Eo_Ret_Def } Eo_Ret_Def; static void -parse_return(Eo_Lexer *ls, Eo_Ret_Def *ret, Eina_Bool allow_void) +parse_return(Eo_Lexer *ls, Eo_Ret_Def *ret, Eina_Bool allow_void, Eina_Bool allow_def) { eo_lexer_get(ls); check_next(ls, ':'); @@ -1013,7 +1013,7 @@ parse_return(Eo_Lexer *ls, Eo_Ret_Def *ret, Eina_Bool allow_void) ret->doc = NULL; ret->default_ret_val = NULL; ret->warn_unused = EINA_FALSE; - if (ls->t.token == '(') + if (allow_def && (ls->t.token == '(')) { int line = ls->line_number, col = ls->column; ls->expr_mode = EINA_TRUE; @@ -1208,7 +1208,7 @@ parse_accessor: case KW_return: CASE_LOCK(ls, return, "return") Eo_Ret_Def ret; - parse_return(ls, &ret, is_get); + parse_return(ls, &ret, is_get, EINA_TRUE); pop_type(ls); if (ret.default_ret_val) pop_expr(ls); if (is_get) @@ -1440,13 +1440,8 @@ body: case KW_return: CASE_LOCK(ls, return, "return"); Eo_Ret_Def ret; - parse_return(ls, &ret, EINA_FALSE); + parse_return(ls, &ret, EINA_FALSE, EINA_FALSE); pop_type(ls); - if (ret.default_ret_val) - { - eo_lexer_syntax_error(ls, "default return value invalid for function pointer"); - return NULL; - } meth->get_ret_type = ret.type; meth->get_return_doc = ret.doc; meth->get_ret_val = NULL; @@ -1548,7 +1543,7 @@ body: case KW_return: CASE_LOCK(ls, return, "return") Eo_Ret_Def ret; - parse_return(ls, &ret, EINA_FALSE); + parse_return(ls, &ret, EINA_FALSE, EINA_TRUE); pop_type(ls); if (ret.default_ret_val) pop_expr(ls); meth->get_ret_type = ret.type; |