mirror of
https://github.com/dart-lang/sdk
synced 2024-09-19 23:31:42 +00:00
64105ee014
No major changes. Some tests that rely on noSuchMethod needed to have some 'var's changed to 'dynamic's. BUG= R=rnystrom@google.com Review-Url: https://codereview.chromium.org/3003123002 .
57 lines
1.2 KiB
Dart
57 lines
1.2 KiB
Dart
// Copyright (c) 2014, 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 test.delgate_function_invocation;
|
|
|
|
import 'dart:mirrors';
|
|
|
|
import 'package:expect/expect.dart';
|
|
|
|
class Proxy {
|
|
var targetMirror;
|
|
Proxy(target) : this.targetMirror = reflect(target);
|
|
noSuchMethod(invocation) => targetMirror.delegate(invocation);
|
|
}
|
|
|
|
testClosure() {
|
|
dynamic proxy = new Proxy(() => 42);
|
|
Expect.equals(42, proxy());
|
|
Expect.equals(42, proxy.call());
|
|
}
|
|
|
|
class FakeFunction {
|
|
call() => 43;
|
|
}
|
|
|
|
testFakeFunction() {
|
|
dynamic proxy = new Proxy(new FakeFunction());
|
|
Expect.equals(43, proxy());
|
|
Expect.equals(43, proxy.call());
|
|
}
|
|
|
|
topLevelFunction() => 44;
|
|
|
|
testTopLevelTearOff() {
|
|
dynamic proxy = new Proxy(topLevelFunction);
|
|
Expect.equals(44, proxy());
|
|
Expect.equals(44, proxy.call());
|
|
}
|
|
|
|
class C {
|
|
method() => 45;
|
|
}
|
|
|
|
testInstanceTearOff() {
|
|
dynamic proxy = new Proxy(new C().method);
|
|
Expect.equals(45, proxy());
|
|
Expect.equals(45, proxy.call());
|
|
}
|
|
|
|
main() {
|
|
testClosure();
|
|
testFakeFunction();
|
|
testTopLevelTearOff();
|
|
testInstanceTearOff();
|
|
}
|