blob: a5bfdb8254b1baf55f3ba9d6e87115f3235fe9f2 [file] [log] [blame]
// Copyright (c) 2018, 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.
// @dart = 2.9
import "package:expect/expect.dart";
// A mixin declaration introduces a static scope.
// Instance members keep seeing this scope when mixed in.
abstract class UnaryNum {
num foo(num x);
}
mixin M1 on UnaryNum {
static int counter = 0;
static int next() => ++counter;
int count() => foo(next());
}
class C1 implements UnaryNum {
static int counter = 87;
static int next() => 42;
num foo(num x) => x * 10;
}
class A1 = C1 with M1;
main() {
Expect.equals(0, M1.counter);
Expect.equals(1, M1.next());
Expect.equals(2, M1.next());
var a = A1();
Expect.equals(30, a.count());
Expect.equals(40, a.count());
Expect.equals(5, M1.next());
}