dart-sdk/tests/lib/js/extends_static_test.dart
Srujan Gaddam ed009afc4c [package:js] Add static errors for invalid extends
Bug: https://github.com/dart-lang/sdk/issues/37896

dart2js disallows JS interop classes from extending Dart classes,
and ddc does not work as expected. Dart classes that extends JS
interop classes can't be declared in ddc and throw an error on
usage in dart2js. This CL adds static errors for both cases.

Change-Id: I72001d2e8bec046c0e1ab4c06fed8fcf84ade259
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/164840
Reviewed-by: Sigmund Cherem <sigmund@google.com>
Commit-Queue: Srujan Gaddam <srujzs@google.com>
2020-10-28 16:04:15 +00:00

39 lines
993 B
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.
@JS()
library extends_static_test;
import 'package:js/js.dart';
@JS()
class JSClass {}
@JS()
@anonymous
class AnonymousClass {}
class DartClass {}
class DartExtendJSClass extends JSClass {}
// ^
// [web] Dart class 'DartExtendJSClass' cannot extend JS interop class 'JSClass'.
class DartExtendAnonymousClass extends AnonymousClass {}
// ^
// [web] Dart class 'DartExtendAnonymousClass' cannot extend JS interop class 'AnonymousClass'.
@JS()
class JSExtendDartClass extends DartClass {}
// ^
// [web] JS interop class 'JSExtendDartClass' cannot extend Dart class 'DartClass'.
@JS()
@anonymous
class AnonymousExtendDartClass extends DartClass {}
// ^
// [web] JS interop class 'AnonymousExtendDartClass' cannot extend Dart class 'DartClass'.
void main() {}