Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1069)

Unified Diff: pkg/analysis_server/test/search/type_hierarchy_test.dart

Issue 956023003: Issue 21804. Type hierarchy should show overrides in mixins. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pkg/analysis_server/lib/src/search/type_hierarchy.dart ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/analysis_server/test/search/type_hierarchy_test.dart
diff --git a/pkg/analysis_server/test/search/type_hierarchy_test.dart b/pkg/analysis_server/test/search/type_hierarchy_test.dart
index e799f3783ca4eaa860447232e18206719fe624f0..7f6429b8038986840eda5f7b0ced1ab11c38b130 100644
--- a/pkg/analysis_server/test/search/type_hierarchy_test.dart
+++ b/pkg/analysis_server/test/search/type_hierarchy_test.dart
@@ -484,6 +484,92 @@ class D extends C {
findOffset('test() {} // in D'));
}
+ test_member_ofMixin_getter() async {
+ addTestFile('''
+abstract class Base {
+ get test; // in Base
+}
+class Mixin {
+ get test => null; // in Mixin
+}
+class Derived1 extends Base with Mixin {}
+class Derived2 extends Base {
+ get test => null; // in Derived2
+}
+''');
+ List<TypeHierarchyItem> items = await _getTypeHierarchy('test; // in Base');
+ var itemBase = items.firstWhere((e) => e.classElement.name == 'Base');
+ var item1 = items.firstWhere((e) => e.classElement.name == 'Derived1');
+ var item2 = items.firstWhere((e) => e.classElement.name == 'Derived2');
+ Element memberBase = itemBase.memberElement;
+ Element member1 = item1.memberElement;
+ Element member2 = item2.memberElement;
+ expect(memberBase, isNotNull);
+ expect(member1, isNotNull);
+ expect(member2, isNotNull);
+ expect(memberBase.location.offset, findOffset('test; // in Base'));
+ expect(member1.location.offset, findOffset('test => null; // in Mixin'));
+ expect(member2.location.offset, findOffset('test => null; // in Derived2'));
+ }
+
+ test_member_ofMixin_method() async {
+ addTestFile('''
+abstract class Base {
+ void test(); // in Base
+}
+class Mixin {
+ void test() {} // in Mixin
+}
+class Derived1 extends Base with Mixin {}
+class Derived2 extends Base {
+ void test() {} // in Derived2
+}
+''');
+ List<TypeHierarchyItem> items =
+ await _getTypeHierarchy('test(); // in Base');
+ var itemBase = items.firstWhere((e) => e.classElement.name == 'Base');
+ var item1 = items.firstWhere((e) => e.classElement.name == 'Derived1');
+ var item2 = items.firstWhere((e) => e.classElement.name == 'Derived2');
+ Element memberBase = itemBase.memberElement;
+ Element member1 = item1.memberElement;
+ Element member2 = item2.memberElement;
+ expect(memberBase, isNotNull);
+ expect(member1, isNotNull);
+ expect(member2, isNotNull);
+ expect(memberBase.location.offset, findOffset('test(); // in Base'));
+ expect(member1.location.offset, findOffset('test() {} // in Mixin'));
+ expect(member2.location.offset, findOffset('test() {} // in Derived2'));
+ }
+
+ test_member_ofMixin_setter() async {
+ addTestFile('''
+abstract class Base {
+ set test(x); // in Base
+}
+class Mixin {
+ set test(x) {} // in Mixin
+}
+class Derived1 extends Base with Mixin {}
+class Derived2 extends Base {
+ set test(x) {} // in Derived2
+}
+''');
+ List<TypeHierarchyItem> items =
+ await _getTypeHierarchy('test(x); // in Base');
+ var itemBase = items.firstWhere((e) => e.classElement.name == 'Base');
+ var item1 = items.firstWhere((e) => e.classElement.name == 'Derived1');
+ var item2 = items.firstWhere((e) => e.classElement.name == 'Derived2');
+ Element memberBase = itemBase.memberElement;
+ Element member1 = item1.memberElement;
+ Element member2 = item2.memberElement;
+ expect(memberBase, isNotNull);
+ expect(member1, isNotNull);
+ expect(member2, isNotNull);
+ expect(memberBase.location.offset, findOffset('test(x); // in Base'));
+ expect(member1.location.offset, findOffset('test(x) {} // in Mixin'));
+ expect(member2.location.offset, findOffset('test(x) {} // in Derived2'));
+ }
+
test_member_operator() async {
addTestFile('''
class A {
« no previous file with comments | « pkg/analysis_server/lib/src/search/type_hierarchy.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698