From fc72ca590da82dfb2cb6524bbb1c29d311f63bf7 Mon Sep 17 00:00:00 2001 From: Daniel Kolesa Date: Thu, 19 Jun 2014 16:30:18 +0100 Subject: [PATCH] eolian: allow omitting of () in class with no inherits, fix up tests --- src/lib/eolian/eo_parser.c | 17 +++++++++++------ src/tests/eolian/data/scope.eo | 4 ++-- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/lib/eolian/eo_parser.c b/src/lib/eolian/eo_parser.c index 2fb6c53..bdd567d 100644 --- a/src/lib/eolian/eo_parser.c +++ b/src/lib/eolian/eo_parser.c @@ -921,18 +921,23 @@ parse_class(Eo_Lexer *ls, Eina_Bool allow_ctors, Eolian_Class_Type type) parse_name(ls, buf); ls->tmp.kls->name = eina_stringshare_add(eina_strbuf_string_get(buf)); pop_strbuf(ls); - line = ls->line_number; - check_next(ls, '('); - if (ls->t.token != ')') + if (ls->t.token != '{') { - ls->tmp.kls->inherits = parse_name_list(ls); - ls->tmp.str_items = NULL; + line = ls->line_number; + check_next(ls, '('); + if (ls->t.token != ')') + { + ls->tmp.kls->inherits = parse_name_list(ls); + ls->tmp.str_items = NULL; + } + check_match(ls, ')', '(', line); } - check_match(ls, ')', '(', line); line = ls->line_number; check_next(ls, '{'); parse_class_body(ls, allow_ctors); check_match(ls, '}', '{', line); + if (ls->t.token == ';') + eo_lexer_get(ls); } static void diff --git a/src/tests/eolian/data/scope.eo b/src/tests/eolian/data/scope.eo index a0c0448..737d7e9 100644 --- a/src/tests/eolian/data/scope.eo +++ b/src/tests/eolian/data/scope.eo @@ -8,7 +8,7 @@ class Simple { get { } } - public c { + c { get { } } @@ -18,7 +18,7 @@ class Simple { } protected bar { } - public foobar { + foobar { } } }; -- 2.7.4