| | 3826 | |
|---|
| | 3827 | /***************************************************/ |
|---|
| | 3828 | |
|---|
| | 3829 | void bug5218c(char [3] s) {} |
|---|
| | 3830 | void bug5218w(wchar [3] s) {} |
|---|
| | 3831 | void bug5218d(dchar [3] s) {} |
|---|
| | 3832 | |
|---|
| | 3833 | void test217() |
|---|
| | 3834 | { |
|---|
| | 3835 | bug5218c("abc"); |
|---|
| | 3836 | bug5218w("abc"w); |
|---|
| | 3837 | bug5218d("abc"d); |
|---|
| | 3838 | } |
|---|
| | 3839 | |
|---|
| | 3840 | /***************************************************/ |
|---|
| | 3841 | // 2954 |
|---|
| | 3842 | |
|---|
| | 3843 | void 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 | |
|---|
| | 3859 | template T219(U) { |
|---|
| | 3860 | class C {} |
|---|
| | 3861 | } |
|---|
| | 3862 | |
|---|
| | 3863 | void 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 | |
|---|
| | 3878 | class D220 {} |
|---|
| | 3879 | |
|---|
| | 3880 | template T220(U) { |
|---|
| | 3881 | class C { this() { } } |
|---|
| | 3882 | } |
|---|
| | 3883 | |
|---|
| | 3884 | void 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 | |
|---|
| | 3898 | const struct S5110 |
|---|
| | 3899 | { |
|---|
| | 3900 | static int value; |
|---|
| | 3901 | } |
|---|
| | 3902 | |
|---|
| | 3903 | static assert(is(typeof(S5110.value) == int)); |
|---|
| | 3904 | |
|---|
| | 3905 | /***************************************************/ |
|---|
| | 3906 | |
|---|
| | 3907 | class C5110 |
|---|
| | 3908 | { |
|---|
| | 3909 | override: |
|---|
| | 3910 | string toString() { return ""; } |
|---|
| | 3911 | |
|---|
| | 3912 | class Nested |
|---|
| | 3913 | { |
|---|
| | 3914 | void gun() {} |
|---|
| | 3915 | } |
|---|
| | 3916 | } |
|---|
| | 3917 | |
|---|
| | 3918 | /***************************************************/ |
|---|
| | 3919 | // 5145 |
|---|
| | 3920 | |
|---|
| | 3921 | interface I221{ |
|---|
| | 3922 | void bla(); |
|---|
| | 3923 | } |
|---|
| | 3924 | |
|---|
| | 3925 | interface J221 |
|---|
| | 3926 | { |
|---|
| | 3927 | I221 sync (); |
|---|
| | 3928 | } |
|---|
| | 3929 | |
|---|
| | 3930 | class A221 : B221 |
|---|
| | 3931 | { |
|---|
| | 3932 | final override I221 sync() |
|---|
| | 3933 | in { assert( valid ); } |
|---|
| | 3934 | body |
|---|
| | 3935 | { |
|---|
| | 3936 | return null; |
|---|
| | 3937 | } |
|---|
| | 3938 | } |
|---|
| | 3939 | |
|---|
| | 3940 | class 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 | |
|---|
| | 3957 | template Bug3276(bool B) { |
|---|
| | 3958 | static if (B) |
|---|
| | 3959 | alias Bug3276!(false) Bug3276; |
|---|
| | 3960 | else |
|---|
| | 3961 | alias double Bug3276; |
|---|
| | 3962 | } |
|---|
| | 3963 | |
|---|
| | 3964 | template Bug3276_b(alias W) { |
|---|
| | 3965 | alias W!(true) Bug3276_b; |
|---|
| | 3966 | } |
|---|
| | 3967 | |
|---|
| | 3968 | alias Bug3276_b!(Bug3276) Bug3276_c; |
|---|
| | 3969 | |
|---|
| | 3970 | /***************************************************/ |
|---|
| | 3971 | // 5294 |
|---|
| | 3972 | |
|---|
| | 3973 | void foo222(int) {} |
|---|
| | 3974 | |
|---|
| | 3975 | void 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 | |
|---|
| | 3988 | void foo223(long x,long a,long b,long c,long d,long e,long f) |
|---|
| | 3989 | { |
|---|
| | 3990 | assert(x == 0x123456789ABCDEF0); |
|---|
| | 3991 | } |
|---|
| | 3992 | |
|---|
| | 3993 | void test223() |
|---|
| | 3994 | { |
|---|
| | 3995 | foo223(0x123456789ABCDEF0,2,3,4,5,6,7); |
|---|
| | 3996 | } |
|---|
| | 3997 | |
|---|
| | 3998 | /***************************************************/ |
|---|
| | 3999 | // 4379 |
|---|
| | 4000 | |
|---|
| | 4001 | template BigTuple(U...) { |
|---|
| | 4002 | alias U BigTuple; |
|---|
| | 4003 | } |
|---|
| | 4004 | |
|---|
| | 4005 | alias |
|---|
| | 4006 | BigTuple!(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, |
|---|
| | 4007 | 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,1, |
|---|
| | 4008 | 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,1, |
|---|
| | 4009 | 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,1, |
|---|
| | 4010 | 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,1, |
|---|
| | 4011 | 1,1,1,1,1,1) Tuple4379; |
|---|
| | 4012 | |
|---|
| | 4013 | void test224() |
|---|
| | 4014 | { |
|---|
| | 4015 | foreach(x; Tuple4379) { } |
|---|
| | 4016 | } |
|---|
| | 4017 | |
|---|
| | 4018 | /***************************************************/ |
|---|
| | 4019 | // 3681 |
|---|
| | 4020 | |
|---|
| | 4021 | public 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 | |
|---|
| | 4066 | int 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 | |
|---|
| | 4090 | static assert(bug4389()); |
|---|
| | 4091 | |
|---|
| | 4092 | // ICE(constfold.c) |
|---|
| | 4093 | int ice4389() |
|---|
| | 4094 | { |
|---|
| | 4095 | string s; |
|---|
| | 4096 | dchar c = '\u2348'; |
|---|
| | 4097 | s ~= c; |
|---|
| | 4098 | s = s ~ "xxx"; |
|---|
| | 4099 | return 1; |
|---|
| | 4100 | } |
|---|
| | 4101 | |
|---|
| | 4102 | static assert(ice4389()); |
|---|
| | 4103 | |
|---|
| | 4104 | // ICE(expression.c) |
|---|
| | 4105 | string ice4390() |
|---|
| | 4106 | { |
|---|
| | 4107 | string s; |
|---|
| | 4108 | dchar c = '`'; |
|---|
| | 4109 | s ~= c; |
|---|
| | 4110 | s ~= c; |
|---|
| | 4111 | return s; |
|---|
| | 4112 | } |
|---|
| | 4113 | |
|---|
| | 4114 | static assert(mixin(ice4390()) == ``); |
|---|