| 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 test.src.serialization.elements_test; | 5 library test.src.serialization.elements_test; |
| 6 | 6 |
| 7 import 'dart:convert'; | 7 import 'dart:convert'; |
| 8 | 8 |
| 9 import 'package:analyzer/dart/ast/ast.dart'; | 9 import 'package:analyzer/dart/ast/ast.dart'; |
| 10 import 'package:analyzer/dart/element/element.dart'; | 10 import 'package:analyzer/dart/element/element.dart'; |
| (...skipping 770 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 781 } | 781 } |
| 782 expect(resynthesized.typeFormals.length, original.typeFormals.length, | 782 expect(resynthesized.typeFormals.length, original.typeFormals.length, |
| 783 reason: desc); | 783 reason: desc); |
| 784 for (int i = 0; i < resynthesized.typeFormals.length; i++) { | 784 for (int i = 0; i < resynthesized.typeFormals.length; i++) { |
| 785 compareTypeParameterElements(resynthesized.typeFormals[i], | 785 compareTypeParameterElements(resynthesized.typeFormals[i], |
| 786 original.typeFormals[i], '$desc bound type parameter $i'); | 786 original.typeFormals[i], '$desc bound type parameter $i'); |
| 787 } | 787 } |
| 788 } else if (resynthesized is VoidTypeImpl && original is VoidTypeImpl) { | 788 } else if (resynthesized is VoidTypeImpl && original is VoidTypeImpl) { |
| 789 expect(resynthesized, same(original)); | 789 expect(resynthesized, same(original)); |
| 790 } else if (resynthesized.runtimeType != original.runtimeType) { | 790 } else if (resynthesized.runtimeType != original.runtimeType) { |
| 791 fail( | 791 fail('Type mismatch: expected ${original.runtimeType},' |
| 792 'Type mismatch: expected ${original.runtimeType}, got ${resynthesized.
runtimeType}'); | 792 ' got ${resynthesized.runtimeType} ($desc)'); |
| 793 } else { | 793 } else { |
| 794 fail('Unimplemented comparison for ${original.runtimeType}'); | 794 fail('Unimplemented comparison for ${original.runtimeType}'); |
| 795 } | 795 } |
| 796 } | 796 } |
| 797 | 797 |
| 798 void compareUriReferencedElements(UriReferencedElementImpl resynthesized, | 798 void compareUriReferencedElements(UriReferencedElementImpl resynthesized, |
| 799 UriReferencedElementImpl original, String desc) { | 799 UriReferencedElementImpl original, String desc) { |
| 800 compareElements(resynthesized, original, desc); | 800 compareElements(resynthesized, original, desc); |
| 801 expect(resynthesized.uri, original.uri); | 801 expect(resynthesized.uri, original.uri); |
| 802 expect(resynthesized.uriOffset, original.uriOffset, reason: desc); | 802 expect(resynthesized.uriOffset, original.uriOffset, reason: desc); |
| 803 expect(resynthesized.uriEnd, original.uriEnd, reason: desc); | 803 expect(resynthesized.uriEnd, original.uriEnd, reason: desc); |
| 804 } | 804 } |
| 805 | 805 |
| 806 void compareVariableElements( | 806 void compareVariableElements( |
| 807 VariableElement resynthesized, VariableElement original, String desc) { | 807 VariableElement resynthesized, VariableElement original, String desc) { |
| 808 compareElements(resynthesized, original, desc); | 808 compareElements(resynthesized, original, desc); |
| 809 compareTypes(resynthesized.type, original.type, desc); | 809 compareTypes(resynthesized.type, original.type, desc); |
| 810 VariableElementImpl originalActual = getActualElement(original, desc); | 810 VariableElementImpl originalActual = getActualElement(original, desc); |
| 811 if (originalActual is ConstVariableElement) { | 811 if (originalActual is ConstVariableElement) { |
| 812 VariableElementImpl resynthesizedActual = | 812 VariableElementImpl resynthesizedActual = |
| 813 getActualElement(resynthesized, desc); | 813 getActualElement(resynthesized, desc); |
| 814 Expression initializer = resynthesizedActual.constantInitializer; | 814 Expression initializer = resynthesizedActual.constantInitializer; |
| 815 if (constantInitializersAreInvalid) { | 815 if (constantInitializersAreInvalid) { |
| 816 _assertUnresolvedIdentifier(initializer, desc); | 816 _assertUnresolvedIdentifier(initializer, desc); |
| 817 } else { | 817 } else { |
| 818 compareConstAsts(initializer, originalActual.constantInitializer, desc); | 818 compareConstAsts(initializer, originalActual.constantInitializer, |
| 819 '$desc initializer'); |
| 819 } | 820 } |
| 820 } | 821 } |
| 821 checkPossibleMember(resynthesized, original, desc); | 822 checkPossibleMember(resynthesized, original, desc); |
| 822 } | 823 } |
| 823 | 824 |
| 824 /** | 825 /** |
| 825 * Serialize the given [library] into a summary. Then create a | 826 * Serialize the given [library] into a summary. Then create a |
| 826 * [_TestSummaryResynthesizer] which can deserialize it, along with any | 827 * [_TestSummaryResynthesizer] which can deserialize it, along with any |
| 827 * references it makes to `dart:core`. | 828 * references it makes to `dart:core`. |
| 828 * | 829 * |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 883 } | 884 } |
| 884 | 885 |
| 885 fail_library_hasExtUri() { | 886 fail_library_hasExtUri() { |
| 886 checkLibrary('import "dart-ext:doesNotExist.dart";'); | 887 checkLibrary('import "dart-ext:doesNotExist.dart";'); |
| 887 } | 888 } |
| 888 | 889 |
| 889 ElementImpl getActualElement(Element element, String desc) { | 890 ElementImpl getActualElement(Element element, String desc) { |
| 890 if (element is ElementImpl) { | 891 if (element is ElementImpl) { |
| 891 return element; | 892 return element; |
| 892 } else if (element is ElementHandle) { | 893 } else if (element is ElementHandle) { |
| 893 return getActualElement(element.actualElement, desc); | 894 Element actualElement = element.actualElement; |
| 895 // A handle should never point to a member, because if it did, then |
| 896 // "is Member" checks on the handle would produce the wrong result. |
| 897 expect(actualElement, isNot(new isInstanceOf<Member>()), reason: desc); |
| 898 return getActualElement(actualElement, desc); |
| 894 } else if (element is Member) { | 899 } else if (element is Member) { |
| 895 return getActualElement(element.baseElement, desc); | 900 return getActualElement(element.baseElement, desc); |
| 896 } else { | 901 } else { |
| 897 fail('Unexpected type for resynthesized ($desc):' | 902 fail('Unexpected type for resynthesized ($desc):' |
| 898 ' ${element.runtimeType}'); | 903 ' ${element.runtimeType}'); |
| 899 return null; | 904 return null; |
| 900 } | 905 } |
| 901 } | 906 } |
| 902 | 907 |
| 903 /** | 908 /** |
| (...skipping 2367 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3271 fail('Unexpectedly tried to get unlinked summary for $uri'); | 3276 fail('Unexpectedly tried to get unlinked summary for $uri'); |
| 3272 } | 3277 } |
| 3273 return serializedUnit; | 3278 return serializedUnit; |
| 3274 } | 3279 } |
| 3275 | 3280 |
| 3276 @override | 3281 @override |
| 3277 bool hasLibrarySummary(String uri) { | 3282 bool hasLibrarySummary(String uri) { |
| 3278 return true; | 3283 return true; |
| 3279 } | 3284 } |
| 3280 } | 3285 } |
| OLD | NEW |