Changeset 269

Show
Ignore:
Timestamp:
03/17/10 08:44:39 (2 years ago)
Author:
schveiguy
Message:

added some unittests to lifetime.d
fixed clear(Object obj) so it compiles.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/import/object.di

    r266 r269  
    371371void clear(T)(T obj) if (is(T == class)) 
    372372{ 
     373    auto ci = obj.classinfo; 
    373374    auto defaultCtor = 
    374         cast(void function(Object)) obj.classinfo.defaultConstructor; 
     375        cast(void function(Object)) ci.defaultConstructor; 
    375376    version(none) // enforce isn't available in druntime 
    376         _enforce(defaultCtor || (obj.classinfo.flags & 8) == 0); 
    377     immutable size = obj.classinfo.init.length; 
     377        _enforce(defaultCtor || (ci.flags & 8) == 0); 
     378    immutable size = ci.init.length; 
    378379 
    379380    auto ci2 = ci; 
     
    387388 
    388389    auto buf = (cast(void*) obj)[0 .. size]; 
    389     buf[] = obj.classinfo.init; 
     390    buf[] = ci.init; 
    390391    if (defaultCtor) 
    391392        defaultCtor(obj); 
  • trunk/src/object_.d

    r268 r269  
    21532153void clear(T)(T obj) if (is(T == class)) 
    21542154{ 
     2155    auto ci = obj.classinfo; 
    21552156    auto defaultCtor = 
    2156         cast(void function(Object)) obj.classinfo.defaultConstructor; 
     2157        cast(void function(Object)) ci.defaultConstructor; 
    21572158    version(none) // enforce isn't available in druntime 
    2158         _enforce(defaultCtor || (obj.classinfo.flags & 8) == 0); 
    2159     immutable size = obj.classinfo.init.length; 
     2159        _enforce(defaultCtor || (ci.flags & 8) == 0); 
     2160    immutable size = ci.init.length; 
    21602161 
    21612162    auto ci2 = ci; 
     
    21692170 
    21702171    auto buf = (cast(void*) obj)[0 .. size]; 
    2171     buf[] = obj.classinfo.init; 
     2172    buf[] = ci.init; 
    21722173    if (defaultCtor) 
    21732174        defaultCtor(obj); 
  • trunk/src/rt/lifetime.d

    r267 r269  
    17761776    for (i = 0; i < 3; i++) 
    17771777        assert(b[i] == i + 1); 
    1778 
     1778 
     1779    // test slice appending 
     1780    b = a[0..1]; 
     1781    b ~= 4; 
     1782    for(i = 0; i < 3; i++) 
     1783        assert(a[i] == i + 1); 
     1784 
     1785    // test reserving 
     1786    char[] arr = new char[4093]; 
     1787    for(i = 0; i < arr.length; i++) 
     1788        arr[i] = cast(char)(i % 256); 
     1789 
     1790    // note that these two commands used to cause corruption, which may not be 
     1791    // detected. 
     1792    arr.reserve(4094); 
     1793    auto arr2 = arr ~ "123"; 
     1794    assert(arr2[0..arr.length] == arr); 
     1795    assert(arr2[arr.length..$] == "123"); 
     1796