woohyun pushed a commit to branch master.

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

commit b3cc7d403b4a9f69f2ad8c4bbd37e482f34e6deb
Author: Felipe Magno de Almeida <fel...@expertisesolutions.com.br>
Date:   Tue Dec 24 07:26:33 2019 +0900

    eolian: inherit since information from struct and enum to field
    
    Summary:
    If a struct or enum field doesn't explicitly sets since information, then 
since
    is inherited from struct documentation if it is available.
    
    Reviewers: jptiz, Jaehyun_Cho, woohyun, q66
    
    Reviewed By: q66
    
    Subscribers: cedric, #reviewers, #committers
    
    Tags: #efl
    
    Maniphest Tasks: T8359
    
    Differential Revision: https://phab.enlightenment.org/D10948
---
 src/lib/eolian/eo_parser.c                            |  4 ++++
 src/tests/eolian/data/docs_ref.h                      | 18 ++++++++++++++----
 src/tests/eolian/data/eo_docs.eo                      |  4 +++-
 src/tests/eolian/eolian_parsing.c                     |  3 ++-
 src/tests/eolian_cxx/eolian_cxx_test_documentation.cc |  4 ++--
 5 files changed, 25 insertions(+), 8 deletions(-)

diff --git a/src/lib/eolian/eo_parser.c b/src/lib/eolian/eo_parser.c
index 96de7a77ec..253e99e929 100644
--- a/src/lib/eolian/eo_parser.c
+++ b/src/lib/eolian/eo_parser.c
@@ -536,6 +536,8 @@ parse_struct(Eo_Lexer *ls, const char *name, Eina_Bool 
is_extern,
 qual_end:
         check_next(ls, ';');
         FILL_DOC(ls, fdef, doc);
+        if (def->doc && fdef->doc && def->doc->since && !fdef->doc->since)
+          fdef->doc->since = eina_stringshare_ref (def->doc->since);
      }
    check_match(ls, '}', '{', bline, bcolumn);
    FILL_BASE(def->base, ls, line, column, TYPEDECL);
@@ -656,6 +658,8 @@ parse_enum(Eo_Lexer *ls, const char *name, Eina_Bool 
is_extern,
         if (want_next)
           eo_lexer_get(ls);
         FILL_DOC(ls, fdef, doc);
+        if (def->doc && fdef->doc && def->doc->since && !fdef->doc->since)
+          fdef->doc->since = eina_stringshare_ref (def->doc->since);
         if (!want_next || ls->t.token == '}')
           break;
      }
diff --git a/src/tests/eolian/data/docs_ref.h b/src/tests/eolian/data/docs_ref.h
index 158b814ae0..a00fafb5a5 100644
--- a/src/tests/eolian/data/docs_ref.h
+++ b/src/tests/eolian/data/docs_ref.h
@@ -29,20 +29,30 @@ typedef Eo Eo_Docs;
  */
 typedef struct _Foo
 {
-  int field1; /**< Field documentation. */
+  int field1; /**< Field documentation.
+               *
+               * @since 1.66 */
   float field2;
-  short field3; /**< Another field documentation. */
+  short field3; /**< Another field documentation.
+                 *
+                 * @since 1.66 */
 } Foo;
 
 /** Docs for enum Bar.
+ *
+ * @since 1.55
  *
  * @ingroup Bar
  */
 typedef enum
 {
   BAR_BLAH = 0,
-  BAR_FOO = 1, /**< Docs for foo. */
-  BAR_BAR = 2 /**< Docs for bar. */
+  BAR_FOO = 1, /**< Docs for foo.
+                *
+                * @since 1.55 */
+  BAR_BAR = 2 /**< Docs for bar.
+               *
+               * @since 1.55 */
 } Bar;
 
 /**
diff --git a/src/tests/eolian/data/eo_docs.eo b/src/tests/eolian/data/eo_docs.eo
index d42cdfcd95..8c62559d5a 100644
--- a/src/tests/eolian/data/eo_docs.eo
+++ b/src/tests/eolian/data/eo_docs.eo
@@ -19,7 +19,9 @@ struct Foo {
 }
 
 enum Bar {
-    [[Docs for enum Bar.]]
+    [[Docs for enum Bar.
+      @since 1.55
+    ]]
     blah = 0,
     foo = 1, [[Docs for foo.]]
     bar = 2 [[Docs for bar.]]
diff --git a/src/tests/eolian/eolian_parsing.c 
b/src/tests/eolian/eolian_parsing.c
index ac06f99eba..9d137dcec3 100644
--- a/src/tests/eolian/eolian_parsing.c
+++ b/src/tests/eolian/eolian_parsing.c
@@ -1150,7 +1150,8 @@ EFL_START_TEST(eolian_docs)
    fail_if(strcmp(eolian_documentation_summary_get(doc),
                   "Docs for enum Bar."));
    fail_if(eolian_documentation_description_get(doc));
-   fail_if(eolian_documentation_since_get(doc));
+   fail_if(strcmp(eolian_documentation_since_get(doc),
+                  "1.55"));
 
    fail_if(!(efl = eolian_typedecl_enum_field_get(tdl, "blah")));
    fail_if(eolian_typedecl_enum_field_documentation_get(efl));
diff --git a/src/tests/eolian_cxx/eolian_cxx_test_documentation.cc 
b/src/tests/eolian_cxx/eolian_cxx_test_documentation.cc
index 961519d16e..eb683e3312 100644
--- a/src/tests/eolian_cxx/eolian_cxx_test_documentation.cc
+++ b/src/tests/eolian_cxx/eolian_cxx_test_documentation.cc
@@ -279,7 +279,7 @@ EFL_START_TEST(eolian_cxx_test_struct_docs)
    doc = field_iter->documentation;
    ck_assert_str_eq(doc.summary.c_str(), "Field documentation.");
    ck_assert_str_eq(doc.description.c_str(), "");
-   ck_assert_str_eq(doc.since.c_str(), "");
+   ck_assert_str_eq(doc.since.c_str(), "1.66");
 
    field_iter++;
 
@@ -293,7 +293,7 @@ EFL_START_TEST(eolian_cxx_test_struct_docs)
    doc = field_iter->documentation;
    ck_assert_str_eq(doc.summary.c_str(), "Another field documentation.");
    ck_assert_str_eq(doc.description.c_str(), "");
-   ck_assert_str_eq(doc.since.c_str(), "");
+   ck_assert_str_eq(doc.since.c_str(), "1.66");
 }
 EFL_END_TEST
 

-- 


Reply via email to