blob: 63174cee90f841f1f5fcc8a6314a0afb8dcdc58d [file] [log] [blame]
// Copyright (c) 2016, 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.
// test w/ `dart test -N overridden_fields`
class Base {
Object field = 'lorem';
Object something = 'change';
}
class Bad1 extends Base {
final x = 1, field = 'ipsum'; // LINT
}
class Bad2 extends Base {
@override
Object something = 'done'; // LINT
}
class Bad3 extends Object with Base {
@override
Object something = 'done'; // LINT
}
class Ok extends Base {
Object newField = 0; // OK
final Object newFinal = 'ignore'; // OK
}
class OK2 implements Base {
@override
Object something = 'done'; // OK
@override
Object field = 0;
}
abstract class OK3 implements Base {
@override
Object something = 'done'; // OK
}
class GC11 extends Bad1 {
@override
Object something = 'done'; // LINT
Object gc33 = 'gc33';
}
abstract class GC12 implements Bad1 {
@override
Object something = 'done'; // OK
}
abstract class GC22 implements GC11 {
@override
Object something = 'done'; // OK
}
class Super1 {}
class Sub1 extends Super1 {
int y = 0;
}
class Super2 {
int x = 0, y = 0;
}
class Sub2 extends Super2 {
@override
int y = 0; // LINT
}
class Super3 {
int x = 0;
}
class Sub3 extends Super3 {
int x = 0; // LINT
}
class A1 {
int f = 0;
}
class B1 extends A1 {}
abstract class C1 implements A1 {}
class D1 extends B1 implements C1 {
@override
int f = 0; // LINT
}
class StaticsNo {
static int a = 0;
}
class VerifyStatic extends StaticsNo {
static int a = 0;
}
mixin M on A1 {
@override
int f = 0; // LINT
int g = 0; // OK
}
abstract class BB {
abstract String s;
}
class AA extends BB {
/// Overriding abstracts in NNBD is OK.
@override
String s = ''; // OK
}
class AAA with BB {
@override
String s = ''; // OK
}
abstract class BBB {
abstract final String s;
}
class AAAA extends BBB {
@override
String s = ''; // OK
}