7c66851efe
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>
66 lines
1.8 KiB
Dart
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);
|
|
}
|