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

Side by Side Diff: pkg/compiler/lib/src/resolution/semantic_visitor.dart

Issue 1313323002: Add visitor methods specific to ??= to SemanticSendVisitor. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Created 5 years, 3 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) 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 dart2js.semantics_visitor; 5 library dart2js.semantics_visitor;
6 6
7 import '../constants/expressions.dart'; 7 import '../constants/expressions.dart';
8 import '../dart_types.dart'; 8 import '../dart_types.dart';
9 import '../diagnostics/spannable.dart' show 9 import '../diagnostics/spannable.dart' show
10 Spannable, 10 Spannable,
(...skipping 2171 matching lines...) Expand 10 before | Expand all | Expand 10 after
2182 /// m(rhs) => super.field += rhs; 2182 /// m(rhs) => super.field += rhs;
2183 /// } 2183 /// }
2184 /// 2184 ///
2185 R visitFinalSuperFieldCompound( 2185 R visitFinalSuperFieldCompound(
2186 Send node, 2186 Send node,
2187 FieldElement field, 2187 FieldElement field,
2188 AssignmentOperator operator, 2188 AssignmentOperator operator,
2189 Node rhs, 2189 Node rhs,
2190 A arg); 2190 A arg);
2191 2191
2192 /// If-null assignment expression of [rhs] to the [name] property on
2193 /// [receiver]. That is, evaluation and assignment of [rhs] only if the value
karlklose 2015/08/26 12:39:22 'That is, [rhs] is only evaluated and assigned, if
Johnni Winther 2015/08/28 08:12:12 Done.
2194 /// is of [name] on [receiver] is `null`.
2195 ///
2196 /// For instance:
2197 ///
2198 /// m(receiver, rhs) => receiver.foo ??= rhs;
2199 ///
2200 R visitDynamicPropertySetIfNull(
2201 Send node,
2202 Node receiver,
2203 Name name,
2204 Node rhs,
2205 A arg);
2206
2207 /// If-null assignment expression of [rhs] to the [name] property on
2208 /// [receiver] if not null. That is, evaluation and assignment of [rhs] only
2209 /// if the value of [receiver] is _not_ `null` and the value is of [name] on
2210 /// [receiver] is `null`.
2211 ///
2212 /// For instance:
2213 ///
2214 /// m(receiver, rhs) => receiver?.foo ??= rhs;
2215 ///
2216 R visitIfNotNullDynamicPropertySetIfNull(
2217 Send node,
2218 Node receiver,
2219 Name name,
2220 Node rhs,
2221 A arg);
2222
2223 /// If-null assignment expression of [rhs] to the [name] property on
2224 /// `this`. That is, evaluation and assignment of [rhs] only if the value is
2225 /// of [name] on `this` is `null`.
2226 ///
2227 /// For instance:
2228 ///
2229 /// class C {
2230 /// m(rhs) => this.foo ??= rhs;
2231 /// }
2232 ///
2233 /// or
2234 ///
2235 /// class C {
2236 /// m(rhs) => foo ??= rhs;
2237 /// }
2238 ///
2239 R visitThisPropertySetIfNull(
2240 Send node,
2241 Name name,
2242 Node rhs,
2243 A arg);
2244
2245 /// If-null assignment expression of [rhs] to [parameter]. That is, evaluation
2246 /// and assignment of [rhs] only if the value is of [parameter] is `null`.
2247 ///
2248 /// For instance:
2249 ///
2250 /// m(parameter, rhs) => parameter ??= rhs;
2251 ///
2252 R visitParameterSetIfNull(
2253 Send node,
2254 ParameterElement parameter,
2255 Node rhs,
2256 A arg);
2257
2258 /// If-null assignment expression of [rhs] to the final [parameter]. That is,
2259 /// evaluation and assignment of [rhs] only if the value is of [parameter] is
2260 /// is `null`.
2261 ///
2262 /// For instance:
2263 ///
2264 /// m(final parameter, rhs) => parameter ??= rhs;
2265 ///
2266 R visitFinalParameterSetIfNull(
2267 Send node,
2268 ParameterElement parameter,
2269 Node rhs,
2270 A arg);
2271
2272 /// If-null assignment expression of [rhs] to the local [variable]. That is,
2273 /// evaluation and assignment of [rhs] only if the value is of [variable] is
2274 /// `null`.
2275 ///
2276 /// For instance:
2277 ///
2278 /// m(rhs) {
2279 /// var variable;
2280 /// variable ??= rhs;
2281 /// }
2282 ///
2283 R visitLocalVariableSetIfNull(
2284 Send node,
2285 LocalVariableElement variable,
2286 Node rhs,
2287 A arg);
2288
2289 /// If-null assignment expression of [rhs] to the final local [variable]. That
2290 /// is, evaluation and assignment of [rhs] only if the value is of [variable]
2291 /// is `null`.
2292 ///
2293 /// For instance:
2294 ///
2295 /// m(rhs) {
2296 /// final variable = 0;
2297 /// variable ??= rhs;
2298 /// }
2299 ///
2300 R visitFinalLocalVariableSetIfNull(
2301 Send node,
2302 LocalVariableElement variable,
2303 Node rhs,
2304 A arg);
2305
2306 /// If-null assignment expression of [rhs] to the local [function]. That is,
2307 /// evaluation and assignment of [rhs] only if the value is of [function] on
2308 /// `this` is `null`. This is in other words a fancy closurization.
2309 ///
2310 /// For instance:
2311 ///
2312 /// m(rhs) {
2313 /// function() {}
2314 /// function ??= rhs;
2315 /// }
2316 ///
2317 R visitLocalFunctionSetIfNull(
2318 Send node,
2319 LocalFunctionElement function,
2320 Node rhs,
2321 A arg);
2322
2323 /// If-null assignment expression of [rhs] to the static [field]. That
2324 /// is, evaluation and assignment of [rhs] only if the value is of [field]
2325 /// is `null`.
2326 ///
2327 /// For instance:
2328 ///
2329 /// class C {
2330 /// static var field;
2331 /// m(rhs) => field ??= rhs;
2332 /// }
2333 ///
2334 R visitStaticFieldSetIfNull(
2335 Send node,
2336 FieldElement field,
2337 Node rhs,
2338 A arg);
2339
2340 /// If-null assignment expression of [rhs] to the final static [field]. That
2341 /// is, evaluation and assignment of [rhs] only if the value is of [field]
2342 /// is `null`.
2343 ///
2344 /// For instance:
2345 ///
2346 /// class C {
2347 /// static final field = 0;
2348 /// m(rhs) => field ??= rhs;
2349 /// }
2350 ///
2351 R visitFinalStaticFieldSetIfNull(
2352 Send node,
2353 FieldElement field,
2354 Node rhs,
2355 A arg);
2356
2357 /// If-null assignment expression of [rhs] to the static property defined by
2358 /// [getter] and [setter]. That is, evaluation and assignment of [rhs] to
2359 /// [setter] only if the value is of the [getter] is `null`.
2360 ///
2361 /// For instance:
2362 ///
2363 /// class C {
2364 /// static get o => 0;
2365 /// static set o(_) {}
2366 /// m(rhs) => o ??= rhs;
2367 /// }
2368 ///
2369 R visitStaticGetterSetterSetIfNull(
2370 Send node,
2371 FunctionElement getter,
2372 FunctionElement setter,
2373 Node rhs,
2374 A arg);
2375
2376 /// If-null assignment expression of [rhs] to the static property defined by
2377 /// [method] and [setter]. That is, evaluation and assignment of [rhs] to
2378 /// [setter] only if the value is of the [method] is `null`. This is in other
2379 /// words a fancy closurization.
2380 ///
2381 /// For instance:
2382 ///
2383 /// class C {
2384 /// static o() {}
2385 /// static set o(_) {}
2386 /// m(rhs) => o ??= rhs;
2387 /// }
2388 ///
2389 R visitStaticMethodSetterSetIfNull(
2390 Send node,
2391 MethodElement method,
2392 MethodElement setter,
2393 Node rhs,
2394 A arg);
2395
2396 /// If-null assignment expression of [rhs] to the static [method]. That is,
2397 /// evaluation and assignment of [rhs] only if the value is of [method] on
2398 /// `this` is `null`. This is in other words a fancy closurization.
2399 ///
2400 /// For instance:
2401 ///
2402 /// o() {}
2403 /// m(rhs) => o ??= rhs;
2404 ///
2405 R visitStaticMethodSetIfNull(
2406 Send node,
2407 FunctionElement method,
2408 Node rhs,
2409 A arg);
2410
2411 /// If-null assignment expression of [rhs] to the top level [field]. That
2412 /// is, evaluation and assignment of [rhs] only if the value is of [field]
2413 /// is `null`.
2414 ///
2415 /// For instance:
2416 ///
2417 /// var field;
2418 /// m(rhs) => field ??= rhs;
2419 ///
2420 R visitTopLevelFieldSetIfNull(
2421 Send node,
2422 FieldElement field,
2423 Node rhs,
2424 A arg);
2425
2426 /// If-null assignment expression of [rhs] to the final top level [field].
2427 /// That is, evaluation and assignment of [rhs] only if the value is of
2428 /// [field] is `null`.
2429 ///
2430 /// For instance:
2431 ///
2432 /// final field = 0;
2433 /// m(rhs) => field ??= rhs;
2434 ///
2435 R visitFinalTopLevelFieldSetIfNull(
2436 Send node,
2437 FieldElement field,
2438 Node rhs,
2439 A arg);
2440
2441 /// If-null assignment expression of [rhs] to the top level property defined
2442 /// by [getter] and [setter]. That is, evaluation and assignment of [rhs] to
2443 /// [setter] only if the value is of the [getter] is `null`.
2444 ///
2445 /// For instance:
2446 ///
2447 /// get o => 0;
2448 /// set o(_) {}
2449 /// m(rhs) => o ??= rhs;
2450 ///
2451 R visitTopLevelGetterSetterSetIfNull(
2452 Send node,
2453 FunctionElement getter,
2454 FunctionElement setter,
2455 Node rhs,
2456 A arg);
2457
2458 /// If-null assignment expression of [rhs] to the top level property defined
2459 /// by [method] and [setter]. That is, evaluation and assignment of [rhs] to
2460 /// [setter] only if the value is of the [method] is `null`. This is in other
2461 /// words a fancy closurization.
2462 ///
2463 /// For instance:
2464 ///
2465 /// o() {}
2466 /// set o(_) {}
2467 /// m(rhs) => o ??= rhs;
2468 ///
2469 R visitTopLevelMethodSetterSetIfNull(
2470 Send node,
2471 FunctionElement method,
2472 FunctionElement setter,
2473 Node rhs,
2474 A arg);
2475
2476 /// If-null assignment expression of [rhs] to the top level [method]. That is,
2477 /// evaluation and assignment of [rhs] only if the value is of [method] on
2478 /// `this` is `null`. This is in other words a fancy closurization.
2479 ///
2480 /// For instance:
2481 ///
2482 /// o() {}
2483 /// m(rhs) => o ??= rhs;
2484 ///
2485 R visitTopLevelMethodSetIfNull(
2486 Send node,
2487 FunctionElement method,
2488 Node rhs,
2489 A arg);
2490
2491 /// If-null assignment expression of [rhs] to the super [field]. That
2492 /// is, evaluation and assignment of [rhs] only if the value is of [field]
2493 /// is `null`.
2494 ///
2495 /// For instance:
2496 ///
2497 /// class B {
2498 /// var field;
2499 /// }
2500 /// class C extends B {
2501 /// m(rhs) => super.field ??= rhs;
2502 /// }
2503 ///
2504 R visitSuperFieldSetIfNull(
2505 Send node,
2506 FieldElement field,
2507 Node rhs,
2508 A arg);
2509
2510 /// If-null assignment expression of [rhs] to the final super [field].
2511 /// That is, evaluation and assignment of [rhs] only if the value is of
2512 /// [field] is `null`.
2513 ///
2514 /// For instance:
2515 ///
2516 /// class B {
2517 /// final field = 42;
2518 /// }
2519 /// class C extends B {
2520 /// m(rhs) => super.field ??= rhs;
2521 /// }
2522 ///
2523 R visitFinalSuperFieldSetIfNull(
2524 Send node,
2525 FieldElement field,
2526 Node rhs,
2527 A arg);
2528
2529 /// If-null assignment expression of [rhs] to the super property defined
2530 /// by [readField] and [writtenField]. That is, evaluation and assignment of
2531 /// [rhs] to [writtenField] only if the value is of the [readField] is `null`.
2532 ///
2533 /// For instance:
2534 ///
2535 /// class A {
2536 /// var field;
2537 /// }
2538 /// class B extends A {
2539 /// final field;
2540 /// }
2541 /// class C extends B {
2542 /// m() => super.field ??= rhs;
2543 /// }
2544 ///
2545 R visitSuperFieldFieldSetIfNull(
2546 Send node,
2547 FieldElement readField,
2548 FieldElement writtenField,
2549 Node rhs,
2550 A arg);
2551
2552 /// If-null assignment expression of [rhs] to the super property defined
2553 /// by [getter] and [setter]. That is, evaluation and assignment of [rhs] to
2554 /// [setter] only if the value is of the [getter] is `null`.
2555 ///
2556 /// For instance:
2557 ///
2558 /// class B {
2559 /// get o => 0;
2560 /// set o(_) {}
2561 /// }
2562 /// class C extends B {
2563 /// m(rhs) => super.o ??= rhs;
2564 /// }
2565 ///
2566 R visitSuperGetterSetterSetIfNull(
2567 Send node,
2568 FunctionElement getter,
2569 FunctionElement setter,
2570 Node rhs,
2571 A arg);
2572
2573 /// If-null assignment expression of [rhs] to the super property defined
2574 /// by [method] and [setter]. That is, evaluation and assignment of [rhs] to
2575 /// [setter] only if the value is of the [method] is `null`. This is in other
2576 /// words a fancy closurization.
2577 ///
2578 /// For instance:
2579 ///
2580 /// class B {
2581 /// o() {}
2582 /// set o(_) {}
2583 /// }
2584 /// class C extends B {
2585 /// m(rhs) => super.o ??= rhs;
2586 /// }
2587 ///
2588 R visitSuperMethodSetterSetIfNull(
2589 Send node,
2590 FunctionElement method,
2591 FunctionElement setter,
2592 Node rhs,
2593 A arg);
2594
2595 /// If-null assignment expression of [rhs] to the super [method].
2596 /// That is, evaluation and assignment of [rhs] only if the value is of
2597 /// [method] is `null`. This is in other words a fancy closurization.
2598 ///
2599 /// For instance:
2600 ///
2601 /// class B {
2602 /// o() {}
2603 /// }
2604 /// class C extends B {
2605 /// m(rhs) => super.o ??= rhs;
2606 /// }
2607 ///
2608 R visitSuperMethodSetIfNull(
2609 Send node,
2610 FunctionElement method,
2611 Node rhs,
2612 A arg);
2613
2614 /// If-null assignment expression of [rhs] to the super property defined
2615 /// by [setter] with no corresponding getter. That is, evaluation and
2616 /// assignment of [rhs] to [setter] only if the value is of the unresolved
2617 /// getter is `null`. This is in other words a no such method error.
2618 ///
2619 /// For instance:
2620 ///
2621 /// class B {
2622 /// set o(_) {}
2623 /// }
2624 /// class C extends B {
2625 /// m(rhs) => super.o ??= rhs;
2626 /// }
2627 ///
2628 R visitUnresolvedSuperGetterSetIfNull(
2629 Send node,
2630 Element element,
2631 MethodElement setter,
2632 Node rhs,
2633 A arg);
2634
2635 /// If-null assignment expression of [rhs] to the super property defined
2636 /// by [getter] with no corresponding setter. That is, evaluation and
2637 /// assignment of [rhs] to unresolved setter only if the value is of the
2638 /// [getter] is `null`.
2639 ///
2640 /// For instance:
2641 ///
2642 /// class B {
2643 /// get o => 42;
2644 /// }
2645 /// class C extends B {
2646 /// m(rhs) => super.o ??= rhs;
2647 /// }
2648 ///
2649 R visitUnresolvedSuperSetterSetIfNull(
2650 Send node,
2651 MethodElement getter,
2652 Element element,
2653 Node rhs,
2654 A arg);
2655
2656 /// If-null assignment expression of [rhs] to the top level property defined
2657 /// by [field] and [setter]. That is, evaluation and assignment of [rhs] to
2658 /// [setter] only if the value is of the [field] is `null`.
2659 ///
2660 /// For instance:
2661 ///
2662 /// class A {
2663 /// var o;
2664 /// }
2665 /// class B extends A {
2666 /// set o(_) {}
2667 /// }
2668 /// class C extends B {
2669 /// m(rhs) => super.o ??= rhs;
2670 /// }
2671 ///
2672 R visitSuperFieldSetterSetIfNull(
2673 Send node,
2674 FieldElement field,
2675 FunctionElement setter,
2676 Node rhs,
2677 A arg);
2678
2679 /// If-null assignment expression of [rhs] to the top level property defined
2680 /// by [getter] and [field]. That is, evaluation and assignment of [rhs] to
2681 /// [field] only if the value is of the [getter] is `null`.
2682 ///
2683 /// For instance:
2684 ///
2685 /// class A {
2686 /// var o;
2687 /// }
2688 /// class B extends A {
2689 /// get o => 0;
2690 /// }
2691 /// class C extends B {
2692 /// m(rhs) => super.o ??= rhs;
2693 /// }
2694 ///
2695 R visitSuperGetterFieldSetIfNull(
2696 Send node,
2697 FunctionElement getter,
2698 FieldElement field,
2699 Node rhs,
2700 A arg);
2701
2702 /// If-null assignment expression of [rhs] to an unresolved super property.
2703 /// That is, evaluation and assignment of [rhs] only if the value is of the
2704 /// unresolved property is `null`. This is in other words a no such method
2705 /// error.
2706 ///
2707 /// For instance:
2708 ///
2709 /// class B {
2710 /// }
2711 /// class C extends B {
2712 /// m(rhs) => super.unresolved ??= rhs;
2713 /// }
2714 ///
2715 R visitUnresolvedSuperSetIfNull(
2716 Send node,
2717 Element element,
2718 Node rhs,
2719 A arg);
2720
2721 /// If-null assignment expression of [rhs] to the static property defined
2722 /// by [setter] with no corresponding getter. That is, evaluation and
2723 /// assignment of [rhs] to [setter] only if the value is of the unresolved
2724 /// getter is `null`. This is in other words a no such method error.
2725 ///
2726 /// For instance:
2727 ///
2728 /// class C {
2729 /// set foo(_) {}
2730 /// }
2731 /// m1() => C.foo ??= 42;
2732 ///
2733 R visitUnresolvedStaticGetterSetIfNull(
2734 Send node,
2735 Element element,
2736 MethodElement setter,
2737 Node rhs,
2738 A arg);
2739
2740 /// If-null assignment expression of [rhs] to the top level property defined
2741 /// by [setter] with no corresponding getter. That is, evaluation and
2742 /// assignment of [rhs] to [setter] only if the value is of the unresolved
2743 /// getter is `null`. This is in other words a no such method error.
karlklose 2015/08/26 12:39:22 Maybe split the last sentence into its own paragra
Johnni Winther 2015/08/28 08:12:12 Rephrased.
2744 ///
2745 /// For instance:
2746 ///
2747 /// set foo(_) {}
2748 /// m1() => foo ??= 42;
2749 ///
2750 R visitUnresolvedTopLevelGetterSetIfNull(
2751 Send node,
2752 Element element,
2753 MethodElement setter,
2754 Node rhs,
2755 A arg);
2756
2757 /// If-null assignment expression of [rhs] to the static property defined
2758 /// by [getter] with no corresponding setter. That is, evaluation and
2759 /// assignment of [rhs] to unresolved setter only if the value is of the
2760 /// [getter] is `null`.
2761 ///
2762 /// For instance:
2763 ///
2764 /// class C {
2765 /// get foo => 42;
2766 /// }
2767 /// m1() => C.foo ??= 42;
2768 ///
2769 R visitUnresolvedStaticSetterSetIfNull(
2770 Send node,
2771 MethodElement getter,
2772 Element element,
2773 Node rhs,
2774 A arg);
2775
2776 /// If-null assignment expression of [rhs] to the top level property defined
2777 /// by [getter] with no corresponding setter. That is, evaluation and
2778 /// assignment of [rhs] to unresolved setter only if the value is of the
2779 /// [getter] is `null`.
2780 ///
2781 /// For instance:
2782 ///
2783 /// get foo => 42;
2784 /// m1() => foo ??= 42;
2785 ///
2786 R visitUnresolvedTopLevelSetterSetIfNull(
2787 Send node,
2788 MethodElement getter,
2789 Element element,
2790 Node rhs,
2791 A arg);
2792
2793 /// If-null assignment expression of [rhs] to an unresolved property.
2794 /// That is, evaluation and assignment of [rhs] only if the value is of the
2795 /// unresolved property is `null`. This is in other words a no such method
2796 /// error.
2797 ///
2798 /// For instance:
2799 ///
2800 /// class C {}
2801 /// m1() => unresolved ??= 42;
2802 /// m2() => C.unresolved ??= 42;
2803 ///
2804 // TODO(johnniwinther): Split the cases in which a prefix is resolved.
2805 R visitUnresolvedSetIfNull(
2806 Send node,
2807 Element element,
2808 Node rhs,
2809 A arg);
2810
2811 /// If-null assignment expression of [rhs] to an invalid expression.
2812 ///
2813 /// For instance:
2814 ///
2815 /// import 'foo.dart' as p;
2816 ///
2817 /// m() => p ??= 42;
2818 ///
2819 R errorInvalidSetIfNull(
2820 Send node,
2821 ErroneousElement error,
2822 Node rhs,
2823 A arg);
2824
2825 /// If-null assignment expression of [rhs] to the class type literal
2826 /// [contant]. That is, evaluation and assignment of [rhs] only if the value
2827 /// is of [constant] is `null`. This is in other words a fancy type literal
2828 /// access.
2829 ///
2830 /// For instance:
2831 ///
2832 /// class C {}
2833 /// m(rhs) => C ??= rhs;
2834 ///
2835 R visitClassTypeLiteralSetIfNull(
2836 Send node,
2837 ConstantExpression constant,
2838 Node rhs,
2839 A arg);
2840
2841 /// If-null assignment expression of [rhs] to the typedef type literal
2842 /// [constant]. That is, evaluation and assignment of [rhs] only if the value
2843 /// is of [constant] is `null`. This is in other words a fancy type literal
2844 /// access.
2845 ///
2846 /// For instance:
2847 ///
2848 /// typedef F();
2849 /// m(rhs) => F += rhs;
karlklose 2015/08/26 12:39:22 '+=' -> '??=' (also the two cases below)
Johnni Winther 2015/08/28 08:12:12 Done.
2850 ///
2851 R visitTypedefTypeLiteralSetIfNull(
2852 Send node,
2853 ConstantExpression constant,
2854 Node rhs,
2855 A arg);
2856
2857 /// If-null assignment expression of [rhs] to the type literal for the type
2858 /// variable [element]. That is, evaluation and assignment of [rhs] only if
2859 /// the value is of [element] is `null`. This is in other words a fancy type
2860 /// literal access.
2861 ///
2862 /// For instance:
2863 ///
2864 /// class C<T> {
2865 /// m(rhs) => T += rhs;
2866 /// }
2867 ///
2868 R visitTypeVariableTypeLiteralSetIfNull(
2869 Send node,
2870 TypeVariableElement element,
2871 Node rhs,
2872 A arg);
2873
2874 /// If-null assignment expression of [rhs] to the dynamic type literal
2875 /// [constant]. That is, evaluation and assignment of [rhs] only if the value
2876 /// is of [constant] is `null`. This is in other words a fancy type literal
2877 /// access.
2878 ///
2879 /// For instance:
2880 ///
2881 /// m(rhs) => dynamic += rhs;
2882 ///
2883 R visitDynamicTypeLiteralSetIfNull(
2884 Send node,
2885 ConstantExpression constant,
2886 Node rhs,
2887 A arg);
2888
2192 /// Prefix expression with [operator] on a final super [field]. 2889 /// Prefix expression with [operator] on a final super [field].
2193 /// 2890 ///
2194 /// For instance: 2891 /// For instance:
2195 /// 2892 ///
2196 /// class B { 2893 /// class B {
2197 /// final field = 42; 2894 /// final field = 42;
2198 /// } 2895 /// }
2199 /// class C extends B { 2896 /// class C extends B {
2200 /// m(rhs) => ++super.field; 2897 /// m(rhs) => ++super.field;
2201 /// } 2898 /// }
(...skipping 2944 matching lines...) Expand 10 before | Expand all | Expand 10 after
5146 /// C() : this._(42); 5843 /// C() : this._(42);
5147 /// } 5844 /// }
5148 /// 5845 ///
5149 R errorUnresolvedThisConstructorInvoke( 5846 R errorUnresolvedThisConstructorInvoke(
5150 Send node, 5847 Send node,
5151 Element element, 5848 Element element,
5152 NodeList arguments, 5849 NodeList arguments,
5153 Selector selector, 5850 Selector selector,
5154 A arg); 5851 A arg);
5155 } 5852 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698