Use void for auto function without return statement

This commit is contained in:
Sebastian Wilzbach 2016-11-22 21:53:16 +01:00
parent 2c8166318b
commit b82ae35fd7
9 changed files with 62 additions and 69 deletions

View file

@ -4586,7 +4586,7 @@ if (isInputRange!R && !isInfinite!R)
F[64] store = void; F[64] store = void;
size_t idx = 0; size_t idx = 0;
auto collapseStore(T)(T k) void collapseStore(T)(T k)
{ {
auto lastToKeep = idx - cast(uint)bsf(k+1); auto lastToKeep = idx - cast(uint)bsf(k+1);
while (idx > lastToKeep) while (idx > lastToKeep)

View file

@ -162,7 +162,7 @@ if (isIterable!Range && !isNarrowString!Range && !isInfinite!Range)
struct Foo struct Foo
{ {
int a; int a;
auto opAssign(Foo foo) void opAssign(Foo foo)
{ {
assert(0); assert(0);
} }
@ -1055,7 +1055,7 @@ private template isInputRangeOrConvertible(E)
assert(test([1, 2, 3, 4], 2, 23, [1, 2, 23, 3, 4])); assert(test([1, 2, 3, 4], 2, 23, [1, 2, 23, 3, 4]));
assert(test([1, 2, 3, 4], 4, 24, [1, 2, 3, 4, 24])); assert(test([1, 2, 3, 4], 4, 24, [1, 2, 3, 4, 24]));
auto testStr(T, U)(string file = __FILE__, size_t line = __LINE__) void testStr(T, U)(string file = __FILE__, size_t line = __LINE__)
{ {
auto l = to!T("hello"); auto l = to!T("hello");
@ -2149,7 +2149,7 @@ T[] replace(T, Range)(T[] subject, size_t from, size_t to, Range stuff)
assert(replace(a, 2, 4, filter!"true"([5, 6, 7])) == [1, 2, 5, 6, 7]); assert(replace(a, 2, 4, filter!"true"([5, 6, 7])) == [1, 2, 5, 6, 7]);
assert(a == [ 1, 2, 3, 4 ]); assert(a == [ 1, 2, 3, 4 ]);
auto testStr(T, U)(string file = __FILE__, size_t line = __LINE__) void testStr(T, U)(string file = __FILE__, size_t line = __LINE__)
{ {
auto l = to!T("hello"); auto l = to!T("hello");
@ -2370,7 +2370,7 @@ void replaceInPlace(T, Range)(ref T[] array, size_t from, size_t to, Range stuff
assert(test([1, 2, 3, 4], 0, 2, filter!"true"([5, 6, 7]), [5, 6, 7, 3, 4])); assert(test([1, 2, 3, 4], 0, 2, filter!"true"([5, 6, 7]), [5, 6, 7, 3, 4]));
assert(test([1, 2, 3, 4], 2, 4, filter!"true"([5, 6, 7]), [1, 2, 5, 6, 7])); assert(test([1, 2, 3, 4], 2, 4, filter!"true"([5, 6, 7]), [1, 2, 5, 6, 7]));
auto testStr(T, U)(string file = __FILE__, size_t line = __LINE__) void testStr(T, U)(string file = __FILE__, size_t line = __LINE__)
{ {
auto l = to!T("hello"); auto l = to!T("hello");
@ -3057,7 +3057,7 @@ if (isDynamicArray!A)
this.arr = arr; this.arr = arr;
} }
auto opDispatch(string fn, Args...)(Args args) if (is(typeof(mixin("impl." ~ fn ~ "(args)")))) void opDispatch(string fn, Args...)(Args args) if (is(typeof(mixin("impl." ~ fn ~ "(args)"))))
{ {
// we do it this way because we can't cache a void return // we do it this way because we can't cache a void return
scope(exit) *this.arr = impl.data; scope(exit) *this.arr = impl.data;

View file

@ -732,7 +732,7 @@ auto csvReader(Contents = string,
return text.empty; return text.empty;
} }
auto popFront() void popFront()
{ {
text.popFront(); text.popFront();
} }

View file

@ -34052,8 +34052,6 @@ static int daysToDayOfWeek(DayOfWeek currDoW, DayOfWeek dow) @safe pure nothrow
} }
version(StdDdoc)
{
/++ /++
Function for starting to a stop watch time when the function is called Function for starting to a stop watch time when the function is called
and stopping it when its return value goes out of scope and is destroyed. and stopping it when its return value goes out of scope and is destroyed.
@ -34088,10 +34086,6 @@ version(StdDdoc)
See_Also: See_Also:
$(LREF benchmark) $(LREF benchmark)
+/ +/
auto measureTime(alias func)();
}
else
{
@safe auto measureTime(alias func)() @safe auto measureTime(alias func)()
if (isSafe!((){StopWatch sw; unaryFun!func(sw.peek());})) if (isSafe!((){StopWatch sw; unaryFun!func(sw.peek());}))
{ {
@ -34127,7 +34121,6 @@ else
} }
return Result(Yes.autoStart); return Result(Yes.autoStart);
} }
}
// Verify Example. // Verify Example.
@safe unittest @safe unittest

View file

@ -588,7 +588,7 @@ nothrow @safe @nogc unittest
import std.experimental.allocator.mallocator : Mallocator; import std.experimental.allocator.mallocator : Mallocator;
alias alloc = Mallocator.instance; alias alloc = Mallocator.instance;
auto test(T, Args...)(auto ref Args args) void test(T, Args...)(auto ref Args args)
{ {
auto k = alloc.make!T(args); auto k = alloc.make!T(args);
() @trusted { alloc.dispose(k); }(); () @trusted { alloc.dispose(k); }();
@ -607,7 +607,7 @@ nothrow @safe @nogc unittest
alias alloc = GCAllocator.instance; alias alloc = GCAllocator.instance;
auto test(T, Args...)(auto ref Args args) void test(T, Args...)(auto ref Args args)
{ {
auto k = alloc.make!T(args); auto k = alloc.make!T(args);
(a) @trusted { a.dispose(k); }(alloc); (a) @trusted { a.dispose(k); }(alloc);

View file

@ -3080,7 +3080,7 @@ pure nothrow unittest
{ {
import std.experimental.ndslice.selection : iotaSlice; import std.experimental.ndslice.selection : iotaSlice;
auto fun(ref size_t x) { x *= 3; } void fun(ref size_t x) { x *= 3; }
auto tensor = iotaSlice(8, 9, 10).slice; auto tensor = iotaSlice(8, 9, 10).slice;

View file

@ -262,12 +262,12 @@ if (isBidirectionalRange!(Unqual!Range))
static if (hasAssignableElements!R) static if (hasAssignableElements!R)
{ {
@property auto front(ElementType!R val) @property void front(ElementType!R val)
{ {
source.back = val; source.back = val;
} }
@property auto back(ElementType!R val) @property void back(ElementType!R val)
{ {
source.front = val; source.front = val;
} }
@ -539,7 +539,7 @@ body
static if (hasAssignableElements!R) static if (hasAssignableElements!R)
{ {
@property auto front(ElementType!R val) @property void front(ElementType!R val)
{ {
source.front = val; source.front = val;
} }
@ -574,7 +574,7 @@ body
static if (hasAssignableElements!R) static if (hasAssignableElements!R)
{ {
@property auto back(ElementType!R val) @property void back(ElementType!R val)
{ {
eliminateSlackElements(); eliminateSlackElements();
source.back = val; source.back = val;
@ -1911,7 +1911,7 @@ if (isInputRange!(Unqual!Range) &&
static if (hasAssignableElements!R) static if (hasAssignableElements!R)
/// ditto /// ditto
@property auto front(ElementType!R v) @property void front(ElementType!R v)
{ {
assert(!empty, assert(!empty,
"Attempting to assign to the front of an empty " "Attempting to assign to the front of an empty "
@ -1999,7 +1999,7 @@ if (isInputRange!(Unqual!Range) &&
static if (hasAssignableElements!R) static if (hasAssignableElements!R)
{ {
/// ditto /// ditto
@property auto back(ElementType!R v) @property void back(ElementType!R v)
{ {
// This has to return auto instead of void because of Bug 4706. // This has to return auto instead of void because of Bug 4706.
assert(!empty, assert(!empty,
@ -3364,7 +3364,7 @@ struct Cycle(R)
static if (hasAssignableElements!R) static if (hasAssignableElements!R)
{ {
/// ditto /// ditto
@property auto front(ElementType!R val) @property void front(ElementType!R val)
{ {
_original[_index] = val; _original[_index] = val;
} }
@ -3400,7 +3400,7 @@ struct Cycle(R)
static if (hasAssignableElements!R) static if (hasAssignableElements!R)
{ {
/// ditto /// ditto
auto opIndexAssign(ElementType!R val, size_t n) void opIndexAssign(ElementType!R val, size_t n)
{ {
_original[(n + _index) % _original.length] = val; _original[(n + _index) % _original.length] = val;
} }
@ -5811,7 +5811,7 @@ struct FrontTransversal(Ror,
static if (hasAssignableElements!RangeType) static if (hasAssignableElements!RangeType)
{ {
@property auto front(ElementType val) @property void front(ElementType val)
{ {
_input.front.front = val; _input.front.front = val;
} }
@ -5868,7 +5868,7 @@ struct FrontTransversal(Ror,
static if (hasAssignableElements!RangeType) static if (hasAssignableElements!RangeType)
{ {
@property auto back(ElementType val) @property void back(ElementType val)
{ {
_input.back.front = val; _input.back.front = val;
} }
@ -6127,7 +6127,7 @@ struct Transversal(Ror,
/// Ditto /// Ditto
static if (hasAssignableElements!InnerRange) static if (hasAssignableElements!InnerRange)
{ {
@property auto front(E val) @property void front(E val)
{ {
_input.front[_n] = val; _input.front[_n] = val;
} }
@ -6185,7 +6185,7 @@ struct Transversal(Ror,
/// Ditto /// Ditto
static if (hasAssignableElements!InnerRange) static if (hasAssignableElements!InnerRange)
{ {
@property auto back(E val) @property void back(E val)
{ {
_input.back[_n] = val; _input.back[_n] = val;
} }
@ -8851,7 +8851,7 @@ public:
} }
/++ +/ /++ +/
auto opAssign(typeof(null) rhs) void opAssign(typeof(null) rhs)
{ {
_range = null; _range = null;
} }

View file

@ -531,7 +531,7 @@ unittest
assert(kick.length == length, text(C.stringof, " == ", kick.length)); assert(kick.length == length, text(C.stringof, " == ", kick.length));
return kick; return kick;
} }
auto searches(C)(const (C)[] source, ShiftOr!C kick, uint[] results...) void searches(C)(const (C)[] source, ShiftOr!C kick, uint[] results...)
{ {
auto inp = Input!C(source); auto inp = Input!C(source);
foreach (r; results) foreach (r; results)

View file

@ -2701,7 +2701,7 @@ private:
//may break sorted property - but we need std.sort to access it //may break sorted property - but we need std.sort to access it
//hence package protection attribute //hence package protection attribute
package @property auto front(CodepointInterval val) package @property void front(CodepointInterval val)
{ {
slice[start] = val.a; slice[start] = val.a;
slice[start+1] = val.b; slice[start+1] = val.b;
@ -2715,7 +2715,7 @@ private:
} }
//ditto about package //ditto about package
package @property auto back(CodepointInterval val) package @property void back(CodepointInterval val)
{ {
slice[end-2] = val.a; slice[end-2] = val.a;
slice[end-1] = val.b; slice[end-1] = val.b;
@ -2739,7 +2739,7 @@ private:
} }
//ditto about package //ditto about package
package auto opIndexAssign(CodepointInterval val, size_t idx) package void opIndexAssign(CodepointInterval val, size_t idx)
{ {
slice[start+idx*2] = val.a; slice[start+idx*2] = val.a;
slice[start+idx*2+1] = val.b; slice[start+idx*2+1] = val.b;