1425bb815Sopenharmony_ci/* Copyright JS Foundation and other contributors, http://js.foundation
2425bb815Sopenharmony_ci *
3425bb815Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4425bb815Sopenharmony_ci * you may not use this file except in compliance with the License.
5425bb815Sopenharmony_ci * You may obtain a copy of the License at
6425bb815Sopenharmony_ci *
7425bb815Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8425bb815Sopenharmony_ci *
9425bb815Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10425bb815Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS
11425bb815Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12425bb815Sopenharmony_ci * See the License for the specific language governing permissions and
13425bb815Sopenharmony_ci * limitations under the License.
14425bb815Sopenharmony_ci */
15425bb815Sopenharmony_ci
16425bb815Sopenharmony_civar calculatorMixin = Base => class extends Base {
17425bb815Sopenharmony_ci  f () {
18425bb815Sopenharmony_ci    return 1;
19425bb815Sopenharmony_ci  }
20425bb815Sopenharmony_ci};
21425bb815Sopenharmony_ci
22425bb815Sopenharmony_civar randomizerMixin = Base => class extends Base {
23425bb815Sopenharmony_ci  g () {
24425bb815Sopenharmony_ci    return 2;
25425bb815Sopenharmony_ci  }
26425bb815Sopenharmony_ci};
27425bb815Sopenharmony_ci
28425bb815Sopenharmony_ciclass A {
29425bb815Sopenharmony_ci  constructor () { }
30425bb815Sopenharmony_ci}
31425bb815Sopenharmony_ci
32425bb815Sopenharmony_ciclass B extends calculatorMixin (randomizerMixin (A)) {
33425bb815Sopenharmony_ci
34425bb815Sopenharmony_ci}
35425bb815Sopenharmony_ci
36425bb815Sopenharmony_civar b = new B ();
37425bb815Sopenharmony_ciassert (b.f () === 1)
38425bb815Sopenharmony_ciassert (b.g () === 2);
39