Files
sdk/tests/web/jsinterop_test.dart
T
Robert Nystrom d7ed15658a Opt multitests out of formatting in web/.
The new formatter supports opting a region of code out from being
formatted. I'm applying this marker to all of the multitests since
those tests are often very sensitive to formatting and easily broken.
This way, anyone touching a multitest (including me when I reformat
the tests) doesn't have to remember to not run the formatter on it.

Change-Id: I3d6346d31581772dc8e1701594bf9d919f28db7d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/396104
Commit-Queue: Bob Nystrom <rnystrom@google.com>
Reviewed-by: Srujan Gaddam <srujzs@google.com>
Reviewed-by: Nate Biggs <natebiggs@google.com>
Commit-Queue: Srujan Gaddam <srujzs@google.com>
Auto-Submit: Bob Nystrom <rnystrom@google.com>
2024-11-19 00:59:10 +00:00

276 lines
8.8 KiB
Dart

// Copyright (c) 2018, 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.
// Formatting can break multitests, so don't format them.
// dart format off
// TODO(johnniwinther): Share this test with ddc.
// Test for positive and negative uses of js-interop declarations in a library
// _with_ a @JS() annotation. This file is also used in
// tests/compiler/dart2js/model/native_test.dart.
@JS()
library lib;
import 'package:js/js.dart';
var topLevelField;
get topLevelGetter => null;
set topLevelSetter(_) {}
topLevelFunction() {}
@JS('a') // JS_INTEROP_FIELD_NOT_SUPPORTED //# 01: compile-time error
var topLevelJsInteropField; //# 01: continued
@JS('a') // JS_INTEROP_NON_EXTERNAL_MEMBER //# 02: compile-time error
get topLevelJsInteropGetter => null; //# 02: continued
@JS('a') // JS_INTEROP_NON_EXTERNAL_MEMBER //# 03: compile-time error
set topLevelJsInteropSetter(_) {} //# 03: continued
@JS('a') // JS_INTEROP_NON_EXTERNAL_MEMBER //# 04: compile-time error
topLevelJsInteropFunction() {} //# 04: continued
external get externalTopLevelGetter;
external set externalTopLevelSetter(_);
external externalTopLevelFunction();
@JS('a')
external get externalTopLevelJsInteropGetter;
@JS('b')
external set externalTopLevelJsInteropSetter(_);
@JS('c')
external externalTopLevelJsInteropFunction();
class Class {
Class.generative();
factory Class.fact() => null as dynamic;
// GENERIC //# 08: compile-time error
external Class.externalGenerative(); //# 08: continued
// GENERIC //# 09: compile-time error
external factory Class.externalFact(); //# 09: continued
@JS('a') // GENERIC //# 10: compile-time error
Class.jsInteropGenerative(); //# 10: continued
@JS('a') // GENERIC //# 11: compile-time error
factory Class.jsInteropFact() => null; //# 11: continued
@JS('a') // GENERIC //# 12: compile-time error
external Class.externalJsInteropGenerative(); //# 12: continued
@JS('a') // GENERIC //# 13: compile-time error
external factory Class.externalJsInteropFact(); //# 13: continued
var instanceField;
get instanceGetter => null;
set instanceSetter(_) {}
instanceMethod() {}
static var staticField;
static get staticGetter => null;
static set staticSetter(_) {}
static staticMethod() {}
@JS('a') // GENERIC //# 14: compile-time error
var instanceJsInteropField; //# 14: continued
@JS('a') // GENERIC //# 15: compile-time error
get instanceJsInteropGetter => null; //# 15: continued
@JS('a') // GENERIC //# 16: compile-time error
set instanceJsInteropSetter(_) {} //# 16: continued
@JS('a') // GENERIC //# 17: compile-time error
instanceJsInteropMethod() {} //# 17: continued
@JS('a') // GENERIC //# 18: compile-time error
static var staticJsInteropField; //# 18: continued
@JS('a') // GENERIC //# 19: compile-time error
static get staticJsInteropGetter => null; //# 19: continued
@JS('a') // GENERIC //# 20: compile-time error
static set staticJsInteropSetter(_) {} //# 20: continued
@JS('a') // GENERIC //# 21: compile-time error
static staticJsInteropMethod() {} //# 21: continued
// GENERIC //# 22: compile-time error
external get externalInstanceGetter; //# 22: continued
// GENERIC //# 23: compile-time error
external set externalInstanceSetter(_); //# 23: continued
// GENERIC //# 24: compile-time error
external externalInstanceMethod(); //# 24: continued
// GENERIC //# 25: compile-time error
external static get externalStaticGetter; //# 25: continued
// GENERIC //# 26: compile-time error
external static set externalStaticSetter(_); //# 26: continued
// GENERIC //# 27: compile-time error
external static externalStaticMethod(); //# 27: continued
@JS('a') // GENERIC //# 28: compile-time error
external get externalInstanceJsInteropGetter; //# 28: continued
@JS('a') // GENERIC //# 29: compile-time error
external set externalInstanceJsInteropSetter(_); //# 29: continued
@JS('a') // GENERIC //# 30: compile-time error
external externalInstanceJsInteropMethod(); //# 30: continued
@JS('a') // GENERIC //# 31: compile-time error
external static get externalStaticJsInteropGetter; //# 31: continued
@JS('a') // GENERIC //# 32: compile-time error
external static set externalStaticJsInteropSetter(_); //# 32: continued
@JS('a') // GENERIC //# 33: compile-time error
external static externalStaticJsInteropMethod(); //# 33: continued
}
@JS('d')
class JsInteropClass {
// GENERIC //# 34: compile-time error
JsInteropClass.generative(); //# 34: continued
// JS_INTEROP_CLASS_NON_EXTERNAL_CONSTRUCTOR //# 35: compile-time error
factory JsInteropClass.fact() => null; //# 35: continued
external JsInteropClass.externalGenerative();
external factory JsInteropClass.externalFact();
@JS('a') // GENERIC //# 36: compile-time error
JsInteropClass.jsInteropGenerative(); //# 36: continued
@JS('a') // JS_INTEROP_CLASS_NON_EXTERNAL_CONSTRUCTOR //# 37: compile-time error
factory JsInteropClass.jsInteropFact() => null; //# 37: continued
@JS('a')
external JsInteropClass.externalJsInteropGenerative();
@JS('a')
external factory JsInteropClass.externalJsInteropFact();
// IMPLICIT_JS_INTEROP_FIELD_NOT_SUPPORTED //# 38: compile-time error
var instanceField; //# 38: continued
// GENERIC //# 39: compile-time error
get instanceGetter => null; //# 39: continued
// GENERIC //# 40: compile-time error
set instanceSetter(_) {} //# 40: continued
// GENERIC //# 41: compile-time error
instanceMethod() {} //# 41: continued
// IMPLICIT_JS_INTEROP_FIELD_NOT_SUPPORTED //# 42: compile-time error
static var staticField; //# 42: continued
// JS_INTEROP_CLASS_NON_EXTERNAL_MEMBER //# 43: compile-time error
static get staticGetter => null; //# 43: continued
// JS_INTEROP_CLASS_NON_EXTERNAL_MEMBER //# 44: compile-time error
static set staticSetter(_) {} //# 44: continued
// JS_INTEROP_CLASS_NON_EXTERNAL_MEMBER //# 45: compile-time error
static staticMethod() {} //# 45: continued
@JS('a') // GENERIC //# 46: compile-time error
var instanceJsInteropField; //# 46: continued
@JS('a') // GENERIC //# 48: compile-time error
get instanceJsInteropGetter => null; //# 48: continued
@JS('a') // GENERIC //# 49: compile-time error
set instanceJsInteropSetter(_) {} //# 49: continued
@JS('a') // GENERIC //# 50: compile-time error
instanceJsInteropMethod() {} //# 50: continued
@JS('a') // IMPLICIT_JS_INTEROP_FIELD_NOT_SUPPORTED //# 51: compile-time error
static var staticJsInteropField; //# 51: continued
@JS('a') // JS_INTEROP_CLASS_NON_EXTERNAL_MEMBER //# 52: compile-time error
static get staticJsInteropGetter => null; //# 52: continued
@JS('a') // JS_INTEROP_CLASS_NON_EXTERNAL_MEMBER //# 53: compile-time error
static set staticJsInteropSetter(_) {} //# 53: continued
@JS('a') // JS_INTEROP_CLASS_NON_EXTERNAL_MEMBER //# 54: compile-time error
static staticJsInteropMethod() {} //# 54: continued
external get externalInstanceGetter;
external set externalInstanceSetter(_);
external externalInstanceMethod();
external static get externalStaticGetter;
external static set externalStaticSetter(_);
external static externalStaticMethod();
@JS('a')
external get externalInstanceJsInteropGetter;
@JS('a')
external set externalInstanceJsInteropSetter(_);
@JS('a')
external externalInstanceJsInteropMethod();
@JS('a')
external static get externalStaticJsInteropGetter;
@JS('a')
external static set externalStaticJsInteropSetter(_);
@JS('a')
external static externalStaticJsInteropMethod();
}
late bool flag;
main() {
if (flag = false) {
topLevelSetter = topLevelField = topLevelGetter;
topLevelFunction();
externalTopLevelSetter = externalTopLevelGetter;
externalTopLevelFunction();
externalTopLevelJsInteropSetter = externalTopLevelJsInteropGetter;
externalTopLevelJsInteropFunction();
Class c1 = new Class.generative();
new Class.fact();
c1.instanceSetter = c1.instanceField = c1.instanceGetter;
c1.instanceMethod();
Class.staticSetter = Class.staticField = Class.staticGetter;
Class.staticMethod();
JsInteropClass c2 = new JsInteropClass.externalGenerative();
new JsInteropClass.externalFact();
new JsInteropClass.externalJsInteropGenerative();
new JsInteropClass.externalJsInteropFact();
c2.externalInstanceSetter = c2.externalInstanceGetter;
c2.externalInstanceMethod();
c2.externalInstanceJsInteropSetter = c2.externalInstanceJsInteropGetter;
c2.externalInstanceJsInteropMethod();
JsInteropClass.externalStaticSetter = JsInteropClass.externalStaticGetter;
JsInteropClass.externalStaticMethod();
JsInteropClass.externalStaticJsInteropSetter =
JsInteropClass.externalStaticJsInteropGetter;
JsInteropClass.externalStaticJsInteropMethod();
}
}