blob: c824a7bbdf38674a4280b1cc0fc9b9b9817ac3fc [file] [log] [blame]
/*
* Copyright (c) 2011, 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.
*/
/**
* @assertion Evaluation of a super method invocation i of the form
* super.m(a1, ... , an, xn+1 : an+1, ... , xn+k : an+k)
* proceeds as follows:
* First, the argument list (a1, ... , an, xn+1 : an+1, ... , xn+k : an+k) is evaluated
* yielding actual argument objects o1, ... , on+k. Let S be the superclass of
* the immediately enclosing class, and let f be the result of looking up method m in S with
* respect to the current library L.
* Let p1 ... ph be the required parameters of f, let p1 ... pm be the positional parameters
* of f and let ph+1, ..., ph+l be the named parameters declared by f .
* If n < h, or n > m, the method lookup has failed. Furthermore, each
* xi, n+1 <= i <= n+k, must have a corresponding named parameter in the set
* {pm+1, ... , ph+l} or the method lookup also fails. Otherwise method lookup has succeeded.
* If the method lookup succeeded, the body of
* f is executed with respect to the bindings that resulted from the evaluation of
* the argument list, and with this bound to the current value of this. The value
* of i is the value returned after f is executed.
* @description Checks that the value of an expression is the value returned after f is executed.
* @author msyabro
* @reviewer kaigorodov
*/
import "../../../Utils/expect.dart";
class S {
m1() {
return "v";
}
m2() {
return false;
}
m3() {
return 1;
}
m4() {
return null;
}
}
class A extends S {
test() {
Expect.equals("v", super.m1());
Expect.equals(false, super.m2());
Expect.equals(1, super.m3());
Expect.equals(null, super.m4());
}
}
main() {
new A().test();
}