blob: badb36d738a7752d1b82f274a6a681ebd968ef79 [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.9
class Foo {
method(x, [y, z]) {
return "string";
}
}
abstract class External {
String externalMethod(int x, [int y, int z]);
void listen(Listener listener);
}
external External createExternal();
abstract class Listener {
void event(String input, [int x, int y]);
}
class TestListener extends Listener {
void event(input, [x, y]) {}
}
class ExtendedListener extends Listener {
void event(input, [x, y, z]) {}
}
class InvalidListener {
void event(input, [x]) {}
}
main() {
var foo = new Foo();
var string1 = foo.method(1);
var string2 = foo.method(1, 2);
var string3 = foo.method(1, 2, 3);
var extern = createExternal();
var string4 = extern.externalMethod(1);
var string5 = extern.externalMethod(1, 2);
var string6 = extern.externalMethod(1, 2, 3);
extern.listen(new TestListener());
extern.listen(new ExtendedListener());
extern.listen(new InvalidListener());
var nothing1 = foo.method();
var nothing2 = foo.method(1, 2, 3, 4);
var nothing3 = extern.externalMethod();
var nothing4 = extern.externalMethod(1, 2, 3, 4);
}