// Copyright (c) 2018, 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. // @dart = 2.7 /*member: index:[empty]*/ dynamic get index => throw ''; /*member: A.:[exact=A]*/ class A { /*member: A.foo:Value([exact=JSString], value: "string")*/ get foo => 'string'; set foo(/*[subclass=JSNumber]*/ value) {} /*member: A.[]:Value([exact=JSString], value: "string")*/ operator [](/*[empty]*/ index) => 'string'; /*member: A.[]=:[null]*/ operator []=(/*[empty]*/ index, /*[subclass=JSNumber]*/ value) {} /*member: A.returnDynamic1:Union([exact=JSString], [exact=JSUInt31])*/ returnDynamic1() => /*[subclass=A]*/ /*update: [subclass=A]*/ foo /*invoke: Union([exact=JSString], [exact=JSUInt31])*/ --; /*member: A.returnNum1:[subclass=JSNumber]*/ returnNum1() => /*invoke: Union([exact=JSString], [exact=JSUInt31])*/ -- /*[subclass=A]*/ /*update: [subclass=A]*/ foo; /*member: A.returnNum2:[subclass=JSNumber]*/ returnNum2() => /*[subclass=A]*/ /*update: [subclass=A]*/ foo /*invoke: Union([exact=JSString], [exact=JSUInt31])*/ -= 42; /*member: A.returnDynamic2:Union([exact=JSString], [exact=JSUInt31])*/ returnDynamic2() => this /*[subclass=A]*/ /*update: [subclass=A]*/ [index] /*invoke: Union([exact=JSString], [exact=JSUInt31])*/ --; /*member: A.returnNum3:[subclass=JSNumber]*/ returnNum3() => /*invoke: Union([exact=JSString], [exact=JSUInt31])*/ --this /*[subclass=A]*/ /*update: [subclass=A]*/ [index]; /*member: A.returnNum4:[subclass=JSNumber]*/ returnNum4() => this /*[subclass=A]*/ /*update: [subclass=A]*/ [index] /*invoke: Union([exact=JSString], [exact=JSUInt31])*/ -= 42; /*member: A.returnEmpty3:[empty]*/ returnEmpty3() { dynamic a = this; return a. /*[subclass=A]*/ /*update: [subclass=A]*/ bar /*invoke: [empty]*/ --; } /*member: A.returnEmpty1:[empty]*/ returnEmpty1() { dynamic a = this; return /*invoke: [empty]*/ --a . /*[subclass=A]*/ /*update: [subclass=A]*/ bar; } /*member: A.returnEmpty2:[empty]*/ returnEmpty2() { dynamic a = this; return a. /*[subclass=A]*/ /*update: [subclass=A]*/ bar /*invoke: [empty]*/ -= 42; } } /*member: B.:[exact=B]*/ class B extends A { /*member: B.foo:[exact=JSUInt31]*/ get foo => 42; /*member: B.[]:[exact=JSUInt31]*/ operator [](/*[empty]*/ index) => 42; /*member: B.returnString1:Value([exact=JSString], value: "string")*/ returnString1() => super.foo /*invoke: Value([exact=JSString], value: "string")*/ --; /*member: B.returnDynamic1:[empty]*/ returnDynamic1() => /*invoke: Value([exact=JSString], value: "string")*/ --super.foo; /*member: B.returnDynamic2:[empty]*/ returnDynamic2() => super.foo /*invoke: Value([exact=JSString], value: "string")*/ -= 42; /*member: B.returnString2:Value([exact=JSString], value: "string")*/ returnString2() => super[index] /*invoke: Value([exact=JSString], value: "string")*/ --; /*member: B.returnDynamic3:[empty]*/ returnDynamic3() => /*invoke: Value([exact=JSString], value: "string")*/ --super[index]; /*member: B.returnDynamic4:[empty]*/ returnDynamic4() => super[index] /*invoke: Value([exact=JSString], value: "string")*/ -= 42; } /*member: main:[null]*/ main() { new A() .. /*invoke: [exact=A]*/ returnNum1() .. /*invoke: [exact=A]*/ returnNum2() .. /*invoke: [exact=A]*/ returnNum3() .. /*invoke: [exact=A]*/ returnNum4() .. /*invoke: [exact=A]*/ returnDynamic1() .. /*invoke: [exact=A]*/ returnDynamic2() .. /*invoke: [exact=A]*/ returnEmpty1() .. /*invoke: [exact=A]*/ returnEmpty2() .. /*invoke: [exact=A]*/ returnEmpty3(); new B() .. /*invoke: [exact=B]*/ returnString1() .. /*invoke: [exact=B]*/ returnString2() .. /*invoke: [exact=B]*/ returnDynamic1() .. /*invoke: [exact=B]*/ returnDynamic2() .. /*invoke: [exact=B]*/ returnDynamic3() .. /*invoke: [exact=B]*/ returnDynamic4(); }