66291547cd
Tests that Dart, JS, and anonymous classes can implement each others' interfaces. Note that only getters are used to test the interface to avoid bloating the test. Change-Id: Ica3c633ed35eb29c81103a6c5ea79a52bcfc6a84 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/172481 Commit-Queue: Srujan Gaddam <srujzs@google.com> Reviewed-by: Riley Porter <rileyporter@google.com>
159 lines
3.7 KiB
Dart
159 lines
3.7 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.
|
|
|
|
// Tests classes implementing other interfaces with JS interop. Only tests
|
|
// getters and assumes other instance members work similarly to avoid bloated
|
|
// tests.
|
|
|
|
@JS()
|
|
library implements_static_test;
|
|
|
|
import 'package:js/js.dart';
|
|
|
|
// Normal and abstract classes for Dart, JS, and anonymous classes.
|
|
class DartClass {
|
|
int get dartGetter => 0;
|
|
}
|
|
|
|
abstract class AbstractDartClass {
|
|
int get abstractDartGetter;
|
|
}
|
|
|
|
@JS()
|
|
class JSClass {
|
|
external int get jsGetter;
|
|
}
|
|
|
|
@JS()
|
|
abstract class AbstractJSClass {
|
|
external int get abstractJsGetter;
|
|
}
|
|
|
|
@JS()
|
|
@anonymous
|
|
class AnonymousClass {
|
|
external int get anonymousGetter;
|
|
}
|
|
|
|
@JS()
|
|
@anonymous
|
|
abstract class AbstractAnonymousClass {
|
|
external int get abstractAnonymousGetter;
|
|
}
|
|
|
|
// Dart classes that implement all the other JS type interfaces.
|
|
class DartClassImplementsJSClass implements JSClass {
|
|
int get jsGetter => 0;
|
|
}
|
|
|
|
class DartClassImplementsAbstractJSClass implements AbstractJSClass {
|
|
int get abstractJsGetter => 0;
|
|
}
|
|
|
|
class DartClassImplementsAnonymousClass implements AnonymousClass {
|
|
int get anonymousGetter => 0;
|
|
}
|
|
|
|
class DartClassImplementsAbstractAnonymousClass
|
|
implements AbstractAnonymousClass {
|
|
int get abstractAnonymousGetter => 0;
|
|
}
|
|
|
|
// JS classes that implement all the other interfaces.
|
|
@JS()
|
|
class JSClassImplementsDartClass implements DartClass {
|
|
external int get dartGetter;
|
|
}
|
|
|
|
@JS()
|
|
class JSClassImplementsAbstractDartClass implements AbstractDartClass {
|
|
external int get abstractDartGetter;
|
|
}
|
|
|
|
@JS()
|
|
class JSClassImplementsJSClass implements JSClass {
|
|
external int get jsGetter;
|
|
}
|
|
|
|
@JS()
|
|
class JSClassImplementsAbstractJSClass implements AbstractJSClass {
|
|
external int get abstractJsGetter;
|
|
}
|
|
|
|
@JS()
|
|
class JSClassImplementsAnonymousClass implements AnonymousClass {
|
|
external int get anonymousGetter;
|
|
}
|
|
|
|
@JS()
|
|
class JSClassImplementsAbstractAnonymousClass
|
|
implements AbstractAnonymousClass {
|
|
external int get abstractAnonymousGetter;
|
|
}
|
|
|
|
// Anonymous classes that implement all the other interfaces.
|
|
@JS()
|
|
@anonymous
|
|
class AnonymousClassImplementsDartClass implements DartClass {
|
|
external int get dartGetter;
|
|
}
|
|
|
|
@JS()
|
|
@anonymous
|
|
class AnonymousClassImplementsAbstractDartClass implements AbstractDartClass {
|
|
external int get abstractDartGetter;
|
|
}
|
|
|
|
@JS()
|
|
@anonymous
|
|
class AnonymousClassImplementsJSClass implements JSClass {
|
|
external int get jsGetter;
|
|
}
|
|
|
|
@JS()
|
|
@anonymous
|
|
class AnonymousClassImplementsAbstractJSClass implements AbstractJSClass {
|
|
external int get abstractJsGetter;
|
|
}
|
|
|
|
@JS()
|
|
@anonymous
|
|
class AnonymousClassImplementsAnonymousClass implements AnonymousClass {
|
|
external int get anonymousGetter;
|
|
}
|
|
|
|
@JS()
|
|
@anonymous
|
|
class AnonymousClassImplementsAbstractAnonymousClass
|
|
implements AbstractAnonymousClass {
|
|
external int get abstractAnonymousGetter;
|
|
}
|
|
|
|
// Dart, JS, and anonymous classes implementing multiple interfaces.
|
|
class DartClassImplementsMultipleInterfaces
|
|
implements DartClass, AbstractJSClass, AnonymousClass {
|
|
int get dartGetter => 0;
|
|
int get abstractJsGetter => 0;
|
|
int get anonymousGetter => 0;
|
|
}
|
|
|
|
@JS()
|
|
class JSClassImplementsMultipleInterfaces
|
|
implements AbstractDartClass, JSClass, AbstractAnonymousClass {
|
|
external int get abstractDartGetter;
|
|
external int get jsGetter;
|
|
external int get abstractAnonymousGetter;
|
|
}
|
|
|
|
@JS()
|
|
@anonymous
|
|
class AnonymousClassImplementsMultipleInterfaces
|
|
implements DartClass, JSClass, AbstractAnonymousClass {
|
|
external int get dartGetter;
|
|
external int get jsGetter;
|
|
external int get abstractAnonymousGetter;
|
|
}
|
|
|
|
void main() {}
|