summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/lib/elementary/efl_ui_collection.eo9
-rw-r--r--src/lib/elementary/efl_ui_image_zoomable.eo5
-rw-r--r--src/lib/elementary/efl_ui_list_view.eo6
-rw-r--r--src/lib/elementary/efl_ui_panel.eo4
-rw-r--r--src/lib/elementary/efl_ui_radio_box.eo4
-rw-r--r--src/lib/elementary/efl_ui_scroller.eo7
-rw-r--r--src/lib/elementary/efl_ui_tab_bar.eo9
-rw-r--r--src/lib/elementary/efl_ui_tags.eo7
-rw-r--r--src/lib/elementary/efl_ui_text.eo6
-rw-r--r--src/lib/elementary/efl_ui_video.eo7
-rw-r--r--src/lib/elementary/efl_ui_widget_focus_manager.eo8
-rw-r--r--src/lib/elementary/efl_ui_win.eo4
-rw-r--r--src/lib/eolian/eo_parser.c79
-rw-r--r--src/tests/eolian/data/unimpl.eo5
14 files changed, 66 insertions, 94 deletions
diff --git a/src/lib/elementary/efl_ui_collection.eo b/src/lib/elementary/efl_ui_collection.eo
index ecd0eb1e94..9fad710f65 100644
--- a/src/lib/elementary/efl_ui_collection.eo
+++ b/src/lib/elementary/efl_ui_collection.eo
@@ -6,6 +6,10 @@ class @beta Efl.Ui.Collection extends Efl.Ui.Layout_Base implements
6 Efl.Ui.Multi_Selectable, 6 Efl.Ui.Multi_Selectable,
7 Efl.Ui.Focus.Manager_Sub, 7 Efl.Ui.Focus.Manager_Sub,
8 Efl.Ui.Widget_Focus_Manager 8 Efl.Ui.Widget_Focus_Manager
9 composite
10 Efl.Ui.Scrollable_Interactive,
11 Efl.Ui.Scrollbar,
12 Efl.Ui.Focus.Manager
9{ 13{
10 [[This widget displays a list of items in an arrangement controlled by an external @.position_manager 14 [[This widget displays a list of items in an arrangement controlled by an external @.position_manager
11 object. By using different @.position_manager objects this widget can show unidimensional lists or 15 object. By using different @.position_manager objects this widget can show unidimensional lists or
@@ -95,10 +99,5 @@ class @beta Efl.Ui.Collection extends Efl.Ui.Layout_Base implements
95 item,clicked : Efl.Ui.Item; [[A $clicked event occurred over an item.]] 99 item,clicked : Efl.Ui.Item; [[A $clicked event occurred over an item.]]
96 item,clicked,any : Efl.Ui.Item; [[A $clicked,any event occurred over an item.]] 100 item,clicked,any : Efl.Ui.Item; [[A $clicked,any event occurred over an item.]]
97 } 101 }
98 composite {
99 Efl.Ui.Scrollable_Interactive;
100 Efl.Ui.Scrollbar;
101 Efl.Ui.Focus.Manager;
102 }
103} 102}
104 103
diff --git a/src/lib/elementary/efl_ui_image_zoomable.eo b/src/lib/elementary/efl_ui_image_zoomable.eo
index 4669a4f4a4..62ae9bc591 100644
--- a/src/lib/elementary/efl_ui_image_zoomable.eo
+++ b/src/lib/elementary/efl_ui_image_zoomable.eo
@@ -5,6 +5,7 @@ struct @extern Elm.Photocam.Progress; [[Photocam progress information.]]
5class @beta Efl.Ui.Image_Zoomable extends Efl.Ui.Image implements Efl.Ui.Zoom, 5class @beta Efl.Ui.Image_Zoomable extends Efl.Ui.Image implements Efl.Ui.Zoom,
6 Efl.Ui.Scrollable_Interactive, 6 Efl.Ui.Scrollable_Interactive,
7 Efl.Ui.Scrollbar 7 Efl.Ui.Scrollbar
8 composite Efl.Ui.Scrollable_Interactive, Efl.Ui.Scrollbar
8{ 9{
9 [[Elementary Image Zoomable class]] 10 [[Elementary Image Zoomable class]]
10 methods { 11 methods {
@@ -84,8 +85,4 @@ class @beta Efl.Ui.Image_Zoomable extends Efl.Ui.Image implements Efl.Ui.Zoom,
84 download,done: void; [[Called when photocam download finished]] 85 download,done: void; [[Called when photocam download finished]]
85 download,error: Elm.Photocam.Error; [[Called when photocam download failed]] 86 download,error: Elm.Photocam.Error; [[Called when photocam download failed]]
86 } 87 }
87 composite {
88 Efl.Ui.Scrollable_Interactive;
89 Efl.Ui.Scrollbar;
90 }
91} 88}
diff --git a/src/lib/elementary/efl_ui_list_view.eo b/src/lib/elementary/efl_ui_list_view.eo
index f1490b3b26..5c49394ec4 100644
--- a/src/lib/elementary/efl_ui_list_view.eo
+++ b/src/lib/elementary/efl_ui_list_view.eo
@@ -10,6 +10,8 @@ struct @beta Efl.Ui.List_View_Item_Event
10class @beta Efl.Ui.List_View extends Efl.Ui.Layout_Base implements Efl.Ui.Scrollable_Interactive, Efl.Ui.Scrollbar, 10class @beta Efl.Ui.List_View extends Efl.Ui.Layout_Base implements Efl.Ui.Scrollable_Interactive, Efl.Ui.Scrollbar,
11 Efl.Access.Widget.Action, Efl.Access.Selection, Efl.Ui.Focus.Composition, Efl.Ui.Focus.Manager_Sub, 11 Efl.Access.Widget.Action, Efl.Access.Selection, Efl.Ui.Focus.Composition, Efl.Ui.Focus.Manager_Sub,
12 Efl.Ui.Container_Selectable, Efl.Ui.List_View_Model, Efl.Ui.Widget_Focus_Manager 12 Efl.Ui.Container_Selectable, Efl.Ui.List_View_Model, Efl.Ui.Widget_Focus_Manager
13 composite
14 Efl.Ui.Scrollable_Interactive, Efl.Ui.Scrollbar
13{ 15{
14 methods { 16 methods {
15 @property homogeneous { 17 @property homogeneous {
@@ -90,8 +92,4 @@ class @beta Efl.Ui.List_View extends Efl.Ui.Layout_Base implements Efl.Ui.Scroll
90 Efl.Access.Selection.all_children_select; 92 Efl.Access.Selection.all_children_select;
91 Efl.Access.Selection.access_selection_clear; 93 Efl.Access.Selection.access_selection_clear;
92 } 94 }
93 composite {
94 Efl.Ui.Scrollable_Interactive;
95 Efl.Ui.Scrollbar;
96 }
97} 95}
diff --git a/src/lib/elementary/efl_ui_panel.eo b/src/lib/elementary/efl_ui_panel.eo
index 0cde869b3e..24182af750 100644
--- a/src/lib/elementary/efl_ui_panel.eo
+++ b/src/lib/elementary/efl_ui_panel.eo
@@ -18,6 +18,7 @@ struct @beta Efl.Ui.Panel_Scroll_Info
18class @beta Efl.Ui.Panel extends Efl.Ui.Layout_Base 18class @beta Efl.Ui.Panel extends Efl.Ui.Layout_Base
19 implements Efl.Ui.Focus.Layer, Efl.Ui.Scrollable_Interactive, Efl.Content, 19 implements Efl.Ui.Focus.Layer, Efl.Ui.Scrollable_Interactive, Efl.Content,
20 Efl.Access.Widget.Action 20 Efl.Access.Widget.Action
21 composite Efl.Ui.Scrollable_Interactive
21{ 22{
22 [[Elementary panel class]] 23 [[Elementary panel class]]
23 methods { 24 methods {
@@ -93,7 +94,4 @@ class @beta Efl.Ui.Panel extends Efl.Ui.Layout_Base
93 events { 94 events {
94 toggled: void; [[Called when the hidden state was toggled]] 95 toggled: void; [[Called when the hidden state was toggled]]
95 } 96 }
96 composite {
97 Efl.Ui.Scrollable_Interactive;
98 }
99} 97}
diff --git a/src/lib/elementary/efl_ui_radio_box.eo b/src/lib/elementary/efl_ui_radio_box.eo
index aa2d91c835..54bd92e3df 100644
--- a/src/lib/elementary/efl_ui_radio_box.eo
+++ b/src/lib/elementary/efl_ui_radio_box.eo
@@ -1,4 +1,5 @@
1class @beta Efl.Ui.Radio_Box extends Efl.Ui.Box implements Efl.Ui.Radio_Group 1class @beta Efl.Ui.Radio_Box extends Efl.Ui.Box implements Efl.Ui.Radio_Group
2 composite Efl.Ui.Radio_Group
2{ 3{
3 [[A standard @Efl.Ui.Box container which automatically handles grouping of any @Efl.Ui.Radio 4 [[A standard @Efl.Ui.Box container which automatically handles grouping of any @Efl.Ui.Radio
4 widget added to it. 5 widget added to it.
@@ -19,7 +20,4 @@ class @beta Efl.Ui.Radio_Box extends Efl.Ui.Box implements Efl.Ui.Radio_Group
19 Efl.Pack_Linear.pack_unpack_at; 20 Efl.Pack_Linear.pack_unpack_at;
20 Efl.Object.constructor; 21 Efl.Object.constructor;
21 } 22 }
22 composite {
23 Efl.Ui.Radio_Group;
24 }
25} 23}
diff --git a/src/lib/elementary/efl_ui_scroller.eo b/src/lib/elementary/efl_ui_scroller.eo
index 36f42c16b0..7a2bb90306 100644
--- a/src/lib/elementary/efl_ui_scroller.eo
+++ b/src/lib/elementary/efl_ui_scroller.eo
@@ -4,6 +4,9 @@ class @beta Efl.Ui.Scroller extends Efl.Ui.Layout_Base implements
4 Efl.Ui.Focus.Manager_Sub, 4 Efl.Ui.Focus.Manager_Sub,
5 Efl.Ui.Widget_Focus_Manager, 5 Efl.Ui.Widget_Focus_Manager,
6 Efl.Content 6 Efl.Content
7 composite
8 Efl.Ui.Scrollable_Interactive,
9 Efl.Ui.Scrollbar
7{ 10{
8 [[Efl ui scroller class]] 11 [[Efl ui scroller class]]
9 implements { 12 implements {
@@ -19,8 +22,4 @@ class @beta Efl.Ui.Scroller extends Efl.Ui.Layout_Base implements
19 Efl.Ui.Widget_Focus_Manager.focus_manager_create; 22 Efl.Ui.Widget_Focus_Manager.focus_manager_create;
20 Efl.Ui.Scrollable_Interactive.match_content { set; } 23 Efl.Ui.Scrollable_Interactive.match_content { set; }
21 } 24 }
22 composite {
23 Efl.Ui.Scrollable_Interactive;
24 Efl.Ui.Scrollbar;
25 }
26} 25}
diff --git a/src/lib/elementary/efl_ui_tab_bar.eo b/src/lib/elementary/efl_ui_tab_bar.eo
index 1d27afe62e..b4aabe1197 100644
--- a/src/lib/elementary/efl_ui_tab_bar.eo
+++ b/src/lib/elementary/efl_ui_tab_bar.eo
@@ -1,4 +1,6 @@
1class @beta Efl.Ui.Tab_Bar extends Efl.Ui.Layout_Base implements Efl.Ui.Single_Selectable, Efl.Pack_Linear 1class @beta Efl.Ui.Tab_Bar extends Efl.Ui.Layout_Base
2 implements Efl.Ui.Single_Selectable, Efl.Pack_Linear
3 composite Efl.Pack_Linear, Efl.Pack
2{ 4{
3 [[Tab Bar class]] 5 [[Tab Bar class]]
4 methods { 6 methods {
@@ -23,9 +25,4 @@ class @beta Efl.Ui.Tab_Bar extends Efl.Ui.Layout_Base implements Efl.Ui.Single_S
23 Efl.Container.content_count; 25 Efl.Container.content_count;
24 Efl.Container.content_iterate; 26 Efl.Container.content_iterate;
25 } 27 }
26 composite {
27 Efl.Pack_Linear;
28 Efl.Pack;
29 Efl.Pack_Linear;
30 }
31} 28}
diff --git a/src/lib/elementary/efl_ui_tags.eo b/src/lib/elementary/efl_ui_tags.eo
index 6f8c739f06..96f1fb0eb8 100644
--- a/src/lib/elementary/efl_ui_tags.eo
+++ b/src/lib/elementary/efl_ui_tags.eo
@@ -1,4 +1,6 @@
1class @beta Efl.Ui.Tags extends Efl.Ui.Layout_Base implements Efl.Text, Efl.Ui.Format 1class @beta Efl.Ui.Tags extends Efl.Ui.Layout_Base
2 implements Efl.Text, Efl.Ui.Format
3 composite Efl.Text
2{ 4{
3 [[A widget displaying a list of tags. The user can remove tags by clicking 5 [[A widget displaying a list of tags. The user can remove tags by clicking
4 on each tag "close" button and add new tags by typing text in the text 6 on each tag "close" button and add new tags by typing text in the text
@@ -61,7 +63,4 @@ class @beta Efl.Ui.Tags extends Efl.Ui.Layout_Base implements Efl.Text, Efl.Ui.F
61 /* FIXME: Not future-proof */ 63 /* FIXME: Not future-proof */
62 expand,state,changed: int; [[Called when expanded state changed]] 64 expand,state,changed: int; [[Called when expanded state changed]]
63 } 65 }
64 composite {
65 Efl.Text;
66 }
67} 66}
diff --git a/src/lib/elementary/efl_ui_text.eo b/src/lib/elementary/efl_ui_text.eo
index a8cee69e40..691c0271bd 100644
--- a/src/lib/elementary/efl_ui_text.eo
+++ b/src/lib/elementary/efl_ui_text.eo
@@ -4,6 +4,8 @@ import elm_general;
4class @beta Efl.Ui.Text extends Efl.Ui.Layout_Base implements Efl.Input.Clickable, 4class @beta Efl.Ui.Text extends Efl.Ui.Layout_Base implements Efl.Input.Clickable,
5 Efl.Access.Text, Efl.Access.Editable.Text, Efl.File, 5 Efl.Access.Text, Efl.Access.Editable.Text, Efl.File,
6 Efl.Ui.Text_Selectable, Efl.Text_Interactive, Efl.Text_Markup 6 Efl.Ui.Text_Selectable, Efl.Text_Interactive, Efl.Text_Markup
7 composite
8 Efl.Text_Interactive, Efl.Text_Markup
7{ 9{
8 [[A flexible text widget which can be static (as a label) or editable by 10 [[A flexible text widget which can be static (as a label) or editable by
9 the user (as a text entry). It provides all sorts of editing facilities 11 the user (as a text entry). It provides all sorts of editing facilities
@@ -374,8 +376,4 @@ class @beta Efl.Ui.Text extends Efl.Ui.Layout_Base implements Efl.Input.Clickabl
374 anchor,up: Elm.Entry_Anchor_Info; [[called on anchor up]] 376 anchor,up: Elm.Entry_Anchor_Info; [[called on anchor up]]
375 cursor,changed,manual: void; [[Called on manual cursor change]] 377 cursor,changed,manual: void; [[Called on manual cursor change]]
376 } 378 }
377 composite {
378 Efl.Text_Interactive;
379 Efl.Text_Markup;
380 }
381} 379}
diff --git a/src/lib/elementary/efl_ui_video.eo b/src/lib/elementary/efl_ui_video.eo
index d6b42f9abb..c00326ef30 100644
--- a/src/lib/elementary/efl_ui_video.eo
+++ b/src/lib/elementary/efl_ui_video.eo
@@ -1,4 +1,6 @@
1class @beta Efl.Ui.Video extends Efl.Ui.Layout_Base implements Efl.File, Efl.Player, Efl.Access.Widget.Action 1class @beta Efl.Ui.Video extends Efl.Ui.Layout_Base
2 implements Efl.File, Efl.Player, Efl.Access.Widget.Action
3 composite Efl.Player
2{ 4{
3 [[Efl UI video class]] 5 [[Efl UI video class]]
4 methods { 6 methods {
@@ -50,7 +52,4 @@ class @beta Efl.Ui.Video extends Efl.Ui.Layout_Base implements Efl.File, Efl.Pla
50 Efl.Player.stop; 52 Efl.Player.stop;
51 Efl.Player.play { get; set; } 53 Efl.Player.play { get; set; }
52 } 54 }
53 composite {
54 Efl.Player;
55 }
56} 55}
diff --git a/src/lib/elementary/efl_ui_widget_focus_manager.eo b/src/lib/elementary/efl_ui_widget_focus_manager.eo
index e5cc1a2691..d12a4a0c79 100644
--- a/src/lib/elementary/efl_ui_widget_focus_manager.eo
+++ b/src/lib/elementary/efl_ui_widget_focus_manager.eo
@@ -1,4 +1,7 @@
1mixin Efl.Ui.Widget_Focus_Manager requires Efl.Ui.Widget extends Efl.Ui.Focus.Manager 1mixin Efl.Ui.Widget_Focus_Manager
2 requires Efl.Ui.Widget
3 extends Efl.Ui.Focus.Manager
4 composite Efl.Ui.Focus.Manager
2{ 5{
3 [[Helper mixin for widgets which also can act as focus managers. 6 [[Helper mixin for widgets which also can act as focus managers.
4 7
@@ -23,7 +26,4 @@ mixin Efl.Ui.Widget_Focus_Manager requires Efl.Ui.Widget extends Efl.Ui.Focus.Ma
23 Efl.Object.destructor; 26 Efl.Object.destructor;
24 Efl.Ui.Widget.focus_state_apply; 27 Efl.Ui.Widget.focus_state_apply;
25 } 28 }
26 composite {
27 Efl.Ui.Focus.Manager;
28 }
29} 29}
diff --git a/src/lib/elementary/efl_ui_win.eo b/src/lib/elementary/efl_ui_win.eo
index 42c309dfb6..94859d9277 100644
--- a/src/lib/elementary/efl_ui_win.eo
+++ b/src/lib/elementary/efl_ui_win.eo
@@ -139,6 +139,7 @@ class Efl.Ui.Win extends Efl.Ui.Widget implements Efl.Canvas.Scene, Efl.Access.W
139 Efl.Content, Efl.Input.State, Efl.Input.Interface, Efl.Screen, 139 Efl.Content, Efl.Input.State, Efl.Input.Interface, Efl.Screen,
140 Efl.Text, Efl.Config, 140 Efl.Text, Efl.Config,
141 Efl.Ui.Widget_Focus_Manager, Efl.Ui.Focus.Manager_Window_Root 141 Efl.Ui.Widget_Focus_Manager, Efl.Ui.Focus.Manager_Window_Root
142 composite Efl.Config
142{ 143{
143 [[Efl UI window class. 144 [[Efl UI window class.
144 145
@@ -895,7 +896,4 @@ class Efl.Ui.Win extends Efl.Ui.Widget implements Efl.Canvas.Scene, Efl.Access.W
895 pause: void; [[Called when the window is not going be displayed for some time]] 896 pause: void; [[Called when the window is not going be displayed for some time]]
896 resume: void; [[Called before a window is rendered after a pause event]] 897 resume: void; [[Called before a window is rendered after a pause event]]
897 } 898 }
898 composite {
899 Efl.Config;
900 }
901} 899}
diff --git a/src/lib/eolian/eo_parser.c b/src/lib/eolian/eo_parser.c
index 04a16c2502..975c2a880b 100644
--- a/src/lib/eolian/eo_parser.c
+++ b/src/lib/eolian/eo_parser.c
@@ -1959,43 +1959,6 @@ parse_parts(Eo_Lexer *ls)
1959} 1959}
1960 1960
1961static void 1961static void
1962parse_composite(Eo_Lexer *ls)
1963{
1964 int line, col;
1965 if (ls->klass->type == EOLIAN_CLASS_INTERFACE)
1966 eo_lexer_syntax_error(ls, "composite section not allowed in interfaces");
1967 eo_lexer_get(ls);
1968 line = ls->line_number, col = ls->column;
1969 check_next(ls, '{');
1970 while (ls->t.token != '}')
1971 {
1972 Eina_Strbuf *buf = eina_strbuf_new();
1973 eo_lexer_dtor_push(ls, EINA_FREE_CB(eina_strbuf_free), buf);
1974 eo_lexer_context_push(ls);
1975 parse_name(ls, buf);
1976 const char *nm = eina_strbuf_string_get(buf);
1977 char *fnm = database_class_to_filename(nm);
1978 if (!eina_hash_find(ls->state->filenames_eo, fnm))
1979 {
1980 free(fnm);
1981 char ebuf[PATH_MAX];
1982 eo_lexer_context_restore(ls);
1983 snprintf(ebuf, sizeof(ebuf), "unknown interface '%s'", nm);
1984 eo_lexer_syntax_error(ls, ebuf);
1985 return;
1986 }
1987 /* do not introduce a dependency */
1988 database_defer(ls->state, fnm, EINA_FALSE);
1989 free(fnm);
1990 ls->klass->composite = eina_list_append(ls->klass->composite,
1991 eina_stringshare_add(nm));
1992 eo_lexer_dtor_pop(ls);
1993 check_next(ls, ';');
1994 }
1995 check_match(ls, '}', '{', line, col);
1996}
1997
1998static void
1999parse_implements(Eo_Lexer *ls, Eina_Bool iface) 1962parse_implements(Eo_Lexer *ls, Eina_Bool iface)
2000{ 1963{
2001 int line, col; 1964 int line, col;
@@ -2065,7 +2028,6 @@ parse_class_body(Eo_Lexer *ls, Eolian_Class_Type type)
2065 has_data = EINA_FALSE, 2028 has_data = EINA_FALSE,
2066 has_methods = EINA_FALSE, 2029 has_methods = EINA_FALSE,
2067 has_parts = EINA_FALSE, 2030 has_parts = EINA_FALSE,
2068 has_composite = EINA_FALSE,
2069 has_implements = EINA_FALSE, 2031 has_implements = EINA_FALSE,
2070 has_constructors = EINA_FALSE, 2032 has_constructors = EINA_FALSE,
2071 has_events = EINA_FALSE; 2033 has_events = EINA_FALSE;
@@ -2112,10 +2074,6 @@ parse_class_body(Eo_Lexer *ls, Eolian_Class_Type type)
2112 CASE_LOCK(ls, parts, "parts definition") 2074 CASE_LOCK(ls, parts, "parts definition")
2113 parse_parts(ls); 2075 parse_parts(ls);
2114 break; 2076 break;
2115 case KW_composite:
2116 CASE_LOCK(ls, composite, "composite definition")
2117 parse_composite(ls);
2118 break;
2119 case KW_implements: 2077 case KW_implements:
2120 CASE_LOCK(ls, implements, "implements definition") 2078 CASE_LOCK(ls, implements, "implements definition")
2121 parse_implements(ls, type == EOLIAN_CLASS_INTERFACE); 2079 parse_implements(ls, type == EOLIAN_CLASS_INTERFACE);
@@ -2200,6 +2158,7 @@ _requires_add(Eo_Lexer *ls, Eina_Strbuf *buf)
2200 const char *required; 2158 const char *required;
2201 char *fnm; 2159 char *fnm;
2202 2160
2161 eina_strbuf_reset(buf);
2203 eo_lexer_context_push(ls); 2162 eo_lexer_context_push(ls);
2204 parse_name(ls, buf); 2163 parse_name(ls, buf);
2205 required = eina_strbuf_string_get(buf); 2164 required = eina_strbuf_string_get(buf);
@@ -2213,6 +2172,31 @@ _requires_add(Eo_Lexer *ls, Eina_Strbuf *buf)
2213} 2172}
2214 2173
2215static void 2174static void
2175_composite_add(Eo_Lexer *ls, Eina_Strbuf *buf)
2176{
2177 eina_strbuf_reset(buf);
2178 eo_lexer_context_push(ls);
2179 parse_name(ls, buf);
2180 const char *nm = eina_strbuf_string_get(buf);
2181 char *fnm = database_class_to_filename(nm);
2182 if (!eina_hash_find(ls->state->filenames_eo, fnm))
2183 {
2184 free(fnm);
2185 char ebuf[PATH_MAX];
2186 eo_lexer_context_restore(ls);
2187 snprintf(ebuf, sizeof(ebuf), "unknown interface '%s'", nm);
2188 eo_lexer_syntax_error(ls, ebuf);
2189 return;
2190 }
2191 /* do not introduce a dependency */
2192 database_defer(ls->state, fnm, EINA_FALSE);
2193 free(fnm);
2194 ls->klass->composite = eina_list_append(ls->klass->composite,
2195 eina_stringshare_add(nm));
2196 eo_lexer_context_pop(ls);
2197}
2198
2199static void
2216parse_class(Eo_Lexer *ls, Eolian_Class_Type type) 2200parse_class(Eo_Lexer *ls, Eolian_Class_Type type)
2217{ 2201{
2218 const char *bnm; 2202 const char *bnm;
@@ -2312,6 +2296,17 @@ tags_done:
2312 _inherit_dep(ls, ibuf, EINA_FALSE); 2296 _inherit_dep(ls, ibuf, EINA_FALSE);
2313 while (test_next(ls, ',')); 2297 while (test_next(ls, ','));
2314 } 2298 }
2299
2300 if (ls->t.kw == KW_composite)
2301 {
2302 if (type == EOLIAN_CLASS_INTERFACE)
2303 eo_lexer_syntax_error(ls, "composite not allowed in interfaces");
2304 eo_lexer_get(ls);
2305 do
2306 _composite_add(ls, ibuf);
2307 while (test_next(ls, ','));
2308 }
2309
2315 eo_lexer_dtor_pop(ls); 2310 eo_lexer_dtor_pop(ls);
2316 } 2311 }
2317inherit_done: 2312inherit_done:
diff --git a/src/tests/eolian/data/unimpl.eo b/src/tests/eolian/data/unimpl.eo
index a1420e07c6..e08699a231 100644
--- a/src/tests/eolian/data/unimpl.eo
+++ b/src/tests/eolian/data/unimpl.eo
@@ -1,7 +1,4 @@
1class Unimpl implements Iface { 1class Unimpl implements Iface composite Iface {
2 composite {
3 Iface;
4 }
5 implements { 2 implements {
6 Iface.foo; 3 Iface.foo;
7 } 4 }