mirror of
https://github.com/dart-lang/sdk
synced 2024-09-15 23:49:47 +00:00
[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:
parent
435cee17b7
commit
35dd27c28b
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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.
|
||||
// ^^
|
||||
//
|
||||
|
|
|
@ -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.
|
||||
// ^^
|
||||
//
|
||||
|
|
|
@ -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.
|
||||
// ^^
|
||||
//
|
||||
|
|
|
@ -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.
|
||||
// ^^
|
||||
//
|
||||
|
|
|
@ -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.
|
||||
// ^^
|
||||
//
|
||||
|
|
|
@ -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.
|
||||
// ^^
|
||||
//
|
||||
|
|
|
@ -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.
|
||||
// ^
|
||||
//
|
||||
|
|
|
@ -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.
|
||||
// ^
|
||||
//
|
||||
|
|
|
@ -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.
|
||||
// ^
|
||||
//
|
||||
|
|
|
@ -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.
|
||||
// ^
|
||||
//
|
||||
|
|
|
@ -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.
|
||||
// ^
|
||||
//
|
||||
|
|
|
@ -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.
|
||||
// ^
|
||||
//
|
||||
|
|
10
pkg/front_end/testcases/general/issue54553.dart
Normal file
10
pkg/front_end/testcases/general/issue54553.dart
Normal 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.
|
|
@ -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#(_);
|
|
@ -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#(_);
|
|
@ -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?> {}
|
|
@ -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;
|
63
pkg/front_end/testcases/general/issue54553.dart.weak.expect
Normal file
63
pkg/front_end/testcases/general/issue54553.dart.weak.expect
Normal 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#(_);
|
|
@ -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#(_);
|
|
@ -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#(_);
|
|
@ -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#(_);
|
|
@ -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? {}
|
||||
// ^^^^
|
||||
//
|
||||
|
|
|
@ -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? {}
|
||||
// ^^^^
|
||||
//
|
||||
|
|
|
@ -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? {}
|
||||
// ^^^^
|
||||
//
|
||||
|
|
|
@ -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? {}
|
||||
// ^^^^
|
||||
//
|
||||
|
|
|
@ -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? {}
|
||||
// ^^^^
|
||||
//
|
||||
|
|
|
@ -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? {}
|
||||
// ^^^^
|
||||
//
|
||||
|
|
Loading…
Reference in a new issue