blob: 3e698f1902a198112199ffef00feb7ccbc74c618 [file] [log] [blame]
// Copyright (c) 2017, 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
class C<T> {
/*member: C.field:Union([exact=JSString], [exact=JSUInt31])*/
final T field;
/*member: C.fixedFunctionField:[subclass=Closure]*/
int Function() fixedFunctionField = /*[exact=JSUInt31]*/ () => 0;
/*member: C.functionField:[null|subclass=Closure]*/
T Function() functionField;
/*member: C.genericFunctionField:[null|subclass=Closure]*/
S Function<S>(S) genericFunctionField;
/*member: C.:[exact=C]*/
C(this. /*Union([exact=JSString], [exact=JSUInt31])*/ field) {
/*update: [subclass=C]*/ functionField =
/*Union([exact=JSString], [exact=JSUInt31])*/
() => /*[subclass=C]*/ field;
/*Union([exact=JSString], [exact=JSUInt31])*/
S local<S>(S /*Union([exact=JSString], [exact=JSUInt31])*/ s) => s;
/*update: [subclass=C]*/ genericFunctionField = local;
}
/*member: C.method:Union([exact=JSString], [exact=JSUInt31])*/
T method() => /*[subclass=C]*/ field;
/*member: C.+:Union([exact=JSString], [exact=JSUInt31])*/
T operator +(T /*Union([exact=JSString], [exact=JSUInt31])*/ t) =>
/*[subclass=C]*/ field;
/*member: C.getter:Union([exact=JSString], [exact=JSUInt31])*/
T get getter => /*[subclass=C]*/ field;
/*member: C.fixedFunctionGetter:[subclass=Closure]*/
int Function() get fixedFunctionGetter => /*[exact=JSUInt31]*/ () => 0;
/*member: C.functionGetter:[null|subclass=Closure]*/
T Function() get functionGetter => /*[subclass=C]*/ functionField;
/*member: C.genericFunctionGetter:[null|subclass=Closure]*/
S Function<S>(S) get genericFunctionGetter =>
/*[subclass=C]*/ genericFunctionField;
/*member: C.genericMethod:Union([exact=JSString], [exact=JSUInt31])*/
S genericMethod<S>(S /*Union([exact=JSString], [exact=JSUInt31])*/ s) => s;
}
class D1 extends C<int> {
/*member: D1.:[exact=D1]*/
D1(int /*[exact=JSUInt31]*/ field) : super(field);
/*member: D1.superFieldAccess:[exact=JSUInt31]*/
superFieldAccess() => super.field;
/*member: D1.superFieldInvoke:[null|subclass=JSInt]*/
superFieldInvoke() => super.functionField();
/*member: D1.superFixedFieldInvoke:[null|subclass=JSInt]*/
superFixedFieldInvoke() => super.fixedFunctionField();
/*member: D1.superMethodInvoke:[exact=JSUInt31]*/
superMethodInvoke() => super.method();
/*member: D1.superOperatorInvoke:[exact=JSUInt31]*/
superOperatorInvoke() => super + 0;
/*member: D1.superGetterAccess:[exact=JSUInt31]*/
superGetterAccess() => super.getter;
/*member: D1.superGetterInvoke:[null|subclass=JSInt]*/
superGetterInvoke() => super.functionGetter();
/*member: D1.superFixedGetterInvoke:[null|subclass=JSInt]*/
superFixedGetterInvoke() => super.fixedFunctionGetter();
/*member: D1.superGenericFieldInvoke1:[null|exact=JSString]*/
superGenericFieldInvoke1() => super.genericFunctionField('');
/*member: D1.superGenericFieldInvoke2:[null|subclass=JSInt]*/
superGenericFieldInvoke2() => super.genericFunctionField(0);
/*member: D1.superGenericMethodInvoke1:[exact=JSString]*/
superGenericMethodInvoke1() => super.genericMethod('');
/*member: D1.superGenericMethodInvoke2:[exact=JSUInt31]*/
superGenericMethodInvoke2() => super.genericMethod(0);
/*member: D1.superGenericGetterInvoke1:[null|exact=JSString]*/
superGenericGetterInvoke1() => super.genericFunctionGetter('');
/*member: D1.superGenericGetterInvoke2:[null|subclass=JSInt]*/
superGenericGetterInvoke2() => super.genericFunctionGetter(0);
}
class D2 extends C<String> {
/*member: D2.:[exact=D2]*/
D2(String /*Value([exact=JSString], value: "")*/ field) : super(field);
/*member: D2.superFieldAccess:[exact=JSString]*/
superFieldAccess() => super.field;
/*member: D2.superFieldInvoke:[null|exact=JSString]*/
superFieldInvoke() => super.functionField();
/*member: D2.superFixedFieldInvoke:[null|subclass=JSInt]*/
superFixedFieldInvoke() => super.fixedFunctionField();
/*member: D2.superMethodInvoke:[exact=JSString]*/
superMethodInvoke() => super.method();
/*member: D2.superOperatorInvoke:[exact=JSString]*/
superOperatorInvoke() => super + '';
/*member: D2.superGetterAccess:[exact=JSString]*/
superGetterAccess() => super.getter;
/*member: D2.superGetterInvoke:[null|exact=JSString]*/
superGetterInvoke() => super.functionGetter();
/*member: D2.superFixedGetterInvoke:[null|subclass=JSInt]*/
superFixedGetterInvoke() => super.fixedFunctionGetter();
/*member: D2.superGenericFieldInvoke1:[null|exact=JSString]*/
superGenericFieldInvoke1() => super.genericFunctionField('');
/*member: D2.superGenericFieldInvoke2:[null|subclass=JSInt]*/
superGenericFieldInvoke2() => super.genericFunctionField(0);
/*member: D2.superGenericMethodInvoke1:[exact=JSString]*/
superGenericMethodInvoke1() => super.genericMethod('');
/*member: D2.superGenericMethodInvoke2:[exact=JSUInt31]*/
superGenericMethodInvoke2() => super.genericMethod(0);
/*member: D2.superGenericGetterInvoke1:[null|exact=JSString]*/
superGenericGetterInvoke1() => super.genericFunctionGetter('');
/*member: D2.superGenericGetterInvoke2:[null|subclass=JSInt]*/
superGenericGetterInvoke2() => super.genericFunctionGetter(0);
}
/*member: main:[null]*/
main() {
closureInvoke();
localFunctionInvoke();
genericLocalFunctionInvoke();
fieldAccess1();
fieldAccess2();
fixedFieldInvoke();
fieldInvoke1();
fieldInvoke2();
methodInvoke1();
methodInvoke2();
operatorInvoke1();
operatorInvoke2();
fixedGetterInvoke();
getterAccess1();
getterAccess2();
getterInvoke1();
getterInvoke2();
genericFieldInvoke1();
genericFieldInvoke2();
genericMethodInvoke1();
genericMethodInvoke2();
genericGetterInvoke1();
genericGetterInvoke2();
new D1(0)
.. /*invoke: [exact=D1]*/ superFieldAccess()
.. /*invoke: [exact=D1]*/ superFieldInvoke()
.. /*invoke: [exact=D1]*/ superFixedFieldInvoke()
.. /*invoke: [exact=D1]*/ superMethodInvoke()
.. /*invoke: [exact=D1]*/ superOperatorInvoke()
.. /*invoke: [exact=D1]*/ superGetterAccess()
.. /*invoke: [exact=D1]*/ superGetterInvoke()
.. /*invoke: [exact=D1]*/ superFixedGetterInvoke()
.. /*invoke: [exact=D1]*/ superGenericFieldInvoke1()
.. /*invoke: [exact=D1]*/ superGenericFieldInvoke2()
.. /*invoke: [exact=D1]*/ superGenericMethodInvoke1()
.. /*invoke: [exact=D1]*/ superGenericMethodInvoke2()
.. /*invoke: [exact=D1]*/ superGenericGetterInvoke1()
.. /*invoke: [exact=D1]*/ superGenericGetterInvoke2();
new D2('')
.. /*invoke: [exact=D2]*/ superFieldAccess()
.. /*invoke: [exact=D2]*/ superFieldInvoke()
.. /*invoke: [exact=D2]*/ superFixedFieldInvoke()
.. /*invoke: [exact=D2]*/ superMethodInvoke()
.. /*invoke: [exact=D2]*/ superOperatorInvoke()
.. /*invoke: [exact=D2]*/ superGetterAccess()
.. /*invoke: [exact=D2]*/ superGetterInvoke()
.. /*invoke: [exact=D2]*/ superFixedGetterInvoke()
.. /*invoke: [exact=D2]*/ superGenericFieldInvoke1()
.. /*invoke: [exact=D2]*/ superGenericFieldInvoke2()
.. /*invoke: [exact=D2]*/ superGenericMethodInvoke1()
.. /*invoke: [exact=D2]*/ superGenericMethodInvoke2()
.. /*invoke: [exact=D2]*/ superGenericGetterInvoke1()
.. /*invoke: [exact=D2]*/ superGenericGetterInvoke2();
}
/*member: closureInvoke:[null|subclass=JSInt]*/
closureInvoke() {
int Function() f = /*[exact=JSUInt31]*/ () => 0;
return f();
}
/*member: localFunctionInvoke:[exact=JSUInt31]*/
localFunctionInvoke() {
/*[exact=JSUInt31]*/
int local() => 0;
return local();
}
/*member: genericLocalFunctionInvoke:[null]*/
genericLocalFunctionInvoke() {
/*Union([exact=JSString], [exact=JSUInt31])*/
S local<S>(S /*Union([exact=JSString], [exact=JSUInt31])*/ s) => s;
local(0). /*invoke: [exact=JSUInt31]*/ toString();
local(''). /*invoke: [exact=JSString]*/ toString();
}
/*member: fieldAccess1:[exact=JSUInt31]*/
fieldAccess1() {
C<int> c = new C<int>(0);
return c. /*[exact=C]*/ field;
}
/*member: fieldAccess2:[exact=JSString]*/
fieldAccess2() {
C<String> c = new C<String>('');
return c. /*[exact=C]*/ field;
}
/*member: fixedFieldInvoke:[null|subclass=JSInt]*/
fixedFieldInvoke() {
C<int> c = new C<int>(0);
return c.fixedFunctionField /*invoke: [exact=C]*/ ();
}
/*member: fieldInvoke1:[null|subclass=JSInt]*/
fieldInvoke1() {
C<int> c = new C<int>(0);
return c.functionField /*invoke: [exact=C]*/ ();
}
/*member: fieldInvoke2:[null|exact=JSString]*/
fieldInvoke2() {
C<String> c = new C<String>('');
return c.functionField /*invoke: [exact=C]*/ ();
}
/*member: methodInvoke1:[exact=JSUInt31]*/
methodInvoke1() {
C<int> c = new C<int>(0);
return c. /*invoke: [exact=C]*/ method();
}
/*member: methodInvoke2:[exact=JSString]*/
methodInvoke2() {
C<String> c = new C<String>('');
return c. /*invoke: [exact=C]*/ method();
}
/*member: operatorInvoke1:[exact=JSUInt31]*/
operatorInvoke1() {
C<int> c = new C<int>(0);
return c /*invoke: [exact=C]*/ + 0;
}
/*member: operatorInvoke2:[exact=JSString]*/
operatorInvoke2() {
C<String> c = new C<String>('');
return c /*invoke: [exact=C]*/ + '';
}
/*member: fixedGetterInvoke:[null|subclass=JSInt]*/
fixedGetterInvoke() {
C<int> c = new C<int>(0);
return c.fixedFunctionGetter /*invoke: [exact=C]*/ ();
}
/*member: getterAccess1:[exact=JSUInt31]*/
getterAccess1() {
C<int> c = new C<int>(0);
return c. /*[exact=C]*/ getter;
}
/*member: getterAccess2:[exact=JSString]*/
getterAccess2() {
C<String> c = new C<String>('');
return c. /*[exact=C]*/ getter;
}
/*member: getterInvoke1:[null|subclass=JSInt]*/
getterInvoke1() {
C<int> c = new C<int>(0);
return c.functionGetter /*invoke: [exact=C]*/ ();
}
/*member: getterInvoke2:[null|exact=JSString]*/
getterInvoke2() {
C<String> c = new C<String>('');
return c.functionGetter /*invoke: [exact=C]*/ ();
}
/*member: genericFieldInvoke1:[null|exact=JSString]*/
genericFieldInvoke1() {
C<int> c = new C<int>(0);
return c.genericFunctionField /*invoke: [exact=C]*/ ('');
}
/*member: genericFieldInvoke2:[null|subclass=JSInt]*/
genericFieldInvoke2() {
C<String> c = new C<String>('');
return c.genericFunctionField /*invoke: [exact=C]*/ (0);
}
/*member: genericMethodInvoke1:[exact=JSString]*/
genericMethodInvoke1() {
C<int> c = new C<int>(0);
return c. /*invoke: [exact=C]*/ genericMethod('');
}
/*member: genericMethodInvoke2:[exact=JSUInt31]*/
genericMethodInvoke2() {
C<String> c = new C<String>('');
return c. /*invoke: [exact=C]*/ genericMethod(0);
}
/*member: genericGetterInvoke1:[null|exact=JSString]*/
genericGetterInvoke1() {
C<int> c = new C<int>(0);
return c.genericFunctionGetter /*invoke: [exact=C]*/ ('');
}
/*member: genericGetterInvoke2:[null|subclass=JSInt]*/
genericGetterInvoke2() {
C<String> c = new C<String>('');
return c.genericFunctionGetter /*invoke: [exact=C]*/ (0);
}