blob: f9686fef99ab4a0e07af55fe46a7acb9224518cd [file]
// 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() {}