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

Side by Side Diff: pkg/compiler/lib/src/deferred_load.dart

Issue 1148343004: Remove ConstantExpression.value (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Update comments. Created 5 years, 6 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 unified diff | Download patch
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 library deferred_load; 5 library deferred_load;
6 6
7 import 'constants/expressions.dart'; 7 import 'constants/expressions.dart';
8 import 'constants/values.dart' show 8 import 'constants/values.dart' show
9 ConstantValue, 9 ConstantValue,
10 ConstructedConstantValue, 10 ConstructedConstantValue,
(...skipping 269 matching lines...) Expand 10 before | Expand all | Expand 10 after
280 for (Element dependency in treeElements.allElements) { 280 for (Element dependency in treeElements.allElements) {
281 if (dependency.isLocal && !dependency.isFunction) continue; 281 if (dependency.isLocal && !dependency.isFunction) continue;
282 if (dependency.isErroneous) continue; 282 if (dependency.isErroneous) continue;
283 if (dependency.isTypeVariable) continue; 283 if (dependency.isTypeVariable) continue;
284 284
285 elements.add(dependency); 285 elements.add(dependency);
286 } 286 }
287 treeElements.forEachConstantNode((Node node, _) { 287 treeElements.forEachConstantNode((Node node, _) {
288 // Explicitly depend on the backend constants. 288 // Explicitly depend on the backend constants.
289 constants.add( 289 constants.add(
290 backend.constants.getConstantForNode(node, treeElements).value); 290 backend.constants.getConstantValueForNode(node, treeElements));
291 }); 291 });
292 elements.addAll(treeElements.otherDependencies); 292 elements.addAll(treeElements.otherDependencies);
293 } 293 }
294 294
295 // TODO(sigurdm): How is metadata on a patch-class handled? 295 // TODO(sigurdm): How is metadata on a patch-class handled?
296 for (MetadataAnnotation metadata in element.metadata) { 296 for (MetadataAnnotation metadata in element.metadata) {
297 ConstantExpression constant = 297 ConstantValue constant =
298 backend.constants.getConstantForMetadata(metadata); 298 backend.constants.getConstantValueForMetadata(metadata);
299 if (constant != null) { 299 if (constant != null) {
300 constants.add(constant.value); 300 constants.add(constant);
301 } 301 }
302 } 302 }
303 303
304 collectTypeDependencies(DartType type) { 304 collectTypeDependencies(DartType type) {
305 if (type is FunctionType) { 305 if (type is FunctionType) {
306 for (DartType argumentType in type.parameterTypes) { 306 for (DartType argumentType in type.parameterTypes) {
307 collectTypeDependencies(argumentType); 307 collectTypeDependencies(argumentType);
308 } 308 }
309 for (DartType argumentType in type.optionalParameterTypes) { 309 for (DartType argumentType in type.optionalParameterTypes) {
310 collectTypeDependencies(argumentType); 310 collectTypeDependencies(argumentType);
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after
484 } 484 }
485 485
486 // For each deferred import we analyze all elements reachable from the 486 // For each deferred import we analyze all elements reachable from the
487 // imported library through non-deferred imports. 487 // imported library through non-deferred imports.
488 handleLibrary(LibraryElement library, Import deferredImport) { 488 handleLibrary(LibraryElement library, Import deferredImport) {
489 library.implementation.forEachLocalMember((Element element) { 489 library.implementation.forEachLocalMember((Element element) {
490 mapDependenciesIfResolved(element, deferredImport); 490 mapDependenciesIfResolved(element, deferredImport);
491 }); 491 });
492 492
493 for (MetadataAnnotation metadata in library.metadata) { 493 for (MetadataAnnotation metadata in library.metadata) {
494 ConstantExpression constant = 494 ConstantValue constant =
495 backend.constants.getConstantForMetadata(metadata); 495 backend.constants.getConstantValueForMetadata(metadata);
496 if (constant != null) { 496 if (constant != null) {
497 _mapConstantDependencies(constant.value, 497 _mapConstantDependencies(constant, deferredImport);
498 deferredImport);
499 } 498 }
500 } 499 }
501 for (LibraryTag tag in library.tags) { 500 for (LibraryTag tag in library.tags) {
502 for (MetadataAnnotation metadata in tag.metadata) { 501 for (MetadataAnnotation metadata in tag.metadata) {
503 ConstantExpression constant = 502 ConstantValue constant =
504 backend.constants.getConstantForMetadata(metadata); 503 backend.constants.getConstantValueForMetadata(metadata);
505 if (constant != null) { 504 if (constant != null) {
506 _mapConstantDependencies(constant.value, 505 _mapConstantDependencies(constant, deferredImport);
507 deferredImport);
508 } 506 }
509 } 507 }
510 } 508 }
511 } 509 }
512 510
513 for (Import deferredImport in _allDeferredImports.keys) { 511 for (Import deferredImport in _allDeferredImports.keys) {
514 LibraryElement deferredLibrary = _allDeferredImports[deferredImport]; 512 LibraryElement deferredLibrary = _allDeferredImports[deferredImport];
515 for (LibraryElement library in 513 for (LibraryElement library in
516 _nonDeferredReachableLibraries(deferredLibrary)) { 514 _nonDeferredReachableLibraries(deferredLibrary)) {
517 handleLibrary(library, deferredImport); 515 handleLibrary(library, deferredImport);
(...skipping 12 matching lines...) Expand all
530 String result; 528 String result;
531 if (import == _fakeMainImport) { 529 if (import == _fakeMainImport) {
532 result = "main"; 530 result = "main";
533 } else if (import.isDeferred) { 531 } else if (import.isDeferred) {
534 result = import.prefix.toString(); 532 result = import.prefix.toString();
535 } else { 533 } else {
536 Link<MetadataAnnotation> metadatas = import.metadata; 534 Link<MetadataAnnotation> metadatas = import.metadata;
537 assert(metadatas != null); 535 assert(metadatas != null);
538 for (MetadataAnnotation metadata in metadatas) { 536 for (MetadataAnnotation metadata in metadatas) {
539 metadata.ensureResolved(compiler); 537 metadata.ensureResolved(compiler);
540 Element element = 538 ConstantValue value =
541 metadata.constant.value.getType(compiler.coreTypes).element; 539 compiler.constants.getConstantValue(metadata.constant);
540 Element element = value.getType(compiler.coreTypes).element;
542 if (element == deferredLibraryClass) { 541 if (element == deferredLibraryClass) {
543 ConstructedConstantValue constant = metadata.constant.value; 542 ConstructedConstantValue constant = value;
544 StringConstantValue s = constant.fields.values.single; 543 StringConstantValue s = constant.fields.values.single;
545 result = s.primitiveValue.slowToString(); 544 result = s.primitiveValue.slowToString();
546 break; 545 break;
547 } 546 }
548 } 547 }
549 } 548 }
550 assert(result != null); 549 assert(result != null);
551 importDeferName[import] = makeUnique(result, usedImportNames);; 550 importDeferName[import] = makeUnique(result, usedImportNames);;
552 } 551 }
553 552
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
720 // instead of a Link. 719 // instead of a Link.
721 for (LibraryTag tag in library.tags) { 720 for (LibraryTag tag in library.tags) {
722 if (tag is! Import) continue; 721 if (tag is! Import) continue;
723 Import import = tag; 722 Import import = tag;
724 723
725 /// Give an error if the old annotation-based syntax has been used. 724 /// Give an error if the old annotation-based syntax has been used.
726 Link<MetadataAnnotation> metadataList = import.metadata; 725 Link<MetadataAnnotation> metadataList = import.metadata;
727 if (metadataList != null) { 726 if (metadataList != null) {
728 for (MetadataAnnotation metadata in metadataList) { 727 for (MetadataAnnotation metadata in metadataList) {
729 metadata.ensureResolved(compiler); 728 metadata.ensureResolved(compiler);
730 Element element = 729 ConstantValue value =
731 metadata.constant.value.getType(compiler.coreTypes).element; 730 compiler.constants.getConstantValue(metadata.constant);
731 Element element = value.getType(compiler.coreTypes).element;
732 if (element == deferredLibraryClass) { 732 if (element == deferredLibraryClass) {
733 compiler.reportError( 733 compiler.reportError(
734 import, MessageKind.DEFERRED_OLD_SYNTAX); 734 import, MessageKind.DEFERRED_OLD_SYNTAX);
735 } 735 }
736 } 736 }
737 } 737 }
738 738
739 String prefix = (import.prefix != null) 739 String prefix = (import.prefix != null)
740 ? import.prefix.toString() 740 ? import.prefix.toString()
741 : null; 741 : null;
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
890 _importingLibrary = importingLibrary; 890 _importingLibrary = importingLibrary;
891 891
892 String get importingLibraryName { 892 String get importingLibraryName {
893 String libraryName = _importingLibrary.getLibraryName(); 893 String libraryName = _importingLibrary.getLibraryName();
894 return libraryName == "" 894 return libraryName == ""
895 ? "<unnamed>" 895 ? "<unnamed>"
896 : libraryName; 896 : libraryName;
897 } 897 }
898 898
899 } 899 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/dart_backend/dart_backend.dart ('k') | pkg/compiler/lib/src/inferrer/simple_types_inferrer.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698