Fix inheritdoc tags trying to resolve 'empty' elements

This commit is contained in:
Harikrishnan Mulackal 2020-08-26 21:25:22 +02:00
parent fdc4142b2c
commit 79b2e41252
2 changed files with 23 additions and 0 deletions

View File

@ -325,6 +325,17 @@ void ReferencesResolver::resolveInheritDoc(StructuredDocumentation const& _docum
vector<string> path;
boost::split(path, name, boost::is_any_of("."));
if (any_of(path.begin(), path.end(), [](auto& _str) { return _str.empty(); }))
{
m_errorReporter.docstringParsingError(
5967_error,
_documentation.location(),
"Documentation tag @inheritdoc reference \"" +
name +
"\" is malformed."
);
return;
}
Declaration const* result = m_resolver.pathFromCurrentScope(path);
if (result == nullptr)

View File

@ -2,6 +2,18 @@ contract C {
/// @inheritdoc
function f() internal {
}
/// @inheritdoc .
function f() internal {
}
/// @inheritdoc C..f
function f() internal {
}
/// @inheritdoc C.
function f() internal {
}
}
// ----
// DocstringParsingError 1933: (17-32): Expected contract name following documentation tag @inheritdoc.
// DocstringParsingError 5967: (71-88): Documentation tag @inheritdoc reference "." is malformed.
// DocstringParsingError 5967: (127-147): Documentation tag @inheritdoc reference "C..f" is malformed.
// DocstringParsingError 5967: (186-204): Documentation tag @inheritdoc reference "C." is malformed.