Note: This website is archived. For up-to-date information about D projects and development, please visit wiki.dlang.org.

Changeset 826

Show
Ignore:
Timestamp:
12/28/10 07:45:37 (14 years ago)
Author:
walter
Message:

update test42

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/test/runnable/test42.d

    r761 r826  
    21022102    foreach (char c; foo.byLine) 
    21032103    { 
    21042104    }  
    21052105} 
    21062106 
    21072107/***************************************************/ 
    21082108 
    21092109void test109() 
    21102110{ 
    21112111    double x[] = new double[1]; 
    21122112    assert(x[0] != 0); 
    21132113} 
    21142114 
    21152115/***************************************************/ 
    21162116 
    21172117void test110() 
    21182118{ 
    21192119    struct C { 
    21202120    int[0] b; 
    21212121    } 
    2122     static C g_c2_ = { 3 }; 
     2122    static C g_c2_ = { }; 
    21232123} 
    21242124 
    21252125/***************************************************/ 
    21262126 
    21272127template Foo111(T...) { 
    21282128    alias T Foo111; 
    21292129} 
    21302130 
    21312131void test111() 
    21322132{ 
    21332133    auto y = (Foo111!(int) x){ return 0; }; 
    21342134} 
    21352135 
    21362136/***************************************************/ 
    21372137 
    21382138bool isNull(string str) { 
    21392139        return str is null; 
    21402140} 
    21412141 
    21422142const bool foo112 = isNull("hello!"); 
     
    38063806// 4941 
    38073807 
    38083808template T216(_...) { alias _ T216; } 
    38093809size_t mid216(size_t n) { return n/2; } 
    38103810 
    38113811alias T216!(int, int)[0 .. mid216($)] A216; 
    38123812alias T216!(1, 2, 3)[0 .. mid216($)] B216; 
    38133813 
    38143814void test216() 
    38153815{ 
    38163816    T216!(int, int, int) values; 
    38173817    auto slice = values[0 .. mid216($)];   // C 
    38183818} 
    38193819 
    38203820/***************************************************/ 
    38213821 
    38223822int bug4529a() { return 0; } 
    38233823int function() bug4529b; 
    38243824auto ivorBomb1 = typeid(typeof(bug4529a)); 
    38253825auto ivorBomb2 = typeid(typeof(bug4529b)); 
     3826 
     3827/***************************************************/ 
     3828 
     3829void bug5218c(char [3] s) {} 
     3830void bug5218w(wchar [3] s) {} 
     3831void bug5218d(dchar [3] s) {} 
     3832 
     3833void test217() 
     3834{     
     3835    bug5218c("abc"); 
     3836    bug5218w("abc"w); 
     3837    bug5218d("abc"d); 
     3838} 
     3839 
     3840/***************************************************/ 
     3841// 2954 
     3842 
     3843void test218() 
     3844{ 
     3845    char[char[3]] ac; 
     3846    char[3] c = "abc"; 
     3847    ac["abc"]='a'; 
     3848    assert(ac[c]=='a');     
     3849 
     3850    char[dchar[3]] ad; 
     3851    dchar[3] d = "abc"d; 
     3852    ad["abc"d]='a'; 
     3853    assert(ad[d]=='a'); 
     3854} 
     3855 
     3856/***************************************************/ 
     3857// 2206 
     3858 
     3859template T219(U) { 
     3860  class C {} 
     3861} 
     3862 
     3863void test219() 
     3864{ 
     3865  mixin T219!(int); // using a named mixin here fixes it 
     3866 
     3867  pragma(msg, T219!(int).C.mangleof); 
     3868  pragma(msg, C.mangleof); // incorrectly outputs the same as above 
     3869 
     3870  assert(T219!(int).C.classinfo !is C.classinfo); // fails 
     3871  assert(T219!(int).C.mangleof != C.mangleof); // fails 
     3872} 
     3873 
     3874 
     3875/***************************************************/ 
     3876// 2206 
     3877 
     3878class D220 {} 
     3879 
     3880template T220(U) { 
     3881  class C { this() { } } 
     3882} 
     3883 
     3884void test220() 
     3885{ 
     3886  mixin T220!(int); 
     3887 
     3888  // all print 8 
     3889  writeln(T220!(int).C.classinfo.init.length); 
     3890  writeln(C.classinfo.init.length); 
     3891  writeln(D220.classinfo.init.length); 
     3892 
     3893  auto c = new C; // segfault in _d_newclass 
     3894} 
     3895 
     3896/***************************************************/ 
     3897 
     3898const struct S5110 
     3899{ 
     3900    static int value; 
     3901} 
     3902 
     3903static assert(is(typeof(S5110.value) == int)); 
     3904 
     3905/***************************************************/ 
     3906 
     3907class C5110 
     3908{ 
     3909 override: 
     3910    string toString() { return ""; } 
     3911 
     3912    class Nested 
     3913    { 
     3914        void gun() {} 
     3915    } 
     3916} 
     3917 
     3918/***************************************************/ 
     3919// 5145 
     3920 
     3921interface I221{ 
     3922    void bla(); 
     3923} 
     3924 
     3925interface J221 
     3926{ 
     3927    I221 sync (); 
     3928} 
     3929 
     3930class A221 : B221 
     3931{ 
     3932    final override I221 sync() 
     3933    in { assert( valid ); } 
     3934    body 
     3935    { 
     3936        return null; 
     3937    } 
     3938} 
     3939 
     3940class B221 : J221 
     3941{ 
     3942    override I221 sync() 
     3943    in { assert( valid ); } 
     3944    body 
     3945    { 
     3946        return null; 
     3947    } 
     3948 
     3949    final bool valid() 
     3950    { 
     3951        return true; 
     3952    } 
     3953} 
     3954 
     3955/***************************************************/ 
     3956 
     3957template Bug3276(bool B) { 
     3958   static if (B) 
     3959      alias Bug3276!(false) Bug3276; 
     3960   else 
     3961       alias double Bug3276; 
     3962} 
     3963 
     3964template Bug3276_b(alias W) { 
     3965    alias W!(true) Bug3276_b; 
     3966} 
     3967 
     3968alias Bug3276_b!(Bug3276) Bug3276_c; 
     3969 
     3970/***************************************************/ 
     3971// 5294 
     3972 
     3973void foo222(int) {} 
     3974 
     3975void test222() 
     3976{ 
     3977    int count; 
     3978    for (int i = 0; i < 2; i++) { 
     3979        count++; 
     3980        foo222(i * 5 - 6); // comment this out and it makes 2 loops 
     3981    } 
     3982    printf("%d\n", count); // compile with -O and it prints 1 
     3983    assert(count == 2); 
     3984} 
     3985 
     3986/***************************************************/ 
     3987 
     3988void foo223(long x,long a,long b,long c,long d,long e,long f) 
     3989{ 
     3990    assert(x == 0x123456789ABCDEF0); 
     3991} 
     3992 
     3993void test223() 
     3994{ 
     3995    foo223(0x123456789ABCDEF0,2,3,4,5,6,7); 
     3996} 
     3997 
     3998/***************************************************/ 
     3999// 4379 
     4000 
     4001template BigTuple(U...) { 
     4002    alias U BigTuple; 
     4003} 
     4004 
     4005alias 
     4006BigTuple!(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 
     40071,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 
     40081,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 
     40091,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 
     40101,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 
     40111,1,1,1,1,1) Tuple4379; 
     4012 
     4013void test224() 
     4014{ 
     4015    foreach(x; Tuple4379) {    } 
     4016} 
     4017 
     4018/***************************************************/ 
     4019// 3681 
     4020 
     4021public final class A3681 { 
     4022    private this() { 
     4023    int i =0; 
     4024    int j = i + 1; 
     4025 i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; 
     4026 i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; 
     4027 i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; 
     4028 i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; 
     4029 i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; 
     4030 i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; 
     4031 i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; 
     4032 i = j * 15; j = i * 59; i = j * 15; i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; 
     4033 j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; 
     4034 j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; 
     4035 j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; 
     4036 j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; 
     4037 j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; 
     4038 j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; 
     4039 j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; 
     4040 j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; 
     4041 j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; 
     4042 j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; 
     4043 j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; 
     4044 j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; 
     4045 j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; 
     4046 j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; 
     4047 j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; 
     4048 j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; 
     4049 j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; 
     4050 j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; 
     4051 j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; 
     4052 j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; 
     4053 j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; 
     4054 j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; 
     4055 j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; 
     4056 j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; 
     4057 j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; 
     4058 j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; j = i * 59; i = j * 15; j = i * 59; 
     4059 i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; 
     4060 i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; i = j * 15; j = i * 59; 
     4061    } 
     4062} 
     4063 
     4064/***************************************************/ 
     4065 
     4066int bug4389() 
     4067{     
     4068    string s; 
     4069    dchar c = '\u2348'; 
     4070    s ~= c; 
     4071    assert(s.length==3); 
     4072    dchar d = 'D'; 
     4073    s ~= d; 
     4074    assert(s.length==4); 
     4075    s = ""; 
     4076    s ~= c; 
     4077    assert(s.length==3); 
     4078    s ~= d; 
     4079    assert(s.length==4); 
     4080    string z; 
     4081    wchar w = '\u0300'; 
     4082    z ~= w; 
     4083    assert(z.length==2); 
     4084    z = ""; 
     4085    z ~= w; 
     4086    assert(z.length==2); 
     4087    return 1; 
     4088} 
     4089 
     4090static assert(bug4389()); 
     4091 
     4092// ICE(constfold.c) 
     4093int ice4389() 
     4094{ 
     4095    string s; 
     4096    dchar c = '\u2348'; 
     4097    s ~= c; 
     4098    s = s ~ "xxx"; 
     4099   return 1;  
     4100} 
     4101 
     4102static assert(ice4389()); 
     4103 
     4104// ICE(expression.c) 
     4105string ice4390() 
     4106{ 
     4107    string s; 
     4108    dchar c = '`'; 
     4109    s ~= c; 
     4110    s ~= c; 
     4111   return s;  
     4112} 
     4113 
     4114static assert(mixin(ice4390()) == ``); 
    38264115 
    38274116/***************************************************/ 
    38284117 
    38294118int main() 
    38304119{ 
    38314120    test1(); 
    38324121    test2(); 
    38334122    test3(); 
    38344123    test4(); 
    38354124    test5(); 
    38364125    test6(); 
    38374126    test7(); 
    38384127    test8(); 
    38394128    test9(); 
    38404129    test10(); 
    38414130    test11(); 
    38424131    test12(); 
    38434132    test13(); 
    38444133    test14(); 
    38454134    test15(); 
     
    40144303 
    40154304    test193(); 
    40164305    test194(); 
    40174306 
    40184307    test198(); 
    40194308 
    40204309    test200(); 
    40214310    test201(); 
    40224311    test202(); 
    40234312    test203(); 
    40244313 
    40254314//    test208(); 
    40264315 
    40274316    test210(); 
    40284317 
    40294318    test212(); 
    40304319    test213(); 
    40314320    test214(); 
    40324321    test215(); 
    40334322    test216(); 
     4323    test217(); 
     4324    test218(); 
     4325    test219(); 
     4326    test220(); 
     4327 
     4328    test222(); 
     4329    test223(); 
     4330    test224(); 
    40344331 
    40354332    writefln("Success"); 
    40364333    return 0; 
    40374334} 
    40384335