cfa35be6f0
Adds static errors in web backends requiring external members to be annotated with @JS(). Members can be annotated directly, or on the enclosing class or library. Also removes duplicate checks in dart2js for non-native external members that are now covered by the checks on external @JS members. Change-Id: I2b17456f8f546f80f1ea6a817360c7f4c40f9640 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/180442 Reviewed-by: Sigmund Cherem <sigmund@google.com> Commit-Queue: Riley Porter <rileyporter@google.com>
102 lines
2.6 KiB
Dart
102 lines
2.6 KiB
Dart
// Copyright (c) 2021, 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 for static errors using external without the @JS() annotation,
|
|
// in a library without a @JS() annotation
|
|
|
|
library external_nonjs_static_test;
|
|
|
|
import 'package:js/js.dart';
|
|
|
|
external var topLevelField;
|
|
// ^
|
|
// [web] Only JS interop members may be 'external'.
|
|
|
|
external final topLevelFinalField;
|
|
// ^
|
|
// [web] Only JS interop members may be 'external'.
|
|
|
|
external get topLevelGetter;
|
|
// ^
|
|
// [web] Only JS interop members may be 'external'.
|
|
|
|
external set topLevelSetter(_);
|
|
// ^
|
|
// [web] Only JS interop members may be 'external'.
|
|
|
|
external topLevelFunction();
|
|
// ^
|
|
// [web] Only JS interop members may be 'external'.
|
|
|
|
class Constructors {
|
|
external Constructors();
|
|
// ^
|
|
// [web] Only JS interop members may be 'external'.
|
|
|
|
external Constructors.namedConstructor();
|
|
// ^
|
|
// [web] Only JS interop members may be 'external'.
|
|
|
|
external factory Constructors.namedFactory();
|
|
// ^
|
|
// [web] Only JS interop members may be 'external'.
|
|
}
|
|
|
|
class Members {
|
|
external var field;
|
|
// ^
|
|
// [web] Only JS interop members may be 'external'.
|
|
|
|
external final finalField;
|
|
// ^
|
|
// [web] Only JS interop members may be 'external'.
|
|
|
|
external get instanceGetter;
|
|
// ^
|
|
// [web] Only JS interop members may be 'external'.
|
|
|
|
external set instanceSetter(_);
|
|
// ^
|
|
// [web] Only JS interop members may be 'external'.
|
|
|
|
external instanceMethod();
|
|
// ^
|
|
// [web] Only JS interop members may be 'external'.
|
|
}
|
|
|
|
class StaticMembers {
|
|
external static var staticField;
|
|
// ^
|
|
// [web] Only JS interop members may be 'external'.
|
|
|
|
external static final staticFinalField;
|
|
// ^
|
|
// [web] Only JS interop members may be 'external'.
|
|
|
|
external static get staticGetter;
|
|
// ^
|
|
// [web] Only JS interop members may be 'external'.
|
|
|
|
external static set staticSetter(_);
|
|
// ^
|
|
// [web] Only JS interop members may be 'external'.
|
|
|
|
external static staticMethod();
|
|
// ^
|
|
// [web] Only JS interop members may be 'external'.
|
|
}
|
|
|
|
@anonymous
|
|
class AnonymousClass {
|
|
external var field;
|
|
// ^
|
|
// [web] Only JS interop members may be 'external'.
|
|
|
|
external factory AnonymousClass({var field});
|
|
// ^
|
|
// [web] Only JS interop members may be 'external'.
|
|
}
|
|
|
|
main() {}
|