Chromium Code Reviews| 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.src.summary.summary_sdk; | 5 library analyzer.src.summary.summary_sdk; |
| 6 | 6 |
| 7 import 'package:analyzer/dart/element/element.dart'; | 7 import 'package:analyzer/dart/element/element.dart'; |
| 8 import 'package:analyzer/dart/element/type.dart'; | 8 import 'package:analyzer/dart/element/type.dart'; |
| 9 import 'package:analyzer/src/context/cache.dart' show CacheEntry; | 9 import 'package:analyzer/src/context/cache.dart' show CacheEntry; |
| 10 import 'package:analyzer/src/context/context.dart'; | 10 import 'package:analyzer/src/context/context.dart'; |
| 11 import 'package:analyzer/src/dart/element/type.dart'; | 11 import 'package:analyzer/src/dart/element/type.dart'; |
| 12 import 'package:analyzer/src/generated/constant.dart'; | 12 import 'package:analyzer/src/generated/constant.dart'; |
| 13 import 'package:analyzer/src/generated/engine.dart'; | 13 import 'package:analyzer/src/generated/engine.dart'; |
| 14 import 'package:analyzer/src/generated/resolver.dart'; | 14 import 'package:analyzer/src/generated/resolver.dart'; |
| 15 import 'package:analyzer/src/generated/source.dart' | 15 import 'package:analyzer/src/generated/source.dart' |
| 16 show DartUriResolver, Source, SourceFactory, SourceKind; | 16 show DartUriResolver, Source, SourceFactory, SourceKind; |
| 17 import 'package:analyzer/src/summary/idl.dart'; | 17 import 'package:analyzer/src/summary/idl.dart'; |
| 18 import 'package:analyzer/src/summary/resynthesize.dart'; | 18 import 'package:analyzer/src/summary/resynthesize.dart'; |
| 19 import 'package:analyzer/src/task/dart.dart' | 19 import 'package:analyzer/src/task/dart.dart'; |
| 20 show | |
| 21 CONSTANT_VALUE, | |
| 22 LIBRARY_ELEMENT1, | |
| 23 LIBRARY_ELEMENT2, | |
| 24 LIBRARY_ELEMENT3, | |
| 25 LIBRARY_ELEMENT4, | |
| 26 LIBRARY_ELEMENT5, | |
| 27 LIBRARY_ELEMENT6, | |
| 28 LIBRARY_ELEMENT7, | |
| 29 LIBRARY_ELEMENT8, | |
| 30 READY_LIBRARY_ELEMENT2, | |
| 31 READY_LIBRARY_ELEMENT5, | |
| 32 READY_LIBRARY_ELEMENT6, | |
| 33 TYPE_PROVIDER; | |
| 34 import 'package:analyzer/task/dart.dart'; | 20 import 'package:analyzer/task/dart.dart'; |
| 35 import 'package:analyzer/task/model.dart' | 21 import 'package:analyzer/task/model.dart' |
| 36 show AnalysisTarget, ResultDescriptor, TargetedResult; | 22 show AnalysisTarget, ResultDescriptor, TargetedResult; |
| 37 | 23 |
| 38 class SdkSummaryResultProvider implements SummaryResultProvider { | 24 class SdkSummaryResultProvider implements SummaryResultProvider { |
| 39 final InternalAnalysisContext context; | 25 final InternalAnalysisContext context; |
| 40 final SdkBundle bundle; | 26 final SdkBundle bundle; |
| 41 final SummaryTypeProvider typeProvider = new SummaryTypeProvider(); | 27 final SummaryTypeProvider typeProvider = new SummaryTypeProvider(); |
| 42 | 28 |
| 43 @override | 29 @override |
| 44 SummaryResynthesizer resynthesizer; | 30 SummaryResynthesizer resynthesizer; |
| 45 | 31 |
| 46 SdkSummaryResultProvider(this.context, this.bundle) { | 32 SdkSummaryResultProvider(this.context, this.bundle) { |
| 47 resynthesizer = new SdkSummaryResynthesizer( | 33 resynthesizer = new SdkSummaryResynthesizer( |
| 48 context, typeProvider, context.sourceFactory, bundle); | 34 context, typeProvider, context.sourceFactory, bundle); |
| 49 _buildCoreLibrary(); | 35 _buildCoreLibrary(); |
| 50 _buildAsyncLibrary(); | 36 _buildAsyncLibrary(); |
| 51 resynthesizer.finalizeCoreAsyncLibraries(); | 37 resynthesizer.finalizeCoreAsyncLibraries(); |
| 52 context.typeProvider = typeProvider; | 38 context.typeProvider = typeProvider; |
| 53 } | 39 } |
| 54 | 40 |
| 55 @override | 41 @override |
| 56 bool compute(CacheEntry entry, ResultDescriptor result) { | 42 bool compute(CacheEntry entry, ResultDescriptor result) { |
| 57 if (result == TYPE_PROVIDER) { | 43 if (result == TYPE_PROVIDER) { |
| 58 // print('SummarySdkAnalysisContext: $result'); | |
| 59 entry.setValue(result, typeProvider, TargetedResult.EMPTY_LIST); | 44 entry.setValue(result, typeProvider, TargetedResult.EMPTY_LIST); |
| 60 return true; | 45 return true; |
| 61 } | 46 } |
| 62 AnalysisTarget target = entry.target; | 47 AnalysisTarget target = entry.target; |
| 63 // TODO(scheglov) we don't actually update "evaluationResult" yet | 48 // Only SDK sources after this point. |
| 64 if (result == CONSTANT_VALUE) { | 49 if (target.source == null || !target.source.isInSystemLibrary) { |
| 65 if (target.source != null && target.source.isInSystemLibrary) { | 50 return false; |
| 66 entry.setValue(result, target, TargetedResult.EMPTY_LIST); | |
| 67 return true; | |
| 68 } | |
| 69 } | 51 } |
| 70 if (target is Source && target.isInSystemLibrary) { | 52 print('SummarySdkAnalysisContext: $result of $target'); |
|
Paul Berry
2016/02/09 21:23:19
Debugging code - please delete.
| |
| 71 // print('SummarySdkAnalysisContext: $result of $target'); | 53 // Constant expressions are always resolved in summaries. |
| 54 if (result == CONSTANT_EXPRESSION_RESOLVED && | |
| 55 target is ConstantEvaluationTarget) { | |
| 56 entry.setValue(result, true, TargetedResult.EMPTY_LIST); | |
| 57 return true; | |
| 58 } | |
| 59 if (target is Source) { | |
| 72 if (result == LIBRARY_ELEMENT1 || | 60 if (result == LIBRARY_ELEMENT1 || |
| 73 result == LIBRARY_ELEMENT2 || | 61 result == LIBRARY_ELEMENT2 || |
| 74 result == LIBRARY_ELEMENT3 || | 62 result == LIBRARY_ELEMENT3 || |
| 75 result == LIBRARY_ELEMENT4 || | 63 result == LIBRARY_ELEMENT4 || |
| 76 result == LIBRARY_ELEMENT5 || | 64 result == LIBRARY_ELEMENT5 || |
| 77 result == LIBRARY_ELEMENT6 || | 65 result == LIBRARY_ELEMENT6 || |
| 78 result == LIBRARY_ELEMENT7 || | 66 result == LIBRARY_ELEMENT7 || |
| 79 result == LIBRARY_ELEMENT8 || | 67 result == LIBRARY_ELEMENT8 || |
| 80 result == LIBRARY_ELEMENT) { | 68 result == LIBRARY_ELEMENT) { |
| 81 // TODO(scheglov) try to find a way to avoid listing every result | 69 // TODO(scheglov) try to find a way to avoid listing every result |
| (...skipping 321 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 403 * throw a [StateError] if there is no class with the given name. | 391 * throw a [StateError] if there is no class with the given name. |
| 404 */ | 392 */ |
| 405 InterfaceType _getType(LibraryElement library, String name) { | 393 InterfaceType _getType(LibraryElement library, String name) { |
| 406 Element element = library.getType(name); | 394 Element element = library.getType(name); |
| 407 if (element == null) { | 395 if (element == null) { |
| 408 throw new StateError("No definition of type $name"); | 396 throw new StateError("No definition of type $name"); |
| 409 } | 397 } |
| 410 return (element as ClassElement).type; | 398 return (element as ClassElement).type; |
| 411 } | 399 } |
| 412 } | 400 } |
| OLD | NEW |