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 part of dart2js.semantics_visitor_test; | 5 part of dart2js.semantics_visitor_test; |
6 | 6 |
7 const Map<String, List<Test>> SEND_TESTS = const { | 7 const Map<String, List<Test>> SEND_TESTS = const { |
8 'Parameters': const [ | 8 'Parameters': const [ |
9 // Parameters | 9 // Parameters |
10 const Test('m(o) => o;', | 10 const Test('m(o) => o;', |
(...skipping 2256 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2267 error: MessageKind.NO_SUPER_IN_STATIC, index: '1', rhs: '2')), | 2267 error: MessageKind.NO_SUPER_IN_STATIC, index: '1', rhs: '2')), |
2268 ], | 2268 ], |
2269 'Compound assignment': const [ | 2269 'Compound assignment': const [ |
2270 // Compound assignment | 2270 // Compound assignment |
2271 const Test( | 2271 const Test( |
2272 ''' | 2272 ''' |
2273 m(a) => a.b += 42; | 2273 m(a) => a.b += 42; |
2274 ''', | 2274 ''', |
2275 const [ | 2275 const [ |
2276 const Visit(VisitKind.VISIT_DYNAMIC_PROPERTY_COMPOUND, | 2276 const Visit(VisitKind.VISIT_DYNAMIC_PROPERTY_COMPOUND, |
2277 receiver: 'a', operator: '+=', rhs: '42', | 2277 receiver: 'a', name: 'b', operator: '+=', rhs: '42'), |
2278 getter: 'Selector(getter, b, arity=0)', | |
2279 setter: 'Selector(setter, b, arity=1)'), | |
2280 const Visit(VisitKind.VISIT_PARAMETER_GET, | 2278 const Visit(VisitKind.VISIT_PARAMETER_GET, |
2281 element: 'parameter(m#a)') | 2279 element: 'parameter(m#a)') |
2282 ]), | 2280 ]), |
2283 const Test( | 2281 const Test( |
2284 ''' | 2282 ''' |
2285 m(a) => a += 42; | 2283 m(a) => a += 42; |
2286 ''', | 2284 ''', |
2287 const Visit(VisitKind.VISIT_PARAMETER_COMPOUND, | 2285 const Visit(VisitKind.VISIT_PARAMETER_COMPOUND, |
2288 element: 'parameter(m#a)', operator: '+=', rhs: '42')), | 2286 element: 'parameter(m#a)', operator: '+=', rhs: '42')), |
2289 const Test( | 2287 const Test( |
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2479 getter: 'function(C#a)', setter: 'setter(C#a)', | 2477 getter: 'function(C#a)', setter: 'setter(C#a)', |
2480 operator: '+=', rhs: '42')),*/ | 2478 operator: '+=', rhs: '42')),*/ |
2481 const Test.clazz( | 2479 const Test.clazz( |
2482 ''' | 2480 ''' |
2483 class C { | 2481 class C { |
2484 var a; | 2482 var a; |
2485 m() => a += 42; | 2483 m() => a += 42; |
2486 } | 2484 } |
2487 ''', | 2485 ''', |
2488 const Visit(VisitKind.VISIT_THIS_PROPERTY_COMPOUND, | 2486 const Visit(VisitKind.VISIT_THIS_PROPERTY_COMPOUND, |
2489 operator: '+=', rhs: '42', | 2487 operator: '+=', name: 'a', rhs: '42')), |
2490 getter: 'Selector(getter, a, arity=0)', | |
2491 setter: 'Selector(setter, a, arity=1)')), | |
2492 const Test.clazz( | 2488 const Test.clazz( |
2493 ''' | 2489 ''' |
2494 class C { | 2490 class C { |
2495 var a = 0; | 2491 var a = 0; |
2496 m() => this.a += 42; | 2492 m() => this.a += 42; |
2497 } | 2493 } |
2498 ''', | 2494 ''', |
2499 const Visit(VisitKind.VISIT_THIS_PROPERTY_COMPOUND, | 2495 const Visit(VisitKind.VISIT_THIS_PROPERTY_COMPOUND, |
2500 operator: '+=', rhs: '42', | 2496 name: 'a', operator: '+=', rhs: '42')), |
2501 getter: 'Selector(getter, a, arity=0)', | |
2502 setter: 'Selector(setter, a, arity=1)')), | |
2503 const Test.clazz( | 2497 const Test.clazz( |
2504 ''' | 2498 ''' |
2505 class B { | 2499 class B { |
2506 var a = 0; | 2500 var a = 0; |
2507 } | 2501 } |
2508 class C extends B { | 2502 class C extends B { |
2509 m() => super.a += 42; | 2503 m() => super.a += 42; |
2510 } | 2504 } |
2511 ''', | 2505 ''', |
2512 const Visit(VisitKind.VISIT_SUPER_FIELD_COMPOUND, | 2506 const Visit(VisitKind.VISIT_SUPER_FIELD_COMPOUND, |
(...skipping 280 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2793 index: '1', operator: '+=', rhs: '42')), | 2787 index: '1', operator: '+=', rhs: '42')), |
2794 ], | 2788 ], |
2795 'Prefix expression': const [ | 2789 'Prefix expression': const [ |
2796 // Prefix expression | 2790 // Prefix expression |
2797 const Test( | 2791 const Test( |
2798 ''' | 2792 ''' |
2799 m(a) => --a.b; | 2793 m(a) => --a.b; |
2800 ''', | 2794 ''', |
2801 const [ | 2795 const [ |
2802 const Visit(VisitKind.VISIT_DYNAMIC_PROPERTY_PREFIX, | 2796 const Visit(VisitKind.VISIT_DYNAMIC_PROPERTY_PREFIX, |
2803 receiver: 'a', operator: '--', | 2797 receiver: 'a', name: 'b', operator: '--'), |
2804 getter: 'Selector(getter, b, arity=0)', | |
2805 setter: 'Selector(setter, b, arity=1)'), | |
2806 const Visit(VisitKind.VISIT_PARAMETER_GET, | 2798 const Visit(VisitKind.VISIT_PARAMETER_GET, |
2807 element: 'parameter(m#a)') | 2799 element: 'parameter(m#a)') |
2808 ]), | 2800 ]), |
2809 const Test( | 2801 const Test( |
2810 ''' | 2802 ''' |
2811 m(a) => ++a; | 2803 m(a) => ++a; |
2812 ''', | 2804 ''', |
2813 const Visit(VisitKind.VISIT_PARAMETER_PREFIX, | 2805 const Visit(VisitKind.VISIT_PARAMETER_PREFIX, |
2814 element: 'parameter(m#a)', operator: '++')), | 2806 element: 'parameter(m#a)', operator: '++')), |
2815 const Test( | 2807 const Test( |
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2956 getter: 'getter(C#a)', setter: 'setter(C#a)', | 2948 getter: 'getter(C#a)', setter: 'setter(C#a)', |
2957 operator: '++')), | 2949 operator: '++')), |
2958 const Test.clazz( | 2950 const Test.clazz( |
2959 ''' | 2951 ''' |
2960 class C { | 2952 class C { |
2961 var a; | 2953 var a; |
2962 m() => --a; | 2954 m() => --a; |
2963 } | 2955 } |
2964 ''', | 2956 ''', |
2965 const Visit(VisitKind.VISIT_THIS_PROPERTY_PREFIX, | 2957 const Visit(VisitKind.VISIT_THIS_PROPERTY_PREFIX, |
2966 operator: '--', | 2958 name: 'a', operator: '--')), |
2967 getter: 'Selector(getter, a, arity=0)', | |
2968 setter: 'Selector(setter, a, arity=1)')), | |
2969 const Test.clazz( | 2959 const Test.clazz( |
2970 ''' | 2960 ''' |
2971 class C { | 2961 class C { |
2972 var a = 0; | 2962 var a = 0; |
2973 m() => ++this.a; | 2963 m() => ++this.a; |
2974 } | 2964 } |
2975 ''', | 2965 ''', |
2976 const Visit(VisitKind.VISIT_THIS_PROPERTY_PREFIX, | 2966 const Visit(VisitKind.VISIT_THIS_PROPERTY_PREFIX, |
2977 operator: '++', | 2967 name: 'a', operator: '++')), |
2978 getter: 'Selector(getter, a, arity=0)', | |
2979 setter: 'Selector(setter, a, arity=1)')), | |
2980 const Test.clazz( | 2968 const Test.clazz( |
2981 ''' | 2969 ''' |
2982 class B { | 2970 class B { |
2983 var a = 0; | 2971 var a = 0; |
2984 } | 2972 } |
2985 class C extends B { | 2973 class C extends B { |
2986 m() => --super.a; | 2974 m() => --super.a; |
2987 } | 2975 } |
2988 ''', | 2976 ''', |
2989 const Visit(VisitKind.VISIT_SUPER_FIELD_PREFIX, | 2977 const Visit(VisitKind.VISIT_SUPER_FIELD_PREFIX, |
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3184 operator: '++')), | 3172 operator: '++')), |
3185 ], | 3173 ], |
3186 'Postfix expression': const [ | 3174 'Postfix expression': const [ |
3187 // Postfix expression | 3175 // Postfix expression |
3188 const Test( | 3176 const Test( |
3189 ''' | 3177 ''' |
3190 m(a) => a.b--; | 3178 m(a) => a.b--; |
3191 ''', | 3179 ''', |
3192 const [ | 3180 const [ |
3193 const Visit(VisitKind.VISIT_DYNAMIC_PROPERTY_POSTFIX, | 3181 const Visit(VisitKind.VISIT_DYNAMIC_PROPERTY_POSTFIX, |
3194 receiver: 'a', operator: '--', | 3182 receiver: 'a', name: 'b', operator: '--'), |
3195 getter: 'Selector(getter, b, arity=0)', | |
3196 setter: 'Selector(setter, b, arity=1)'), | |
3197 const Visit(VisitKind.VISIT_PARAMETER_GET, | 3183 const Visit(VisitKind.VISIT_PARAMETER_GET, |
3198 element: 'parameter(m#a)') | 3184 element: 'parameter(m#a)') |
3199 ]), | 3185 ]), |
3200 const Test( | 3186 const Test( |
3201 ''' | 3187 ''' |
3202 m(a) => a++; | 3188 m(a) => a++; |
3203 ''', | 3189 ''', |
3204 const Visit(VisitKind.VISIT_PARAMETER_POSTFIX, | 3190 const Visit(VisitKind.VISIT_PARAMETER_POSTFIX, |
3205 element: 'parameter(m#a)', operator: '++')), | 3191 element: 'parameter(m#a)', operator: '++')), |
3206 const Test( | 3192 const Test( |
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3347 getter: 'getter(C#a)', setter: 'setter(C#a)', | 3333 getter: 'getter(C#a)', setter: 'setter(C#a)', |
3348 operator: '++')), | 3334 operator: '++')), |
3349 const Test.clazz( | 3335 const Test.clazz( |
3350 ''' | 3336 ''' |
3351 class C { | 3337 class C { |
3352 var a; | 3338 var a; |
3353 m() => a--; | 3339 m() => a--; |
3354 } | 3340 } |
3355 ''', | 3341 ''', |
3356 const Visit(VisitKind.VISIT_THIS_PROPERTY_POSTFIX, | 3342 const Visit(VisitKind.VISIT_THIS_PROPERTY_POSTFIX, |
3357 operator: '--', | 3343 name: 'a', operator: '--')), |
3358 getter: 'Selector(getter, a, arity=0)', | |
3359 setter: 'Selector(setter, a, arity=1)')), | |
3360 const Test.clazz( | 3344 const Test.clazz( |
3361 ''' | 3345 ''' |
3362 class C { | 3346 class C { |
3363 var a = 0; | 3347 var a = 0; |
3364 m() => this.a++; | 3348 m() => this.a++; |
3365 } | 3349 } |
3366 ''', | 3350 ''', |
3367 const Visit(VisitKind.VISIT_THIS_PROPERTY_POSTFIX, | 3351 const Visit(VisitKind.VISIT_THIS_PROPERTY_POSTFIX, |
3368 operator: '++', | 3352 name: 'a', operator: '++')), |
3369 getter: 'Selector(getter, a, arity=0)', | |
3370 setter: 'Selector(setter, a, arity=1)')), | |
3371 const Test.clazz( | 3353 const Test.clazz( |
3372 ''' | 3354 ''' |
3373 class B { | 3355 class B { |
3374 var a = 0; | 3356 var a = 0; |
3375 } | 3357 } |
3376 class C extends B { | 3358 class C extends B { |
3377 m() => super.a--; | 3359 m() => super.a--; |
3378 } | 3360 } |
3379 ''', | 3361 ''', |
3380 const Visit(VisitKind.VISIT_SUPER_FIELD_POSTFIX, | 3362 const Visit(VisitKind.VISIT_SUPER_FIELD_POSTFIX, |
(...skipping 535 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3916 VisitKind.VISIT_PARAMETER_GET, | 3898 VisitKind.VISIT_PARAMETER_GET, |
3917 element: 'parameter(m#a)'), | 3899 element: 'parameter(m#a)'), |
3918 ]), | 3900 ]), |
3919 const Test( | 3901 const Test( |
3920 ''' | 3902 ''' |
3921 m(a) => ++a?.b; | 3903 m(a) => ++a?.b; |
3922 ''', | 3904 ''', |
3923 const [ | 3905 const [ |
3924 const Visit( | 3906 const Visit( |
3925 VisitKind.VISIT_IF_NOT_NULL_DYNAMIC_PROPERTY_PREFIX, | 3907 VisitKind.VISIT_IF_NOT_NULL_DYNAMIC_PROPERTY_PREFIX, |
3926 receiver: 'a', | 3908 receiver: 'a', name: 'b', operator: '++'), |
3927 getter: 'Selector(getter, b, arity=0)', | |
3928 setter: 'Selector(setter, b, arity=1)', | |
3929 operator: '++'), | |
3930 const Visit( | 3909 const Visit( |
3931 VisitKind.VISIT_PARAMETER_GET, | 3910 VisitKind.VISIT_PARAMETER_GET, |
3932 element: 'parameter(m#a)'), | 3911 element: 'parameter(m#a)'), |
3933 ]), | 3912 ]), |
3934 const Test( | 3913 const Test( |
3935 ''' | 3914 ''' |
3936 m(a) => a?.b--; | 3915 m(a) => a?.b--; |
3937 ''', | 3916 ''', |
3938 const [ | 3917 const [ |
3939 const Visit( | 3918 const Visit( |
3940 VisitKind.VISIT_IF_NOT_NULL_DYNAMIC_PROPERTY_POSTFIX, | 3919 VisitKind.VISIT_IF_NOT_NULL_DYNAMIC_PROPERTY_POSTFIX, |
3941 receiver: 'a', | 3920 receiver: 'a', name: 'b', operator: '--'), |
3942 getter: 'Selector(getter, b, arity=0)', | |
3943 setter: 'Selector(setter, b, arity=1)', | |
3944 operator: '--'), | |
3945 const Visit( | 3921 const Visit( |
3946 VisitKind.VISIT_PARAMETER_GET, | 3922 VisitKind.VISIT_PARAMETER_GET, |
3947 element: 'parameter(m#a)'), | 3923 element: 'parameter(m#a)'), |
3948 ]), | 3924 ]), |
3949 const Test( | 3925 const Test( |
3950 ''' | 3926 ''' |
3951 m(a) => a?.b *= 42; | 3927 m(a) => a?.b *= 42; |
3952 ''', | 3928 ''', |
3953 const [ | 3929 const [ |
3954 const Visit( | 3930 const Visit( |
3955 VisitKind.VISIT_IF_NOT_NULL_DYNAMIC_PROPERTY_COMPOUND, | 3931 VisitKind.VISIT_IF_NOT_NULL_DYNAMIC_PROPERTY_COMPOUND, |
3956 receiver: 'a', | 3932 receiver: 'a', name: 'b', operator: '*=', rhs: '42'), |
3957 getter: 'Selector(getter, b, arity=0)', | |
3958 setter: 'Selector(setter, b, arity=1)', | |
3959 operator: '*=', | |
3960 rhs: '42'), | |
3961 const Visit( | 3933 const Visit( |
3962 VisitKind.VISIT_PARAMETER_GET, | 3934 VisitKind.VISIT_PARAMETER_GET, |
3963 element: 'parameter(m#a)'), | 3935 element: 'parameter(m#a)'), |
3964 ]), | 3936 ]), |
3965 const Test( | 3937 const Test( |
3966 ''' | 3938 ''' |
3967 m(a, b) => a ?? b; | 3939 m(a, b) => a ?? b; |
3968 ''', | 3940 ''', |
3969 const [ | 3941 const [ |
3970 const Visit(VisitKind.VISIT_IF_NULL, | 3942 const Visit(VisitKind.VISIT_IF_NULL, |
(...skipping 16 matching lines...) Expand all Loading... |
3987 rhs: '42')), | 3959 rhs: '42')), |
3988 const Test.prefix( | 3960 const Test.prefix( |
3989 ''' | 3961 ''' |
3990 var o; | 3962 var o; |
3991 ''', | 3963 ''', |
3992 'm() => p?.o;', | 3964 'm() => p?.o;', |
3993 const Visit(VisitKind.ERROR_INVALID_GET, | 3965 const Visit(VisitKind.ERROR_INVALID_GET, |
3994 error: MessageKind.PREFIX_AS_EXPRESSION)), | 3966 error: MessageKind.PREFIX_AS_EXPRESSION)), |
3995 ], | 3967 ], |
3996 }; | 3968 }; |
OLD | NEW |