discomfitor pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=5ffef1e853f63005c4e50fd4d83d063fbca15daa

commit 5ffef1e853f63005c4e50fd4d83d063fbca15daa
Author: Mike Blumenkrantz <zm...@samsung.com>
Date:   Mon Mar 31 15:30:48 2014 -0400

    edje_cc no longer allows buggy/unexpected behavior when inheriting parts
    
    previously we allowed users to not specify the state names for non-default 
description states. this guaranteed crazy behavior during inheritance since it 
was impossible to properly reference such states.
---
 src/bin/edje/edje_cc_handlers.c | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/src/bin/edje/edje_cc_handlers.c b/src/bin/edje/edje_cc_handlers.c
index f483ed3..a1a20dd 100644
--- a/src/bin/edje/edje_cc_handlers.c
+++ b/src/bin/edje/edje_cc_handlers.c
@@ -2755,6 +2755,8 @@ _part_copy(Edje_Part *ep, Edje_Part *ep2)
         The child group has the same property as parent group. If you specify 
the
         type again in an inherited part, it will cause an error (unless you 
plan
         to fix that).
+        @warning When inheriting any parts, descriptions without state names 
are NOT
+        allowed.
     @endproperty
     @since 1.1.0
 */
@@ -3589,6 +3591,8 @@ _part_free(Edje_Part *ep)
     @effect
         Copies all attributes except part name from referenced part into 
current part.
         ALL existing attributes, except part name, are overwritten.
+        @warning When inheriting any parts, descriptions without state names 
are NOT
+        allowed.
     @endproperty
     @since 1.10
 */
@@ -10377,6 +10381,19 @@ edje_cc_handlers_hierarchy_pop(void)
 {  /* Remove part from hierarchy stack when finished parsing it */
    Edje_Cc_Handlers_Hierarchy_Info *info = eina_array_pop(part_hierarchy);
 
+   if (current_part)
+     {
+        unsigned int i;
+
+        for (i = 0; i < current_part->other.desc_count; i++)
+          if (!current_part->other.desc[i]->state.name)
+            {
+               ERR("syntax error near %s:%i. Non-default parts are required to 
have state names for all descriptions (Group '%s', part '%s' has missing 
description state names)",
+                     file_in, line - 1, current_de->entry, current_part->name);
+                 exit(-1);
+            }
+     }
+
    if (info)
      {
         current_de = info->current_de;

-- 


Reply via email to