|  | // 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. | 
|  |  | 
|  | // TODO(johnniwinther): Share this test with ddc. | 
|  |  | 
|  | // Test for positive and negative uses of js-interop declarations in a library | 
|  | // _without_ a @JS() anntaotion. This file is also used in | 
|  | // tests/compiler/dart2js/model/native_test.dart. | 
|  |  | 
|  | 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 | 
|  |  | 
|  | // NON_NATIVE_EXTERNAL               //# 05: compile-time error | 
|  | external get externalTopLevelGetter; //# 05: continued | 
|  |  | 
|  | // NON_NATIVE_EXTERNAL                  //# 06: compile-time error | 
|  | external set externalTopLevelSetter(_); //# 06: continued | 
|  |  | 
|  | // NON_NATIVE_EXTERNAL               //# 07: compile-time error | 
|  | external externalTopLevelFunction(); //# 07: continued | 
|  |  | 
|  | @JS('a') | 
|  | external get externalTopLevelJsInteropGetter; | 
|  |  | 
|  | @JS('b') | 
|  | external set externalTopLevelJsInteropSetter(_); | 
|  |  | 
|  | @JS('c') | 
|  | external externalTopLevelJsInteropFunction(); | 
|  |  | 
|  | class Class { | 
|  | Class.generative(); | 
|  | factory Class.fact() => null as dynamic; | 
|  |  | 
|  | // NON_NATIVE_EXTERNAL               //# 08: compile-time error | 
|  | external Class.externalGenerative(); //# 08: continued | 
|  |  | 
|  | // NON_NATIVE_EXTERNAL                 //# 09: compile-time error | 
|  | external factory Class.externalFact(); //# 09: continued | 
|  |  | 
|  | @JS('a') // GENERIC  //# 10: compile-time error | 
|  | Class.jsInteropGenerative(); //# 10: continued | 
|  |  | 
|  | @JS('a') // JS_INTEROP_MEMBER_IN_NON_JS_INTEROP_CLASS  //# 11: compile-time error | 
|  | factory Class.jsInteropFact() => null; //# 11: continued | 
|  |  | 
|  | @JS('a') // JS_INTEROP_MEMBER_IN_NON_JS_INTEROP_CLASS  //# 12: compile-time error | 
|  | external Class.externalJsInteropGenerative(); //# 12: continued | 
|  |  | 
|  | @JS('a') // JS_INTEROP_MEMBER_IN_NON_JS_INTEROP_CLASS  //# 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') // JS_INTEROP_MEMBER_IN_NON_JS_INTEROP_CLASS  //# 14: compile-time error | 
|  | var instanceJsInteropField; //# 14: continued | 
|  |  | 
|  | @JS('a') // JS_INTEROP_MEMBER_IN_NON_JS_INTEROP_CLASS  //# 15: compile-time error | 
|  | get instanceJsInteropGetter => null; //# 15: continued | 
|  |  | 
|  | @JS('a') // JS_INTEROP_MEMBER_IN_NON_JS_INTEROP_CLASS  //# 16: compile-time error | 
|  | set instanceJsInteropSetter(_) {} //# 16: continued | 
|  |  | 
|  | @JS('a') // JS_INTEROP_MEMBER_IN_NON_JS_INTEROP_CLASS  //# 17: compile-time error | 
|  | instanceJsInteropMethod() {} //# 17: continued | 
|  |  | 
|  | @JS('a') // JS_INTEROP_MEMBER_IN_NON_JS_INTEROP_CLASS  //# 18: compile-time error | 
|  | static var staticJsInteropField; //# 18: continued | 
|  |  | 
|  | @JS('a') // JS_INTEROP_MEMBER_IN_NON_JS_INTEROP_CLASS  //# 19: compile-time error | 
|  | static get staticJsInteropGetter => null; //# 19: continued | 
|  |  | 
|  | @JS('a') // JS_INTEROP_MEMBER_IN_NON_JS_INTEROP_CLASS  //# 20: compile-time error | 
|  | static set staticJsInteropSetter(_) {} //# 20: continued | 
|  |  | 
|  | @JS('a') // JS_INTEROP_MEMBER_IN_NON_JS_INTEROP_CLASS  //# 21: compile-time error | 
|  | static staticJsInteropMethod() {} //# 21: continued | 
|  |  | 
|  | // NON_NATIVE_EXTERNAL               //# 22: compile-time error | 
|  | external get externalInstanceGetter; //# 22: continued | 
|  |  | 
|  | // NON_NATIVE_EXTERNAL                  //# 23: compile-time error | 
|  | external set externalInstanceSetter(_); //# 23: continued | 
|  |  | 
|  | // NON_NATIVE_EXTERNAL             //# 24: compile-time error | 
|  | external externalInstanceMethod(); //# 24: continued | 
|  |  | 
|  | // NON_NATIVE_EXTERNAL             //# 25: compile-time error | 
|  | external static get externalStaticGetter; //# 25: continued | 
|  |  | 
|  | // NON_NATIVE_EXTERNAL                //# 26: compile-time error | 
|  | external static set externalStaticSetter(_); //# 26: continued | 
|  |  | 
|  | // NON_NATIVE_EXTERNAL           //# 27: compile-time error | 
|  | external static externalStaticMethod(); //# 27: continued | 
|  |  | 
|  | @JS('a') // JS_INTEROP_MEMBER_IN_NON_JS_INTEROP_CLASS  //# 28: compile-time error | 
|  | external get externalInstanceJsInteropGetter; //# 28: continued | 
|  |  | 
|  | @JS('a') // JS_INTEROP_MEMBER_IN_NON_JS_INTEROP_CLASS  //# 29: compile-time error | 
|  | external set externalInstanceJsInteropSetter(_); //# 29: continued | 
|  |  | 
|  | @JS('a') // JS_INTEROP_MEMBER_IN_NON_JS_INTEROP_CLASS  //# 30: compile-time error | 
|  | external externalInstanceJsInteropMethod(); //# 30: continued | 
|  |  | 
|  | @JS('a') // JS_INTEROP_MEMBER_IN_NON_JS_INTEROP_CLASS  //# 31: compile-time error | 
|  | external static get externalStaticJsInteropGetter; //# 31: continued | 
|  |  | 
|  | @JS('a') // JS_INTEROP_MEMBER_IN_NON_JS_INTEROP_CLASS  //# 32: compile-time error | 
|  | external static set externalStaticJsInteropSetter(_); //# 32: continued | 
|  |  | 
|  | @JS('a') // JS_INTEROP_MEMBER_IN_NON_JS_INTEROP_CLASS  //# 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 | 
|  |  | 
|  | // JS_INTEROP_CLASS_NON_EXTERNAL_MEMBER //# 39: compile-time error | 
|  | get instanceGetter => null; //# 39: continued | 
|  |  | 
|  | // JS_INTEROP_CLASS_NON_EXTERNAL_MEMBER //# 40: compile-time error | 
|  | set instanceSetter(_) {} //# 40: continued | 
|  |  | 
|  | // JS_INTEROP_CLASS_NON_EXTERNAL_MEMBER //# 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') // IMPLICIT_JS_INTEROP_FIELD_NOT_SUPPORTED //# 46: compile-time error | 
|  | var instanceJsInteropField; //# 46: continued | 
|  |  | 
|  | @JS('a') // JS_INTEROP_CLASS_NON_EXTERNAL_MEMBER //# 48: compile-time error | 
|  | get instanceJsInteropGetter => null; //# 48: continued | 
|  |  | 
|  | @JS('a') // JS_INTEROP_CLASS_NON_EXTERNAL_MEMBER //# 49: compile-time error | 
|  | set instanceJsInteropSetter(_) {} //# 49: continued | 
|  |  | 
|  | @JS('a') // JS_INTEROP_CLASS_NON_EXTERNAL_MEMBER //# 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(); | 
|  | } | 
|  |  | 
|  | main() { | 
|  | if (false) { | 
|  | topLevelSetter = topLevelField = topLevelGetter; | 
|  | topLevelFunction(); | 
|  | 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(); | 
|  | } | 
|  | } |