Skip to content

Commit 3462288

Browse files
committed
#1260: Weak reference tests updated.
1 parent 42d638c commit 3462288

12 files changed

+70
-40
lines changed

LanguageFeatures/FinalizationRegistry/ffi/WeakReference/expando_key_t04.dart

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ main() {
2626
Expect.throws(() {
2727
S s = p1.ref;
2828
WeakReference wr = WeakReference<S>(s);
29-
print(wr.target);
3029
});
3130
} finally {
3231
calloc.free(p1);
@@ -36,7 +35,6 @@ main() {
3635
Expect.throws(() {
3736
S s = p2.ref;
3837
WeakReference wr = WeakReference(s);
39-
print(wr.target);
4038
});
4139
} finally {
4240
calloc.free(p2);

LanguageFeatures/FinalizationRegistry/ffi/WeakReference/expando_key_t05.dart

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ main() {
2828
Expect.throws(() {
2929
U u = p1.ref;
3030
WeakReference wr = WeakReference<U>(u);
31-
print(wr.target);
3231
});
3332
} finally {
3433
calloc.free(p1);
@@ -38,7 +37,6 @@ main() {
3837
Expect.throws(() {
3938
U u = p2.ref;
4039
WeakReference wr = WeakReference(u);
41-
print(wr.target);
4240
});
4341
} finally {
4442
calloc.free(p2);

LanguageFeatures/FinalizationRegistry/ffi/WeakReference/weak_reference_target_t04.dart

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,24 +27,28 @@ class C {
2727

2828
dynamic d;
2929

30+
@pragma('vm:never-inline')
31+
C? getNullObject() => null;
32+
3033
@pragma('vm:never-inline')
3134
WeakReference<C> createWeakReference() {
3235
C? c = C(42);
3336
d = c;
3437
WeakReference<C> wr = WeakReference(c);
3538
Expect.equals(c, wr.target);
36-
c = null;
39+
c = getNullObject();
40+
Expect.isNull(c);
3741
triggerGc();
38-
Expect.isNotNull(wr.target);
3942
Expect.equals(d, wr.target);
4043
return wr;
4144
}
4245

4346
main() {
4447
WeakReference<C> wr = createWeakReference();
4548
triggerGc();
46-
Expect.isNotNull(wr.target);
47-
d = 42;
49+
Expect.equals("C(42)", wr.target.toString());
50+
d = getNullObject();
51+
Expect.isNull(d);
4852
triggerGc();
4953
Expect.isNull(wr.target);
5054
}

LanguageFeatures/FinalizationRegistry/ffi/WeakReference/weak_reference_target_t05.dart

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,25 +25,35 @@ class C {
2525
String toString() => "C($id)";
2626
}
2727

28-
main() async {
28+
@pragma('vm:never-inline')
29+
C? getNullObject() => null;
30+
31+
@pragma('vm:never-inline')
32+
Future<WeakReference> createWeakReference() async {
2933
C? c1 = C(42);
3034
WeakReference<C> wr = WeakReference(c1);
3135
asyncStart();
3236
Future<C?>.delayed(Duration(milliseconds: 1), () => c1).then((C? c2) async {
33-
Expect.isNotNull(wr.target);
3437
Expect.equals(c1, wr.target);
3538
triggerGc();
3639
await Future.delayed(Duration(seconds: 1));
3740
Expect.isNotNull(wr.target);
38-
c2 = null;
41+
// Need to be sure that indeed c2 is null and the code is not optimized
42+
c2 = getNullObject();
43+
Expect.isNull(c2);
3944
triggerGc();
4045
Expect.isNull(wr.target);
4146
asyncEnd();
4247
});
4348
await Future.delayed(Duration(milliseconds: 10));
44-
Expect.isNotNull(wr.target);
4549
Expect.equals(c1, wr.target);
46-
c1 = null;
50+
c1 = getNullObject();
51+
Expect.isNull(c1);
52+
return wr;
53+
}
54+
55+
main() async {
56+
WeakReference wr = await createWeakReference();
4757
triggerGc();
48-
Expect.isNotNull(wr.target);
58+
Expect.equals("C(42)", wr.target.toString());
4959
}

LanguageFeatures/FinalizationRegistry/ffi/WeakReference/weak_reference_target_t06.dart

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,24 +25,32 @@ class C {
2525
String toString() => "C($id)";
2626
}
2727

28-
main() async {
28+
@pragma('vm:never-inline')
29+
C? getNullObject() => null;
30+
31+
@pragma('vm:never-inline')
32+
Future<WeakReference> createWeakReference() async {
2933
C? c1 = C(42);
3034
WeakReference<C> wr = WeakReference(c1);
3135
asyncStart();
3236
Future<C?>.delayed(Duration(milliseconds: 1), () => c1).then((C? c2) async {
33-
Expect.isNotNull(wr.target);
3437
Expect.equals(c1, wr.target);
3538
triggerGc();
36-
Expect.isNotNull(wr.target);
37-
c2 = null;
39+
Expect.equals(c1, wr.target);
40+
// Need to be sure that indeed c2 is null and the code is not optimized
41+
c2 = getNullObject();
42+
Expect.isNull(c2);
3843
triggerGc();
39-
Expect.isNotNull(wr.target);
44+
Expect.equals(c1, wr.target);
4045
asyncEnd();
4146
});
42-
Expect.isNotNull(wr.target);
4347
Expect.equals(c1, wr.target);
48+
return wr;
49+
}
50+
51+
main() async {
52+
WeakReference wr = await createWeakReference();
4453
await Future.delayed(Duration(seconds: 1));
45-
c1 = null;
4654
triggerGc();
4755
Expect.isNull(wr.target);
4856
}

LanguageFeatures/FinalizationRegistry/ffi/WeakReference/weak_reference_target_t07.dart

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,24 +27,32 @@ class C {
2727

2828
C? c1;
2929

30+
@pragma('vm:never-inline')
31+
C? getNullObject() => null;
32+
33+
@pragma('vm:never-inline')
34+
C? getC() => C(0);
35+
3036
@pragma('vm:never-inline')
3137
WeakReference<C> createWeakReference() {
3238
C? c2 = C(42);
3339
c1 = c2;
3440
WeakReference<C> wr = WeakReference(c2);
3541
Expect.equals(c2, wr.target);
36-
c2 = null;
42+
// Need to be sure that indeed c2 is null and the code is not optimized
43+
c2 = getNullObject();
44+
Expect.isNull(c2);
3745
triggerGc();
38-
Expect.isNotNull(wr.target);
3946
Expect.equals(c1, wr.target);
4047
return wr;
4148
}
4249

4350
main() {
4451
WeakReference<C> wr = createWeakReference();
4552
triggerGc();
46-
Expect.isNotNull(wr.target);
47-
c1 = C(-1);
53+
Expect.equals("C(42)", wr.target.toString());
54+
c1 = getC();
55+
Expect.isNotNull(c1);
4856
triggerGc();
4957
Expect.isNull(wr.target);
5058
}

LanguageFeatures/FinalizationRegistry/ffi/WeakReference/weak_reference_target_t08.dart

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,17 @@ List<WeakReference<C>> createWeakReference() {
3838
return [wr1, wr2];
3939
}
4040

41+
@pragma('vm:never-inline')
42+
void checkReferences(List<WeakReference<C>> refs) {
43+
C? c1 = refs[0].target;
44+
C? c2 = refs[1].target;
45+
Expect.isTrue(c1 == null || c1.toString() == "C(42)");
46+
Expect.isTrue(c2 == null || c2.toString() == "C(42)");
47+
}
48+
4149
main() {
4250
List<WeakReference<C>> refs = createWeakReference();
43-
Expect.isNotNull(refs[0].target);
44-
Expect.isNotNull(refs[1].target);
51+
checkReferences(refs);
4552
triggerGc();
4653
Expect.isNull(refs[0].target);
4754
Expect.isNull(refs[1].target);

LanguageFeatures/FinalizationRegistry/ffi/WeakReference/weak_reference_target_t09.dart

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,19 @@ WeakReference<C> createWeakReference() {
3030
C c = C(42);
3131
WeakReference<C> wr = WeakReference(c);
3232
Future<C>.delayed(Duration(milliseconds: 10), () => c);
33-
c = C(-1);
3433
return wr;
3534
}
3635

37-
main() {
36+
@pragma('vm:never-inline')
37+
void checkReference(WeakReference<C> ref) {
38+
C? c = ref.target;
39+
Expect.isTrue(c == null || c.toString() == "C(42)");
40+
}
41+
42+
main() async {
3843
WeakReference<C> wr = createWeakReference();
39-
Expect.isNotNull(wr.target);
44+
checkReference(wr);
45+
await Future.delayed(Duration(seconds: 1));
4046
triggerGc();
4147
Expect.isNull(wr.target);
4248
}

LanguageFeatures/FinalizationRegistry/no_ffi/WeakReference/expando_key_t01.dart

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,9 @@ import '../../../../Utils/expect.dart';
1616
main() {
1717
Expect.throws(() {
1818
WeakReference wr = WeakReference<String>("Lily was here");
19-
print(wr.target);
2019
});
2120
Expect.throws(() {
2221
String s = "Lily was here";
2322
WeakReference wr = WeakReference(s);
24-
print(wr.target);
2523
});
2624
}

LanguageFeatures/FinalizationRegistry/no_ffi/WeakReference/expando_key_t02.dart

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,26 +16,20 @@ import '../../../../Utils/expect.dart';
1616
main() {
1717
Expect.throws(() {
1818
WeakReference wr = WeakReference<int>(42);
19-
print(wr.target);
2019
});
2120
Expect.throws(() {
2221
WeakReference wr = WeakReference(42);
23-
print(wr.target);
2422
});
2523
Expect.throws(() {
2624
WeakReference wr = WeakReference<double>(3.14);
27-
print(wr.target);
2825
});
2926
Expect.throws(() {
3027
WeakReference wr = WeakReference(3.14);
31-
print(wr.target);
3228
});
3329
Expect.throws(() {
3430
WeakReference wr = WeakReference<num>(42);
35-
print(wr.target);
3631
});
3732
Expect.throws(() {
3833
WeakReference wr = WeakReference<num>(3.14);
39-
print(wr.target);
4034
});
4135
}

LanguageFeatures/FinalizationRegistry/no_ffi/WeakReference/expando_key_t06.dart

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,5 @@ main() {
1616
Expect.throws(() {
1717
dynamic d = null;
1818
WeakReference wr = WeakReference(d);
19-
print(wr.target);
2019
});
2120
}

LanguageFeatures/FinalizationRegistry/no_ffi/WeakReference/weak_reference_target_t01.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ class C {
2121
}
2222

2323
main() {
24-
C? c = C(42);
24+
C c = C(42);
2525
WeakReference<C> wr = WeakReference(c);
2626
Expect.equals(c, wr.target);
2727
}

0 commit comments

Comments
 (0)