summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFelipe Magno de Almeida <felipe@expertisesolutions.com.br>2019-12-24 07:26:33 +0900
committerWooHyun Jung <wh0705.jung@samsung.com>2019-12-24 07:26:33 +0900
commitb3cc7d403b4a9f69f2ad8c4bbd37e482f34e6deb (patch)
tree02b1f8f165a56a47462c652983268348a2c3e049 /src
parent5679a5d2a2d96d076e7f0a7309b01b04f1aad606 (diff)
downloadefl-b3cc7d403b4a9f69f2ad8c4bbd37e482f34e6deb.tar.gz
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
Diffstat (limited to 'src')
-rw-r--r--src/lib/eolian/eo_parser.c4
-rw-r--r--src/tests/eolian/data/docs_ref.h18
-rw-r--r--src/tests/eolian/data/eo_docs.eo4
-rw-r--r--src/tests/eolian/eolian_parsing.c3
-rw-r--r--src/tests/eolian_cxx/eolian_cxx_test_documentation.cc4
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