| // Copyright (c) 2019, 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. |
| |
| /// @assertion A pre-increment expression of the form ++e1.id is generally |
| /// equivalent to e1.id += 1. Similarly for --e1.id, ++e1[e2] and --e1[e2]. This |
| /// applies when e1 is an extension application too, reducing it to the former |
| /// case. |
| /// |
| /// A post-increment expression of the form e1.id++ is generally equivalent to |
| /// e1.id += 1 (which is e1.id = e1.id + 1 except that subexpressions of e1 are |
| /// not evaluated more than once), but the value of the expression is the value |
| /// from evaluating e1.id before adding 1. |
| /// |
| /// @description Check --e1.id and e1.id-- values |
| /// @author sgrekhov@unipro.ru |
| |
| |
| import "../../Utils/expect.dart"; |
| |
| class C { |
| int value; |
| C() : value = 0 {} |
| init() { |
| value = 0; |
| } |
| } |
| |
| extension Ext on C { |
| int get id => this.value; |
| void set id(int v) {this.value = v;} |
| } |
| |
| main() { |
| C c = C(); |
| Expect.equals(-1, --Ext(c).id); |
| c.init(); |
| Expect.equals(0, Ext(c).id--); |
| } |