// 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.9 /*@testedFeatures=inference*/ library test; void foo(C c, int cmp(E a, E b)) {} class C { void barA([int cmp(E a, E b)]) { /*@ typeArgs=C::E* */ foo(this, cmp /*@target=Object.==*/ ?? _default); } void barB([int cmp(E a, E b)]) { /*@ typeArgs=C::E* */ foo( this, cmp /*@target=Object.==*/ ?? (_default as int Function(E, E))); } void barC([int cmp(E a, E b)]) { int Function(E, E) v = _default; /*@ typeArgs=C::E* */ foo(this, cmp /*@target=Object.==*/ ?? v); } void barD([int cmp(E a, E b)]) { foo(this, cmp /*@target=Object.==*/ ?? _default); } void barE([int cmp(E a, E b)]) { /*@ typeArgs=C::E* */ foo( this, cmp /*@target=Object.==*/ == null ? _default : cmp); } void barF([int cmp(E a, E b)]) { /*@ typeArgs=C::E* */ foo( this, cmp /*@target=Object.==*/ != null ? cmp : _default); } static int _default(a, b) { return /*@target=int.unary-*/ -1; } } main() {}