@@ -1051,9 +1051,9 @@ unittest
1051
1051
{
1052
1052
int i = 0 ;
1053
1053
int * p = null ;
1054
- assert (! p.pointsTo (i));
1054
+ assert (! p.doesPointTo (i));
1055
1055
p = &i;
1056
- assert ( p.pointsTo (i));
1056
+ assert ( p.doesPointTo (i));
1057
1057
}
1058
1058
1059
1059
// / Structs and Unions
@@ -1069,9 +1069,9 @@ unittest
1069
1069
1070
1070
// structs and unions "own" their members
1071
1071
// pointsTo will answer true if one of the members pointsTo.
1072
- assert (! s.pointsTo (s.v)); // s.v is just v member of s, so not pointed.
1073
- assert ( s.p.pointsTo (i)); // i is pointed by s.p.
1074
- assert ( s .pointsTo (i)); // which means i is pointed by s itself.
1072
+ assert (! s.doesPointTo (s.v)); // s.v is just v member of s, so not pointed.
1073
+ assert ( s.p.doesPointTo (i)); // i is pointed by s.p.
1074
+ assert ( s .doesPointTo (i)); // which means i is pointed by s itself.
1075
1075
1076
1076
// Unions will behave exactly the same. Points to will check each "member"
1077
1077
// individually, even if they share the same memory
@@ -1087,23 +1087,23 @@ unittest
1087
1087
int * [1 ] arrp = [&i];
1088
1088
1089
1089
// A slice points to all of its members:
1090
- assert ( slice.pointsTo (slice[3 ]));
1091
- assert (! slice[0 .. 2 ].pointsTo (slice[3 ])); // Object 3 is outside of the slice [0 .. 2]
1090
+ assert ( slice.doesPointTo (slice[3 ]));
1091
+ assert (! slice[0 .. 2 ].doesPointTo (slice[3 ])); // Object 3 is outside of the slice [0 .. 2]
1092
1092
1093
1093
// Note that a slice will not take into account what its members point to.
1094
- assert ( slicep[0 ].pointsTo (i));
1095
- assert (! slicep .pointsTo (i));
1094
+ assert ( slicep[0 ].doesPointTo (i));
1095
+ assert (! slicep .doesPointTo (i));
1096
1096
1097
1097
// static arrays are objects that own their members, just like structs:
1098
- assert (! arr.pointsTo (arr[0 ])); // arr[0] is just a member of arr, so not pointed.
1099
- assert ( arrp[0 ].pointsTo (i)); // i is pointed by arrp[0].
1100
- assert ( arrp .pointsTo (i)); // which means i is pointed by arrp itslef.
1098
+ assert (! arr.doesPointTo (arr[0 ])); // arr[0] is just a member of arr, so not pointed.
1099
+ assert ( arrp[0 ].doesPointTo (i)); // i is pointed by arrp[0].
1100
+ assert ( arrp .doesPointTo (i)); // which means i is pointed by arrp itslef.
1101
1101
1102
1102
// Notice the difference between static and dynamic arrays:
1103
- assert (! arr .pointsTo (arr[0 ]));
1104
- assert ( arr[].pointsTo (arr[0 ]));
1105
- assert ( arrp .pointsTo (i));
1106
- assert (! arrp[].pointsTo (i));
1103
+ assert (! arr .doesPointTo (arr[0 ]));
1104
+ assert ( arr[].doesPointTo (arr[0 ]));
1105
+ assert ( arrp .doesPointTo (i));
1106
+ assert (! arrp[].doesPointTo (i));
1107
1107
}
1108
1108
1109
1109
// / Classes
@@ -1119,71 +1119,71 @@ unittest
1119
1119
C b = a;
1120
1120
// Classes are a bit particular, as they are treated like simple pointers
1121
1121
// to a class payload.
1122
- assert ( a.p.pointsTo (i)); // a.p points to i.
1123
- assert (! a .pointsTo (i)); // Yet a itself does not point i.
1122
+ assert ( a.p.doesPointTo (i)); // a.p points to i.
1123
+ assert (! a .doesPointTo (i)); // Yet a itself does not point i.
1124
1124
1125
1125
// To check the class payload itself, iterate on its members:
1126
1126
()
1127
1127
{
1128
1128
foreach (index, _; FieldTypeTuple! C)
1129
- if (pointsTo (a.tupleof[index], i))
1129
+ if (doesPointTo (a.tupleof[index], i))
1130
1130
return ;
1131
1131
assert (0 );
1132
1132
}();
1133
1133
1134
1134
// To check if a class points a specific payload, a direct memmory check can be done:
1135
1135
auto aLoc = cast (ubyte [__traits(classInstanceSize, C)]* ) a;
1136
- assert (b.pointsTo (* aLoc)); // b points to where a is pointing
1136
+ assert (b.doesPointTo (* aLoc)); // b points to where a is pointing
1137
1137
}
1138
1138
1139
1139
unittest
1140
1140
{
1141
1141
struct S1 { int a; S1 * b; }
1142
1142
S1 a1;
1143
1143
S1 * p = &a1;
1144
- assert (pointsTo (p, a1));
1144
+ assert (doesPointTo (p, a1));
1145
1145
1146
1146
S1 a2;
1147
1147
a2.b = &a1;
1148
- assert (pointsTo (a2, a1));
1148
+ assert (doesPointTo (a2, a1));
1149
1149
1150
1150
struct S3 { int [10 ] a; }
1151
1151
S3 a3;
1152
1152
auto a4 = a3.a[2 .. 3 ];
1153
- assert (pointsTo (a4, a3));
1153
+ assert (doesPointTo (a4, a3));
1154
1154
1155
1155
auto a5 = new double [4 ];
1156
1156
auto a6 = a5[1 .. 2 ];
1157
- assert (! pointsTo (a5, a6));
1157
+ assert (! doesPointTo (a5, a6));
1158
1158
1159
1159
auto a7 = new double [3 ];
1160
1160
auto a8 = new double [][1 ];
1161
1161
a8[0 ] = a7;
1162
- assert (! pointsTo (a8[0 ], a8[0 ]));
1162
+ assert (! doesPointTo (a8[0 ], a8[0 ]));
1163
1163
1164
1164
// don't invoke postblit on subobjects
1165
1165
{
1166
1166
static struct NoCopy { this (this ) { assert (0 ); } }
1167
1167
static struct Holder { NoCopy a, b, c; }
1168
1168
Holder h;
1169
- cast (void )pointsTo (h, h);
1169
+ cast (void )doesPointTo (h, h);
1170
1170
}
1171
1171
1172
1172
shared S3 sh3;
1173
1173
shared sh3sub = sh3.a[];
1174
- assert (pointsTo (sh3sub, sh3));
1174
+ assert (doesPointTo (sh3sub, sh3));
1175
1175
1176
1176
int [] darr = [1 , 2 , 3 , 4 ];
1177
1177
1178
1178
// dynamic arrays don't point to each other, or slices of themselves
1179
- assert (! pointsTo (darr, darr));
1180
- assert (! pointsTo (darr[0 .. 1 ], darr));
1179
+ assert (! doesPointTo (darr, darr));
1180
+ assert (! doesPointTo (darr[0 .. 1 ], darr));
1181
1181
1182
1182
// But they do point their elements
1183
1183
foreach (i; 0 .. 4 )
1184
- assert (pointsTo (darr, darr[i]));
1185
- assert (pointsTo (darr[0 .. 3 ], darr[2 ]));
1186
- assert (! pointsTo (darr[0 .. 3 ], darr[3 ]));
1184
+ assert (doesPointTo (darr, darr[i]));
1185
+ assert (doesPointTo (darr[0 .. 3 ], darr[2 ]));
1186
+ assert (! doesPointTo (darr[0 .. 3 ], darr[3 ]));
1187
1187
}
1188
1188
1189
1189
unittest
@@ -1195,22 +1195,22 @@ unittest
1195
1195
1196
1196
// Standard array
1197
1197
int [2 ] k;
1198
- assert (! pointsTo (k, k)); // an array doesn't point to itself
1198
+ assert (! doesPointTo (k, k)); // an array doesn't point to itself
1199
1199
// Technically, k doesn't point its elements, although it does alias them
1200
- assert (! pointsTo (k, k[0 ]));
1201
- assert (! pointsTo (k, k[1 ]));
1200
+ assert (! doesPointTo (k, k[0 ]));
1201
+ assert (! doesPointTo (k, k[1 ]));
1202
1202
// But an extracted slice will point to the same array.
1203
- assert (pointsTo (k[], k));
1204
- assert (pointsTo (k[], k[1 ]));
1203
+ assert (doesPointTo (k[], k));
1204
+ assert (doesPointTo (k[], k[1 ]));
1205
1205
1206
1206
// An array of pointers
1207
1207
int * [2 ] pp;
1208
1208
int a;
1209
1209
int b;
1210
1210
pp[0 ] = &a;
1211
- assert ( pointsTo (pp, a)); // The array contains a pointer to a
1212
- assert (! pointsTo (pp, b)); // The array does NOT contain a pointer to b
1213
- assert (! pointsTo (pp, pp)); // The array does not point itslef
1211
+ assert ( doesPointTo (pp, a)); // The array contains a pointer to a
1212
+ assert (! doesPointTo (pp, b)); // The array does NOT contain a pointer to b
1213
+ assert (! doesPointTo (pp, pp)); // The array does not point itslef
1214
1214
1215
1215
// A struct containing a static array of pointers
1216
1216
static struct S
@@ -1219,19 +1219,19 @@ unittest
1219
1219
}
1220
1220
S s;
1221
1221
s.p[0 ] = &a;
1222
- assert ( pointsTo (s, a)); // The struct contains an array that points a
1223
- assert (! pointsTo (s, b)); // But doesn't point b
1224
- assert (! pointsTo (s, s)); // The struct doesn't actually point itslef.
1222
+ assert ( doesPointTo (s, a)); // The struct contains an array that points a
1223
+ assert (! doesPointTo (s, b)); // But doesn't point b
1224
+ assert (! doesPointTo (s, s)); // The struct doesn't actually point itslef.
1225
1225
1226
1226
// An array containing structs that have pointers
1227
1227
static struct SS
1228
1228
{
1229
1229
int * p;
1230
1230
}
1231
1231
SS [2 ] ss = [SS (&a), SS (null )];
1232
- assert ( pointsTo (ss, a)); // The array contains a struct that points to a
1233
- assert (! pointsTo (ss, b)); // The array doesn't contains a struct that points to b
1234
- assert (! pointsTo (ss, ss)); // The array doesn't point itself.
1232
+ assert ( doesPointTo (ss, a)); // The array contains a struct that points to a
1233
+ assert (! doesPointTo (ss, b)); // The array doesn't contains a struct that points to b
1234
+ assert (! doesPointTo (ss, ss)); // The array doesn't point itself.
1235
1235
}
1236
1236
1237
1237
@@ -1254,18 +1254,24 @@ unittest //Unions
1254
1254
1255
1255
U u;
1256
1256
S s;
1257
- assert (! pointsTo(u, i));
1258
- assert (! pointsTo(s, i));
1257
+ assert (! doesPointTo(u, i));
1258
+ assert (! doesPointTo(s, i));
1259
+ assert (! mayPointTo(u, i));
1260
+ assert (! mayPointTo(s, i));
1259
1261
1260
1262
u.asPointer = &i;
1261
1263
s.asPointer = &i;
1262
- assert ( pointsTo(u, i));
1263
- assert ( pointsTo(s, i));
1264
+ assert (! doesPointTo(u, i));
1265
+ assert (! doesPointTo(s, i));
1266
+ assert ( mayPointTo(u, i));
1267
+ assert ( mayPointTo(s, i));
1264
1268
1265
1269
u.asInt = cast (size_t )&i;
1266
1270
s.asInt = cast (size_t )&i;
1267
- assert ( pointsTo(u, i)); // logical false positive
1268
- assert ( pointsTo(s, i)); // logical false positive
1271
+ assert (! doesPointTo(u, i));
1272
+ assert (! doesPointTo(s, i));
1273
+ assert ( mayPointTo(u, i));
1274
+ assert ( mayPointTo(s, i));
1269
1275
}
1270
1276
1271
1277
unittest // Classes
@@ -1276,9 +1282,9 @@ unittest //Classes
1276
1282
int * p;
1277
1283
}
1278
1284
A a = new A, b = a;
1279
- assert (! pointsTo (a, b)); // a does not point to b
1285
+ assert (! doesPointTo (a, b)); // a does not point to b
1280
1286
a.p = &i;
1281
- assert (! pointsTo (a, i)); // a does not point to i
1287
+ assert (! doesPointTo (a, i)); // a does not point to i
1282
1288
}
1283
1289
unittest // alias this test
1284
1290
{
@@ -1292,10 +1298,10 @@ unittest //alias this test
1292
1298
}
1293
1299
assert (is (S : int * ));
1294
1300
S s = S(&j);
1295
- assert (! pointsTo (s, i));
1296
- assert ( pointsTo (s, j));
1297
- assert ( pointsTo (cast (int * )s, i));
1298
- assert (! pointsTo (cast (int * )s, j));
1301
+ assert (! doesPointTo (s, i));
1302
+ assert ( doesPointTo (s, j));
1303
+ assert ( doesPointTo (cast (int * )s, i));
1304
+ assert (! doesPointTo (cast (int * )s, j));
1299
1305
}
1300
1306
1301
1307
/* ********************
0 commit comments