add tests for shortened function body extensions

Remove implementation in unused label (expressions can't have labels)
This commit is contained in:
WebFreak001 2022-02-02 21:02:29 +01:00
parent a3fe7611a8
commit 631791e14d
3 changed files with 33 additions and 4 deletions

View File

@ -126,6 +126,22 @@ unittest
}
}
struct InfiniteRange
{
bool empty() => false; // [warn]: %1$s
bool stuff() => false;
unittest
{
return false;
}
// https://issues.dlang.org/show_bug.cgi?id=18409
struct Foo
{
~this() nothrow @nogc;
}
}
bool empty() { return false; }
class C { bool empty() { return false; } } // [warn]: %1$s

View File

@ -190,7 +190,8 @@ final class ProperlyDocumentedPublicFunctions : BaseAnalyzer
import std.array : Appender;
// ignore header declaration for now
if (!decl.functionBody || !decl.functionBody.specifiedFunctionBody)
if (!decl.functionBody || (!decl.functionBody.specifiedFunctionBody
&& !decl.functionBody.shortenedFunctionBody))
return;
if (nestedFuncs == 1)
@ -659,6 +660,20 @@ int foo(int k){} // [warn]: %s
assertAnalyzerWarnings(q{
/**
* Description.
*
* Params:
*
* Returns:
* A long description.
*/
int foo(int k) => k; // [warn]: %s
}c.format(
ProperlyDocumentedPublicFunctions.MISSING_PARAMS_MESSAGE.format("k")
), sac);
assertAnalyzerWarnings(q{
/**
Description.
Params:

View File

@ -51,10 +51,8 @@ final class UnusedLabelCheck : BaseAnalyzer
functionBody.specifiedFunctionBody.accept(this);
popScope();
}
if (functionBody.missingFunctionBody && functionBody.missingFunctionBody.functionContracts)
if (functionBody.missingFunctionBody && functionBody.missingFunctionBody.functionContracts)
functionBody.missingFunctionBody.functionContracts.each!((a){pushScope(); a.accept(this); popScope();});
if (functionBody.specifiedFunctionBody && functionBody.specifiedFunctionBody.functionContracts)
functionBody.specifiedFunctionBody.functionContracts.each!((a){pushScope(); a.accept(this); popScope();});
}
override void visit(const LabeledStatement labeledStatement)