Augment. Allow 'static abstract' fields.
Change-Id: I42c4bbb9193c2debd3661898a8c410f76916958a Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/504720 Reviewed-by: Brian Wilkerson <brianwilkerson@google.com> Reviewed-by: Johnni Winther <johnniwinther@google.com> Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
This commit is contained in:
committed by
dart-scoped@luci-project-accounts.iam.gserviceaccount.com
parent
a07da4d626
commit
39fcaa5d01
@@ -227,17 +227,20 @@ class RemoveLexemeTest extends FixProcessorTest {
|
||||
|
||||
Future<void> test_abstract_static_field() async {
|
||||
await resolveTestCode('''
|
||||
// @dart = 3.5
|
||||
abstract class A {
|
||||
abstract static int? i;
|
||||
}
|
||||
''');
|
||||
await assertHasFix('''
|
||||
// @dart = 3.5
|
||||
abstract class A {
|
||||
static int? i;
|
||||
}
|
||||
''');
|
||||
}
|
||||
|
||||
@FailingTest(reason: 'The code snippet and test name do not match')
|
||||
Future<void> test_abstract_static_method() async {
|
||||
await resolveTestCode('''
|
||||
abstract class A {
|
||||
|
||||
@@ -6046,7 +6046,7 @@ class AstBuilder extends StackListener {
|
||||
assert(optional(';', endToken));
|
||||
|
||||
if (abstractToken != null) {
|
||||
if (staticToken != null) {
|
||||
if (staticToken != null && !enableAugmentations) {
|
||||
handleRecoverableError(
|
||||
fe_diag.abstractStaticField,
|
||||
abstractToken,
|
||||
|
||||
@@ -3052,29 +3052,6 @@ FieldDeclaration
|
||||
''');
|
||||
}
|
||||
|
||||
void test_parseField_abstract_static() {
|
||||
var parseResult = parseStringWithErrors(r'''
|
||||
class C {
|
||||
abstract static int? i;
|
||||
}
|
||||
''');
|
||||
parseResult.assertErrors([error(diag.abstractStaticField, 12, 8)]);
|
||||
var node = parseResult.findNode.singleClassMember;
|
||||
assertParsedNodeText(node, r'''
|
||||
FieldDeclaration
|
||||
staticKeyword: static
|
||||
abstractKeyword: abstract
|
||||
fields: VariableDeclarationList
|
||||
type: NamedType
|
||||
name: int
|
||||
question: ?
|
||||
variables
|
||||
VariableDeclaration
|
||||
name: i
|
||||
semicolon: ;
|
||||
''');
|
||||
}
|
||||
|
||||
void test_parseField_const_late() {
|
||||
var parseResult = parseStringWithErrors(r'''
|
||||
class C {
|
||||
|
||||
@@ -1407,6 +1407,69 @@ ClassDeclaration
|
||||
''');
|
||||
}
|
||||
|
||||
test_field_static_abstract() {
|
||||
var parseResult = parseStringWithErrors(r'''
|
||||
class A {
|
||||
static abstract int? foo;
|
||||
}
|
||||
''');
|
||||
parseResult.assertExpectedDiagnostics();
|
||||
assertParsedNodeText(parseResult.findNode.singleClassDeclaration, r'''
|
||||
ClassDeclaration
|
||||
classKeyword: class
|
||||
namePart: NameWithTypeParameters
|
||||
typeName: A
|
||||
body: BlockClassBody
|
||||
leftBracket: {
|
||||
members
|
||||
FieldDeclaration
|
||||
staticKeyword: static
|
||||
abstractKeyword: abstract
|
||||
fields: VariableDeclarationList
|
||||
type: NamedType
|
||||
name: int
|
||||
question: ?
|
||||
variables
|
||||
VariableDeclaration
|
||||
name: foo
|
||||
semicolon: ;
|
||||
rightBracket: }
|
||||
''');
|
||||
}
|
||||
|
||||
test_field_static_abstract_language305() {
|
||||
var parseResult = parseStringWithErrors(r'''
|
||||
// @dart = 3.5
|
||||
class A {
|
||||
static abstract int? foo;
|
||||
// ^^^^^^^^
|
||||
// [diag.abstractStaticField] Static fields can't be declared 'abstract'.
|
||||
}
|
||||
''');
|
||||
parseResult.assertExpectedDiagnostics();
|
||||
assertParsedNodeText(parseResult.findNode.singleClassDeclaration, r'''
|
||||
ClassDeclaration
|
||||
classKeyword: class
|
||||
namePart: NameWithTypeParameters
|
||||
typeName: A
|
||||
body: BlockClassBody
|
||||
leftBracket: {
|
||||
members
|
||||
FieldDeclaration
|
||||
staticKeyword: static
|
||||
abstractKeyword: abstract
|
||||
fields: VariableDeclarationList
|
||||
type: NamedType
|
||||
name: int
|
||||
question: ?
|
||||
variables
|
||||
VariableDeclaration
|
||||
name: foo
|
||||
semicolon: ;
|
||||
rightBracket: }
|
||||
''');
|
||||
}
|
||||
|
||||
test_getter_augment() {
|
||||
var parseResult = parseStringWithErrors(r'''
|
||||
augment class A {
|
||||
|
||||
Reference in New Issue
Block a user