container.string: Add missing postblit
This commit is contained in:
		@@ -26,7 +26,6 @@
 | 
			
		||||
 */
 | 
			
		||||
module tanya.container.string;
 | 
			
		||||
 | 
			
		||||
import core.exception;
 | 
			
		||||
import std.algorithm.comparison;
 | 
			
		||||
import std.algorithm.mutation;
 | 
			
		||||
import std.algorithm.searching;
 | 
			
		||||
@@ -501,6 +500,14 @@ struct String
 | 
			
		||||
        assert(s.length == 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    this(this) @nogc nothrow @trusted
 | 
			
		||||
    {
 | 
			
		||||
        auto buf = this.data[0 .. this.length_];
 | 
			
		||||
        this.length_ = capacity_ = 0;
 | 
			
		||||
        this.data = null;
 | 
			
		||||
        insertBack(buf);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Destroys the string.
 | 
			
		||||
     */
 | 
			
		||||
@@ -1112,15 +1119,13 @@ struct String
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    ///
 | 
			
		||||
    @safe @nogc unittest
 | 
			
		||||
    @nogc @safe unittest
 | 
			
		||||
    {
 | 
			
		||||
        auto s = String("Высоцкий");
 | 
			
		||||
        auto s = String("Мне есть, что спеть, представ перед Всевышним.");
 | 
			
		||||
        auto cp = s.byCodePoint();
 | 
			
		||||
        assert(cp.front == 'В');
 | 
			
		||||
        assert(cp.front == 'М');
 | 
			
		||||
        cp.popFront();
 | 
			
		||||
        assert(cp.front == 'ы');
 | 
			
		||||
        cp.popFront();
 | 
			
		||||
        assert(cp.front == 'с');
 | 
			
		||||
        assert(cp.front == 'н');
 | 
			
		||||
 | 
			
		||||
        s = String("€");
 | 
			
		||||
        cp = s.byCodePoint();
 | 
			
		||||
@@ -1133,6 +1138,24 @@ struct String
 | 
			
		||||
        assert(s.length == 4);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    ///
 | 
			
		||||
    @nogc @safe unittest
 | 
			
		||||
    {
 | 
			
		||||
        auto s = const String("Высоцкий");
 | 
			
		||||
        auto cp1 = s.byCodePoint();
 | 
			
		||||
        assert(cp1.front == 'В');
 | 
			
		||||
 | 
			
		||||
        auto cp2 = cp1[];
 | 
			
		||||
        cp1.popFront();
 | 
			
		||||
        assert(cp1.front == 'ы');
 | 
			
		||||
        assert(cp2.front == 'В');
 | 
			
		||||
 | 
			
		||||
        cp2 = cp1.save();
 | 
			
		||||
        cp1.popFront();
 | 
			
		||||
        assert(cp1.front == 'с');
 | 
			
		||||
        assert(cp2.front == 'ы');
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Returns: $(D_KEYWORD true) if the string is empty.
 | 
			
		||||
     */
 | 
			
		||||
@@ -1594,3 +1617,23 @@ struct String
 | 
			
		||||
 | 
			
		||||
    mixin DefaultAllocator;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Postblit works.
 | 
			
		||||
@nogc @safe unittest
 | 
			
		||||
{
 | 
			
		||||
    void internFunc(String arg)
 | 
			
		||||
    {
 | 
			
		||||
    }
 | 
			
		||||
    void middleFunc(S...)(S args)
 | 
			
		||||
    {
 | 
			
		||||
        foreach (arg; args)
 | 
			
		||||
        {
 | 
			
		||||
            internFunc(arg);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    void topFunc(String args)
 | 
			
		||||
    {
 | 
			
		||||
        middleFunc(args);
 | 
			
		||||
    }
 | 
			
		||||
    topFunc(String("asdf"));
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user