diff --git a/src/bin/eolian/docs.c b/src/bin/eolian/docs.c index 31a80a28b6..c01508dab6 100644 --- a/src/bin/eolian/docs.c +++ b/src/bin/eolian/docs.c @@ -18,6 +18,8 @@ _indent_line(Eina_Strbuf *buf, int ind) #define DOC_LIMIT(ind) ((ind > DOC_LINE_TEST) ? (ind + DOC_LINE_OVER) \ : DOC_LINE_LIMIT) +#define SUMMARY_OR_DEFAULT(sum) (sum ? sum : "No description supplied.") + static void _generate_ref(const Eolian_State *state, const char *refn, Eina_Strbuf *wbuf) { @@ -385,6 +387,7 @@ _gen_doc_buf(const Eolian_State *state, const Eolian_Documentation *doc, if (!doc) return NULL; const char *sum = eolian_documentation_summary_get(doc); + sum = SUMMARY_OR_DEFAULT(sum); const char *desc = eolian_documentation_description_get(doc); const char *since = eolian_documentation_since_get(doc); @@ -549,7 +552,7 @@ eo_gen_docs_func_gen(const Eolian_State *state, const Eolian_Function *fid, /* only summary, nothing else; generate standard brief doc */ if (!desc && !par && !vpar && !rdoc && (ftype == EOLIAN_METHOD || !pdoc)) { - _gen_doc_brief(state, sum ? sum : "No description supplied.", since, group, + _gen_doc_brief(state, SUMMARY_OR_DEFAULT(sum), since, group, NULL, indent, buf); return buf; } @@ -560,7 +563,7 @@ eo_gen_docs_func_gen(const Eolian_State *state, const Eolian_Function *fid, curl += _indent_line(buf, indent); eina_strbuf_append(buf, " * @brief "); curl += sizeof(" * @brief ") - 1; - _append_section(state, sum ? sum : "No description supplied.", + _append_section(state, SUMMARY_OR_DEFAULT(sum), indent, curl, buf, wbuf); eina_strbuf_append_char(buf, '\n'); @@ -588,7 +591,8 @@ eo_gen_docs_func_gen(const Eolian_State *state, const Eolian_Function *fid, const char *pdesc = eolian_documentation_description_get(pdoc); curl = _indent_line(buf, indent); eina_strbuf_append(buf, " * "); - _append_section(state, eolian_documentation_summary_get(pdoc), indent, + const char *psum = eolian_documentation_summary_get(pdoc); + _append_section(state, SUMMARY_OR_DEFAULT(psum), indent, curl + 3, buf, wbuf); eina_strbuf_append_char(buf, '\n'); if (pdesc) @@ -651,7 +655,8 @@ eo_gen_docs_func_gen(const Eolian_State *state, const Eolian_Function *fid, { eina_strbuf_append_char(buf, ' '); curl += 1; - _append_section(state, eolian_documentation_summary_get(adoc), + const char *asum = eolian_documentation_summary_get(adoc); + _append_section(state, SUMMARY_OR_DEFAULT(asum), indent, curl, buf, wbuf); } @@ -684,7 +689,8 @@ eo_gen_docs_func_gen(const Eolian_State *state, const Eolian_Function *fid, curl = _indent_line(buf, indent); eina_strbuf_append(buf, " * @return "); curl += sizeof(" * @return ") - 1; - _append_section(state, eolian_documentation_summary_get(rdoc), indent, + const char *rsum = eolian_documentation_summary_get(rdoc); + _append_section(state, SUMMARY_OR_DEFAULT(rsum), indent, curl, buf, wbuf); eina_strbuf_append_char(buf, '\n'); if (since) diff --git a/src/lib/eolian/eo_lexer.c b/src/lib/eolian/eo_lexer.c index ed165ee793..365ff34303 100644 --- a/src/lib/eolian/eo_lexer.c +++ b/src/lib/eolian/eo_lexer.c @@ -522,8 +522,6 @@ read_doc(Eo_Lexer *ls, Eo_Token *tok, int line, int column) if (eina_strbuf_length_get(rbuf)) doc->description = eina_stringshare_add(eina_strbuf_string_get(rbuf)); - if (!doc->summary) - doc->summary = eina_stringshare_add("No description supplied."); if (!doc->since && ls->klass && ls->klass->doc) doc->since = eina_stringshare_ref(ls->klass->doc->since); eina_strbuf_free(rbuf); diff --git a/src/tests/eolian/data/docs_ref.h b/src/tests/eolian/data/docs_ref.h index a5a92e6a4c..158b814ae0 100644 --- a/src/tests/eolian/data/docs_ref.h +++ b/src/tests/eolian/data/docs_ref.h @@ -132,6 +132,16 @@ EOAPI void eo_docs_prop_set(Eo *obj, int val); */ EOAPI int eo_docs_prop_get(const Eo *obj); +EOAPI void eo_docs_no_doc_meth(Eo *obj); + +/** No description supplied. + * + * @since 1.18 + * + * @ingroup Eo_Docs + */ +EOAPI void eo_docs_doc_with_empty_doc(Eo *obj); + EWAPI extern const Efl_Event_Description _EO_DOCS_EVENT_CLICKED; /** Event docs. diff --git a/src/tests/eolian/data/eo_docs.eo b/src/tests/eolian/data/eo_docs.eo index 1fe72df572..d42cdfcd95 100644 --- a/src/tests/eolian/data/eo_docs.eo +++ b/src/tests/eolian/data/eo_docs.eo @@ -78,6 +78,13 @@ class Eo_Docs { val: int; [[Value documentation.]] } } + + no_doc_meth { + } + + doc_with_empty_doc { + [[]] + } } events { clicked: void; [[Event docs.]] diff --git a/src/tests/eolian/eolian_parsing.c b/src/tests/eolian/eolian_parsing.c index d0dc4819d6..ac06f99eba 100644 --- a/src/tests/eolian/eolian_parsing.c +++ b/src/tests/eolian/eolian_parsing.c @@ -1263,6 +1263,15 @@ EFL_START_TEST(eolian_docs) "Event docs.")); fail_if(eolian_documentation_description_get(doc)); + fail_if(!(fid = eolian_class_function_by_name_get(class, "no_doc_meth", EOLIAN_METHOD))); + fail_if(!(fimp = eolian_function_implement_get(fid))); + fail_if((doc = eolian_implement_documentation_get(fimp, EOLIAN_METHOD))); + + fail_if(!(fid = eolian_class_function_by_name_get(class, "doc_with_empty_doc", EOLIAN_METHOD))); + fail_if(!(fimp = eolian_function_implement_get(fid))); + fail_if(!(doc = eolian_implement_documentation_get(fimp, EOLIAN_METHOD))); + fail_if(eolian_documentation_summary_get(doc)); + eolian_state_free(eos); } EFL_END_TEST