Skip to content

Commit 9491c6c

Browse files
rakudramacommit-bot@chromium.org
authored and
commit-bot@chromium.org
committed
[dart2js] Fix codegen/variance_subtype_cast_test
- We don't need to use the type to check for the presence and absence of a check, '._as(' is sufficient. - Added ability of Absent/Present checker to use regexps Change-Id: Ie1ecaafcaa3d5121b19ffd77564d800e0c72bd4f Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/147020 Reviewed-by: Joshua Litt <joshualitt@google.com> Commit-Queue: Stephen Adams <sra@google.com>
1 parent ce62ad2 commit 9491c6c

File tree

2 files changed

+19
-12
lines changed

2 files changed

+19
-12
lines changed

tests/compiler/dart2js/codegen/variance_subtype_cast_test.dart

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@ class LegacyCovariant<T> {
1414
foo(param) {
1515
LegacyCovariant<num> c = LegacyCovariant<num>();
1616
(c as LegacyCovariant<int>).method();
17-
// present: 'LegacyCovariant_int._as'
17+
// present: '._as('
18+
// present: /(legacy_)?LegacyCovariant_(legacy_)?int._as/
1819
}
1920
""";
2021

@@ -25,7 +26,7 @@ class LegacyCovariant<T> {
2526
foo(param) {
2627
LegacyCovariant<num> c = LegacyCovariant<num>();
2728
(c as LegacyCovariant<Object>).method();
28-
// absent: 'LegacyCovariant_Object._as'
29+
// absent: '._as('
2930
}
3031
""";
3132

@@ -36,7 +37,8 @@ class Covariant<out T> {
3637
foo(param) {
3738
Covariant<num> c = Covariant<num>();
3839
(c as Covariant<int>).method();
39-
// present: 'Covariant_int._as'
40+
// present: '._as('
41+
// present: /(legacy_)?Covariant_(legacy_)?int._as/
4042
}
4143
""";
4244

@@ -47,7 +49,7 @@ class Covariant<out T> {
4749
foo(param) {
4850
Covariant<num> c = Covariant<num>();
4951
(c as Covariant<Object>).method();
50-
// absent: 'Covariant_Object._as'
52+
// absent: '._as('
5153
}
5254
""";
5355

@@ -58,7 +60,8 @@ class Contravariant<in T> {
5860
foo(param) {
5961
Contravariant<num> c = Contravariant<num>();
6062
(c as Contravariant<Object>).method();
61-
// present: 'Contravariant_Object._as'
63+
// present: '._as('
64+
// present: /(legacy_)?Contravariant_(legacy_)?Object._as/
6265
}
6366
""";
6467

@@ -69,7 +72,7 @@ class Contravariant<in T> {
6972
foo(param) {
7073
Contravariant<num> c = Contravariant<num>();
7174
(c as Contravariant<int>).method();
72-
// absent: 'Contravariant_int._as'
75+
// absent: '._as('
7376
}
7477
""";
7578

@@ -80,7 +83,8 @@ class Invariant<inout T> {
8083
foo(param) {
8184
Invariant<num> i = Invariant<num>();
8285
(i as Invariant<Object>).method();
83-
// present: 'Invariant_Object._as'
86+
// present: '._as('
87+
// present: /(legacy_)?Invariant_(legacy_)?Object._as/
8488
}
8589
""";
8690

@@ -91,7 +95,8 @@ class Invariant<inout T> {
9195
foo(param) {
9296
Invariant<num> i = Invariant<num>();
9397
(i as Invariant<int>).method();
94-
// present: 'Invariant_int._as'
98+
// present: '._as('
99+
// present: /(legacy_)?Invariant_(legacy_)?int._as/
95100
}
96101
""";
97102

@@ -102,7 +107,7 @@ class Invariant<inout T> {
102107
foo(param) {
103108
Invariant<num> i = Invariant<num>();
104109
(i as Invariant<num>).method();
105-
// absent: 'Invariant_num._as'
110+
// absent: '._as('
106111
}
107112
""";
108113

tests/compiler/dart2js/helpers/compiler_helper.dart

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,8 @@ checkerForAbsentPresent(String test) {
220220
}
221221
for (Match match in matches) {
222222
String directive = match.group(1);
223-
String pattern = match.groups([2, 3]).where((s) => s != null).single;
223+
Pattern pattern = match.groups([2, 3, 4]).where((s) => s != null).single;
224+
if (match.group(4) != null) pattern = RegExp(pattern);
224225
if (directive == 'present') {
225226
Expect.isTrue(generated.contains(pattern),
226227
"Cannot find '$pattern' in:\n$generated");
@@ -236,5 +237,6 @@ checkerForAbsentPresent(String test) {
236237
}
237238

238239
RegExp _directivePattern = new RegExp(
239-
// \1 \2 \3
240-
r'''// *(present|absent): *(?:"([^"]*)"|'([^'']*)')''', multiLine: true);
240+
// \1 \2 \3 \4
241+
r'''// *(present|absent): *(?:"([^"]*)"|'([^'']*)'|/(.*)/)''',
242+
multiLine: true);

0 commit comments

Comments
 (0)