blob: 14cfe464e1aef6de4b2e8a0cdb956e3ed3904b06 [file] [log] [blame]
// Copyright (c) 2019, 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 The effect of a static getter declaration in class C is to add
/// an instance getter with the same name and signature to the Type object for
/// class C that forwards to the static getter.
/// @description Check that the instance getter, added to the Type object by
/// static getter declaration, is not added to the Type object of the current
/// class and not added to the Type object of the ancestor. Test type alias
/// @author sgrekhov@unipro.ru
/// @issue 23721
import "dart:core";
import "../../../Utils/expect.dart";
abstract class A<V> {
int get g1 => 1;
get g2 => null;
static get g3 => null;
static int get g4 => 4;
V? get g5 => null;
}
typedef AAlias<V> = A<V>;
class C<V> extends AAlias<V> {
static int get g6 => 6;
}
main() {
C c = new C<String>();
dynamic t = c.runtimeType;
Expect.throws(() {t.g1;}, (e) => e is NoSuchMethodError);
Expect.throws(() {t.g2;}, (e) => e is NoSuchMethodError);
Expect.throws(() {t.g3;}, (e) => e is NoSuchMethodError);
Expect.throws(() {t.g4;}, (e) => e is NoSuchMethodError);
Expect.throws(() {t.g5;}, (e) => e is NoSuchMethodError);
Expect.throws(() {t.g6;}, (e) => e is NoSuchMethodError);
}