@@ -7,6 +7,7 @@ import 'dart:async';
7
7
import 'package:analysis_server/protocol/protocol.dart' ;
8
8
import 'package:analysis_server/protocol/protocol_constants.dart' ;
9
9
import 'package:analysis_server/protocol/protocol_generated.dart' ;
10
+ import 'package:analyzer/file_system/file_system.dart' ;
10
11
import 'package:test/test.dart' ;
11
12
import 'package:test_reflective_loader/test_reflective_loader.dart' ;
12
13
@@ -60,6 +61,14 @@ class AnalysisNotificationOverridesTest extends PubPackageAnalysisServerTest {
60
61
expect (member! .element.location! .offset, offset);
61
62
}
62
63
64
+ /// Asserts that there is an overridden superclass [OverriddenMember] at the
65
+ /// offset of [search] in [override] .
66
+ void assertHasSuperElementInFile (File file, String search) {
67
+ var offset = offsetInFile (file, search);
68
+ var member = overrideObject.superclassMember;
69
+ expect (member! .element.location! .offset, offset);
70
+ }
71
+
63
72
/// Asserts that there are no overridden members from interfaces.
64
73
void assertNoInterfaceMembers () {
65
74
expect (overrideObject.interfaceMembers, isNull);
@@ -522,6 +531,50 @@ class C extends B {
522
531
assertNoInterfaceMembers ();
523
532
}
524
533
534
+ Future <void > test_class_super_method_overriddenFromExtension () async {
535
+ var augmentation = newFile ('$testPackageLibPath /a.dart' , '''
536
+ library augment 'test.dart';
537
+
538
+ augment class A {
539
+ m() {} // in A
540
+ }
541
+ ''' );
542
+ addTestFile ('''
543
+ import augment 'a.dart';
544
+
545
+ class A {}
546
+ class B extends A {
547
+ m() {} // in B
548
+ }
549
+ ''' );
550
+ await prepareOverrides ();
551
+ assertHasOverride ('m() {} // in B' );
552
+ assertHasSuperElementInFile (augmentation, 'm() {} // in A' );
553
+ assertNoInterfaceMembers ();
554
+ }
555
+
556
+ Future <void > test_class_super_method_overrideFromExtension () async {
557
+ var augmented = newFile ('$testPackageLibPath /b.dart' , '''
558
+ import augment 'test.dart';
559
+
560
+ class A {
561
+ m() {} // in A
562
+ }
563
+ class B extends A {}
564
+ ''' );
565
+ addTestFile ('''
566
+ library augment 'b.dart';
567
+
568
+ augment class B {
569
+ m() {} // in B
570
+ }
571
+ ''' );
572
+ await prepareOverrides ();
573
+ assertHasOverride ('m() {} // in B' );
574
+ assertHasSuperElementInFile (augmented , 'm() {} // in A' );
575
+ assertNoInterfaceMembers ();
576
+ }
577
+
525
578
Future <void > test_class_super_method_privateByPrivate () async {
526
579
addTestFile ('''
527
580
class A {
0 commit comments