blob: 698aa2543e18f1b53eb2a72371a67e8133472a08 [file] [log] [blame]
// Copyright (c) 2022, 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.
// Allow sealed classes to be extended by multiple classes in the same library.
// Additionally, allow their subclasses/subtypes to be used freely.
import "package:expect/expect.dart";
import 'sealed_class_extend_lib.dart';
class AExtends extends A {
int foo = 0;
int bar(int value) => value;
}
class AImplements implements A {
int nonAbstractFoo = 0;
int foo = 0;
int bar(int value) => value;
int nonAbstractBar(int value) => value;
}
main() {
A a = AImpl();
Expect.equals(0, a.nonAbstractFoo);
Expect.equals(1, a.foo);
Expect.equals(3, a.bar(2));
Expect.equals(100, a.nonAbstractBar(0));
var b = B();
Expect.equals(100, b.nonAbstractFoo);
Expect.equals(2, b.foo);
Expect.equals(2, b.bar(2));
Expect.equals(100, b.nonAbstractBar(0));
var aExtends = AExtends();
Expect.equals(0, aExtends.nonAbstractFoo);
Expect.equals(0, aExtends.foo);
Expect.equals(0, aExtends.bar(0));
Expect.equals(100, aExtends.nonAbstractBar(0));
var aImplements = AImplements();
Expect.equals(0, aImplements.nonAbstractFoo);
Expect.equals(0, aImplements.foo);
Expect.equals(0, aImplements.bar(0));
Expect.equals(0, aImplements.nonAbstractBar(0));
}