#1260. Fixed tests that check attachment of the same object to finalizer several times
diff --git a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A06_t01.dart b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A06_t01.dart
index 9055584..a642c30 100644
--- a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A06_t01.dart
+++ b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A06_t01.dart
@@ -17,10 +17,11 @@
Nonce(this.value);
}
-final finalizerTokens = <String>{};
-
+final finalizerTokens = <String>[];
+int count = 0;
final Finalizer finalizer = Finalizer((token) {
finalizerTokens.add(token);
+ count++;
});
@pragma('vm:never-inline')
@@ -35,5 +36,8 @@
attachToFinalizer(Nonce(1), Nonce(2), Nonce(3));
await triggerGcWithDelay();
- Expect.setEquals({"Finalization token"}, finalizerTokens);
+ Expect.listEquals(
+ ["Finalization token", "Finalization token", "Finalization token"],
+ finalizerTokens);
+ Expect.equals(3, count);
}
diff --git a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A06_t02.dart b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A06_t02.dart
index ef7e187..48b52ed 100644
--- a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A06_t02.dart
+++ b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A06_t02.dart
@@ -18,11 +18,17 @@
}
final finalizerTokens = <String>{};
-int cnt = 0;
+int count = 0;
final Finalizer finalizer = Finalizer((token) {
- cnt++;
- finalizerTokens.add(token);
+ if (count >= 0) {
+ if (finalizerTokens.contains(token)) {
+ count = -1;
+ } else {
+ finalizerTokens.add(token);
+ count++;
+ }
+ }
});
@pragma('vm:never-inline')
@@ -36,13 +42,10 @@
main() async {
Nonce token = Nonce(1);
attachToFinalizer(token);
- for (int i = 0; i < 5; i++) {
- await triggerGcWithDelay();
- Expect.setEquals({
- "Finalization token 1",
- "Finalization token 2",
- "Finalization token 3"
- }, finalizerTokens);
- }
- Expect.equals(1, cnt);
+
+ await triggerGcWithDelay();
+ Expect.setEquals(
+ {"Finalization token 1", "Finalization token 2", "Finalization token 3"},
+ finalizerTokens);
+ Expect.equals(3, count);
}
diff --git a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A06_t03.dart b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A06_t03.dart
index 0d1da1c..ac45f23 100644
--- a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A06_t03.dart
+++ b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A06_t03.dart
@@ -30,11 +30,11 @@
finalizer.attach(value, "Token 1", detach: token1);
finalizer.attach(value, "Token 2", detach: token2);
finalizer.attach(value, "Token 3", detach: token3);
- finalizer.attach(value, "Token 1", detach: token1);
+ finalizer.attach(value, "Token 1", detach: token3);
finalizer.attach(value, "Token 2", detach: token2);
- finalizer.attach(value, "Token 3", detach: token3);
- finalizer.attach(value, "Token 1", detach: token1);
- finalizer.attach(value, "Token 2", detach: token2);
+ finalizer.attach(value, "Token 3", detach: token1);
+ finalizer.attach(value, "Token 1", detach: token2);
+ finalizer.attach(value, "Token 2", detach: token1);
finalizer.attach(value, "Token 3", detach: token3);
}