blob: e6454d60f14f3249feacd7178ca8cd69aa189c88 [file] [log] [blame] [edit]
// Copyright (c) 2015, 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.
library methods;
class A {
int x() => 42;
int y(int a) {
return a;
}
int z([num b]) => b;
int zz([int b = 0]) => b;
int w(int a, {num b}) {
return a + b;
}
int ww(int a, {int b: 0}) {
return a + b;
}
clashWithObjectProperty({constructor}) => constructor;
clashWithJsReservedName({function}) => function;
int get a => x();
void set b(int b) {}
int _c = 3;
int get c => _c;
void set c(int c) {
_c = c;
}
}
class Bar {
call(x) => print('hello from $x');
}
class Foo {
final Bar bar = new Bar();
}
test() {
// looks like a method but is actually f.bar.call(...)
var f = new Foo();
f.bar("Bar's call method!");
// Tear-off
A a = new A();
var g = a.x;
// Dynamic Tear-off
dynamic aa = new A();
var h = aa.x;
// Tear-off of object methods
var ts = a.toString;
var nsm = a.noSuchMethod;
// Tear-off extension methods
var c = "".padLeft;
var r = (3.0).floor;
}