[cfe] Use a better message for extension types implementing nullable

Additionally, fix the textual representation of nullable named type
builders without type arguments. Before the fix the nullability marker
was skipped on them.

Closes https://github.com/dart-lang/sdk/issues/54553

Change-Id: I137d60ec3325be6fc9b6371ec0d6af2c5c956239
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/346300
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Chloe Stefantsova <cstefantsova@google.com>
This commit is contained in:
Chloe Stefantsova 2024-01-15 13:51:12 +00:00 committed by Commit Queue
parent 435cee17b7
commit 35dd27c28b
29 changed files with 521 additions and 114 deletions

View file

@ -313,15 +313,17 @@ abstract class NamedTypeBuilderImpl extends NamedTypeBuilder {
@override
StringBuffer printOn(StringBuffer buffer) {
buffer.write(typeName.fullName);
if (typeArguments?.isEmpty ?? true) return buffer;
buffer.write("<");
bool first = true;
for (TypeBuilder t in typeArguments!) {
if (!first) buffer.write(", ");
first = false;
t.printOn(buffer);
List<TypeBuilder>? typeArguments = this.typeArguments;
if (typeArguments != null && typeArguments.isNotEmpty) {
buffer.write("<");
bool first = true;
for (TypeBuilder t in typeArguments) {
if (!first) buffer.write(", ");
first = false;
t.printOn(buffer);
}
buffer.write(">");
}
buffer.write(">");
nullabilityBuilder.writeNullabilityOn(buffer);
return buffer;
}

View file

@ -191,16 +191,21 @@ class SourceExtensionTypeDeclarationBuilder
}
} else if (interface is InterfaceType) {
if (interface.isPotentiallyNullable) {
errorMessage =
templateSuperExtensionTypeIsNullableAliased.withArguments(
typeBuilder.fullNameForErrors,
interface,
libraryBuilder.isNonNullableByDefault);
if (aliasBuilder != null) {
errorContext = [
messageTypedefCause.withLocation(
aliasBuilder.fileUri, aliasBuilder.charOffset, noLength),
];
if (typeBuilder.nullabilityBuilder.isNullable) {
errorMessage = templateNullableInterfaceError
.withArguments(typeBuilder.fullNameForErrors);
} else {
errorMessage =
templateSuperExtensionTypeIsNullableAliased.withArguments(
typeBuilder.fullNameForErrors,
interface,
libraryBuilder.isNonNullableByDefault);
if (aliasBuilder != null) {
errorContext = [
messageTypedefCause.withLocation(
aliasBuilder.fileUri, aliasBuilder.charOffset, noLength),
];
}
}
} else {
Class cls = interface.classNode;

View file

@ -2,7 +2,7 @@ library;
//
// Problems in library:
//
// pkg/front_end/testcases/enhanced_enums/simple_interfaces.dart:21:20: Error: Can't implement 'I' because it's marked with '?'.
// pkg/front_end/testcases/enhanced_enums/simple_interfaces.dart:21:20: Error: Can't implement 'I?' because it's marked with '?'.
// enum E3 implements I? { // Error.
// ^^
//

View file

@ -2,7 +2,7 @@ library;
//
// Problems in library:
//
// pkg/front_end/testcases/enhanced_enums/simple_interfaces.dart:21:20: Error: Can't implement 'I' because it's marked with '?'.
// pkg/front_end/testcases/enhanced_enums/simple_interfaces.dart:21:20: Error: Can't implement 'I?' because it's marked with '?'.
// enum E3 implements I? { // Error.
// ^^
//

View file

@ -2,7 +2,7 @@ library;
//
// Problems in library:
//
// pkg/front_end/testcases/enhanced_enums/simple_interfaces.dart:21:20: Error: Can't implement 'I' because it's marked with '?'.
// pkg/front_end/testcases/enhanced_enums/simple_interfaces.dart:21:20: Error: Can't implement 'I?' because it's marked with '?'.
// enum E3 implements I? { // Error.
// ^^
//

View file

@ -2,7 +2,7 @@ library;
//
// Problems in library:
//
// pkg/front_end/testcases/enhanced_enums/simple_interfaces.dart:21:20: Error: Can't implement 'I' because it's marked with '?'.
// pkg/front_end/testcases/enhanced_enums/simple_interfaces.dart:21:20: Error: Can't implement 'I?' because it's marked with '?'.
// enum E3 implements I? { // Error.
// ^^
//

View file

@ -2,7 +2,7 @@ library;
//
// Problems in library:
//
// pkg/front_end/testcases/enhanced_enums/simple_interfaces.dart:21:20: Error: Can't implement 'I' because it's marked with '?'.
// pkg/front_end/testcases/enhanced_enums/simple_interfaces.dart:21:20: Error: Can't implement 'I?' because it's marked with '?'.
// enum E3 implements I? { // Error.
// ^^
//

View file

@ -2,7 +2,7 @@ library;
//
// Problems in library:
//
// pkg/front_end/testcases/enhanced_enums/simple_interfaces.dart:21:20: Error: Can't implement 'I' because it's marked with '?'.
// pkg/front_end/testcases/enhanced_enums/simple_interfaces.dart:21:20: Error: Can't implement 'I?' because it's marked with '?'.
// enum E3 implements I? { // Error.
// ^^
//

View file

@ -19,7 +19,7 @@ library;
// extension type E6(Null it) implements dynamic {} // Error.
// ^
//
// pkg/front_end/testcases/extension_types/issue53840.dart:22:39: Error: The type 'double' which is an alias of 'double?' can't be implemented by an extension type because it is nullable.
// pkg/front_end/testcases/extension_types/issue53840.dart:22:39: Error: Can't implement 'double?' because it's marked with '?'.
// extension type E7(Null it) implements double? {} // Error.
// ^
//

View file

@ -19,7 +19,7 @@ library;
// extension type E6(Null it) implements dynamic {} // Error.
// ^
//
// pkg/front_end/testcases/extension_types/issue53840.dart:22:39: Error: The type 'double' which is an alias of 'double?' can't be implemented by an extension type because it is nullable.
// pkg/front_end/testcases/extension_types/issue53840.dart:22:39: Error: Can't implement 'double?' because it's marked with '?'.
// extension type E7(Null it) implements double? {} // Error.
// ^
//

View file

@ -19,7 +19,7 @@ library;
// extension type E6(Null it) implements dynamic {} // Error.
// ^
//
// pkg/front_end/testcases/extension_types/issue53840.dart:22:39: Error: The type 'double' which is an alias of 'double?' can't be implemented by an extension type because it is nullable.
// pkg/front_end/testcases/extension_types/issue53840.dart:22:39: Error: Can't implement 'double?' because it's marked with '?'.
// extension type E7(Null it) implements double? {} // Error.
// ^
//

View file

@ -19,7 +19,7 @@ library;
// extension type E6(Null it) implements dynamic {} // Error.
// ^
//
// pkg/front_end/testcases/extension_types/issue53840.dart:22:39: Error: The type 'double' which is an alias of 'double?' can't be implemented by an extension type because it is nullable.
// pkg/front_end/testcases/extension_types/issue53840.dart:22:39: Error: Can't implement 'double?' because it's marked with '?'.
// extension type E7(Null it) implements double? {} // Error.
// ^
//

View file

@ -19,7 +19,7 @@ library;
// extension type E6(Null it) implements dynamic {} // Error.
// ^
//
// pkg/front_end/testcases/extension_types/issue53840.dart:22:39: Error: The type 'double' which is an alias of 'double?' can't be implemented by an extension type because it is nullable.
// pkg/front_end/testcases/extension_types/issue53840.dart:22:39: Error: Can't implement 'double?' because it's marked with '?'.
// extension type E7(Null it) implements double? {} // Error.
// ^
//

View file

@ -19,7 +19,7 @@ library;
// extension type E6(Null it) implements dynamic {} // Error.
// ^
//
// pkg/front_end/testcases/extension_types/issue53840.dart:22:39: Error: The type 'double' which is an alias of 'double?' can't be implemented by an extension type because it is nullable.
// pkg/front_end/testcases/extension_types/issue53840.dart:22:39: Error: Can't implement 'double?' because it's marked with '?'.
// extension type E7(Null it) implements double? {} // Error.
// ^
//

View file

@ -0,0 +1,10 @@
// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
extension type EINullable(int? _) implements int? {} // Error.
class A {}
class B implements A? {} // Error.
typedef F<T> = T;
extension type EIAliasNullable(A? _) implements F<A?> {} // Error.

View file

@ -0,0 +1,63 @@
library;
//
// Problems in library:
//
// pkg/front_end/testcases/general/issue54553.dart:8:7: Error: Can't implement 'A?' because it's marked with '?'.
// class B implements A? {} // Error.
// ^
//
// pkg/front_end/testcases/general/issue54553.dart:10:49: Error: Can't use a typedef denoting a type variable as a constructor, nor for a static member access.
// extension type EIAliasNullable(A? _) implements F<A?> {} // Error.
// ^
// pkg/front_end/testcases/general/issue54553.dart:9:11: Context: This is the type variable ultimately denoted.
// typedef F<T> = T;
// ^
//
// pkg/front_end/testcases/general/issue54553.dart:5:46: Error: Can't implement 'int?' because it's marked with '?'.
// extension type EINullable(int? _) implements int? {} // Error.
// ^
//
// pkg/front_end/testcases/general/issue54553.dart:10:49: Error: The type 'F<A?>' which is an alias of 'A?' can't be implemented by an extension type because it is nullable.
// - 'A' is from 'pkg/front_end/testcases/general/issue54553.dart'.
// extension type EIAliasNullable(A? _) implements F<A?> {} // Error.
// ^
// pkg/front_end/testcases/general/issue54553.dart:9:9: Context: The issue arises via this type alias.
// typedef F<T> = T;
// ^
//
import self as self;
import "dart:core" as core;
typedef F<T extends core::Object? = dynamic> = T%;
class A extends core::Object {
synthetic constructor •() → self::A
: super core::Object::•()
;
}
class B extends core::Object implements self::A {
synthetic constructor •() → self::B
: super core::Object::•()
;
}
extension type EINullable(core::int? _) {
abstract extension-type-member representation-field get _() → core::int?;
constructor • = self::EINullable|constructor#;
constructor tearoff • = self::EINullable|constructor#_#new#tearOff;
}
extension type EIAliasNullable(self::A? _) {
abstract extension-type-member representation-field get _() → self::A?;
constructor • = self::EIAliasNullable|constructor#;
constructor tearoff • = self::EIAliasNullable|constructor#_#new#tearOff;
}
static extension-type-member method EINullable|constructor#(core::int? _) → self::EINullable /* = core::int? */ {
lowered final self::EINullable /* = core::int? */ #this = _;
return #this;
}
static extension-type-member method EINullable|constructor#_#new#tearOff(core::int? _) → self::EINullable /* = core::int? */
return self::EINullable|constructor#(_);
static extension-type-member method EIAliasNullable|constructor#(self::A? _) → self::EIAliasNullable /* = self::A? */ {
lowered final self::EIAliasNullable /* = self::A? */ #this = _;
return #this;
}
static extension-type-member method EIAliasNullable|constructor#_#new#tearOff(self::A? _) → self::EIAliasNullable /* = self::A? */
return self::EIAliasNullable|constructor#(_);

View file

@ -0,0 +1,63 @@
library;
//
// Problems in library:
//
// pkg/front_end/testcases/general/issue54553.dart:8:7: Error: Can't implement 'A?' because it's marked with '?'.
// class B implements A? {} // Error.
// ^
//
// pkg/front_end/testcases/general/issue54553.dart:10:49: Error: Can't use a typedef denoting a type variable as a constructor, nor for a static member access.
// extension type EIAliasNullable(A? _) implements F<A?> {} // Error.
// ^
// pkg/front_end/testcases/general/issue54553.dart:9:11: Context: This is the type variable ultimately denoted.
// typedef F<T> = T;
// ^
//
// pkg/front_end/testcases/general/issue54553.dart:5:46: Error: Can't implement 'int?' because it's marked with '?'.
// extension type EINullable(int? _) implements int? {} // Error.
// ^
//
// pkg/front_end/testcases/general/issue54553.dart:10:49: Error: The type 'F<A?>' which is an alias of 'A?' can't be implemented by an extension type because it is nullable.
// - 'A' is from 'pkg/front_end/testcases/general/issue54553.dart'.
// extension type EIAliasNullable(A? _) implements F<A?> {} // Error.
// ^
// pkg/front_end/testcases/general/issue54553.dart:9:9: Context: The issue arises via this type alias.
// typedef F<T> = T;
// ^
//
import self as self;
import "dart:core" as core;
typedef F<T extends core::Object? = dynamic> = T%;
class A extends core::Object {
synthetic constructor •() → self::A
: super core::Object::•()
;
}
class B extends core::Object implements self::A {
synthetic constructor •() → self::B
: super core::Object::•()
;
}
extension type EINullable(core::int? _) {
abstract extension-type-member representation-field get _() → core::int?;
constructor • = self::EINullable|constructor#;
constructor tearoff • = self::EINullable|constructor#_#new#tearOff;
}
extension type EIAliasNullable(self::A? _) {
abstract extension-type-member representation-field get _() → self::A?;
constructor • = self::EIAliasNullable|constructor#;
constructor tearoff • = self::EIAliasNullable|constructor#_#new#tearOff;
}
static extension-type-member method EINullable|constructor#(core::int? _) → self::EINullable /* = core::int? */ {
lowered final self::EINullable /* = core::int? */ #this = _;
return #this;
}
static extension-type-member method EINullable|constructor#_#new#tearOff(core::int? _) → self::EINullable /* = core::int? */
return self::EINullable|constructor#(_);
static extension-type-member method EIAliasNullable|constructor#(self::A? _) → self::EIAliasNullable /* = self::A? */ {
lowered final self::EIAliasNullable /* = self::A? */ #this = _;
return #this;
}
static extension-type-member method EIAliasNullable|constructor#_#new#tearOff(self::A? _) → self::EIAliasNullable /* = self::A? */
return self::EIAliasNullable|constructor#(_);

View file

@ -0,0 +1,9 @@
extension type EINullable(int? _) implements int? {}
class A {}
class B implements A? {}
typedef F<T> = T;
extension type EIAliasNullable(A? _) implements F<A?> {}

View file

@ -0,0 +1,9 @@
class A {}
class B implements A? {}
extension type EIAliasNullable(A? _) implements F<A?> {}
extension type EINullable(int? _) implements int? {}
typedef F<T> = T;

View file

@ -0,0 +1,63 @@
library;
//
// Problems in library:
//
// pkg/front_end/testcases/general/issue54553.dart:8:7: Error: Can't implement 'A?' because it's marked with '?'.
// class B implements A? {} // Error.
// ^
//
// pkg/front_end/testcases/general/issue54553.dart:10:49: Error: Can't use a typedef denoting a type variable as a constructor, nor for a static member access.
// extension type EIAliasNullable(A? _) implements F<A?> {} // Error.
// ^
// pkg/front_end/testcases/general/issue54553.dart:9:11: Context: This is the type variable ultimately denoted.
// typedef F<T> = T;
// ^
//
// pkg/front_end/testcases/general/issue54553.dart:5:46: Error: Can't implement 'int?' because it's marked with '?'.
// extension type EINullable(int? _) implements int? {} // Error.
// ^
//
// pkg/front_end/testcases/general/issue54553.dart:10:49: Error: The type 'F<A?>' which is an alias of 'A?' can't be implemented by an extension type because it is nullable.
// - 'A' is from 'pkg/front_end/testcases/general/issue54553.dart'.
// extension type EIAliasNullable(A? _) implements F<A?> {} // Error.
// ^
// pkg/front_end/testcases/general/issue54553.dart:9:9: Context: The issue arises via this type alias.
// typedef F<T> = T;
// ^
//
import self as self;
import "dart:core" as core;
typedef F<T extends core::Object? = dynamic> = T%;
class A extends core::Object {
synthetic constructor •() → self::A
: super core::Object::•()
;
}
class B extends core::Object implements self::A {
synthetic constructor •() → self::B
: super core::Object::•()
;
}
extension type EINullable(core::int? _) {
abstract extension-type-member representation-field get _() → core::int?;
constructor • = self::EINullable|constructor#;
constructor tearoff • = self::EINullable|constructor#_#new#tearOff;
}
extension type EIAliasNullable(self::A? _) {
abstract extension-type-member representation-field get _() → self::A?;
constructor • = self::EIAliasNullable|constructor#;
constructor tearoff • = self::EIAliasNullable|constructor#_#new#tearOff;
}
static extension-type-member method EINullable|constructor#(core::int? _) → self::EINullable /* = core::int? */ {
lowered final self::EINullable /* = core::int? */ #this = _;
return #this;
}
static extension-type-member method EINullable|constructor#_#new#tearOff(core::int? _) → self::EINullable /* = core::int? */
return self::EINullable|constructor#(_);
static extension-type-member method EIAliasNullable|constructor#(self::A? _) → self::EIAliasNullable /* = self::A? */ {
lowered final self::EIAliasNullable /* = self::A? */ #this = _;
return #this;
}
static extension-type-member method EIAliasNullable|constructor#_#new#tearOff(self::A? _) → self::EIAliasNullable /* = self::A? */
return self::EIAliasNullable|constructor#(_);

View file

@ -0,0 +1,63 @@
library;
//
// Problems in library:
//
// pkg/front_end/testcases/general/issue54553.dart:8:7: Error: Can't implement 'A?' because it's marked with '?'.
// class B implements A? {} // Error.
// ^
//
// pkg/front_end/testcases/general/issue54553.dart:10:49: Error: Can't use a typedef denoting a type variable as a constructor, nor for a static member access.
// extension type EIAliasNullable(A? _) implements F<A?> {} // Error.
// ^
// pkg/front_end/testcases/general/issue54553.dart:9:11: Context: This is the type variable ultimately denoted.
// typedef F<T> = T;
// ^
//
// pkg/front_end/testcases/general/issue54553.dart:5:46: Error: Can't implement 'int?' because it's marked with '?'.
// extension type EINullable(int? _) implements int? {} // Error.
// ^
//
// pkg/front_end/testcases/general/issue54553.dart:10:49: Error: The type 'F<A?>' which is an alias of 'A?' can't be implemented by an extension type because it is nullable.
// - 'A' is from 'pkg/front_end/testcases/general/issue54553.dart'.
// extension type EIAliasNullable(A? _) implements F<A?> {} // Error.
// ^
// pkg/front_end/testcases/general/issue54553.dart:9:9: Context: The issue arises via this type alias.
// typedef F<T> = T;
// ^
//
import self as self;
import "dart:core" as core;
typedef F<T extends core::Object? = dynamic> = T%;
class A extends core::Object {
synthetic constructor •() → self::A
: super core::Object::•()
;
}
class B extends core::Object implements self::A {
synthetic constructor •() → self::B
: super core::Object::•()
;
}
extension type EINullable(core::int? _) {
abstract extension-type-member representation-field get _() → core::int?;
constructor • = self::EINullable|constructor#;
constructor tearoff • = self::EINullable|constructor#_#new#tearOff;
}
extension type EIAliasNullable(self::A? _) {
abstract extension-type-member representation-field get _() → self::A?;
constructor • = self::EIAliasNullable|constructor#;
constructor tearoff • = self::EIAliasNullable|constructor#_#new#tearOff;
}
static extension-type-member method EINullable|constructor#(core::int? _) → self::EINullable /* = core::int? */ {
lowered final self::EINullable /* = core::int? */ #this = _;
return #this;
}
static extension-type-member method EINullable|constructor#_#new#tearOff(core::int? _) → self::EINullable /* = core::int? */
return self::EINullable|constructor#(_);
static extension-type-member method EIAliasNullable|constructor#(self::A? _) → self::EIAliasNullable /* = self::A? */ {
lowered final self::EIAliasNullable /* = self::A? */ #this = _;
return #this;
}
static extension-type-member method EIAliasNullable|constructor#_#new#tearOff(self::A? _) → self::EIAliasNullable /* = self::A? */
return self::EIAliasNullable|constructor#(_);

View file

@ -0,0 +1,57 @@
library;
//
// Problems in library:
//
// pkg/front_end/testcases/general/issue54553.dart:8:7: Error: Can't implement 'A?' because it's marked with '?'.
// class B implements A? {} // Error.
// ^
//
// pkg/front_end/testcases/general/issue54553.dart:10:49: Error: Can't use a typedef denoting a type variable as a constructor, nor for a static member access.
// extension type EIAliasNullable(A? _) implements F<A?> {} // Error.
// ^
// pkg/front_end/testcases/general/issue54553.dart:9:11: Context: This is the type variable ultimately denoted.
// typedef F<T> = T;
// ^
//
// pkg/front_end/testcases/general/issue54553.dart:5:46: Error: Can't implement 'int?' because it's marked with '?'.
// extension type EINullable(int? _) implements int? {} // Error.
// ^
//
// pkg/front_end/testcases/general/issue54553.dart:10:49: Error: The type 'F<A?>' which is an alias of 'A?' can't be implemented by an extension type because it is nullable.
// - 'A' is from 'pkg/front_end/testcases/general/issue54553.dart'.
// extension type EIAliasNullable(A? _) implements F<A?> {} // Error.
// ^
// pkg/front_end/testcases/general/issue54553.dart:9:9: Context: The issue arises via this type alias.
// typedef F<T> = T;
// ^
//
import self as self;
import "dart:core" as core;
typedef F<T extends core::Object? = dynamic> = T%;
class A extends core::Object {
synthetic constructor •() → self::A
;
}
class B extends core::Object implements self::A {
synthetic constructor •() → self::B
;
}
extension type EINullable(core::int? _) {
abstract extension-type-member representation-field get _() → core::int?;
constructor • = self::EINullable|constructor#;
constructor tearoff • = self::EINullable|constructor#_#new#tearOff;
}
extension type EIAliasNullable(self::A? _) {
abstract extension-type-member representation-field get _() → self::A?;
constructor • = self::EIAliasNullable|constructor#;
constructor tearoff • = self::EIAliasNullable|constructor#_#new#tearOff;
}
static extension-type-member method EINullable|constructor#(core::int? _) → self::EINullable /* = core::int? */
;
static extension-type-member method EINullable|constructor#_#new#tearOff(core::int? _) → self::EINullable /* = core::int? */
return self::EINullable|constructor#(_);
static extension-type-member method EIAliasNullable|constructor#(self::A? _) → self::EIAliasNullable /* = self::A? */
;
static extension-type-member method EIAliasNullable|constructor#_#new#tearOff(self::A? _) → self::EIAliasNullable /* = self::A? */
return self::EIAliasNullable|constructor#(_);

View file

@ -0,0 +1,63 @@
library;
//
// Problems in library:
//
// pkg/front_end/testcases/general/issue54553.dart:8:7: Error: Can't implement 'A?' because it's marked with '?'.
// class B implements A? {} // Error.
// ^
//
// pkg/front_end/testcases/general/issue54553.dart:10:49: Error: Can't use a typedef denoting a type variable as a constructor, nor for a static member access.
// extension type EIAliasNullable(A? _) implements F<A?> {} // Error.
// ^
// pkg/front_end/testcases/general/issue54553.dart:9:11: Context: This is the type variable ultimately denoted.
// typedef F<T> = T;
// ^
//
// pkg/front_end/testcases/general/issue54553.dart:5:46: Error: Can't implement 'int?' because it's marked with '?'.
// extension type EINullable(int? _) implements int? {} // Error.
// ^
//
// pkg/front_end/testcases/general/issue54553.dart:10:49: Error: The type 'F<A?>' which is an alias of 'A?' can't be implemented by an extension type because it is nullable.
// - 'A' is from 'pkg/front_end/testcases/general/issue54553.dart'.
// extension type EIAliasNullable(A? _) implements F<A?> {} // Error.
// ^
// pkg/front_end/testcases/general/issue54553.dart:9:9: Context: The issue arises via this type alias.
// typedef F<T> = T;
// ^
//
import self as self;
import "dart:core" as core;
typedef F<T extends core::Object? = dynamic> = T%;
class A extends core::Object {
synthetic constructor •() → self::A
: super core::Object::•()
;
}
class B extends core::Object implements self::A {
synthetic constructor •() → self::B
: super core::Object::•()
;
}
extension type EINullable(core::int? _) {
abstract extension-type-member representation-field get _() → core::int?;
constructor • = self::EINullable|constructor#;
constructor tearoff • = self::EINullable|constructor#_#new#tearOff;
}
extension type EIAliasNullable(self::A? _) {
abstract extension-type-member representation-field get _() → self::A?;
constructor • = self::EIAliasNullable|constructor#;
constructor tearoff • = self::EIAliasNullable|constructor#_#new#tearOff;
}
static extension-type-member method EINullable|constructor#(core::int? _) → self::EINullable /* = core::int? */ {
lowered final self::EINullable /* = core::int? */ #this = _;
return #this;
}
static extension-type-member method EINullable|constructor#_#new#tearOff(core::int? _) → self::EINullable /* = core::int? */
return self::EINullable|constructor#(_);
static extension-type-member method EIAliasNullable|constructor#(self::A? _) → self::EIAliasNullable /* = self::A? */ {
lowered final self::EIAliasNullable /* = self::A? */ #this = _;
return #this;
}
static extension-type-member method EIAliasNullable|constructor#_#new#tearOff(self::A? _) → self::EIAliasNullable /* = self::A? */
return self::EIAliasNullable|constructor#(_);

View file

@ -2,59 +2,59 @@ library;
//
// Problems in library:
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:12:7: Error: Can't mix 'Aoo' in because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:12:7: Error: Can't mix 'Aoo?' in because it's marked with '?'.
// class Coo extends Boo with Aoo? {}
// ^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:14:7: Error: Can't extend 'Aoo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:14:7: Error: Can't extend 'Aoo?' because it's marked with '?'.
// class Doo extends Aoo? {}
// ^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:16:7: Error: Can't implement 'Boo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:16:7: Error: Can't implement 'Boo?' because it's marked with '?'.
// class Eoo implements Boo? {}
// ^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:18:7: Error: Can't extend 'Boo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:18:7: Error: Can't extend 'Boo?' because it's marked with '?'.
// class Foo extends Boo? with Aoo {}
// ^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:20:7: Error: Can't extend 'Boo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:20:7: Error: Can't extend 'Boo?' because it's marked with '?'.
// class Goo = Boo? with Aoo?;
// ^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:20:7: Error: Can't mix 'Aoo' in because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:20:7: Error: Can't mix 'Aoo?' in because it's marked with '?'.
// class Goo = Boo? with Aoo?;
// ^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:22:7: Error: Can't implement 'Boo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:22:7: Error: Can't implement 'Boo?' because it's marked with '?'.
// class Hoo extends Object with Aoo implements Boo? {}
// ^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:24:7: Error: Can't implement 'Boo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:24:7: Error: Can't implement 'Boo?' because it's marked with '?'.
// class Ioo = Object with Aoo implements Boo?;
// ^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:32:7: Error: Can't extend 'Aoo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:32:7: Error: Can't extend 'Aoo?' because it's marked with '?'.
// mixin Moo1 on Aoo? implements Boo? {}
// ^^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:32:7: Error: Can't implement 'Boo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:32:7: Error: Can't implement 'Boo?' because it's marked with '?'.
// mixin Moo1 on Aoo? implements Boo? {}
// ^^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:34:7: Error: Can't extend 'Aoo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:34:7: Error: Can't extend 'Aoo?' because it's marked with '?'.
// mixin Moo2 on Aoo?, Boo? {}
// ^^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:34:7: Error: Can't extend 'Boo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:34:7: Error: Can't extend 'Boo?' because it's marked with '?'.
// mixin Moo2 on Aoo?, Boo? {}
// ^^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:36:7: Error: Can't implement 'Aoo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:36:7: Error: Can't implement 'Aoo?' because it's marked with '?'.
// mixin Moo3 implements Aoo?, Boo? {}
// ^^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:36:7: Error: Can't implement 'Boo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:36:7: Error: Can't implement 'Boo?' because it's marked with '?'.
// mixin Moo3 implements Aoo?, Boo? {}
// ^^^^
//

View file

@ -2,59 +2,59 @@ library;
//
// Problems in library:
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:12:7: Error: Can't mix 'Aoo' in because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:12:7: Error: Can't mix 'Aoo?' in because it's marked with '?'.
// class Coo extends Boo with Aoo? {}
// ^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:14:7: Error: Can't extend 'Aoo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:14:7: Error: Can't extend 'Aoo?' because it's marked with '?'.
// class Doo extends Aoo? {}
// ^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:16:7: Error: Can't implement 'Boo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:16:7: Error: Can't implement 'Boo?' because it's marked with '?'.
// class Eoo implements Boo? {}
// ^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:18:7: Error: Can't extend 'Boo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:18:7: Error: Can't extend 'Boo?' because it's marked with '?'.
// class Foo extends Boo? with Aoo {}
// ^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:20:7: Error: Can't extend 'Boo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:20:7: Error: Can't extend 'Boo?' because it's marked with '?'.
// class Goo = Boo? with Aoo?;
// ^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:20:7: Error: Can't mix 'Aoo' in because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:20:7: Error: Can't mix 'Aoo?' in because it's marked with '?'.
// class Goo = Boo? with Aoo?;
// ^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:22:7: Error: Can't implement 'Boo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:22:7: Error: Can't implement 'Boo?' because it's marked with '?'.
// class Hoo extends Object with Aoo implements Boo? {}
// ^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:24:7: Error: Can't implement 'Boo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:24:7: Error: Can't implement 'Boo?' because it's marked with '?'.
// class Ioo = Object with Aoo implements Boo?;
// ^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:32:7: Error: Can't extend 'Aoo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:32:7: Error: Can't extend 'Aoo?' because it's marked with '?'.
// mixin Moo1 on Aoo? implements Boo? {}
// ^^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:32:7: Error: Can't implement 'Boo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:32:7: Error: Can't implement 'Boo?' because it's marked with '?'.
// mixin Moo1 on Aoo? implements Boo? {}
// ^^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:34:7: Error: Can't extend 'Aoo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:34:7: Error: Can't extend 'Aoo?' because it's marked with '?'.
// mixin Moo2 on Aoo?, Boo? {}
// ^^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:34:7: Error: Can't extend 'Boo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:34:7: Error: Can't extend 'Boo?' because it's marked with '?'.
// mixin Moo2 on Aoo?, Boo? {}
// ^^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:36:7: Error: Can't implement 'Aoo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:36:7: Error: Can't implement 'Aoo?' because it's marked with '?'.
// mixin Moo3 implements Aoo?, Boo? {}
// ^^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:36:7: Error: Can't implement 'Boo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:36:7: Error: Can't implement 'Boo?' because it's marked with '?'.
// mixin Moo3 implements Aoo?, Boo? {}
// ^^^^
//

View file

@ -2,59 +2,59 @@ library;
//
// Problems in library:
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:12:7: Error: Can't mix 'Aoo' in because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:12:7: Error: Can't mix 'Aoo?' in because it's marked with '?'.
// class Coo extends Boo with Aoo? {}
// ^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:14:7: Error: Can't extend 'Aoo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:14:7: Error: Can't extend 'Aoo?' because it's marked with '?'.
// class Doo extends Aoo? {}
// ^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:16:7: Error: Can't implement 'Boo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:16:7: Error: Can't implement 'Boo?' because it's marked with '?'.
// class Eoo implements Boo? {}
// ^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:18:7: Error: Can't extend 'Boo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:18:7: Error: Can't extend 'Boo?' because it's marked with '?'.
// class Foo extends Boo? with Aoo {}
// ^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:20:7: Error: Can't extend 'Boo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:20:7: Error: Can't extend 'Boo?' because it's marked with '?'.
// class Goo = Boo? with Aoo?;
// ^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:20:7: Error: Can't mix 'Aoo' in because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:20:7: Error: Can't mix 'Aoo?' in because it's marked with '?'.
// class Goo = Boo? with Aoo?;
// ^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:22:7: Error: Can't implement 'Boo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:22:7: Error: Can't implement 'Boo?' because it's marked with '?'.
// class Hoo extends Object with Aoo implements Boo? {}
// ^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:24:7: Error: Can't implement 'Boo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:24:7: Error: Can't implement 'Boo?' because it's marked with '?'.
// class Ioo = Object with Aoo implements Boo?;
// ^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:32:7: Error: Can't extend 'Aoo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:32:7: Error: Can't extend 'Aoo?' because it's marked with '?'.
// mixin Moo1 on Aoo? implements Boo? {}
// ^^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:32:7: Error: Can't implement 'Boo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:32:7: Error: Can't implement 'Boo?' because it's marked with '?'.
// mixin Moo1 on Aoo? implements Boo? {}
// ^^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:34:7: Error: Can't extend 'Aoo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:34:7: Error: Can't extend 'Aoo?' because it's marked with '?'.
// mixin Moo2 on Aoo?, Boo? {}
// ^^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:34:7: Error: Can't extend 'Boo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:34:7: Error: Can't extend 'Boo?' because it's marked with '?'.
// mixin Moo2 on Aoo?, Boo? {}
// ^^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:36:7: Error: Can't implement 'Aoo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:36:7: Error: Can't implement 'Aoo?' because it's marked with '?'.
// mixin Moo3 implements Aoo?, Boo? {}
// ^^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:36:7: Error: Can't implement 'Boo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:36:7: Error: Can't implement 'Boo?' because it's marked with '?'.
// mixin Moo3 implements Aoo?, Boo? {}
// ^^^^
//

View file

@ -2,59 +2,59 @@ library;
//
// Problems in library:
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:12:7: Error: Can't mix 'Aoo' in because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:12:7: Error: Can't mix 'Aoo?' in because it's marked with '?'.
// class Coo extends Boo with Aoo? {}
// ^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:14:7: Error: Can't extend 'Aoo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:14:7: Error: Can't extend 'Aoo?' because it's marked with '?'.
// class Doo extends Aoo? {}
// ^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:16:7: Error: Can't implement 'Boo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:16:7: Error: Can't implement 'Boo?' because it's marked with '?'.
// class Eoo implements Boo? {}
// ^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:18:7: Error: Can't extend 'Boo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:18:7: Error: Can't extend 'Boo?' because it's marked with '?'.
// class Foo extends Boo? with Aoo {}
// ^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:20:7: Error: Can't extend 'Boo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:20:7: Error: Can't extend 'Boo?' because it's marked with '?'.
// class Goo = Boo? with Aoo?;
// ^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:20:7: Error: Can't mix 'Aoo' in because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:20:7: Error: Can't mix 'Aoo?' in because it's marked with '?'.
// class Goo = Boo? with Aoo?;
// ^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:22:7: Error: Can't implement 'Boo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:22:7: Error: Can't implement 'Boo?' because it's marked with '?'.
// class Hoo extends Object with Aoo implements Boo? {}
// ^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:24:7: Error: Can't implement 'Boo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:24:7: Error: Can't implement 'Boo?' because it's marked with '?'.
// class Ioo = Object with Aoo implements Boo?;
// ^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:32:7: Error: Can't extend 'Aoo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:32:7: Error: Can't extend 'Aoo?' because it's marked with '?'.
// mixin Moo1 on Aoo? implements Boo? {}
// ^^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:32:7: Error: Can't implement 'Boo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:32:7: Error: Can't implement 'Boo?' because it's marked with '?'.
// mixin Moo1 on Aoo? implements Boo? {}
// ^^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:34:7: Error: Can't extend 'Aoo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:34:7: Error: Can't extend 'Aoo?' because it's marked with '?'.
// mixin Moo2 on Aoo?, Boo? {}
// ^^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:34:7: Error: Can't extend 'Boo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:34:7: Error: Can't extend 'Boo?' because it's marked with '?'.
// mixin Moo2 on Aoo?, Boo? {}
// ^^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:36:7: Error: Can't implement 'Aoo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:36:7: Error: Can't implement 'Aoo?' because it's marked with '?'.
// mixin Moo3 implements Aoo?, Boo? {}
// ^^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:36:7: Error: Can't implement 'Boo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:36:7: Error: Can't implement 'Boo?' because it's marked with '?'.
// mixin Moo3 implements Aoo?, Boo? {}
// ^^^^
//

View file

@ -2,59 +2,59 @@ library;
//
// Problems in library:
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:12:7: Error: Can't mix 'Aoo' in because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:12:7: Error: Can't mix 'Aoo?' in because it's marked with '?'.
// class Coo extends Boo with Aoo? {}
// ^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:14:7: Error: Can't extend 'Aoo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:14:7: Error: Can't extend 'Aoo?' because it's marked with '?'.
// class Doo extends Aoo? {}
// ^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:16:7: Error: Can't implement 'Boo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:16:7: Error: Can't implement 'Boo?' because it's marked with '?'.
// class Eoo implements Boo? {}
// ^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:18:7: Error: Can't extend 'Boo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:18:7: Error: Can't extend 'Boo?' because it's marked with '?'.
// class Foo extends Boo? with Aoo {}
// ^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:20:7: Error: Can't extend 'Boo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:20:7: Error: Can't extend 'Boo?' because it's marked with '?'.
// class Goo = Boo? with Aoo?;
// ^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:20:7: Error: Can't mix 'Aoo' in because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:20:7: Error: Can't mix 'Aoo?' in because it's marked with '?'.
// class Goo = Boo? with Aoo?;
// ^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:22:7: Error: Can't implement 'Boo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:22:7: Error: Can't implement 'Boo?' because it's marked with '?'.
// class Hoo extends Object with Aoo implements Boo? {}
// ^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:24:7: Error: Can't implement 'Boo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:24:7: Error: Can't implement 'Boo?' because it's marked with '?'.
// class Ioo = Object with Aoo implements Boo?;
// ^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:32:7: Error: Can't extend 'Aoo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:32:7: Error: Can't extend 'Aoo?' because it's marked with '?'.
// mixin Moo1 on Aoo? implements Boo? {}
// ^^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:32:7: Error: Can't implement 'Boo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:32:7: Error: Can't implement 'Boo?' because it's marked with '?'.
// mixin Moo1 on Aoo? implements Boo? {}
// ^^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:34:7: Error: Can't extend 'Aoo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:34:7: Error: Can't extend 'Aoo?' because it's marked with '?'.
// mixin Moo2 on Aoo?, Boo? {}
// ^^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:34:7: Error: Can't extend 'Boo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:34:7: Error: Can't extend 'Boo?' because it's marked with '?'.
// mixin Moo2 on Aoo?, Boo? {}
// ^^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:36:7: Error: Can't implement 'Aoo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:36:7: Error: Can't implement 'Aoo?' because it's marked with '?'.
// mixin Moo3 implements Aoo?, Boo? {}
// ^^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:36:7: Error: Can't implement 'Boo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:36:7: Error: Can't implement 'Boo?' because it's marked with '?'.
// mixin Moo3 implements Aoo?, Boo? {}
// ^^^^
//

View file

@ -2,59 +2,59 @@ library;
//
// Problems in library:
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:12:7: Error: Can't mix 'Aoo' in because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:12:7: Error: Can't mix 'Aoo?' in because it's marked with '?'.
// class Coo extends Boo with Aoo? {}
// ^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:14:7: Error: Can't extend 'Aoo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:14:7: Error: Can't extend 'Aoo?' because it's marked with '?'.
// class Doo extends Aoo? {}
// ^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:16:7: Error: Can't implement 'Boo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:16:7: Error: Can't implement 'Boo?' because it's marked with '?'.
// class Eoo implements Boo? {}
// ^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:18:7: Error: Can't extend 'Boo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:18:7: Error: Can't extend 'Boo?' because it's marked with '?'.
// class Foo extends Boo? with Aoo {}
// ^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:20:7: Error: Can't extend 'Boo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:20:7: Error: Can't extend 'Boo?' because it's marked with '?'.
// class Goo = Boo? with Aoo?;
// ^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:20:7: Error: Can't mix 'Aoo' in because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:20:7: Error: Can't mix 'Aoo?' in because it's marked with '?'.
// class Goo = Boo? with Aoo?;
// ^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:22:7: Error: Can't implement 'Boo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:22:7: Error: Can't implement 'Boo?' because it's marked with '?'.
// class Hoo extends Object with Aoo implements Boo? {}
// ^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:24:7: Error: Can't implement 'Boo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:24:7: Error: Can't implement 'Boo?' because it's marked with '?'.
// class Ioo = Object with Aoo implements Boo?;
// ^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:32:7: Error: Can't extend 'Aoo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:32:7: Error: Can't extend 'Aoo?' because it's marked with '?'.
// mixin Moo1 on Aoo? implements Boo? {}
// ^^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:32:7: Error: Can't implement 'Boo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:32:7: Error: Can't implement 'Boo?' because it's marked with '?'.
// mixin Moo1 on Aoo? implements Boo? {}
// ^^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:34:7: Error: Can't extend 'Aoo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:34:7: Error: Can't extend 'Aoo?' because it's marked with '?'.
// mixin Moo2 on Aoo?, Boo? {}
// ^^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:34:7: Error: Can't extend 'Boo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:34:7: Error: Can't extend 'Boo?' because it's marked with '?'.
// mixin Moo2 on Aoo?, Boo? {}
// ^^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:36:7: Error: Can't implement 'Aoo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:36:7: Error: Can't implement 'Aoo?' because it's marked with '?'.
// mixin Moo3 implements Aoo?, Boo? {}
// ^^^^
//
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:36:7: Error: Can't implement 'Boo' because it's marked with '?'.
// pkg/front_end/testcases/nnbd/forbidden_supers.dart:36:7: Error: Can't implement 'Boo?' because it's marked with '?'.
// mixin Moo3 implements Aoo?, Boo? {}
// ^^^^
//