blob: c98e4040536dc6af936fec0f596e24dfd111a376 [file] [log] [blame]
// 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();
}