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;
size_t idx = 0;
auto collapseStore(T)(T k)
void collapseStore(T)(T k)
{
auto lastToKeep = idx - cast(uint)bsf(k+1);
while (idx > lastToKeep)

View file

@ -162,7 +162,7 @@ if (isIterable!Range && !isNarrowString!Range && !isInfinite!Range)
struct Foo
{
int a;
auto opAssign(Foo foo)
void opAssign(Foo foo)
{
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], 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");
@ -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(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");
@ -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], 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");
@ -3057,7 +3057,7 @@ if (isDynamicArray!A)
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
scope(exit) *this.arr = impl.data;

View file

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

View file

@ -34052,17 +34052,15 @@ 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
and stopping it when its return value goes out of scope and is destroyed.
/++
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.
When the value that is returned by this function is destroyed,
$(D func) will run. $(D func) is a unary function that takes a
$(REF TickDuration, core,time).
When the value that is returned by this function is destroyed,
$(D func) will run. $(D func) is a unary function that takes a
$(REF TickDuration, core,time).
Example:
Example:
--------------------
{
auto mt = measureTime!((TickDuration a)
@ -34071,7 +34069,7 @@ version(StdDdoc)
}
--------------------
which is functionally equivalent to
which is functionally equivalent to
--------------------
{
@ -34085,48 +34083,43 @@ version(StdDdoc)
}
--------------------
See_Also:
$(LREF benchmark)
+/
auto measureTime(alias func)();
}
else
See_Also:
$(LREF benchmark)
+/
@safe auto measureTime(alias func)()
if (isSafe!((){StopWatch sw; unaryFun!func(sw.peek());}))
{
@safe auto measureTime(alias func)()
if (isSafe!((){StopWatch sw; unaryFun!func(sw.peek());}))
struct Result
{
struct Result
private StopWatch _sw = void;
this(AutoStart as)
{
private StopWatch _sw = void;
this(AutoStart as)
{
_sw = StopWatch(as);
}
~this()
{
unaryFun!(func)(_sw.peek());
}
_sw = StopWatch(as);
}
~this()
{
unaryFun!(func)(_sw.peek());
}
return Result(Yes.autoStart);
}
return Result(Yes.autoStart);
}
auto measureTime(alias func)()
if (!isSafe!((){StopWatch sw; unaryFun!func(sw.peek());}))
auto measureTime(alias func)()
if (!isSafe!((){StopWatch sw; unaryFun!func(sw.peek());}))
{
struct Result
{
struct Result
private StopWatch _sw = void;
this(AutoStart as)
{
private StopWatch _sw = void;
this(AutoStart as)
{
_sw = StopWatch(as);
}
~this()
{
unaryFun!(func)(_sw.peek());
}
_sw = StopWatch(as);
}
~this()
{
unaryFun!(func)(_sw.peek());
}
return Result(Yes.autoStart);
}
return Result(Yes.autoStart);
}
// Verify Example.

View file

@ -588,7 +588,7 @@ nothrow @safe @nogc unittest
import std.experimental.allocator.mallocator : Mallocator;
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);
() @trusted { alloc.dispose(k); }();
@ -607,7 +607,7 @@ nothrow @safe @nogc unittest
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);
(a) @trusted { a.dispose(k); }(alloc);

View file

@ -3080,7 +3080,7 @@ pure nothrow unittest
{
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;

View file

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

View file

@ -531,7 +531,7 @@ unittest
assert(kick.length == length, text(C.stringof, " == ", kick.length));
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);
foreach (r; results)

View file

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