| // Copyright (c) 2015, 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. |
| |
| // @dart = 2.9 |
| |
| // Validate that assignment to a prefix is handled consistently with the |
| // following spec text from section 16.19 (Assignment): |
| // Evaluation of an assignment a of the form v = e proceeds as follows: |
| // Let d be the innermost declaration whose name is v or v=, if it exists. |
| // It is a compile-time error if d denotes a prefix object. |
| |
| import "empty_library.dart" as p; |
| |
| class Base { |
| var p; |
| } |
| |
| class Derived extends Base { |
| void f() { |
| p = 1; |
| // ^ |
| // [analyzer] COMPILE_TIME_ERROR.PREFIX_IDENTIFIER_NOT_FOLLOWED_BY_DOT |
| // [cfe] A prefix can't be used as an expression. |
| } |
| } |
| |
| main() { |
| new Derived().f(); |
| p = 1; |
| //^ |
| // [analyzer] COMPILE_TIME_ERROR.PREFIX_IDENTIFIER_NOT_FOLLOWED_BY_DOT |
| // [cfe] A prefix can't be used as an expression. |
| } |