// Copyright (c) 2019, 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 MyClass { MyClass(); @pragma('dart2js:noInline') set internalSetter(int v) { /*7:MyClass.internalSetter*/ throw "error"; } } int q = 3; extension Ext on MyClass { @pragma('dart2js:noInline') int method() { this. /*6:Ext.method*/ internalSetter = 1; return 0; } @pragma('dart2js:noInline') int get propertyB => /*5:Ext.propertyB*/ method(); @pragma('dart2js:noInline') set propertyA(int v) { /*4:Ext.propertyA*/ propertyB; } @pragma('dart2js:noInline') int operator +(int v) { this. /*3:Ext.+*/ propertyA = 2; return 1; } @pragma('dart2js:noInline') int operator [](int v) => this /*2:Ext.[]*/ + 2; } extension on MyClass { @pragma('dart2js:noInline') int method2() => this /*1:MyClass..method2*/ [0]; } @pragma('dart2js:noInline') confuse(x) => x; main() { q++; confuse(null); MyClass x = confuse(new MyClass()); x. /*0:main*/ method2(); }