Fix - False negative for missing parameter in Params

This commit is contained in:
Sebastian Wilzbach 2018-04-03 06:26:56 +02:00
parent cb31d2501e
commit 6ca45d8b3f
1 changed files with 73 additions and 36 deletions

View File

@ -166,8 +166,11 @@ private:
import std.array : array;
const comment = parseComment(commentText, null);
if (!comment.isDitto && !withinTemplate)
{
if (withinTemplate) {
const paramSection = comment.sections.find!(s => s.name == "Params");
if (!paramSection.empty)
lastSeenFun.ddocParams ~= paramSection[0].mapping.map!(a => a[0]).array;
} else if (!comment.isDitto) {
// check old function for invalid ddoc params
if (lastSeenFun.active)
postCheckSeenDdocParams();
@ -796,6 +799,40 @@ string bar(P, R)(R r){}// [warn]: %s
}c.format(
ProperlyDocumentedPublicFunctions.MISSING_TEMPLATE_PARAMS_MESSAGE.format("P")
), sac);
}
// https://github.com/dlang-community/D-Scanner/issues/583
unittest
{
StaticAnalysisConfig sac = disabledConfig;
sac.properly_documented_public_functions = Check.enabled;
assertAnalyzerWarnings(q{
/++
Implements the homonym function (also known as `accumulate`)
Returns:
the accumulated `result`
Params:
fun = one or more functions
+/
template reduce(fun...)
if (fun.length >= 1)
{
/++
No-seed version. The first element of `r` is used as the seed's value.
Params:
r = an iterable value as defined by `isIterable`
Returns:
the final result of the accumulator applied to the iterable
+/
auto reduce(R)(R r){}
}
}c.format(
), sac);
stderr.writeln("Unittest for ProperlyDocumentedPublicFunctions passed.");
}