| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, 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 dart2js.compiler_base; | 5 library dart2js.compiler_base; |
| 6 | 6 |
| 7 import 'dart:async' show EventSink, Future; | 7 import 'dart:async' show EventSink, Future; |
| 8 | 8 |
| 9 import '../compiler_new.dart' as api; | 9 import '../compiler_new.dart' as api; |
| 10 import 'cache_strategy.dart' show CacheStrategy; | 10 import 'cache_strategy.dart' show CacheStrategy; |
| 11 import 'closure.dart' as closureMapping show ClosureTask; | 11 import 'closure.dart' as closureMapping show ClosureTask; |
| 12 import 'common/backend_api.dart' show Backend; | 12 import 'common/backend_api.dart' show Backend; |
| 13 import 'common/names.dart' show Selectors; | 13 import 'common/names.dart' show Selectors; |
| 14 import 'common/names.dart' show Identifiers, Uris; | 14 import 'common/names.dart' show Identifiers, Uris; |
| 15 import 'common/resolution.dart' | 15 import 'common/resolution.dart' |
| 16 show | 16 show |
| 17 ParsingContext, | 17 ParsingContext, |
| 18 Resolution, | 18 Resolution, |
| 19 ResolutionWorkItem, | 19 ResolutionWorkItem, |
| 20 ResolutionImpact, | 20 ResolutionImpact, |
| 21 Target; | 21 Target; |
| 22 import 'common/tasks.dart' show CompilerTask, GenericTask, Measurer; | 22 import 'common/tasks.dart' show CompilerTask, GenericTask, Measurer; |
| 23 import 'common/work.dart' show WorkItem; | 23 import 'common/work.dart' show WorkItem; |
| 24 import 'common.dart'; | 24 import 'common.dart'; |
| 25 import 'compile_time_constants.dart'; | 25 import 'compile_time_constants.dart'; |
| 26 import 'constants/values.dart'; | 26 import 'constants/values.dart'; |
| 27 import 'core_types.dart' show CommonElements; | 27 import 'core_types.dart' show CommonElements; |
| 28 import 'elements/resolution_types.dart' | 28 import 'elements/resolution_types.dart' |
| 29 show DartType, DynamicType, InterfaceType, Types; | 29 show |
| 30 ResolutionDartType, |
| 31 ResolutionDynamicType, |
| 32 ResolutionInterfaceType, |
| 33 Types; |
| 30 import 'deferred_load.dart' show DeferredLoadTask; | 34 import 'deferred_load.dart' show DeferredLoadTask; |
| 31 import 'diagnostics/code_location.dart'; | 35 import 'diagnostics/code_location.dart'; |
| 32 import 'diagnostics/diagnostic_listener.dart' show DiagnosticReporter; | 36 import 'diagnostics/diagnostic_listener.dart' show DiagnosticReporter; |
| 33 import 'diagnostics/invariant.dart' show REPORT_EXCESS_RESOLUTION; | 37 import 'diagnostics/invariant.dart' show REPORT_EXCESS_RESOLUTION; |
| 34 import 'diagnostics/messages.dart' show Message, MessageTemplate; | 38 import 'diagnostics/messages.dart' show Message, MessageTemplate; |
| 35 import 'dump_info.dart' show DumpInfoTask; | 39 import 'dump_info.dart' show DumpInfoTask; |
| 36 import 'elements/elements.dart'; | 40 import 'elements/elements.dart'; |
| 37 import 'elements/modelx.dart' show ErroneousElementX; | 41 import 'elements/modelx.dart' show ErroneousElementX; |
| 38 import 'enqueue.dart' show Enqueuer, EnqueueTask, ResolutionEnqueuer; | 42 import 'enqueue.dart' show Enqueuer, EnqueueTask, ResolutionEnqueuer; |
| 39 import 'environment.dart'; | 43 import 'environment.dart'; |
| (...skipping 1262 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1302 | 1306 |
| 1303 ClassElement _patchAnnotationClass; | 1307 ClassElement _patchAnnotationClass; |
| 1304 ClassElement get patchAnnotationClass => | 1308 ClassElement get patchAnnotationClass => |
| 1305 _patchAnnotationClass ??= _findRequired(jsHelperLibrary, '_Patch'); | 1309 _patchAnnotationClass ??= _findRequired(jsHelperLibrary, '_Patch'); |
| 1306 | 1310 |
| 1307 ClassElement _nativeAnnotationClass; | 1311 ClassElement _nativeAnnotationClass; |
| 1308 ClassElement get nativeAnnotationClass => | 1312 ClassElement get nativeAnnotationClass => |
| 1309 _nativeAnnotationClass ??= _findRequired(jsHelperLibrary, 'Native'); | 1313 _nativeAnnotationClass ??= _findRequired(jsHelperLibrary, 'Native'); |
| 1310 | 1314 |
| 1311 @override | 1315 @override |
| 1312 InterfaceType get objectType { | 1316 ResolutionInterfaceType get objectType { |
| 1313 objectClass.ensureResolved(resolution); | 1317 objectClass.ensureResolved(resolution); |
| 1314 return objectClass.rawType; | 1318 return objectClass.rawType; |
| 1315 } | 1319 } |
| 1316 | 1320 |
| 1317 @override | 1321 @override |
| 1318 InterfaceType get boolType { | 1322 ResolutionInterfaceType get boolType { |
| 1319 boolClass.ensureResolved(resolution); | 1323 boolClass.ensureResolved(resolution); |
| 1320 return boolClass.rawType; | 1324 return boolClass.rawType; |
| 1321 } | 1325 } |
| 1322 | 1326 |
| 1323 @override | 1327 @override |
| 1324 InterfaceType get doubleType { | 1328 ResolutionInterfaceType get doubleType { |
| 1325 doubleClass.ensureResolved(resolution); | 1329 doubleClass.ensureResolved(resolution); |
| 1326 return doubleClass.rawType; | 1330 return doubleClass.rawType; |
| 1327 } | 1331 } |
| 1328 | 1332 |
| 1329 @override | 1333 @override |
| 1330 InterfaceType get functionType { | 1334 ResolutionInterfaceType get functionType { |
| 1331 functionClass.ensureResolved(resolution); | 1335 functionClass.ensureResolved(resolution); |
| 1332 return functionClass.rawType; | 1336 return functionClass.rawType; |
| 1333 } | 1337 } |
| 1334 | 1338 |
| 1335 @override | 1339 @override |
| 1336 InterfaceType get intType { | 1340 ResolutionInterfaceType get intType { |
| 1337 intClass.ensureResolved(resolution); | 1341 intClass.ensureResolved(resolution); |
| 1338 return intClass.rawType; | 1342 return intClass.rawType; |
| 1339 } | 1343 } |
| 1340 | 1344 |
| 1341 @override | 1345 @override |
| 1342 InterfaceType get resourceType { | 1346 ResolutionInterfaceType get resourceType { |
| 1343 resourceClass.ensureResolved(resolution); | 1347 resourceClass.ensureResolved(resolution); |
| 1344 return resourceClass.rawType; | 1348 return resourceClass.rawType; |
| 1345 } | 1349 } |
| 1346 | 1350 |
| 1347 @override | 1351 @override |
| 1348 InterfaceType listType([DartType elementType]) { | 1352 ResolutionInterfaceType listType([ResolutionDartType elementType]) { |
| 1349 listClass.ensureResolved(resolution); | 1353 listClass.ensureResolved(resolution); |
| 1350 InterfaceType type = listClass.rawType; | 1354 ResolutionInterfaceType type = listClass.rawType; |
| 1351 if (elementType == null) { | 1355 if (elementType == null) { |
| 1352 return type; | 1356 return type; |
| 1353 } | 1357 } |
| 1354 return type.createInstantiation([elementType]); | 1358 return type.createInstantiation([elementType]); |
| 1355 } | 1359 } |
| 1356 | 1360 |
| 1357 @override | 1361 @override |
| 1358 InterfaceType mapType([DartType keyType, DartType valueType]) { | 1362 ResolutionInterfaceType mapType( |
| 1363 [ResolutionDartType keyType, ResolutionDartType valueType]) { |
| 1359 mapClass.ensureResolved(resolution); | 1364 mapClass.ensureResolved(resolution); |
| 1360 InterfaceType type = mapClass.rawType; | 1365 ResolutionInterfaceType type = mapClass.rawType; |
| 1361 if (keyType == null && valueType == null) { | 1366 if (keyType == null && valueType == null) { |
| 1362 return type; | 1367 return type; |
| 1363 } else if (keyType == null) { | 1368 } else if (keyType == null) { |
| 1364 keyType = const DynamicType(); | 1369 keyType = const ResolutionDynamicType(); |
| 1365 } else if (valueType == null) { | 1370 } else if (valueType == null) { |
| 1366 valueType = const DynamicType(); | 1371 valueType = const ResolutionDynamicType(); |
| 1367 } | 1372 } |
| 1368 return type.createInstantiation([keyType, valueType]); | 1373 return type.createInstantiation([keyType, valueType]); |
| 1369 } | 1374 } |
| 1370 | 1375 |
| 1371 @override | 1376 @override |
| 1372 InterfaceType get nullType { | 1377 ResolutionInterfaceType get nullType { |
| 1373 nullClass.ensureResolved(resolution); | 1378 nullClass.ensureResolved(resolution); |
| 1374 return nullClass.rawType; | 1379 return nullClass.rawType; |
| 1375 } | 1380 } |
| 1376 | 1381 |
| 1377 @override | 1382 @override |
| 1378 InterfaceType get numType { | 1383 ResolutionInterfaceType get numType { |
| 1379 numClass.ensureResolved(resolution); | 1384 numClass.ensureResolved(resolution); |
| 1380 return numClass.rawType; | 1385 return numClass.rawType; |
| 1381 } | 1386 } |
| 1382 | 1387 |
| 1383 @override | 1388 @override |
| 1384 InterfaceType get stringType { | 1389 ResolutionInterfaceType get stringType { |
| 1385 stringClass.ensureResolved(resolution); | 1390 stringClass.ensureResolved(resolution); |
| 1386 return stringClass.rawType; | 1391 return stringClass.rawType; |
| 1387 } | 1392 } |
| 1388 | 1393 |
| 1389 @override | 1394 @override |
| 1390 InterfaceType get symbolType { | 1395 ResolutionInterfaceType get symbolType { |
| 1391 symbolClass.ensureResolved(resolution); | 1396 symbolClass.ensureResolved(resolution); |
| 1392 return symbolClass.rawType; | 1397 return symbolClass.rawType; |
| 1393 } | 1398 } |
| 1394 | 1399 |
| 1395 @override | 1400 @override |
| 1396 InterfaceType get typeType { | 1401 ResolutionInterfaceType get typeType { |
| 1397 typeClass.ensureResolved(resolution); | 1402 typeClass.ensureResolved(resolution); |
| 1398 return typeClass.rawType; | 1403 return typeClass.rawType; |
| 1399 } | 1404 } |
| 1400 | 1405 |
| 1401 @override | 1406 @override |
| 1402 InterfaceType get stackTraceType { | 1407 ResolutionInterfaceType get stackTraceType { |
| 1403 stackTraceClass.ensureResolved(resolution); | 1408 stackTraceClass.ensureResolved(resolution); |
| 1404 return stackTraceClass.rawType; | 1409 return stackTraceClass.rawType; |
| 1405 } | 1410 } |
| 1406 | 1411 |
| 1407 @override | 1412 @override |
| 1408 InterfaceType iterableType([DartType elementType]) { | 1413 ResolutionInterfaceType iterableType([ResolutionDartType elementType]) { |
| 1409 iterableClass.ensureResolved(resolution); | 1414 iterableClass.ensureResolved(resolution); |
| 1410 InterfaceType type = iterableClass.rawType; | 1415 ResolutionInterfaceType type = iterableClass.rawType; |
| 1411 if (elementType == null) { | 1416 if (elementType == null) { |
| 1412 return type; | 1417 return type; |
| 1413 } | 1418 } |
| 1414 return type.createInstantiation([elementType]); | 1419 return type.createInstantiation([elementType]); |
| 1415 } | 1420 } |
| 1416 | 1421 |
| 1417 @override | 1422 @override |
| 1418 InterfaceType futureType([DartType elementType]) { | 1423 ResolutionInterfaceType futureType([ResolutionDartType elementType]) { |
| 1419 futureClass.ensureResolved(resolution); | 1424 futureClass.ensureResolved(resolution); |
| 1420 InterfaceType type = futureClass.rawType; | 1425 ResolutionInterfaceType type = futureClass.rawType; |
| 1421 if (elementType == null) { | 1426 if (elementType == null) { |
| 1422 return type; | 1427 return type; |
| 1423 } | 1428 } |
| 1424 return type.createInstantiation([elementType]); | 1429 return type.createInstantiation([elementType]); |
| 1425 } | 1430 } |
| 1426 | 1431 |
| 1427 @override | 1432 @override |
| 1428 InterfaceType streamType([DartType elementType]) { | 1433 ResolutionInterfaceType streamType([ResolutionDartType elementType]) { |
| 1429 streamClass.ensureResolved(resolution); | 1434 streamClass.ensureResolved(resolution); |
| 1430 InterfaceType type = streamClass.rawType; | 1435 ResolutionInterfaceType type = streamClass.rawType; |
| 1431 if (elementType == null) { | 1436 if (elementType == null) { |
| 1432 return type; | 1437 return type; |
| 1433 } | 1438 } |
| 1434 return type.createInstantiation([elementType]); | 1439 return type.createInstantiation([elementType]); |
| 1435 } | 1440 } |
| 1436 | 1441 |
| 1437 void onLibraryCreated(LibraryElement library) { | 1442 void onLibraryCreated(LibraryElement library) { |
| 1438 Uri uri = library.canonicalUri; | 1443 Uri uri = library.canonicalUri; |
| 1439 if (uri == Uris.dart_core) { | 1444 if (uri == Uris.dart_core) { |
| 1440 coreLibrary = library; | 1445 coreLibrary = library; |
| (...skipping 535 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1976 void resolveMetadataAnnotation(MetadataAnnotation metadataAnnotation) { | 1981 void resolveMetadataAnnotation(MetadataAnnotation metadataAnnotation) { |
| 1977 _compiler.resolver.resolveMetadataAnnotation(metadataAnnotation); | 1982 _compiler.resolver.resolveMetadataAnnotation(metadataAnnotation); |
| 1978 } | 1983 } |
| 1979 | 1984 |
| 1980 @override | 1985 @override |
| 1981 FunctionSignature resolveSignature(FunctionElement function) { | 1986 FunctionSignature resolveSignature(FunctionElement function) { |
| 1982 return _compiler.resolver.resolveSignature(function); | 1987 return _compiler.resolver.resolveSignature(function); |
| 1983 } | 1988 } |
| 1984 | 1989 |
| 1985 @override | 1990 @override |
| 1986 DartType resolveTypeAnnotation(Element element, TypeAnnotation node) { | 1991 ResolutionDartType resolveTypeAnnotation( |
| 1992 Element element, TypeAnnotation node) { |
| 1987 return _compiler.resolver.resolveTypeAnnotation(element, node); | 1993 return _compiler.resolver.resolveTypeAnnotation(element, node); |
| 1988 } | 1994 } |
| 1989 | 1995 |
| 1990 @override | 1996 @override |
| 1991 void ensureResolved(Element element) { | 1997 void ensureResolved(Element element) { |
| 1992 if (_compiler.serialization.isDeserialized(element)) { | 1998 if (_compiler.serialization.isDeserialized(element)) { |
| 1993 return; | 1999 return; |
| 1994 } | 2000 } |
| 1995 computeWorldImpact(element); | 2001 computeWorldImpact(element); |
| 1996 } | 2002 } |
| (...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2224 _ElementScanner(this.scanner); | 2230 _ElementScanner(this.scanner); |
| 2225 void scanLibrary(LibraryElement library) => scanner.scanLibrary(library); | 2231 void scanLibrary(LibraryElement library) => scanner.scanLibrary(library); |
| 2226 void scanUnit(CompilationUnitElement unit) => scanner.scan(unit); | 2232 void scanUnit(CompilationUnitElement unit) => scanner.scan(unit); |
| 2227 } | 2233 } |
| 2228 | 2234 |
| 2229 class _EmptyEnvironment implements Environment { | 2235 class _EmptyEnvironment implements Environment { |
| 2230 const _EmptyEnvironment(); | 2236 const _EmptyEnvironment(); |
| 2231 | 2237 |
| 2232 String valueOf(String key) => null; | 2238 String valueOf(String key) => null; |
| 2233 } | 2239 } |
| OLD | NEW |