1/* Copyright JS Foundation and other contributors, http://js.foundation
2 *
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 *     http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16class A {
17  constructor () {
18    this.a = 5;
19  }
20
21  f () {
22    return 10;
23  }
24
25  super () {
26    this.super = 10;
27    return 15;
28  }
29}
30
31class B extends A {
32  constructor () {
33    super ();
34    assert (super.f === A.prototype.f);
35    super.f = 8;
36    assert (this.f === 8);
37    assert (super.f === A.prototype.f);
38
39    assert (this.a === 5);
40    super.a = 10;
41    assert (this.a === 10);
42
43    assert (super.super () === 15);
44    assert (this.super === 10);
45    super.super = 20;
46    assert (this.super === 20);
47    assert (super.super () === 15);
48  }
49}
50
51var b = new B;
52assert (b.f === 8);
53assert (b.a === 10);
54