// Copyright (c) 2011, 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. import "native_testing.dart"; // Hidden native class with factory constructors and NO static methods. // Regression test. @Native("A") class A { // No static methods in this class. factory A(int len) => makeA(len); factory A.fromString(String s) => makeA(s.length); factory A.nativeConstructor() { return JS('A|Null', 'makeA(102)'); } foo() native; } makeA(v) native; void setup() { JS('', r""" (function(){ // This code is inside 'setup' and so not accessible from the global scope. function A(arg) { this._x = arg; } A.prototype.foo = function(){ return this._x; }; self.makeA = function(arg) { return new A(arg); }; self.nativeConstructor(A); })()"""); applyTestExtensions(['A']); } main() { nativeTesting(); setup(); var a1 = new A(100); var a2 = new A.fromString('Hello'); var a3 = new A.nativeConstructor(); Expect.equals(100, a1.foo()); Expect.equals(5, a2.foo()); Expect.equals(102, a3.foo()); }