| // 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. |
| |
| class A { |
| A a = new A(); |
| A? aNull; |
| int n = 0; |
| Object? field; |
| method() {} |
| Object? call() => null; |
| Object? operator[](int index) => null; |
| void operator[]=(int index, Object? value) {} |
| A operator+(A other) => this; |
| A operator-() => this; |
| |
| notCapturedMethodCall() { |
| method(); |
| } |
| |
| notCapturedExpression() { |
| this; |
| } |
| |
| notCapturedPropertyGet() { |
| field; |
| } |
| |
| notCapturedPropertySet() { |
| field = null; |
| } |
| |
| notCapturedCall() { |
| this(); |
| } |
| |
| notCapturedIndexGet() { |
| this[0]; |
| } |
| |
| notCapturedIndexSet() { |
| this[0] = null; |
| } |
| |
| notCapturedUnary() { |
| -this; |
| } |
| |
| notCapturedBinary() { |
| this + this; |
| } |
| |
| notCapturedPropertyCall() { |
| a(); |
| } |
| |
| notCapturedPropertyPrefix() { |
| ++n; |
| } |
| |
| notCapturedPropertyPostfix() { |
| n++; |
| } |
| |
| notCapturedPropertyIndexGet() { |
| a[0]; |
| } |
| |
| notCapturedPropertyIndexSet() { |
| a[0] = null; |
| } |
| |
| notCapturedPropertyIfNullAssignment() { |
| aNull ??= new A(); |
| } |
| |
| notCapturedPropertyCompoundAssignment() { |
| a += new A(); |
| } |
| |
| capturedMethodCall() { |
| return () => method(); |
| } |
| |
| capturedExpression() { |
| return () => this; |
| } |
| |
| capturedPropertyGet() { |
| return () => field; |
| } |
| |
| capturedPropertySet() { |
| return () { field = null; }; |
| } |
| |
| capturedCall() { |
| return () => this(); |
| } |
| |
| capturedIndexGet() { |
| return () => this[0]; |
| } |
| |
| capturedIndexSet() { |
| return () { this[0] = null; }; |
| } |
| |
| capturedUnary() { |
| return () => -this; |
| } |
| |
| capturedBinary() { |
| return () => this + this; |
| } |
| |
| capturedPropertyCall() { |
| return () => a(); |
| } |
| |
| capturedPropertyPrefix() { |
| return () => ++n; |
| } |
| |
| capturedPropertyPostfix() { |
| return () => n++; |
| } |
| |
| capturedPropertyIndexGet() { |
| return () => a[0]; |
| } |
| |
| capturedPropertyIndexSet() { |
| return () => (a[0] = null); |
| } |
| |
| capturedPropertyIfNullAssignment() { |
| return () => (aNull ??= new A()); |
| } |
| |
| capturedPropertyCompoundAssignment() { |
| return () => (a += new A()); |
| } |
| } |
| |
| class B extends A { |
| @override |
| notCapturedMethodCall() { |
| super.method(); |
| } |
| |
| @override |
| notCapturedPropertyGet() { |
| super.field; |
| } |
| |
| @override |
| notCapturedPropertySet() { |
| super.field = null; |
| } |
| |
| @override |
| notCapturedCall() { |
| super(); |
| } |
| |
| @override |
| notCapturedIndexGet() { |
| super[0]; |
| } |
| |
| @override |
| notCapturedIndexSet() { |
| super[0] = null; |
| } |
| |
| @override |
| notCapturedUnary() { |
| -super; |
| } |
| |
| @override |
| notCapturedBinary() { |
| super + this; |
| } |
| |
| @override |
| notCapturedPropertyCall() { |
| super.a(); |
| } |
| |
| @override |
| notCapturedPropertyPrefix() { |
| ++super.n; |
| } |
| |
| @override |
| notCapturedPropertyPostfix() { |
| super.n++; |
| } |
| |
| @override |
| notCapturedPropertyIndexGet() { |
| super.a[0]; |
| } |
| |
| @override |
| notCapturedPropertyIndexSet() { |
| super.a[0] = null; |
| } |
| |
| @override |
| notCapturedPropertyIfNullAssignment() { |
| super.aNull ??= new A(); |
| } |
| |
| @override |
| notCapturedPropertyCompoundAssignment() { |
| super.a += new A(); |
| } |
| |
| @override |
| capturedMethodCall() { |
| return () => super.method(); |
| } |
| |
| @override |
| capturedPropertyGet() { |
| return () => super.field; |
| } |
| |
| @override |
| capturedPropertySet() { |
| return () { super.field = null; }; |
| } |
| |
| @override |
| capturedCall() { |
| return () => super(); |
| } |
| |
| @override |
| capturedIndexGet() { |
| return () => super[0]; |
| } |
| |
| @override |
| capturedIndexSet() { |
| return () { super[0] = null; }; |
| } |
| |
| @override |
| capturedUnary() { |
| return () => -super; |
| } |
| |
| @override |
| capturedBinary() { |
| return () => super + this; |
| } |
| |
| @override |
| capturedPropertyCall() { |
| return () => super.a(); |
| } |
| |
| @override |
| capturedPropertyPrefix() { |
| return () => ++super.n; |
| } |
| |
| @override |
| capturedPropertyPostfix() { |
| return () => super.n++; |
| } |
| |
| @override |
| capturedPropertyIndexGet() { |
| return () => super.a[0]; |
| } |
| |
| @override |
| capturedPropertyIndexSet() { |
| return () => (super.a[0] = null); |
| } |
| |
| @override |
| capturedPropertyIfNullAssignment() { |
| return () => (super.aNull ??= new A()); |
| } |
| |
| @override |
| capturedPropertyCompoundAssignment() { |
| return () => (super.a += new A()); |
| } |
| } |