Files
sdk/tests/language/external_abstract_fields/external_fields_test.dart
T
Erik Ernst 7c66851efe Adjust external_fields_test to expect specified outcome
Change-Id: Ie90ad6b1bb98930bb803c64ca2b7037681a88857
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/154690
Reviewed-by: Nicholas Shahan <nshahan@google.com>
Commit-Queue: Erik Ernst <eernst@google.com>
2020-07-17 17:51:46 +00:00

66 lines
1.8 KiB
Dart

// Copyright (c) 2020, 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.
// Checks that external variable declarations are allowed.
// No implementation at run-time, so it throws.
import 'package:expect/expect.dart';
// External variables cannot be abstract, const, late or have an initializer.
external var top1;
external final top2;
external int top3;
external final bool top4;
/// Class C is not abstract.
class C {
external static var static1;
external static final static2;
external static int static3;
external static final bool static4;
external var instance1;
external final instance2;
external int instance3;
external final bool instance4;
external covariant var instance5;
external covariant num instance6;
}
class D extends C {
// Valid override. Inherits covariance.
external int instance6;
}
void shouldThrow(Function() f) => Expect.throwsNoSuchMethodError(f);
void main() {
shouldThrow(() => top1);
shouldThrow(() => top1 = 0);
shouldThrow(() => top2);
shouldThrow(() => top3);
shouldThrow(() => top3 = 0);
shouldThrow(() => top4);
shouldThrow(() => C.static1);
shouldThrow(() => C.static1 = 0);
shouldThrow(() => C.static2);
shouldThrow(() => C.static3);
shouldThrow(() => C.static3 = 0);
shouldThrow(() => C.static4);
C c = C();
shouldThrow(() => c.instance1);
shouldThrow(() => c.instance1 = 0);
shouldThrow(() => c.instance2);
shouldThrow(() => c.instance3);
shouldThrow(() => c.instance3 = 0);
shouldThrow(() => c.instance4);
shouldThrow(() => c.instance5);
shouldThrow(() => c.instance5 = 0);
shouldThrow(() => c.instance6);
shouldThrow(() => c.instance6 = 0);
}