Skip to content

Commit 4513448

Browse files
committed
fixed enforceReturnType in ReturnCheck
1 parent c2cda15 commit 4513448

File tree

3 files changed

+42
-4
lines changed

3 files changed

+42
-4
lines changed

checkstyle/checks/ReturnCheck.hx

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,14 @@ class ReturnCheck extends Check {
3030

3131
function checkField(f:Field) {
3232
if (enforceReturnType) {
33-
if (Std.string(f.kind).indexOf("ret => null") > -1) {
34-
_warnReturnTypeMissing(f.name, f.pos);
33+
switch (f.kind) {
34+
case FFun(fun):
35+
if (fun.ret == null) {
36+
_warnReturnTypeMissing(f.name, f.pos);
37+
}
38+
default:
3539
}
36-
}
40+
}
3741
else {
3842
if (Std.string(f.kind).indexOf("ret => TPath({ name => Void") > -1) {
3943
_warnVoid(f.name, f.pos);

run.n

-3 Bytes
Binary file not shown.

test/ReturnCheckTest.hx

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,17 +24,44 @@ class ReturnCheckTest extends CheckTestCase {
2424
check.enforceReturnType = true;
2525
var msg = checkMessage(ReturnTests.TEST1, check);
2626
assertEquals(msg, '');
27+
msg = checkMessage(ReturnTests.TEST4, check);
28+
assertEquals(msg, '');
29+
}
30+
31+
public function testEnforceReturnTypeMissing() {
32+
var check = new ReturnCheck ();
33+
check.enforceReturnType = true;
34+
var msg = checkMessage(ReturnTests.TEST1, check);
35+
assertEquals(msg, '');
36+
37+
msg = checkMessage(ReturnTests.TEST2, check);
38+
assertEquals(msg, 'Return type not specified when returning a value for function: test1');
39+
40+
msg = checkMessage(ReturnTests.TEST3, check);
41+
assertEquals(msg, 'Return type not specified for function: test2');
2742
}
2843

29-
public function testReturnTypeAllowEmptyReturn() {
44+
public function testReturnTypeAllowEmptyReturnFalse() {
3045
var check = new ReturnCheck ();
3146
check.allowEmptyReturn = false;
47+
3248
var msg = checkMessage(ReturnTests.TEST2, check);
3349
assertEquals(msg, 'Return type not specified when returning a value for function: test1');
3450

3551
msg = checkMessage(ReturnTests.TEST3, check);
3652
assertEquals(msg, 'Return type not specified when returning a value for function: test2');
3753
}
54+
55+
public function testReturnTypeAllowEmptyReturnTrue() {
56+
var check = new ReturnCheck ();
57+
check.allowEmptyReturn = true;
58+
59+
var msg = checkMessage(ReturnTests.TEST3, check);
60+
assertEquals(msg, '');
61+
62+
msg = checkMessage(ReturnTests.TEST2, check);
63+
assertEquals(msg, 'Return type not specified when returning a value for function: test1');
64+
}
3865
}
3966

4067
class ReturnTests {
@@ -56,4 +83,11 @@ class ReturnTests {
5683
return;
5784
}
5885
}";
86+
87+
public static inline var TEST4:String =
88+
"class Test {
89+
public function test3():Void {
90+
return;
91+
}
92+
}";
5993
}

0 commit comments

Comments
 (0)