| // Copyright (c) 2026, 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. |
| |
| // SharedOptions=--enable-experiment=anonymous-methods |
| |
| // This test verifies that `super` can't be used inside a parameterless |
| // anonymous method. |
| // |
| // Note that whereas the analyzer has just a single representation of `super`, |
| // the CFE has a large number of them. So this test tries to exercise each CFE |
| // representation. |
| |
| class Base { |
| int i = 0; |
| operator[](int index) => null; |
| operator[]=(int index, Object? value) {} |
| void m() {} |
| } |
| |
| class Derived extends Base { |
| test() { |
| // CFE AST node: IfNullSuperIndexSet |
| this.=> super[0] ??= 1; |
| // ^^^^^ |
| // [analyzer] unspecified |
| // [cfe] unspecified |
| |
| // CFE AST node: SuperIndexSet |
| this.=> super[0] = 1; |
| // ^^^^^ |
| // [analyzer] unspecified |
| // [cfe] unspecified |
| |
| // CFE AST node: SuperIncDec |
| this.=> super.i++; |
| // ^^^^^ |
| // [analyzer] unspecified |
| // [cfe] unspecified |
| this.=> ++super.i; |
| // ^^^^^ |
| // [analyzer] unspecified |
| // [cfe] unspecified |
| |
| // CFE AST node: SuperMethodInvocation |
| this.=> super.m(); |
| // ^^^^^ |
| // [analyzer] unspecified |
| // [cfe] unspecified |
| |
| // CFE AST node: CompoundSuperIndexSet |
| this.=> super[0] += 1; |
| // ^^^^^ |
| // [analyzer] unspecified |
| // [cfe] unspecified |
| |
| // CFE AST node: SuperPropertySet |
| this.=> super.i = 0; |
| // ^^^^^ |
| // [analyzer] unspecified |
| // [cfe] unspecified |
| |
| // CFE AST node: SuperPropertyGet |
| this.=> super.i; |
| // ^^^^^ |
| // [analyzer] unspecified |
| // [cfe] unspecified |
| } |
| } |
| |
| mixin Mixin on Base { |
| test() { |
| // CFE AST node: AbstractSuperPropertyGet |
| this.=> super.i; |
| // ^^^^^ |
| // [analyzer] unspecified |
| // [cfe] unspecified |
| |
| // CFE AST node: AbstractSuperMethodInvocation |
| this.=> super.m(); |
| // ^^^^^ |
| // [analyzer] unspecified |
| // [cfe] unspecified |
| |
| // CFE AST node: AbstractSuperPropertySet |
| this.=> super.i = 0; |
| // ^^^^^ |
| // [analyzer] unspecified |
| // [cfe] unspecified |
| } |
| } |
| |
| main() {} |