OLD | NEW |
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, 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 library analyzer.test.src.summary.summary_test; | 5 library analyzer.test.src.summary.summary_test; |
6 | 6 |
7 import 'package:analyzer/dart/element/element.dart'; | 7 import 'package:analyzer/dart/element/element.dart'; |
8 import 'package:analyzer/src/generated/engine.dart'; | 8 import 'package:analyzer/src/generated/engine.dart'; |
9 import 'package:analyzer/src/generated/java_engine_io.dart'; | 9 import 'package:analyzer/src/generated/java_engine_io.dart'; |
10 import 'package:analyzer/src/generated/source.dart'; | 10 import 'package:analyzer/src/generated/source.dart'; |
(...skipping 769 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
780 expect(cls.typeParameters, hasLength(1)); | 780 expect(cls.typeParameters, hasLength(1)); |
781 expect(cls.typeParameters[0].name, 'T'); | 781 expect(cls.typeParameters[0].name, 'T'); |
782 expect(cls.typeParameters[0].bound, isNull); | 782 expect(cls.typeParameters[0].bound, isNull); |
783 } | 783 } |
784 | 784 |
785 test_constructor() { | 785 test_constructor() { |
786 UnlinkedExecutable executable = findExecutable('', | 786 UnlinkedExecutable executable = findExecutable('', |
787 executables: serializeClassText('class C { C(); }').executables); | 787 executables: serializeClassText('class C { C(); }').executables); |
788 expect(executable.kind, UnlinkedExecutableKind.constructor); | 788 expect(executable.kind, UnlinkedExecutableKind.constructor); |
789 expect(executable.hasImplicitReturnType, isFalse); | 789 expect(executable.hasImplicitReturnType, isFalse); |
| 790 expect(executable.isExternal, isFalse); |
790 } | 791 } |
791 | 792 |
792 test_constructor_anonymous() { | 793 test_constructor_anonymous() { |
793 UnlinkedExecutable executable = findExecutable('', | 794 UnlinkedExecutable executable = findExecutable('', |
794 executables: serializeClassText('class C { C(); }').executables); | 795 executables: serializeClassText('class C { C(); }').executables); |
795 expect(executable.name, isEmpty); | 796 expect(executable.name, isEmpty); |
796 } | 797 } |
797 | 798 |
798 test_constructor_const() { | 799 test_constructor_const() { |
799 UnlinkedExecutable executable = findExecutable('', | 800 UnlinkedExecutable executable = findExecutable('', |
800 executables: serializeClassText('class C { const C(); }').executables); | 801 executables: serializeClassText('class C { const C(); }').executables); |
801 expect(executable.isConst, isTrue); | 802 expect(executable.isConst, isTrue); |
| 803 expect(executable.isExternal, isFalse); |
| 804 } |
| 805 |
| 806 test_constructor_const_external() { |
| 807 UnlinkedExecutable executable = findExecutable('', |
| 808 executables: |
| 809 serializeClassText('class C { external const C(); }').executables); |
| 810 expect(executable.isConst, isTrue); |
| 811 expect(executable.isExternal, isTrue); |
| 812 } |
| 813 |
| 814 test_constructor_external() { |
| 815 UnlinkedExecutable executable = findExecutable('', |
| 816 executables: |
| 817 serializeClassText('class C { external C(); }').executables); |
| 818 expect(executable.isExternal, isTrue); |
802 } | 819 } |
803 | 820 |
804 test_constructor_factory() { | 821 test_constructor_factory() { |
805 UnlinkedExecutable executable = findExecutable('', | 822 UnlinkedExecutable executable = findExecutable('', |
806 executables: | 823 executables: |
807 serializeClassText('class C { factory C() => null; }').executables); | 824 serializeClassText('class C { factory C() => null; }').executables); |
808 expect(executable.isFactory, isTrue); | 825 expect(executable.isFactory, isTrue); |
809 } | 826 } |
810 | 827 |
811 test_constructor_implicit() { | 828 test_constructor_implicit() { |
(...skipping 297 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1109 UnlinkedExecutable executable = | 1126 UnlinkedExecutable executable = |
1110 serializeClassText('abstract class C { f() {} }').executables[0]; | 1127 serializeClassText('abstract class C { f() {} }').executables[0]; |
1111 expect(executable.isAbstract, isFalse); | 1128 expect(executable.isAbstract, isFalse); |
1112 } | 1129 } |
1113 | 1130 |
1114 test_executable_function() { | 1131 test_executable_function() { |
1115 UnlinkedExecutable executable = serializeExecutableText('f() {}'); | 1132 UnlinkedExecutable executable = serializeExecutableText('f() {}'); |
1116 expect(executable.kind, UnlinkedExecutableKind.functionOrMethod); | 1133 expect(executable.kind, UnlinkedExecutableKind.functionOrMethod); |
1117 expect(executable.hasImplicitReturnType, isTrue); | 1134 expect(executable.hasImplicitReturnType, isTrue); |
1118 checkDynamicTypeRef(executable.returnType); | 1135 checkDynamicTypeRef(executable.returnType); |
| 1136 expect(executable.isExternal, isFalse); |
1119 } | 1137 } |
1120 | 1138 |
1121 test_executable_function_explicit_return() { | 1139 test_executable_function_explicit_return() { |
1122 UnlinkedExecutable executable = | 1140 UnlinkedExecutable executable = |
1123 serializeExecutableText('dynamic f() => null;'); | 1141 serializeExecutableText('dynamic f() => null;'); |
1124 expect(executable.hasImplicitReturnType, isFalse); | 1142 expect(executable.hasImplicitReturnType, isFalse); |
1125 checkDynamicTypeRef(executable.returnType); | 1143 checkDynamicTypeRef(executable.returnType); |
1126 } | 1144 } |
1127 | 1145 |
| 1146 test_executable_function_external() { |
| 1147 UnlinkedExecutable executable = serializeExecutableText('external f();'); |
| 1148 expect(executable.isExternal, isTrue); |
| 1149 } |
| 1150 |
1128 test_executable_getter() { | 1151 test_executable_getter() { |
1129 UnlinkedExecutable executable = serializeExecutableText('int get f => 1;'); | 1152 UnlinkedExecutable executable = serializeExecutableText('int get f => 1;'); |
1130 expect(executable.kind, UnlinkedExecutableKind.getter); | 1153 expect(executable.kind, UnlinkedExecutableKind.getter); |
1131 expect(executable.hasImplicitReturnType, isFalse); | 1154 expect(executable.hasImplicitReturnType, isFalse); |
| 1155 expect(executable.isExternal, isFalse); |
1132 expect(findVariable('f'), isNull); | 1156 expect(findVariable('f'), isNull); |
1133 expect(findExecutable('f='), isNull); | 1157 expect(findExecutable('f='), isNull); |
1134 } | 1158 } |
1135 | 1159 |
| 1160 test_executable_getter_external() { |
| 1161 UnlinkedExecutable executable = |
| 1162 serializeExecutableText('external int get f;'); |
| 1163 expect(executable.isExternal, isTrue); |
| 1164 } |
| 1165 |
1136 test_executable_getter_type() { | 1166 test_executable_getter_type() { |
1137 UnlinkedExecutable executable = serializeExecutableText('int get f => 1;'); | 1167 UnlinkedExecutable executable = serializeExecutableText('int get f => 1;'); |
1138 checkTypeRef(executable.returnType, 'dart:core', 'dart:core', 'int'); | 1168 checkTypeRef(executable.returnType, 'dart:core', 'dart:core', 'int'); |
1139 expect(executable.parameters, isEmpty); | 1169 expect(executable.parameters, isEmpty); |
1140 } | 1170 } |
1141 | 1171 |
1142 test_executable_getter_type_implicit() { | 1172 test_executable_getter_type_implicit() { |
1143 UnlinkedExecutable executable = serializeExecutableText('get f => 1;'); | 1173 UnlinkedExecutable executable = serializeExecutableText('get f => 1;'); |
1144 checkDynamicTypeRef(executable.returnType); | 1174 checkDynamicTypeRef(executable.returnType); |
1145 expect(executable.hasImplicitReturnType, isTrue); | 1175 expect(executable.hasImplicitReturnType, isTrue); |
1146 expect(executable.parameters, isEmpty); | 1176 expect(executable.parameters, isEmpty); |
1147 } | 1177 } |
1148 | 1178 |
1149 test_executable_member_function() { | 1179 test_executable_member_function() { |
1150 UnlinkedExecutable executable = findExecutable('f', | 1180 UnlinkedExecutable executable = findExecutable('f', |
1151 executables: serializeClassText('class C { f() {} }').executables); | 1181 executables: serializeClassText('class C { f() {} }').executables); |
1152 expect(executable.kind, UnlinkedExecutableKind.functionOrMethod); | 1182 expect(executable.kind, UnlinkedExecutableKind.functionOrMethod); |
1153 expect(executable.hasImplicitReturnType, isTrue); | 1183 expect(executable.hasImplicitReturnType, isTrue); |
| 1184 expect(executable.isExternal, isFalse); |
1154 } | 1185 } |
1155 | 1186 |
1156 test_executable_member_function_explicit_return() { | 1187 test_executable_member_function_explicit_return() { |
1157 UnlinkedExecutable executable = findExecutable('f', | 1188 UnlinkedExecutable executable = findExecutable('f', |
1158 executables: | 1189 executables: |
1159 serializeClassText('class C { dynamic f() => null; }').executables); | 1190 serializeClassText('class C { dynamic f() => null; }').executables); |
1160 expect(executable.hasImplicitReturnType, isFalse); | 1191 expect(executable.hasImplicitReturnType, isFalse); |
1161 } | 1192 } |
1162 | 1193 |
| 1194 test_executable_member_function_external() { |
| 1195 UnlinkedExecutable executable = findExecutable('f', |
| 1196 executables: |
| 1197 serializeClassText('class C { external f(); }').executables); |
| 1198 expect(executable.isExternal, isTrue); |
| 1199 } |
| 1200 |
1163 test_executable_member_getter() { | 1201 test_executable_member_getter() { |
1164 UnlinkedClass cls = serializeClassText('class C { int get f => 1; }'); | 1202 UnlinkedClass cls = serializeClassText('class C { int get f => 1; }'); |
1165 UnlinkedExecutable executable = | 1203 UnlinkedExecutable executable = |
1166 findExecutable('f', executables: cls.executables, failIfAbsent: true); | 1204 findExecutable('f', executables: cls.executables, failIfAbsent: true); |
1167 expect(executable.kind, UnlinkedExecutableKind.getter); | 1205 expect(executable.kind, UnlinkedExecutableKind.getter); |
1168 expect(executable.hasImplicitReturnType, isFalse); | 1206 expect(executable.hasImplicitReturnType, isFalse); |
| 1207 expect(executable.isExternal, isFalse); |
1169 expect(findVariable('f', variables: cls.fields), isNull); | 1208 expect(findVariable('f', variables: cls.fields), isNull); |
1170 expect(findExecutable('f=', executables: cls.executables), isNull); | 1209 expect(findExecutable('f=', executables: cls.executables), isNull); |
1171 } | 1210 } |
1172 | 1211 |
| 1212 test_executable_member_getter_external() { |
| 1213 UnlinkedClass cls = serializeClassText('class C { external int get f; }'); |
| 1214 UnlinkedExecutable executable = |
| 1215 findExecutable('f', executables: cls.executables, failIfAbsent: true); |
| 1216 expect(executable.isExternal, isTrue); |
| 1217 } |
| 1218 |
1173 test_executable_member_setter() { | 1219 test_executable_member_setter() { |
1174 UnlinkedClass cls = serializeClassText('class C { void set f(value) {} }'); | 1220 UnlinkedClass cls = serializeClassText('class C { void set f(value) {} }'); |
1175 UnlinkedExecutable executable = | 1221 UnlinkedExecutable executable = |
1176 findExecutable('f=', executables: cls.executables, failIfAbsent: true); | 1222 findExecutable('f=', executables: cls.executables, failIfAbsent: true); |
1177 expect(executable.kind, UnlinkedExecutableKind.setter); | 1223 expect(executable.kind, UnlinkedExecutableKind.setter); |
1178 // For setters, hasImplicitReturnType is always false. | 1224 // For setters, hasImplicitReturnType is always false. |
1179 expect(executable.hasImplicitReturnType, isFalse); | 1225 expect(executable.hasImplicitReturnType, isFalse); |
| 1226 expect(executable.isExternal, isFalse); |
1180 expect(findVariable('f', variables: cls.fields), isNull); | 1227 expect(findVariable('f', variables: cls.fields), isNull); |
1181 expect(findExecutable('f', executables: cls.executables), isNull); | 1228 expect(findExecutable('f', executables: cls.executables), isNull); |
1182 } | 1229 } |
1183 | 1230 |
| 1231 test_executable_member_setter_external() { |
| 1232 UnlinkedClass cls = |
| 1233 serializeClassText('class C { external void set f(value); }'); |
| 1234 UnlinkedExecutable executable = |
| 1235 findExecutable('f=', executables: cls.executables, failIfAbsent: true); |
| 1236 expect(executable.isExternal, isTrue); |
| 1237 } |
| 1238 |
1184 test_executable_member_setter_implicit_return() { | 1239 test_executable_member_setter_implicit_return() { |
1185 UnlinkedClass cls = serializeClassText('class C { set f(value) {} }'); | 1240 UnlinkedClass cls = serializeClassText('class C { set f(value) {} }'); |
1186 UnlinkedExecutable executable = | 1241 UnlinkedExecutable executable = |
1187 findExecutable('f=', executables: cls.executables, failIfAbsent: true); | 1242 findExecutable('f=', executables: cls.executables, failIfAbsent: true); |
1188 expect(executable.hasImplicitReturnType, isFalse); | 1243 expect(executable.hasImplicitReturnType, isFalse); |
1189 checkDynamicTypeRef(executable.returnType); | 1244 checkDynamicTypeRef(executable.returnType); |
1190 } | 1245 } |
1191 | 1246 |
1192 test_executable_name() { | 1247 test_executable_name() { |
1193 UnlinkedExecutable executable = serializeExecutableText('f() {}'); | 1248 UnlinkedExecutable executable = serializeExecutableText('f() {}'); |
(...skipping 13 matching lines...) Expand all Loading... |
1207 serializeClassText('class C { f() {} }').executables[0]; | 1262 serializeClassText('class C { f() {} }').executables[0]; |
1208 expect(executable.isStatic, isFalse); | 1263 expect(executable.isStatic, isFalse); |
1209 } | 1264 } |
1210 | 1265 |
1211 test_executable_non_static_top_level() { | 1266 test_executable_non_static_top_level() { |
1212 // Top level executables are considered non-static. | 1267 // Top level executables are considered non-static. |
1213 UnlinkedExecutable executable = serializeExecutableText('f() {}'); | 1268 UnlinkedExecutable executable = serializeExecutableText('f() {}'); |
1214 expect(executable.isStatic, isFalse); | 1269 expect(executable.isStatic, isFalse); |
1215 } | 1270 } |
1216 | 1271 |
| 1272 test_executable_operator() { |
| 1273 UnlinkedExecutable executable = |
| 1274 serializeClassText('class C { C operator+(C c) => null; }').executables[ |
| 1275 0]; |
| 1276 expect(executable.kind, UnlinkedExecutableKind.functionOrMethod); |
| 1277 expect(executable.name, '+'); |
| 1278 expect(executable.hasImplicitReturnType, false); |
| 1279 expect(executable.isAbstract, false); |
| 1280 expect(executable.isConst, false); |
| 1281 expect(executable.isFactory, false); |
| 1282 expect(executable.isStatic, false); |
| 1283 expect(executable.parameters, hasLength(1)); |
| 1284 checkTypeRef(executable.returnType, null, null, 'C'); |
| 1285 expect(executable.typeParameters, isEmpty); |
| 1286 expect(executable.isExternal, false); |
| 1287 } |
| 1288 |
| 1289 test_executable_operator_external() { |
| 1290 UnlinkedExecutable executable = |
| 1291 serializeClassText('class C { external C operator+(C c); }') |
| 1292 .executables[0]; |
| 1293 expect(executable.isExternal, true); |
| 1294 } |
| 1295 |
1217 test_executable_operator_index() { | 1296 test_executable_operator_index() { |
1218 UnlinkedExecutable executable = | 1297 UnlinkedExecutable executable = |
1219 serializeClassText('class C { bool operator[](int i) => null; }') | 1298 serializeClassText('class C { bool operator[](int i) => null; }') |
1220 .executables[0]; | 1299 .executables[0]; |
1221 expect(executable.kind, UnlinkedExecutableKind.functionOrMethod); | 1300 expect(executable.kind, UnlinkedExecutableKind.functionOrMethod); |
1222 expect(executable.name, '[]'); | 1301 expect(executable.name, '[]'); |
1223 expect(executable.hasImplicitReturnType, false); | 1302 expect(executable.hasImplicitReturnType, false); |
1224 expect(executable.isAbstract, false); | 1303 expect(executable.isAbstract, false); |
1225 expect(executable.isConst, false); | 1304 expect(executable.isConst, false); |
1226 expect(executable.isFactory, false); | 1305 expect(executable.isFactory, false); |
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1364 test_executable_return_type_void() { | 1443 test_executable_return_type_void() { |
1365 UnlinkedExecutable executable = serializeExecutableText('void f() {}'); | 1444 UnlinkedExecutable executable = serializeExecutableText('void f() {}'); |
1366 expect(executable.returnType, isNull); | 1445 expect(executable.returnType, isNull); |
1367 } | 1446 } |
1368 | 1447 |
1369 test_executable_setter() { | 1448 test_executable_setter() { |
1370 UnlinkedExecutable executable = | 1449 UnlinkedExecutable executable = |
1371 serializeExecutableText('void set f(value) {}', 'f='); | 1450 serializeExecutableText('void set f(value) {}', 'f='); |
1372 expect(executable.kind, UnlinkedExecutableKind.setter); | 1451 expect(executable.kind, UnlinkedExecutableKind.setter); |
1373 expect(executable.hasImplicitReturnType, isFalse); | 1452 expect(executable.hasImplicitReturnType, isFalse); |
| 1453 expect(executable.isExternal, isFalse); |
1374 expect(findVariable('f'), isNull); | 1454 expect(findVariable('f'), isNull); |
1375 expect(findExecutable('f'), isNull); | 1455 expect(findExecutable('f'), isNull); |
1376 } | 1456 } |
1377 | 1457 |
| 1458 test_executable_setter_external() { |
| 1459 UnlinkedExecutable executable = |
| 1460 serializeExecutableText('external void set f(value);', 'f='); |
| 1461 expect(executable.isExternal, isTrue); |
| 1462 } |
| 1463 |
1378 test_executable_setter_implicit_return() { | 1464 test_executable_setter_implicit_return() { |
1379 UnlinkedExecutable executable = | 1465 UnlinkedExecutable executable = |
1380 serializeExecutableText('set f(value) {}', 'f='); | 1466 serializeExecutableText('set f(value) {}', 'f='); |
1381 // For setters, hasImplicitReturnType is always false. | 1467 // For setters, hasImplicitReturnType is always false. |
1382 expect(executable.hasImplicitReturnType, isFalse); | 1468 expect(executable.hasImplicitReturnType, isFalse); |
1383 checkDynamicTypeRef(executable.returnType); | 1469 checkDynamicTypeRef(executable.returnType); |
1384 } | 1470 } |
1385 | 1471 |
1386 test_executable_setter_type() { | 1472 test_executable_setter_type() { |
1387 UnlinkedExecutable executable = | 1473 UnlinkedExecutable executable = |
(...skipping 630 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2018 serializeClassText('class C { static int i; }').fields[0]; | 2104 serializeClassText('class C { static int i; }').fields[0]; |
2019 expect(variable.isStatic, isTrue); | 2105 expect(variable.isStatic, isTrue); |
2020 } | 2106 } |
2021 | 2107 |
2022 test_variable_type() { | 2108 test_variable_type() { |
2023 UnlinkedVariable variable = | 2109 UnlinkedVariable variable = |
2024 serializeVariableText('int i;', variableName: 'i'); | 2110 serializeVariableText('int i;', variableName: 'i'); |
2025 checkTypeRef(variable.type, 'dart:core', 'dart:core', 'int'); | 2111 checkTypeRef(variable.type, 'dart:core', 'dart:core', 'int'); |
2026 } | 2112 } |
2027 } | 2113 } |
OLD | NEW |