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

Side by Side Diff: pkg/analyzer/test/src/context/context_test.dart

Issue 2189783002: Record names of classes which unnamed constructor are used in SuperConstructorInvocation. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 4 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
« no previous file with comments | « pkg/analyzer/lib/src/task/dart.dart ('k') | pkg/analyzer/test/src/task/dart_test.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 analyzer.test.src.context.context_test; 5 library analyzer.test.src.context.context_test;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 import 'dart:collection'; 8 import 'dart:collection';
9 9
10 import 'package:analyzer/dart/ast/ast.dart'; 10 import 'package:analyzer/dart/ast/ast.dart';
(...skipping 2832 matching lines...) Expand 10 before | Expand all | Expand 10 after
2843 } 2843 }
2844 ''', 2844 ''',
2845 r''' 2845 r'''
2846 import 'a.dart'; 2846 import 'a.dart';
2847 main() { 2847 main() {
2848 new A.named(); 2848 new A.named();
2849 } 2849 }
2850 '''); 2850 ''');
2851 } 2851 }
2852 2852
2853 void test_class_constructor_named_parameters_change_usedSuper() {
2854 // Update a.dart: change A.named().
2855 // b.dart is invalid, because it references A.named().
2856 _verifyTwoLibrariesInvalidatesResolution(
2857 r'''
2858 class A {
2859 A.named(int a);
2860 }
2861 ''',
2862 r'''
2863 class A {
2864 A.named(String a);
2865 }
2866 ''',
2867 r'''
2868 import 'a.dart';
2869 class B extends A {
2870 B() : super.named(42);
2871 }
2872 ''');
2873 }
2874
2853 void test_class_constructor_named_parameters_remove() { 2875 void test_class_constructor_named_parameters_remove() {
2854 // Update a.dart: remove a new parameter of A.named(). 2876 // Update a.dart: remove a new parameter of A.named().
2855 // b.dart is invalid, because it references A.named(). 2877 // b.dart is invalid, because it references A.named().
2856 _verifyTwoLibrariesInvalidatesResolution( 2878 _verifyTwoLibrariesInvalidatesResolution(
2857 r''' 2879 r'''
2858 class A { 2880 class A {
2859 A.named(int p); 2881 A.named(int p);
2860 } 2882 }
2861 ''', 2883 ''',
2862 r''' 2884 r'''
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
2909 } 2931 }
2910 ''', 2932 ''',
2911 r''' 2933 r'''
2912 import 'a.dart'; 2934 import 'a.dart';
2913 main() { 2935 main() {
2914 new A.named(); 2936 new A.named();
2915 } 2937 }
2916 '''); 2938 ''');
2917 } 2939 }
2918 2940
2941 void test_class_constructor_unnamed_parameters_change_notUsedSuper() {
2942 // Update a.dart: change A().
2943 // Resolution of b.dart is valid, because it does not reference A().
2944 // Hints and verify errors are invalid, because it extends A.
2945 // TODO(scheglov) we could keep valid hints and verify errors,
2946 // because only constructor is changed - this cannot add/remove
2947 // inherited unimplemented members.
Brian Wilkerson 2016/07/27 22:09:33 This seems like the wrong place for this TODO comm
2948 _verifyTwoLibrariesInvalidHintsVerifyErrors(
2949 r'''
2950 class A {
2951 A(int a);
2952 A.named(int a);
2953 }
2954 ''',
2955 r'''
2956 class A {
2957 A(String a);
2958 A.named(int a);
2959 }
2960 ''',
2961 r'''
2962 import 'a.dart';
2963 class B extends A {
2964 B() : super.named(42);
2965 }
2966 ''');
2967 }
2968
2969 void test_class_constructor_unnamed_parameters_change_usedSuper() {
2970 // Update a.dart: change A().
2971 // b.dart is invalid, because it references A().
2972 _verifyTwoLibrariesInvalidatesResolution(
2973 r'''
2974 class A {
2975 A(int a);
2976 }
2977 ''',
2978 r'''
2979 class A {
2980 A(String a);
2981 }
2982 ''',
2983 r'''
2984 import 'a.dart';
2985 class B extends A {
2986 B() : super(42);
2987 }
2988 ''');
2989 }
2990
2919 void test_class_constructor_unnamed_parameters_remove() { 2991 void test_class_constructor_unnamed_parameters_remove() {
2920 // Update a.dart: change A(). 2992 // Update a.dart: change A().
2921 // b.dart is invalid, because it references A(). 2993 // b.dart is invalid, because it references A().
2922 _verifyTwoLibrariesInvalidatesResolution( 2994 _verifyTwoLibrariesInvalidatesResolution(
2923 r''' 2995 r'''
2924 class A { 2996 class A {
2925 A(int a, int b); 2997 A(int a, int b);
2926 } 2998 }
2927 ''', 2999 ''',
2928 r''' 3000 r'''
(...skipping 26 matching lines...) Expand all
2955 ''', 3027 ''',
2956 r''' 3028 r'''
2957 import 'a.dart'; 3029 import 'a.dart';
2958 main() { 3030 main() {
2959 new A.named(); 3031 new A.named();
2960 } 3032 }
2961 '''); 3033 ''');
2962 } 3034 }
2963 3035
2964 void test_class_constructor_unnamed_remove_used() { 3036 void test_class_constructor_unnamed_remove_used() {
2965 // Update a.dart: remove A.named(). 3037 // Update a.dart: remove A().
2966 // b.dart is invalid, because it references A.named(). 3038 // b.dart is invalid, because it references A().
2967 _verifyTwoLibrariesInvalidatesResolution( 3039 _verifyTwoLibrariesInvalidatesResolution(
2968 r''' 3040 r'''
2969 class A { 3041 class A {
2970 A(); 3042 A();
2971 } 3043 }
2972 ''', 3044 ''',
2973 r''' 3045 r'''
2974 class A { 3046 class A {
2975 } 3047 }
2976 ''', 3048 ''',
(...skipping 1695 matching lines...) Expand 10 before | Expand all | Expand 10 after
4672 Source a = addSource('/a.dart', firstCodeA); 4744 Source a = addSource('/a.dart', firstCodeA);
4673 Source b = addSource('/b.dart', codeB); 4745 Source b = addSource('/b.dart', codeB);
4674 _performPendingAnalysisTasks(); 4746 _performPendingAnalysisTasks();
4675 context.setContents(a, secondCodeA); 4747 context.setContents(a, secondCodeA);
4676 _assertValidForChangedLibrary(a); 4748 _assertValidForChangedLibrary(a);
4677 _assertInvalid(a, LIBRARY_ERRORS_READY); 4749 _assertInvalid(a, LIBRARY_ERRORS_READY);
4678 _assertValidForDependentLibrary(b); 4750 _assertValidForDependentLibrary(b);
4679 _assertInvalid(b, LIBRARY_ERRORS_READY); 4751 _assertInvalid(b, LIBRARY_ERRORS_READY);
4680 _assertInvalidUnits(b, RESOLVED_UNIT4); 4752 _assertInvalidUnits(b, RESOLVED_UNIT4);
4681 } 4753 }
4754
4755 void _verifyTwoLibrariesInvalidHintsVerifyErrors(
4756 String firstCodeA, String secondCodeA, String codeB) {
4757 Source a = addSource('/a.dart', firstCodeA);
4758 Source b = addSource('/b.dart', codeB);
4759 _performPendingAnalysisTasks();
4760 context.setContents(a, secondCodeA);
4761 _assertValidForChangedLibrary(a);
4762 _assertInvalid(a, LIBRARY_ERRORS_READY);
4763 _assertValidForDependentLibrary(b);
4764 _assertValidAllResolution(b);
4765 _assertUnitValid(b, RESOLVE_UNIT_ERRORS);
4766 _assertInvalidHintsVerifyErrors(b);
4767 }
4682 } 4768 }
4683 4769
4684 class _AnalysisContextImplTest_Source_exists_true extends TestSource { 4770 class _AnalysisContextImplTest_Source_exists_true extends TestSource {
4685 @override 4771 @override
4686 bool exists() => true; 4772 bool exists() => true;
4687 } 4773 }
4688 4774
4689 class _AnalysisContextImplTest_Source_getModificationStamp_fromSource 4775 class _AnalysisContextImplTest_Source_getModificationStamp_fromSource
4690 extends TestSource { 4776 extends TestSource {
4691 int stamp; 4777 int stamp;
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
4781 * Initialize the visitor. 4867 * Initialize the visitor.
4782 */ 4868 */
4783 _ElementGatherer(); 4869 _ElementGatherer();
4784 4870
4785 @override 4871 @override
4786 void visitElement(Element element) { 4872 void visitElement(Element element) {
4787 elements[element] = element; 4873 elements[element] = element;
4788 super.visitElement(element); 4874 super.visitElement(element);
4789 } 4875 }
4790 } 4876 }
OLDNEW
« no previous file with comments | « pkg/analyzer/lib/src/task/dart.dart ('k') | pkg/analyzer/test/src/task/dart_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698