| // 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. |
| |
| class C { |
| String m = ""; |
| void set setter(String v) {} |
| void operator []=(int index, String value) {} |
| } |
| |
| extension on C? { |
| void set setter(String v) { |
| this?.m = v; |
| } |
| |
| void operator []=(int index, String value) { |
| this?.m = '$index$value'; |
| } |
| } |
| |
| main() { |
| C? c = new C() as C?; |
| expect("", c?.m); |
| c.setter = "42"; |
| expect("42", c?.m); |
| c[42] = "87"; |
| expect("4287", c?.m); |
| } |
| |
| expect(expected, actual) { |
| if (expected != actual) throw 'Expected $expected, actual $actual'; |
| } |