| // Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| void main() { |
| print(sum([1, 2, 3, 4, 5])); |
| } |
| |
| int sum( |
| Iterable<int> |
| list) => /* |
| fields={first:int,isEmpty:bool,Iterable<int>.rest:Iterable<int>}, |
| type=Iterable<int> |
| */ |
| switch (list) { |
| Iterable(isEmpty: true) /*space=Iterable<int>(isEmpty: true)*/ => 0, |
| Iterable( |
| first: var x, |
| rest: var xs |
| ) /*space=Iterable<int>(first: int, Iterable<int>.rest: Iterable<int> (Iterable<int>))*/ => |
| x + sum(xs), |
| }; |
| |
| int sum1( |
| Iterable<int> |
| list) => /* |
| fields={first:int,isEmpty:bool,Iterable<int>.rest:Iterable<int>}, |
| type=Iterable<int> |
| */ |
| switch (list) { |
| Iterable(isEmpty: true) /*space=Iterable<int>(isEmpty: true)*/ => 0, |
| Iterable( |
| first: var x, |
| rest: Iterable<int> xs |
| ) /*space=Iterable<int>(first: int, Iterable<int>.rest: Iterable<int> (Iterable<int>))*/ => |
| x + sum(xs), |
| }; |
| |
| int sum2( |
| Iterable<int> |
| list) => /* |
| error=non-exhaustive:Iterable<int>(first: int(), isEmpty: false, rest: Iterable<int>())/Iterable<int>(isEmpty: false), |
| fields={first:int,isEmpty:bool,Iterable<int>.rest:Iterable<int>}, |
| type=Iterable<int> |
| */ |
| switch (list) { |
| Iterable(isEmpty: true) /*space=Iterable<int>(isEmpty: true)*/ => 0, |
| Iterable( |
| first: var x, |
| rest: List<int> xs |
| ) /*space=Iterable<int>(first: int, Iterable<int>.rest: List<int> (Iterable<int>))*/ => |
| x + sum(xs), |
| }; |
| |
| extension<A> on Iterable<A> { |
| Iterable<A> get rest => skip(1); |
| } |