mirror of
https://github.com/dart-lang/sdk
synced 2024-10-14 16:59:47 +00:00
[analyzer/cfe] Update abstract sealed error message.
State more explicitly that sealed classes are abstract and lead the user to a better fix with the error message. Bug: https://github.com/dart-lang/sdk/issues/52073 Change-Id: Id24c6cb187ee5497ca2819f930c48ff5aa8d07fc Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/296025 Reviewed-by: Brian Wilkerson <brianwilkerson@google.com> Reviewed-by: Paul Berry <paulberry@google.com> Commit-Queue: Kallen Tu <kallentu@google.com>
This commit is contained in:
parent
9070c7baf1
commit
199feac353
|
@ -151,8 +151,8 @@ const MessageCode messageAbstractSealedClass = const MessageCode(
|
|||
"AbstractSealedClass",
|
||||
index: 132,
|
||||
problemMessage:
|
||||
r"""A class can't be declared both 'sealed' and 'abstract'.""",
|
||||
correctionMessage: r"""Try removing the 'abstract' or 'sealed' keyword.""");
|
||||
r"""A 'sealed' class can't be marked 'abstract' because it's already implicitly abstract.""",
|
||||
correctionMessage: r"""Try removing the 'abstract' keyword.""");
|
||||
|
||||
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
|
||||
const Code<Null> codeAbstractStaticField = messageAbstractStaticField;
|
||||
|
|
|
@ -208,8 +208,9 @@ class ParserErrorCode extends ErrorCode {
|
|||
|
||||
static const ParserErrorCode ABSTRACT_SEALED_CLASS = ParserErrorCode(
|
||||
'ABSTRACT_SEALED_CLASS',
|
||||
"A class can't be declared both 'sealed' and 'abstract'.",
|
||||
correctionMessage: "Try removing the 'abstract' or 'sealed' keyword.",
|
||||
"A 'sealed' class can't be marked 'abstract' because it's already "
|
||||
"implicitly abstract.",
|
||||
correctionMessage: "Try removing the 'abstract' keyword.",
|
||||
hasPublishedDocs: true,
|
||||
);
|
||||
|
||||
|
|
|
@ -566,7 +566,8 @@ abstract class C {
|
|||
|
||||
### abstract_sealed_class
|
||||
|
||||
_A class can't be declared both 'sealed' and 'abstract'._
|
||||
_A 'sealed' class can't be marked 'abstract' because it's already implicitly
|
||||
abstract._
|
||||
|
||||
#### Description
|
||||
|
||||
|
|
|
@ -962,8 +962,8 @@ AbstractLateField:
|
|||
- "abstract class C {abstract late var f;}"
|
||||
|
||||
AbstractSealedClass:
|
||||
problemMessage: "A class can't be declared both 'sealed' and 'abstract'."
|
||||
correctionMessage: "Try removing the 'abstract' or 'sealed' keyword."
|
||||
problemMessage: "A 'sealed' class can't be marked 'abstract' because it's already implicitly abstract."
|
||||
correctionMessage: "Try removing the 'abstract' keyword."
|
||||
analyzerCode: ParserErrorCode.ABSTRACT_SEALED_CLASS
|
||||
index: 132
|
||||
hasPublishedDocs: true
|
||||
|
|
|
@ -2,13 +2,13 @@ library /*isNonNullableByDefault*/;
|
|||
//
|
||||
// Problems in library:
|
||||
//
|
||||
// pkg/front_end/testcases/sealed_class/sealed_abstract_class_declaration.dart:5:10: Error: A class can't be declared both 'sealed' and 'abstract'.
|
||||
// Try removing the 'abstract' or 'sealed' keyword.
|
||||
// pkg/front_end/testcases/sealed_class/sealed_abstract_class_declaration.dart:5:10: Error: A 'sealed' class can't be marked 'abstract' because it's already implicitly abstract.
|
||||
// Try removing the 'abstract' keyword.
|
||||
// abstract sealed class A {}
|
||||
// ^^^^^^
|
||||
//
|
||||
// pkg/front_end/testcases/sealed_class/sealed_abstract_class_declaration.dart:6:1: Error: A class can't be declared both 'sealed' and 'abstract'.
|
||||
// Try removing the 'abstract' or 'sealed' keyword.
|
||||
// pkg/front_end/testcases/sealed_class/sealed_abstract_class_declaration.dart:6:1: Error: A 'sealed' class can't be marked 'abstract' because it's already implicitly abstract.
|
||||
// Try removing the 'abstract' keyword.
|
||||
// sealed abstract class A {}
|
||||
// ^^^^^^
|
||||
//
|
||||
|
|
|
@ -2,13 +2,13 @@ library /*isNonNullableByDefault*/;
|
|||
//
|
||||
// Problems in library:
|
||||
//
|
||||
// pkg/front_end/testcases/sealed_class/sealed_abstract_class_declaration.dart:5:10: Error: A class can't be declared both 'sealed' and 'abstract'.
|
||||
// Try removing the 'abstract' or 'sealed' keyword.
|
||||
// pkg/front_end/testcases/sealed_class/sealed_abstract_class_declaration.dart:5:10: Error: A 'sealed' class can't be marked 'abstract' because it's already implicitly abstract.
|
||||
// Try removing the 'abstract' keyword.
|
||||
// abstract sealed class A {}
|
||||
// ^^^^^^
|
||||
//
|
||||
// pkg/front_end/testcases/sealed_class/sealed_abstract_class_declaration.dart:6:1: Error: A class can't be declared both 'sealed' and 'abstract'.
|
||||
// Try removing the 'abstract' or 'sealed' keyword.
|
||||
// pkg/front_end/testcases/sealed_class/sealed_abstract_class_declaration.dart:6:1: Error: A 'sealed' class can't be marked 'abstract' because it's already implicitly abstract.
|
||||
// Try removing the 'abstract' keyword.
|
||||
// sealed abstract class A {}
|
||||
// ^^^^^^
|
||||
//
|
||||
|
|
|
@ -2,13 +2,13 @@ library /*isNonNullableByDefault*/;
|
|||
//
|
||||
// Problems in library:
|
||||
//
|
||||
// pkg/front_end/testcases/sealed_class/sealed_abstract_class_declaration.dart:5:10: Error: A class can't be declared both 'sealed' and 'abstract'.
|
||||
// Try removing the 'abstract' or 'sealed' keyword.
|
||||
// pkg/front_end/testcases/sealed_class/sealed_abstract_class_declaration.dart:5:10: Error: A 'sealed' class can't be marked 'abstract' because it's already implicitly abstract.
|
||||
// Try removing the 'abstract' keyword.
|
||||
// abstract sealed class A {}
|
||||
// ^^^^^^
|
||||
//
|
||||
// pkg/front_end/testcases/sealed_class/sealed_abstract_class_declaration.dart:6:1: Error: A class can't be declared both 'sealed' and 'abstract'.
|
||||
// Try removing the 'abstract' or 'sealed' keyword.
|
||||
// pkg/front_end/testcases/sealed_class/sealed_abstract_class_declaration.dart:6:1: Error: A 'sealed' class can't be marked 'abstract' because it's already implicitly abstract.
|
||||
// Try removing the 'abstract' keyword.
|
||||
// sealed abstract class A {}
|
||||
// ^^^^^^
|
||||
//
|
||||
|
|
|
@ -2,13 +2,13 @@ library /*isNonNullableByDefault*/;
|
|||
//
|
||||
// Problems in library:
|
||||
//
|
||||
// pkg/front_end/testcases/sealed_class/sealed_abstract_class_declaration.dart:5:10: Error: A class can't be declared both 'sealed' and 'abstract'.
|
||||
// Try removing the 'abstract' or 'sealed' keyword.
|
||||
// pkg/front_end/testcases/sealed_class/sealed_abstract_class_declaration.dart:5:10: Error: A 'sealed' class can't be marked 'abstract' because it's already implicitly abstract.
|
||||
// Try removing the 'abstract' keyword.
|
||||
// abstract sealed class A {}
|
||||
// ^^^^^^
|
||||
//
|
||||
// pkg/front_end/testcases/sealed_class/sealed_abstract_class_declaration.dart:6:1: Error: A class can't be declared both 'sealed' and 'abstract'.
|
||||
// Try removing the 'abstract' or 'sealed' keyword.
|
||||
// pkg/front_end/testcases/sealed_class/sealed_abstract_class_declaration.dart:6:1: Error: A 'sealed' class can't be marked 'abstract' because it's already implicitly abstract.
|
||||
// Try removing the 'abstract' keyword.
|
||||
// sealed abstract class A {}
|
||||
// ^^^^^^
|
||||
//
|
||||
|
|
|
@ -2,13 +2,13 @@ library /*isNonNullableByDefault*/;
|
|||
//
|
||||
// Problems in library:
|
||||
//
|
||||
// pkg/front_end/testcases/sealed_class/sealed_abstract_class_declaration.dart:5:10: Error: A class can't be declared both 'sealed' and 'abstract'.
|
||||
// Try removing the 'abstract' or 'sealed' keyword.
|
||||
// pkg/front_end/testcases/sealed_class/sealed_abstract_class_declaration.dart:5:10: Error: A 'sealed' class can't be marked 'abstract' because it's already implicitly abstract.
|
||||
// Try removing the 'abstract' keyword.
|
||||
// abstract sealed class A {}
|
||||
// ^^^^^^
|
||||
//
|
||||
// pkg/front_end/testcases/sealed_class/sealed_abstract_class_declaration.dart:6:1: Error: A class can't be declared both 'sealed' and 'abstract'.
|
||||
// Try removing the 'abstract' or 'sealed' keyword.
|
||||
// pkg/front_end/testcases/sealed_class/sealed_abstract_class_declaration.dart:6:1: Error: A 'sealed' class can't be marked 'abstract' because it's already implicitly abstract.
|
||||
// Try removing the 'abstract' keyword.
|
||||
// sealed abstract class A {}
|
||||
// ^^^^^^
|
||||
//
|
||||
|
|
|
@ -2,13 +2,13 @@ library /*isNonNullableByDefault*/;
|
|||
//
|
||||
// Problems in library:
|
||||
//
|
||||
// pkg/front_end/testcases/sealed_class/sealed_abstract_class_declaration.dart:5:10: Error: A class can't be declared both 'sealed' and 'abstract'.
|
||||
// Try removing the 'abstract' or 'sealed' keyword.
|
||||
// pkg/front_end/testcases/sealed_class/sealed_abstract_class_declaration.dart:5:10: Error: A 'sealed' class can't be marked 'abstract' because it's already implicitly abstract.
|
||||
// Try removing the 'abstract' keyword.
|
||||
// abstract sealed class A {}
|
||||
// ^^^^^^
|
||||
//
|
||||
// pkg/front_end/testcases/sealed_class/sealed_abstract_class_declaration.dart:6:1: Error: A class can't be declared both 'sealed' and 'abstract'.
|
||||
// Try removing the 'abstract' or 'sealed' keyword.
|
||||
// pkg/front_end/testcases/sealed_class/sealed_abstract_class_declaration.dart:6:1: Error: A 'sealed' class can't be marked 'abstract' because it's already implicitly abstract.
|
||||
// Try removing the 'abstract' keyword.
|
||||
// sealed abstract class A {}
|
||||
// ^^^^^^
|
||||
//
|
||||
|
|
|
@ -42,13 +42,13 @@ abstract class SealedMembers {
|
|||
sealed abstract class SealedAndAbstractClass {}
|
||||
// [error column 1, length 6]
|
||||
// [analyzer] SYNTACTIC_ERROR.ABSTRACT_SEALED_CLASS
|
||||
// [cfe] A class can't be declared both 'sealed' and 'abstract'.
|
||||
// [cfe] A 'sealed' class can't be marked 'abstract' because it's already implicitly abstract.
|
||||
|
||||
|
||||
abstract sealed class SealedAndAbstractClass2 {}
|
||||
// ^^^^^^
|
||||
// [analyzer] SYNTACTIC_ERROR.ABSTRACT_SEALED_CLASS
|
||||
// [cfe] A class can't be declared both 'sealed' and 'abstract'.
|
||||
// [cfe] A 'sealed' class can't be marked 'abstract' because it's already implicitly abstract.
|
||||
|
||||
sealed sealed class SealedDuplicateClass {}
|
||||
// [error column 1, length 6]
|
||||
|
|
Loading…
Reference in a new issue