Deprecate put() as an OutputRange primitive
This commit is contained in:
parent
7af5c30820
commit
bf197a6554
@ -389,12 +389,9 @@ do
|
|||||||
static struct OutPutRange
|
static struct OutPutRange
|
||||||
{
|
{
|
||||||
int value;
|
int value;
|
||||||
void put(int value) @nogc nothrow pure @safe
|
|
||||||
in
|
void opCall(int value) @nogc nothrow pure @safe
|
||||||
{
|
in (this.value == 0)
|
||||||
assert(this.value == 0);
|
|
||||||
}
|
|
||||||
do
|
|
||||||
{
|
{
|
||||||
this.value = value;
|
this.value = value;
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
/**
|
/**
|
||||||
* This module defines primitives for working with ranges.
|
* This module defines primitives for working with ranges.
|
||||||
*
|
*
|
||||||
* Copyright: Eugene Wissner 2017-2018.
|
* Copyright: Eugene Wissner 2017-2019.
|
||||||
* License: $(LINK2 https://www.mozilla.org/en-US/MPL/2.0/,
|
* License: $(LINK2 https://www.mozilla.org/en-US/MPL/2.0/,
|
||||||
* Mozilla Public License, v. 2.0).
|
* Mozilla Public License, v. 2.0).
|
||||||
* Authors: $(LINK2 mailto:info@caraus.de, Eugene Wissner)
|
* Authors: $(LINK2 mailto:info@caraus.de, Eugene Wissner)
|
||||||
@ -833,18 +833,19 @@ void put(R, E)(ref R range, auto ref E e)
|
|||||||
static if (__traits(hasMember, R, "put")
|
static if (__traits(hasMember, R, "put")
|
||||||
&& is(typeof((R r, E e) => r.put(e))))
|
&& is(typeof((R r, E e) => r.put(e))))
|
||||||
{
|
{
|
||||||
|
pragma(msg, "OutputRange.put()-primitive is deprecated. Define opCall() instead.");
|
||||||
range.put(e);
|
range.put(e);
|
||||||
}
|
}
|
||||||
|
else static if (is(typeof((R r, E e) => r(e))))
|
||||||
|
{
|
||||||
|
range(e);
|
||||||
|
}
|
||||||
else static if (isInputRange!R
|
else static if (isInputRange!R
|
||||||
&& is(typeof((R r, E e) => r.front = e)))
|
&& is(typeof((R r, E e) => r.front = e)))
|
||||||
{
|
{
|
||||||
range.front = e;
|
range.front = e;
|
||||||
range.popFront();
|
range.popFront();
|
||||||
}
|
}
|
||||||
else static if (is(typeof((R r, E e) => r(e))))
|
|
||||||
{
|
|
||||||
range(e);
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
static assert(false, R.stringof ~ " is not an output range for "
|
static assert(false, R.stringof ~ " is not an output range for "
|
||||||
@ -862,23 +863,6 @@ void put(R, E)(ref R range, auto ref E e)
|
|||||||
assert(actual == [2, 0]);
|
assert(actual == [2, 0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
///
|
|
||||||
@nogc nothrow pure @safe unittest
|
|
||||||
{
|
|
||||||
static struct Put
|
|
||||||
{
|
|
||||||
int e;
|
|
||||||
|
|
||||||
void put(int e)
|
|
||||||
{
|
|
||||||
this.e = e;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Put p;
|
|
||||||
put(p, 2);
|
|
||||||
assert(p.e == 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
///
|
///
|
||||||
@nogc nothrow pure @safe unittest
|
@nogc nothrow pure @safe unittest
|
||||||
{
|
{
|
||||||
@ -963,7 +947,7 @@ template isOutputRange(R, E)
|
|||||||
{
|
{
|
||||||
static struct R1
|
static struct R1
|
||||||
{
|
{
|
||||||
void put(int) @nogc nothrow pure @safe
|
void opCall(int) @nogc nothrow pure @safe
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1002,17 +986,8 @@ template isOutputRange(R, E)
|
|||||||
}
|
}
|
||||||
static assert(!isOutputRange!(R3, int));
|
static assert(!isOutputRange!(R3, int));
|
||||||
|
|
||||||
static struct R4
|
|
||||||
{
|
|
||||||
void opCall(int) @nogc nothrow pure @safe
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
static assert(isOutputRange!(R4, int));
|
|
||||||
|
|
||||||
static assert(isOutputRange!(R1, R3));
|
static assert(isOutputRange!(R1, R3));
|
||||||
static assert(isOutputRange!(R2, R3));
|
static assert(isOutputRange!(R2, R3));
|
||||||
static assert(isOutputRange!(R4, R3));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user