Skip to content

Commit f369194

Browse files
johnniwinthercommit-bot@chromium.org
authored andcommitted
[cfe] Add test for extension on Never
Closes #42180 Change-Id: I690d3419d94bfc593f77f0cea75274cb20182ba2 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/151229 Reviewed-by: Dmitry Stefantsov <[email protected]> Commit-Queue: Johnni Winther <[email protected]>
1 parent 967deb8 commit f369194

8 files changed

+113
-0
lines changed
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
2+
// for details. All rights reserved. Use of this source code is governed by a
3+
// BSD-style license that can be found in the LICENSE file.
4+
5+
extension Extension on Never {
6+
extensionMethod() {}
7+
}
8+
9+
implicitAccess(Never never) {
10+
never.extensionMethod();
11+
never.missingMethod();
12+
}
13+
14+
explicitAccess(Never never) {
15+
Extension(never).extensionMethod();
16+
}
17+
18+
main() {}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
library /*isNonNullableByDefault*/;
2+
import self as self;
3+
4+
extension Extension on Never {
5+
method extensionMethod = self::Extension|extensionMethod;
6+
tearoff extensionMethod = self::Extension|get#extensionMethod;
7+
}
8+
static method Extension|extensionMethod(final Never #this) → dynamic
9+
;
10+
static method Extension|get#extensionMethod(final Never #this) → () → dynamic
11+
return () → dynamic => self::Extension|extensionMethod(#this);
12+
static method implicitAccess(Never never) → dynamic
13+
;
14+
static method explicitAccess(Never never) → dynamic
15+
;
16+
static method main() → dynamic
17+
;
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
library /*isNonNullableByDefault*/;
2+
import self as self;
3+
4+
extension Extension on Never {
5+
method extensionMethod = self::Extension|extensionMethod;
6+
tearoff extensionMethod = self::Extension|get#extensionMethod;
7+
}
8+
static method Extension|extensionMethod(final Never #this) → dynamic {}
9+
static method Extension|get#extensionMethod(final Never #this) → () → dynamic
10+
return () → dynamic => self::Extension|extensionMethod(#this);
11+
static method implicitAccess(Never never) → dynamic {
12+
never.extensionMethod();
13+
never.missingMethod();
14+
}
15+
static method explicitAccess(Never never) → dynamic {
16+
self::Extension|extensionMethod(never);
17+
}
18+
static method main() → dynamic {}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
library /*isNonNullableByDefault*/;
2+
import self as self;
3+
4+
extension Extension on Never {
5+
method extensionMethod = self::Extension|extensionMethod;
6+
tearoff extensionMethod = self::Extension|get#extensionMethod;
7+
}
8+
static method Extension|extensionMethod(final Never #this) → dynamic {}
9+
static method Extension|get#extensionMethod(final Never #this) → () → dynamic
10+
return () → dynamic => self::Extension|extensionMethod(#this);
11+
static method implicitAccess(Never never) → dynamic {
12+
never.extensionMethod();
13+
never.missingMethod();
14+
}
15+
static method explicitAccess(Never never) → dynamic {
16+
self::Extension|extensionMethod(never);
17+
}
18+
static method main() → dynamic {}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
extension Extension ;
2+
on Never (){ }
3+
implicitAccess(Never never) { }
4+
explicitAccess(Never never) { }
5+
main() { }
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
library /*isNonNullableByDefault*/;
2+
import self as self;
3+
4+
extension Extension on Never {
5+
method extensionMethod = self::Extension|extensionMethod;
6+
tearoff extensionMethod = self::Extension|get#extensionMethod;
7+
}
8+
static method Extension|extensionMethod(final Never #this) → dynamic {}
9+
static method Extension|get#extensionMethod(final Never #this) → () → dynamic
10+
return () → dynamic => self::Extension|extensionMethod(#this);
11+
static method implicitAccess(Never never) → dynamic {
12+
never.extensionMethod();
13+
never.missingMethod();
14+
}
15+
static method explicitAccess(Never never) → dynamic {
16+
self::Extension|extensionMethod(never);
17+
}
18+
static method main() → dynamic {}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
library /*isNonNullableByDefault*/;
2+
import self as self;
3+
4+
extension Extension on Never {
5+
method extensionMethod = self::Extension|extensionMethod;
6+
tearoff extensionMethod = self::Extension|get#extensionMethod;
7+
}
8+
static method Extension|extensionMethod(final Never #this) → dynamic {}
9+
static method Extension|get#extensionMethod(final Never #this) → () → dynamic
10+
return () → dynamic => self::Extension|extensionMethod(#this);
11+
static method implicitAccess(Never never) → dynamic {
12+
never.extensionMethod();
13+
never.missingMethod();
14+
}
15+
static method explicitAccess(Never never) → dynamic {
16+
self::Extension|extensionMethod(never);
17+
}
18+
static method main() → dynamic {}

pkg/front_end/testcases/textual_outline.status

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,7 @@ late_lowering/override_getter_setter: FormatterCrash
156156
late_lowering/override: FormatterCrash
157157
late_lowering/uninitialized_non_nullable_late_fields: FormatterCrash
158158
nnbd/covariant_late_field: FormatterCrash
159+
nnbd/extension_never: FormatterCrash
159160
nnbd/forbidden_supers: FormatterCrash
160161
nnbd/infer_if_null: FormatterCrash
161162
nnbd/inheritance_from_opt_in: FormatterCrash

0 commit comments

Comments
 (0)