Files
sdk/pkg/front_end/testcases/closure_context_lowering/this_variable.dart.strong.modular.expect
T
Chloe Stefantsova fac280bd7e [cfe] Add ScopeProvider as an interface of Field
Part of https://github.com/dart-lang/sdk/issues/61572

Change-Id: I8a9cb883181a584ceac9aef6a863e135474026eb
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/495960
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Chloe Stefantsova <cstefantsova@google.com>
2026-04-20 05:24:58 -07:00

541 lines
18 KiB
Plaintext

library;
import self as self;
import "dart:core" as core;
class A extends core::Object {
field self::A a/* scope=[
#ctx1: not-captured VariableContext([
this-variable final this-variable;
]),
] */ = new self::A::•();
field self::A? aNull = null;
field core::int n/* scope=[
#ctx2: not-captured VariableContext([
this-variable final this-variable;
]),
] */ = 0;
field core::Object? field = null;
synthetic constructor •() → self::A
: super core::Object::•()
;
method method() → dynamic/* scope=[
#ctx3: not-captured VariableContext([
this-variable final this-variable;
]),
] */ {}
method call() → core::Object?/* scope=[
#ctx4: not-captured VariableContext([
this-variable final this-variable;
]),
] */
return null;
operator [](positional-parameter index) → core::Object?/* scope=[
#ctx5: not-captured VariableContext([
this-variable final this-variable;
positional-parameter index;
]),
] */
return null;
operator []=(positional-parameter index, positional-parameter value) → void/* scope=[
#ctx6: not-captured VariableContext([
this-variable final this-variable;
positional-parameter index;
positional-parameter value;
]),
] */ {}
operator +(positional-parameter other) → self::A/* scope=[
#ctx7: not-captured VariableContext([
this-variable final this-variable;
positional-parameter other;
]),
] */
return this-variable;
operator unary-() → self::A/* scope=[
#ctx8: not-captured VariableContext([
this-variable final this-variable;
]),
] */
return this-variable;
method notCapturedMethodCall() → dynamic/* scope=[
#ctx9: not-captured VariableContext([
this-variable final this-variable;
]),
] */ {
this-variable.{self::A::method}(){() → dynamic};
}
method notCapturedExpression() → dynamic/* scope=[
#ctx10: not-captured VariableContext([
this-variable final this-variable;
]),
] */ {
this-variable;
}
method notCapturedPropertyGet() → dynamic/* scope=[
#ctx11: not-captured VariableContext([
this-variable final this-variable;
]),
] */ {
this-variable.{self::A::field}{core::Object?};
}
method notCapturedPropertySet() → dynamic/* scope=[
#ctx12: not-captured VariableContext([
this-variable final this-variable;
]),
] */ {
this-variable.{self::A::field} = null;
}
method notCapturedCall() → dynamic/* scope=[
#ctx13: not-captured VariableContext([
this-variable final this-variable;
]),
] */ {
this-variable.{self::A::call}(){() → core::Object?};
}
method notCapturedIndexGet() → dynamic/* scope=[
#ctx14: not-captured VariableContext([
this-variable final this-variable;
]),
] */ {
this-variable.{self::A::[]}(0){(core::int) → core::Object?};
}
method notCapturedIndexSet() → dynamic/* scope=[
#ctx15: not-captured VariableContext([
this-variable final this-variable;
]),
] */ {
this-variable.{self::A::[]=}(0, null){(core::int, core::Object?) → void};
}
method notCapturedUnary() → dynamic/* scope=[
#ctx16: not-captured VariableContext([
this-variable final this-variable;
]),
] */ {
this-variable.{self::A::unary-}(){() → self::A};
}
method notCapturedBinary() → dynamic/* scope=[
#ctx17: not-captured VariableContext([
this-variable final this-variable;
]),
] */ {
this-variable.{self::A::+}(this-variable){(self::A) → self::A};
}
method notCapturedPropertyCall() → dynamic/* scope=[
#ctx18: not-captured VariableContext([
this-variable final this-variable;
]),
] */ {
this-variable.{self::A::a}{self::A}.{self::A::call}(){() → core::Object?};
}
method notCapturedPropertyPrefix() → dynamic/* scope=[
#ctx19: not-captured VariableContext([
this-variable final this-variable;
]),
] */ {
this-variable.{self::A::n} = this-variable.{self::A::n}{core::int}.{core::num::+}(1){(core::num) → core::int};
}
method notCapturedPropertyPostfix() → dynamic/* scope=[
#ctx20: not-captured VariableContext([
this-variable final this-variable;
]),
] */ {
this-variable.{self::A::n} = this-variable.{self::A::n}{core::int}.{core::num::+}(1){(core::num) → core::int};
}
method notCapturedPropertyIndexGet() → dynamic/* scope=[
#ctx21: not-captured VariableContext([
this-variable final this-variable;
]),
] */ {
this-variable.{self::A::a}{self::A}.{self::A::[]}(0){(core::int) → core::Object?};
}
method notCapturedPropertyIndexSet() → dynamic/* scope=[
#ctx22: not-captured VariableContext([
this-variable final this-variable;
]),
] */ {
this-variable.{self::A::a}{self::A}.{self::A::[]=}(0, null){(core::int, core::Object?) → void};
}
method notCapturedPropertyIfNullAssignment() → dynamic/* scope=[
#ctx23: not-captured VariableContext([
this-variable final this-variable;
]),
] */ {
this-variable.{self::A::aNull}{self::A?} == null ?{self::A?} this-variable.{self::A::aNull} = new self::A::•() : null;
}
method notCapturedPropertyCompoundAssignment() → dynamic/* scope=[
#ctx24: not-captured VariableContext([
this-variable final this-variable;
]),
] */ {
this-variable.{self::A::a} = this-variable.{self::A::a}{self::A}.{self::A::+}(new self::A::•()){(self::A) → self::A};
}
method capturedMethodCall() → dynamic/* scope=[
#ctx25: direct-captured VariableContext([
this-variable final this-variable;
]),
] */ {
return () /* #ctx25 */ → dynamic => this-variable.{self::A::method}(){() → dynamic};
}
method capturedExpression() → dynamic/* scope=[
#ctx26: direct-captured VariableContext([
this-variable final this-variable;
]),
] */ {
return () /* #ctx26 */ → self::A => this-variable;
}
method capturedPropertyGet() → dynamic/* scope=[
#ctx27: direct-captured VariableContext([
this-variable final this-variable;
]),
] */ {
return () /* #ctx27 */ → core::Object? => this-variable.{self::A::field}{core::Object?};
}
method capturedPropertySet() → dynamic/* scope=[
#ctx28: direct-captured VariableContext([
this-variable final this-variable;
]),
] */ {
return () /* #ctx28 */ → Null {
this-variable.{self::A::field} = null;
};
}
method capturedCall() → dynamic/* scope=[
#ctx29: direct-captured VariableContext([
this-variable final this-variable;
]),
] */ {
return () /* #ctx29 */ → core::Object? => this-variable.{self::A::call}(){() → core::Object?};
}
method capturedIndexGet() → dynamic/* scope=[
#ctx30: direct-captured VariableContext([
this-variable final this-variable;
]),
] */ {
return () /* #ctx30 */ → core::Object? => this-variable.{self::A::[]}(0){(core::int) → core::Object?};
}
method capturedIndexSet() → dynamic/* scope=[
#ctx31: direct-captured VariableContext([
this-variable final this-variable;
]),
] */ {
return () /* #ctx31 */ → Null {
this-variable.{self::A::[]=}(0, null){(core::int, core::Object?) → void};
};
}
method capturedUnary() → dynamic/* scope=[
#ctx32: direct-captured VariableContext([
this-variable final this-variable;
]),
] */ {
return () /* #ctx32 */ → self::A => this-variable.{self::A::unary-}(){() → self::A};
}
method capturedBinary() → dynamic/* scope=[
#ctx33: direct-captured VariableContext([
this-variable final this-variable;
]),
] */ {
return () /* #ctx33 */ → self::A => this-variable.{self::A::+}(this-variable){(self::A) → self::A};
}
method capturedPropertyCall() → dynamic/* scope=[
#ctx34: direct-captured VariableContext([
this-variable final this-variable;
]),
] */ {
return () /* #ctx34 */ → core::Object? => this-variable.{self::A::a}{self::A}.{self::A::call}(){() → core::Object?};
}
method capturedPropertyPrefix() → dynamic/* scope=[
#ctx35: direct-captured VariableContext([
this-variable final this-variable;
]),
] */ {
return () /* #ctx35 */ → core::int => this-variable.{self::A::n} = this-variable.{self::A::n}{core::int}.{core::num::+}(1){(core::num) → core::int};
}
method capturedPropertyPostfix() → dynamic/* scope=[
#ctx36: direct-captured VariableContext([
this-variable final this-variable;
]),
] */ {
return () /* #ctx36 */ → core::int => let final core::int #t1 = this-variable.{self::A::n}{core::int} in let final void #t2 = this-variable.{self::A::n} = #t1.{core::num::+}(1){(core::num) → core::int} in #t1;
}
method capturedPropertyIndexGet() → dynamic/* scope=[
#ctx37: direct-captured VariableContext([
this-variable final this-variable;
]),
] */ {
return () /* #ctx37 */ → core::Object? => this-variable.{self::A::a}{self::A}.{self::A::[]}(0){(core::int) → core::Object?};
}
method capturedPropertyIndexSet() → dynamic/* scope=[
#ctx38: direct-captured VariableContext([
this-variable final this-variable;
]),
] */ {
return () /* #ctx38 */ → Null => let final self::A #t3 = this-variable.{self::A::a}{self::A} in let final core::int #t4 = 0 in let final has-declared-initializer Null #t5 = null in let final void #t6 = #t3.{self::A::[]=}(#t4, #t5){(core::int, core::Object?) → void} in #t5;
}
method capturedPropertyIfNullAssignment() → dynamic/* scope=[
#ctx39: direct-captured VariableContext([
this-variable final this-variable;
]),
] */ {
return () /* #ctx39 */ → self::A => let final self::A? #t7 = this-variable.{self::A::aNull}{self::A?} in #t7 == null ?{self::A} this-variable.{self::A::aNull} = new self::A::•() : #t7{self::A};
}
method capturedPropertyCompoundAssignment() → dynamic/* scope=[
#ctx40: direct-captured VariableContext([
this-variable final this-variable;
]),
] */ {
return () /* #ctx40 */ → self::A => this-variable.{self::A::a} = this-variable.{self::A::a}{self::A}.{self::A::+}(new self::A::•()){(self::A) → self::A};
}
}
class B extends self::A {
synthetic constructor •() → self::B
: super self::A::•()
;
@#C1
method notCapturedMethodCall() → dynamic/* scope=[
#ctx41: not-captured VariableContext([
this-variable final this-variable;
]),
] */ {
super{this-variable}.{self::A::method}();
}
@#C1
method notCapturedPropertyGet() → dynamic/* scope=[
#ctx42: not-captured VariableContext([
this-variable final this-variable;
]),
] */ {
super{this-variable}.{self::A::field};
}
@#C1
method notCapturedPropertySet() → dynamic/* scope=[
#ctx43: not-captured VariableContext([
this-variable final this-variable;
]),
] */ {
super{this-variable}.{self::A::field} = null;
}
@#C1
method notCapturedCall() → dynamic/* scope=[
#ctx44: not-captured VariableContext([
this-variable final this-variable;
]),
] */ {
super{this-variable}.{self::A::call}();
}
@#C1
method notCapturedIndexGet() → dynamic/* scope=[
#ctx45: not-captured VariableContext([
this-variable final this-variable;
]),
] */ {
super{this-variable}.{self::A::[]}(0);
}
@#C1
method notCapturedIndexSet() → dynamic/* scope=[
#ctx46: not-captured VariableContext([
this-variable final this-variable;
]),
] */ {
super{this-variable}.{self::A::[]=}(0, null);
}
@#C1
method notCapturedUnary() → dynamic/* scope=[
#ctx47: not-captured VariableContext([
this-variable final this-variable;
]),
] */ {
super{this-variable}.{self::A::unary-}();
}
@#C1
method notCapturedBinary() → dynamic/* scope=[
#ctx48: not-captured VariableContext([
this-variable final this-variable;
]),
] */ {
super{this-variable}.{self::A::+}(this-variable);
}
@#C1
method notCapturedPropertyCall() → dynamic/* scope=[
#ctx49: not-captured VariableContext([
this-variable final this-variable;
]),
] */ {
super{this-variable}.{self::A::a}.{self::A::call}(){() → core::Object?};
}
@#C1
method notCapturedPropertyPrefix() → dynamic/* scope=[
#ctx50: not-captured VariableContext([
this-variable final this-variable;
]),
] */ {
super{this-variable}.{self::A::n} = super{this-variable}.{self::A::n}.{core::num::+}(1){(core::num) → core::int};
}
@#C1
method notCapturedPropertyPostfix() → dynamic/* scope=[
#ctx51: not-captured VariableContext([
this-variable final this-variable;
]),
] */ {
super{this-variable}.{self::A::n} = super{this-variable}.{self::A::n}.{core::num::+}(1){(core::num) → core::int};
}
@#C1
method notCapturedPropertyIndexGet() → dynamic/* scope=[
#ctx52: not-captured VariableContext([
this-variable final this-variable;
]),
] */ {
super{this-variable}.{self::A::a}.{self::A::[]}(0){(core::int) → core::Object?};
}
@#C1
method notCapturedPropertyIndexSet() → dynamic/* scope=[
#ctx53: not-captured VariableContext([
this-variable final this-variable;
]),
] */ {
super{this-variable}.{self::A::a}.{self::A::[]=}(0, null){(core::int, core::Object?) → void};
}
@#C1
method notCapturedPropertyIfNullAssignment() → dynamic/* scope=[
#ctx54: not-captured VariableContext([
this-variable final this-variable;
]),
] */ {
super{this-variable}.{self::A::aNull} == null ?{self::A?} super{this-variable}.{self::A::aNull} = new self::A::•() : null;
}
@#C1
method notCapturedPropertyCompoundAssignment() → dynamic/* scope=[
#ctx55: not-captured VariableContext([
this-variable final this-variable;
]),
] */ {
super{this-variable}.{self::A::a} = super{this-variable}.{self::A::a}.{self::A::+}(new self::A::•()){(self::A) → self::A};
}
@#C1
method capturedMethodCall() → dynamic/* scope=[
#ctx56: direct-captured VariableContext([
this-variable final this-variable;
]),
] */ {
return () /* #ctx56 */ → dynamic => super{this-variable}.{self::A::method}();
}
@#C1
method capturedPropertyGet() → dynamic/* scope=[
#ctx57: direct-captured VariableContext([
this-variable final this-variable;
]),
] */ {
return () /* #ctx57 */ → core::Object? => super{this-variable}.{self::A::field};
}
@#C1
method capturedPropertySet() → dynamic/* scope=[
#ctx58: direct-captured VariableContext([
this-variable final this-variable;
]),
] */ {
return () /* #ctx58 */ → Null {
super{this-variable}.{self::A::field} = null;
};
}
@#C1
method capturedCall() → dynamic/* scope=[
#ctx59: direct-captured VariableContext([
this-variable final this-variable;
]),
] */ {
return () /* #ctx59 */ → core::Object? => super{this-variable}.{self::A::call}();
}
@#C1
method capturedIndexGet() → dynamic/* scope=[
#ctx60: direct-captured VariableContext([
this-variable final this-variable;
]),
] */ {
return () /* #ctx60 */ → core::Object? => super{this-variable}.{self::A::[]}(0);
}
@#C1
method capturedIndexSet() → dynamic/* scope=[
#ctx61: direct-captured VariableContext([
this-variable final this-variable;
]),
] */ {
return () /* #ctx61 */ → Null {
super{this-variable}.{self::A::[]=}(0, null);
};
}
@#C1
method capturedUnary() → dynamic/* scope=[
#ctx62: direct-captured VariableContext([
this-variable final this-variable;
]),
] */ {
return () /* #ctx62 */ → self::A => super{this-variable}.{self::A::unary-}();
}
@#C1
method capturedBinary() → dynamic/* scope=[
#ctx63: direct-captured VariableContext([
this-variable final this-variable;
]),
] */ {
return () /* #ctx63 */ → self::A => super{this-variable}.{self::A::+}(this-variable);
}
@#C1
method capturedPropertyCall() → dynamic/* scope=[
#ctx64: direct-captured VariableContext([
this-variable final this-variable;
]),
] */ {
return () /* #ctx64 */ → core::Object? => super{this-variable}.{self::A::a}.{self::A::call}(){() → core::Object?};
}
@#C1
method capturedPropertyPrefix() → dynamic/* scope=[
#ctx65: direct-captured VariableContext([
this-variable final this-variable;
]),
] */ {
return () /* #ctx65 */ → core::int => super{this-variable}.{self::A::n} = super{this-variable}.{self::A::n}.{core::num::+}(1){(core::num) → core::int};
}
@#C1
method capturedPropertyPostfix() → dynamic/* scope=[
#ctx66: direct-captured VariableContext([
this-variable final this-variable;
]),
] */ {
return () /* #ctx66 */ → core::int => let final core::int #t8 = super{this-variable}.{self::A::n} in let final void #t9 = super{this-variable}.{self::A::n} = #t8.{core::num::+}(1){(core::num) → core::int} in #t8;
}
@#C1
method capturedPropertyIndexGet() → dynamic/* scope=[
#ctx67: direct-captured VariableContext([
this-variable final this-variable;
]),
] */ {
return () /* #ctx67 */ → core::Object? => super{this-variable}.{self::A::a}.{self::A::[]}(0){(core::int) → core::Object?};
}
@#C1
method capturedPropertyIndexSet() → dynamic/* scope=[
#ctx68: direct-captured VariableContext([
this-variable final this-variable;
]),
] */ {
return () /* #ctx68 */ → Null => let final self::A #t10 = super{this-variable}.{self::A::a} in let final core::int #t11 = 0 in let final has-declared-initializer Null #t12 = null in let final void #t13 = #t10.{self::A::[]=}(#t11, #t12){(core::int, core::Object?) → void} in #t12;
}
@#C1
method capturedPropertyIfNullAssignment() → dynamic/* scope=[
#ctx69: direct-captured VariableContext([
this-variable final this-variable;
]),
] */ {
return () /* #ctx69 */ → self::A => let final self::A? #t14 = super{this-variable}.{self::A::aNull} in #t14 == null ?{self::A} super{this-variable}.{self::A::aNull} = new self::A::•() : #t14{self::A};
}
@#C1
method capturedPropertyCompoundAssignment() → dynamic/* scope=[
#ctx70: direct-captured VariableContext([
this-variable final this-variable;
]),
] */ {
return () /* #ctx70 */ → self::A => super{this-variable}.{self::A::a} = super{this-variable}.{self::A::a}.{self::A::+}(new self::A::•()){(self::A) → self::A};
}
}
constants {
#C1 = core::_Override {}
}