| Index: tests/language/invocation_mirror_test.dart
|
| diff --git a/tests/language/invocation_mirror_test.dart b/tests/language/invocation_mirror_test.dart
|
| index 6ea715d5e8f6c1f714492603af12764fe62a0f11..6eca589446815e593a5a866040f6f4a37037e58e 100644
|
| --- a/tests/language/invocation_mirror_test.dart
|
| +++ b/tests/language/invocation_mirror_test.dart
|
| @@ -17,7 +17,6 @@ Map<Symbol, dynamic> listToNamedArguments(list) {
|
| return result;
|
| }
|
|
|
| -
|
| /** Class with noSuchMethod that returns the mirror */
|
| class N {
|
| // Storage for the last argument to noSuchMethod.
|
| @@ -25,18 +24,31 @@ class N {
|
| var last;
|
| noSuchMethod(Invocation m) => last = m;
|
|
|
| - flif(int x) { Expect.fail("never get here"); }
|
| - flaf([int x]) { Expect.fail("never get here"); }
|
| - flof({int y}) { Expect.fail("never get here"); }
|
| + flif(int x) {
|
| + Expect.fail("never get here");
|
| + }
|
| +
|
| + flaf([int x]) {
|
| + Expect.fail("never get here");
|
| + }
|
| +
|
| + flof({int y}) {
|
| + Expect.fail("never get here");
|
| + }
|
|
|
| get wut => this;
|
| final int plif = 99;
|
| - int get plaf { Expect.fail("never get here"); return 0; }
|
| + int get plaf {
|
| + Expect.fail("never get here");
|
| + return 0;
|
| + }
|
| }
|
|
|
| /** As [N] but also implements 'call', so we can call it with wrong arguments.*/
|
| class C extends N {
|
| - call(int x) { Expect.fail("never get here"); }
|
| + call(int x) {
|
| + Expect.fail("never get here");
|
| + }
|
| }
|
|
|
| /**
|
| @@ -46,7 +58,7 @@ class C extends N {
|
| * and with both optionals for everything else.
|
| */
|
| testInvocationMirror(Invocation im, Symbol name,
|
| - [List positional, List named]) {
|
| + [List positional, List named]) {
|
| Expect.isTrue(im is Invocation, "is Invocation");
|
| Expect.equals(name, im.memberName, "name");
|
| if (named == null) {
|
| @@ -62,8 +74,8 @@ testInvocationMirror(Invocation im, Symbol name,
|
| Expect.isTrue(im.isSetter, "$name:isSetter");
|
| Expect.isFalse(im.isGetter, "$name:isGetter");
|
| Expect.equals(1, im.positionalArguments.length, "$name:#positional");
|
| - Expect.equals(positional[0], im.positionalArguments[0],
|
| - "$name:positional[0]");
|
| + Expect.equals(
|
| + positional[0], im.positionalArguments[0], "$name:positional[0]");
|
| Expect.equals(0, im.namedArguments.length, "$name:#named");
|
| return;
|
| }
|
| @@ -75,16 +87,15 @@ testInvocationMirror(Invocation im, Symbol name,
|
|
|
| Expect.listEquals(positional, im.positionalArguments);
|
|
|
| - Expect.equals(namedArguments.length, im.namedArguments.length,
|
| - "$name:#named");
|
| + Expect.equals(
|
| + namedArguments.length, im.namedArguments.length, "$name:#named");
|
| namedArguments.forEach((k, v) {
|
| - Expect.isTrue(im.namedArguments.containsKey(k),
|
| - "$name:?namedArguments[$k]");
|
| + Expect.isTrue(
|
| + im.namedArguments.containsKey(k), "$name:?namedArguments[$k]");
|
| Expect.equals(v, im.namedArguments[k], "$name:namedArguments[$k]");
|
| });
|
| }
|
|
|
| -
|
| // Test different ways that noSuchMethod can be called.
|
| testInvocationMirrors() {
|
| var n = new N();
|
| @@ -95,10 +106,10 @@ testInvocationMirrors() {
|
| testInvocationMirror((n..bar = 42).last, const Symbol('bar='), [42]);
|
| testInvocationMirror(n.bar(), const Symbol('bar'), [], []);
|
| testInvocationMirror(n.bar(42), const Symbol('bar'), [42], []);
|
| - testInvocationMirror(n.bar(x: 42), const Symbol('bar'), [],
|
| - [const Symbol("x"), 42]);
|
| - testInvocationMirror(n.bar(37, x: 42), const Symbol('bar'), [37],
|
| - [const Symbol("x"), 42]);
|
| + testInvocationMirror(
|
| + n.bar(x: 42), const Symbol('bar'), [], [const Symbol("x"), 42]);
|
| + testInvocationMirror(
|
| + n.bar(37, x: 42), const Symbol('bar'), [37], [const Symbol("x"), 42]);
|
|
|
| // Missing operator access.
|
| testInvocationMirror(n + 4, const Symbol('+'), [4], []);
|
| @@ -110,40 +121,40 @@ testInvocationMirrors() {
|
| // Calling as function when it's not.
|
| testInvocationMirror(n(), const Symbol('call'), [], []);
|
| testInvocationMirror(n(42), const Symbol('call'), [42], []);
|
| - testInvocationMirror(n(x: 42), const Symbol('call'), [],
|
| - [const Symbol("x"), 42]);
|
| - testInvocationMirror(n(37, x: 42), const Symbol('call'), [37],
|
| - [const Symbol("x"), 42]);
|
| + testInvocationMirror(
|
| + n(x: 42), const Symbol('call'), [], [const Symbol("x"), 42]);
|
| + testInvocationMirror(
|
| + n(37, x: 42), const Symbol('call'), [37], [const Symbol("x"), 42]);
|
|
|
| // Calling with arguments not matching existing call method.
|
| testInvocationMirror(c(), const Symbol('call'), [], []);
|
| testInvocationMirror(c(37, 42), const Symbol('call'), [37, 42], []);
|
| - testInvocationMirror(c(x: 42), const Symbol('call'), [],
|
| - [const Symbol("x"), 42]);
|
| - testInvocationMirror(c(37, x: 42), const Symbol('call'), [37],
|
| - [const Symbol("x"), 42]);
|
| + testInvocationMirror(
|
| + c(x: 42), const Symbol('call'), [], [const Symbol("x"), 42]);
|
| + testInvocationMirror(
|
| + c(37, x: 42), const Symbol('call'), [37], [const Symbol("x"), 42]);
|
|
|
| // Wrong arguments to existing function.
|
| testInvocationMirror(n.flif(), const Symbol("flif"), [], []);
|
| testInvocationMirror(n.flif(37, 42), const Symbol("flif"), [37, 42], []);
|
| - testInvocationMirror(n.flif(x: 42), const Symbol("flif"), [],
|
| - [const Symbol("x"), 42]);
|
| - testInvocationMirror(n.flif(37, x: 42), const Symbol("flif"), [37],
|
| - [const Symbol("x"), 42]);
|
| + testInvocationMirror(
|
| + n.flif(x: 42), const Symbol("flif"), [], [const Symbol("x"), 42]);
|
| + testInvocationMirror(
|
| + n.flif(37, x: 42), const Symbol("flif"), [37], [const Symbol("x"), 42]);
|
| testInvocationMirror((n..flif = 42).last, const Symbol("flif="), [42]);
|
|
|
| testInvocationMirror(n.flaf(37, 42), const Symbol("flaf"), [37, 42], []);
|
| - testInvocationMirror(n.flaf(x: 42), const Symbol("flaf"), [],
|
| - [const Symbol("x"), 42]);
|
| - testInvocationMirror(n.flaf(37, x: 42), const Symbol("flaf"), [37],
|
| - [const Symbol("x"), 42]);
|
| + testInvocationMirror(
|
| + n.flaf(x: 42), const Symbol("flaf"), [], [const Symbol("x"), 42]);
|
| + testInvocationMirror(
|
| + n.flaf(37, x: 42), const Symbol("flaf"), [37], [const Symbol("x"), 42]);
|
| testInvocationMirror((n..flaf = 42).last, const Symbol("flaf="), [42]);
|
|
|
| testInvocationMirror(n.flof(37, 42), const Symbol("flof"), [37, 42], []);
|
| - testInvocationMirror(n.flof(x: 42), const Symbol("flof"), [],
|
| - [const Symbol("x"), 42]);
|
| - testInvocationMirror(n.flof(37, y: 42), const Symbol("flof"), [37],
|
| - [const Symbol("y"), 42]);
|
| + testInvocationMirror(
|
| + n.flof(x: 42), const Symbol("flof"), [], [const Symbol("x"), 42]);
|
| + testInvocationMirror(
|
| + n.flof(37, y: 42), const Symbol("flof"), [37], [const Symbol("y"), 42]);
|
| testInvocationMirror((n..flof = 42).last, const Symbol("flof="), [42]);
|
|
|
| // Reading works.
|
| @@ -161,74 +172,89 @@ testInvocationMirrors() {
|
|
|
| // Calling noSuchMethod itself, badly.
|
| testInvocationMirror(n.noSuchMethod(), const Symbol("noSuchMethod"), [], []);
|
| - testInvocationMirror(n.noSuchMethod(37, 42), const Symbol("noSuchMethod"),
|
| - [37, 42], []);
|
| - testInvocationMirror(n.noSuchMethod(37, x:42),
|
| - const Symbol("noSuchMethod"), [37],
|
| - [const Symbol("x"), 42]);
|
| - testInvocationMirror(n.noSuchMethod(x:42), const Symbol("noSuchMethod"), [],
|
| - [const Symbol("x"), 42]);
|
| + testInvocationMirror(
|
| + n.noSuchMethod(37, 42), const Symbol("noSuchMethod"), [37, 42], []);
|
| + testInvocationMirror(n.noSuchMethod(37, x: 42), const Symbol("noSuchMethod"),
|
| + [37], [const Symbol("x"), 42]);
|
| + testInvocationMirror(n.noSuchMethod(x: 42), const Symbol("noSuchMethod"), [],
|
| + [const Symbol("x"), 42]);
|
|
|
| // Closurizing a method means that calling it badly will not hit the
|
| // original receivers noSuchMethod, only the one inherited from Object
|
| // by the closure object.
|
| - Expect.throws(() { var x = n.flif; x(37, 42); },
|
| - (e) => e is NoSuchMethodError);
|
| - Expect.throws(() { var x = c.call; x(37, 42); },
|
| - (e) => e is NoSuchMethodError);
|
| + Expect.throws(() {
|
| + var x = n.flif;
|
| + x(37, 42);
|
| + }, (e) => e is NoSuchMethodError);
|
| + Expect.throws(() {
|
| + var x = c.call;
|
| + x(37, 42);
|
| + }, (e) => e is NoSuchMethodError);
|
| }
|
|
|
| class M extends N {
|
| - noSuchMethod(Invocation m) { throw "never get here"; }
|
| + noSuchMethod(Invocation m) {
|
| + throw "never get here";
|
| + }
|
|
|
| testSuperCalls() {
|
| // Missing property/method access.
|
| testInvocationMirror(super.bar, const Symbol('bar'));
|
| - testInvocationMirror((){super.bar = 42; return last;}(),
|
| - const Symbol('bar='), [42]);
|
| + testInvocationMirror(() {
|
| + super.bar = 42;
|
| + return last;
|
| + }(), const Symbol('bar='), [42]);
|
| testInvocationMirror(super.bar(), const Symbol('bar'), [], []);
|
| testInvocationMirror(super.bar(42), const Symbol('bar'), [42], []);
|
| - testInvocationMirror(super.bar(x: 42), const Symbol('bar'), [],
|
| - [const Symbol("x"), 42]);
|
| + testInvocationMirror(
|
| + super.bar(x: 42), const Symbol('bar'), [], [const Symbol("x"), 42]);
|
| testInvocationMirror(super.bar(37, x: 42), const Symbol('bar'), [37],
|
| - [const Symbol("x"), 42]);
|
| + [const Symbol("x"), 42]);
|
|
|
| // Missing operator access.
|
| testInvocationMirror(super + 4, const Symbol('+'), [4], []);
|
| testInvocationMirror(super - 4, const Symbol('-'), [4], []);
|
| testInvocationMirror(-super, const Symbol('unary-'), [], []);
|
| testInvocationMirror(super[42], const Symbol('[]'), [42], []);
|
| - testInvocationMirror((){super[37] = 42; return last;}(),
|
| - const Symbol('[]='), [37, 42], []);
|
| + testInvocationMirror(() {
|
| + super[37] = 42;
|
| + return last;
|
| + }(), const Symbol('[]='), [37, 42], []);
|
|
|
| // Wrong arguments to existing function.
|
| testInvocationMirror(super.flif(), const Symbol("flif"), [], []);
|
| - testInvocationMirror(super.flif(37, 42), const Symbol("flif"), [37, 42],
|
| - []);
|
| - testInvocationMirror(super.flif(x: 42), const Symbol("flif"), [],
|
| - [const Symbol("x"), 42]);
|
| + testInvocationMirror(
|
| + super.flif(37, 42), const Symbol("flif"), [37, 42], []);
|
| + testInvocationMirror(
|
| + super.flif(x: 42), const Symbol("flif"), [], [const Symbol("x"), 42]);
|
| testInvocationMirror(super.flif(37, x: 42), const Symbol("flif"), [37],
|
| - [const Symbol("x"), 42]);
|
| - testInvocationMirror((){super.flif = 42; return last;}(),
|
| - const Symbol("flif="), [42]);
|
| -
|
| - testInvocationMirror(super.flaf(37, 42), const Symbol("flaf"), [37, 42],
|
| - []);
|
| - testInvocationMirror(super.flaf(x: 42), const Symbol("flaf"), [],
|
| - [const Symbol("x"), 42]);
|
| + [const Symbol("x"), 42]);
|
| + testInvocationMirror(() {
|
| + super.flif = 42;
|
| + return last;
|
| + }(), const Symbol("flif="), [42]);
|
| +
|
| + testInvocationMirror(
|
| + super.flaf(37, 42), const Symbol("flaf"), [37, 42], []);
|
| + testInvocationMirror(
|
| + super.flaf(x: 42), const Symbol("flaf"), [], [const Symbol("x"), 42]);
|
| testInvocationMirror(super.flaf(37, x: 42), const Symbol("flaf"), [37],
|
| - [const Symbol("x"), 42]);
|
| - testInvocationMirror((){super.flaf = 42; return last;}(),
|
| - const Symbol("flaf="), [42]);
|
| -
|
| - testInvocationMirror(super.flof(37, 42), const Symbol("flof"), [37, 42],
|
| - []);
|
| - testInvocationMirror(super.flof(x: 42), const Symbol("flof"), [],
|
| - [const Symbol("x"), 42]);
|
| + [const Symbol("x"), 42]);
|
| + testInvocationMirror(() {
|
| + super.flaf = 42;
|
| + return last;
|
| + }(), const Symbol("flaf="), [42]);
|
| +
|
| + testInvocationMirror(
|
| + super.flof(37, 42), const Symbol("flof"), [37, 42], []);
|
| + testInvocationMirror(
|
| + super.flof(x: 42), const Symbol("flof"), [], [const Symbol("x"), 42]);
|
| testInvocationMirror(super.flof(37, y: 42), const Symbol("flof"), [37],
|
| - [const Symbol("y"), 42]);
|
| - testInvocationMirror((){super.flof = 42; return last;}(),
|
| - const Symbol("flof="), [42]);
|
| + [const Symbol("y"), 42]);
|
| + testInvocationMirror(() {
|
| + super.flof = 42;
|
| + return last;
|
| + }(), const Symbol("flof="), [42]);
|
|
|
| // Reading works.
|
| Expect.isTrue(super.flif is Function);
|
| @@ -236,40 +262,45 @@ class M extends N {
|
| Expect.isTrue(super.flof is Function);
|
|
|
| // Writing to read-only fields.
|
| - testInvocationMirror((){super.wut = 42; return last;}(),
|
| - const Symbol("wut="), [42]);
|
| - testInvocationMirror((){super.plif = 42; return last;}(),
|
| - const Symbol("plif="), [42]);
|
| - testInvocationMirror((){super.plaf = 42; return last;}(),
|
| - const Symbol("plaf="), [42]);
|
| + testInvocationMirror(() {
|
| + super.wut = 42;
|
| + return last;
|
| + }(), const Symbol("wut="), [42]);
|
| + testInvocationMirror(() {
|
| + super.plif = 42;
|
| + return last;
|
| + }(), const Symbol("plif="), [42]);
|
| + testInvocationMirror(() {
|
| + super.plaf = 42;
|
| + return last;
|
| + }(), const Symbol("plaf="), [42]);
|
|
|
| // Calling noSuchMethod itself, badly.
|
| - testInvocationMirror(super.noSuchMethod(), const Symbol("noSuchMethod"), [],
|
| - []);
|
| - testInvocationMirror(super.noSuchMethod(37, 42),
|
| - const Symbol("noSuchMethod"), [37, 42], []);
|
| - testInvocationMirror(super.noSuchMethod(37, x:42),
|
| - const Symbol("noSuchMethod"), [37],
|
| - [const Symbol("x"), 42]);
|
| - testInvocationMirror(super.noSuchMethod(x:42),
|
| - const Symbol("noSuchMethod"), [],
|
| - [const Symbol("x"), 42]);
|
| + testInvocationMirror(
|
| + super.noSuchMethod(), const Symbol("noSuchMethod"), [], []);
|
| + testInvocationMirror(
|
| + super.noSuchMethod(37, 42), const Symbol("noSuchMethod"), [37, 42], []);
|
| + testInvocationMirror(super.noSuchMethod(37, x: 42),
|
| + const Symbol("noSuchMethod"), [37], [const Symbol("x"), 42]);
|
| + testInvocationMirror(super.noSuchMethod(x: 42),
|
| + const Symbol("noSuchMethod"), [], [const Symbol("x"), 42]);
|
|
|
| // Closurizing a method means that calling it badly will not hit the
|
| // original receivers noSuchMethod, only the one inherited from Object
|
| // by the closure object.
|
| - Expect.throws(() { var x = super.flif; x(37, 42); },
|
| - (e) => e is NoSuchMethodError);
|
| + Expect.throws(() {
|
| + var x = super.flif;
|
| + x(37, 42);
|
| + }, (e) => e is NoSuchMethodError);
|
| }
|
| }
|
|
|
| -
|
| -
|
| // Test the NoSuchMethodError thrown by different incorrect calls.
|
| testNoSuchMethodErrors() {
|
| test(Function block) {
|
| Expect.throws(block, (e) => e is NoSuchMethodError);
|
| }
|
| +
|
| var n = new N();
|
| var o = new Object();
|
| test(() => o.bar);
|
| @@ -284,8 +315,8 @@ testNoSuchMethodErrors() {
|
| test(() => o.toString(42));
|
| test(() => o.toString(x: 37));
|
| test(() => o.hashCode = 42);
|
| - test(() => o.hashCode()); // Thrown by int.noSuchMethod.
|
| - test(() => (n.flif)()); // Extracted method has no noSuchMethod.
|
| + test(() => o.hashCode()); // Thrown by int.noSuchMethod.
|
| + test(() => (n.flif)()); // Extracted method has no noSuchMethod.
|
| }
|
|
|
| main() {
|
|
|