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

Side by Side Diff: pkg/analyzer2dart/test/identifier_semantics_test.dart

Issue 712313004: Fix AccessSemantics for function typedefs and "dynamic". (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 1 month 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « pkg/analyzer2dart/lib/src/semantic_visitor.dart ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 import 'package:unittest/unittest.dart'; 5 import 'package:unittest/unittest.dart';
6 import 'package:analyzer/file_system/memory_file_system.dart'; 6 import 'package:analyzer/file_system/memory_file_system.dart';
7 import 'mock_sdk.dart'; 7 import 'mock_sdk.dart';
8 import 'package:analyzer/src/generated/sdk.dart'; 8 import 'package:analyzer/src/generated/sdk.dart';
9 import 'package:analyzer/file_system/file_system.dart'; 9 import 'package:analyzer/file_system/file_system.dart';
10 import 'package:analyzer/src/generated/source.dart'; 10 import 'package:analyzer/src/generated/source.dart';
(...skipping 1079 matching lines...) Expand 10 before | Expand all | Expand 10 after
1090 } 1090 }
1091 '''); 1091 ''');
1092 helper.checkDynamic('h().x', 'h()', 'x', isRead: true); 1092 helper.checkDynamic('h().x', 'h()', 'x', isRead: true);
1093 }); 1093 });
1094 1094
1095 test('Get class defined at top level', () { 1095 test('Get class defined at top level', () {
1096 Helper helper = new Helper(''' 1096 Helper helper = new Helper('''
1097 class A {} 1097 class A {}
1098 var t = A; 1098 var t = A;
1099 '''); 1099 ''');
1100 helper.checkTypeReference('A', 'A', AccessKind.TOPLEVEL_CLASS); 1100 helper.checkTypeReference('A', 'A', AccessKind.TOPLEVEL_TYPE);
1101 }); 1101 });
1102 1102
1103 test('Get class defined at top level via prefix', () { 1103 test('Get class defined at top level via prefix', () {
1104 Helper helper = new Helper(''' 1104 Helper helper = new Helper('''
1105 import 'lib.dart' as l; 1105 import 'lib.dart' as l;
1106 1106
1107 var t = l.A; 1107 var t = l.A;
1108 '''); 1108 ''');
1109 helper.addFile('/lib.dart', ''' 1109 helper.addFile('/lib.dart', '''
1110 library lib; 1110 library lib;
1111 1111
1112 class A; 1112 class A;
1113 '''); 1113 ''');
1114 helper.checkTypeReference('l.A', 'A', AccessKind.TOPLEVEL_CLASS); 1114 helper.checkTypeReference('l.A', 'A', AccessKind.TOPLEVEL_TYPE);
1115 });
1116
1117 test('Get dynamic type', () {
1118 Helper helper = new Helper('''
1119 var t = dynamic;
1120 ''');
1121 helper.checkTypeReference('dynamic', 'dynamic', AccessKind.TOPLEVEL_TYPE);
1122 });
1123
1124 test('Get function typedef defined at top level', () {
1125 Helper helper = new Helper('''
1126 typedef F();
1127 var t = F;
1128 ''');
1129 helper.checkTypeReference('F', 'F', AccessKind.TOPLEVEL_TYPE);
1130 });
1131
1132 test('Get function typedef defined at top level via prefix', () {
1133 Helper helper = new Helper('''
1134 import 'lib.dart' as l;
1135
1136 var t = l.F;
1137 ''');
1138 helper.addFile('/lib.dart', '''
1139 library lib;
1140
1141 typedef F();
1142 ''');
1143 helper.checkTypeReference('l.F', 'F', AccessKind.TOPLEVEL_TYPE);
1144 });
1145
1146 test('Get mixin application defined at top level', () {
1147 Helper helper = new Helper('''
1148 class A {}
1149 class B {}
1150 class C = A with B;
1151 var t = C;
1152 ''');
1153 helper.checkTypeReference('C', 'C', AccessKind.TOPLEVEL_TYPE);
1154 });
1155
1156 test('Get mixin application defined at top level via prefix', () {
1157 Helper helper = new Helper('''
1158 import 'lib.dart' as l;
1159
1160 var t = l.C;
1161 ''');
1162 helper.addFile('/lib.dart', '''
1163 library lib;
1164
1165 class A;
1166 class B;
1167 class C = A with B;
1168 ''');
1169 helper.checkTypeReference('l.C', 'C', AccessKind.TOPLEVEL_TYPE);
1115 }); 1170 });
1116 1171
1117 test('Get type parameter of enclosing class', () { 1172 test('Get type parameter of enclosing class', () {
1118 Helper helper = new Helper(''' 1173 Helper helper = new Helper('''
1119 class A<T, U> { 1174 class A<T, U> {
1120 f() { 1175 f() {
1121 var t = U; 1176 var t = U;
1122 } 1177 }
1123 } 1178 }
1124 '''); 1179 ''');
(...skipping 1182 matching lines...) Expand 10 before | Expand all | Expand 10 after
2307 } 2362 }
2308 2363
2309 @override 2364 @override
2310 visitSimpleIdentifier(SimpleIdentifier node) { 2365 visitSimpleIdentifier(SimpleIdentifier node) {
2311 AccessSemantics semantics = node.accept(ACCESS_SEMANTICS_VISITOR); 2366 AccessSemantics semantics = node.accept(ACCESS_SEMANTICS_VISITOR);
2312 if (semantics != null) { 2367 if (semantics != null) {
2313 onAccess(node, semantics); 2368 onAccess(node, semantics);
2314 } 2369 }
2315 } 2370 }
2316 } 2371 }
OLDNEW
« no previous file with comments | « pkg/analyzer2dart/lib/src/semantic_visitor.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698