// Copyright (c) 2014, 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";

@Native("A")
class A {
  var foo;
}

class B {
  var foo;
}

nativeId(x) native;

void setup() {
  JS('', r"""
(function(){
  self.nativeId = function(x) { return x; }
})()""");
}

main() {
  setup();
  var b = new B();
  b.foo = (x) => x + 1;
  b = nativeId(b); // Inferrer doesn't know if A has been instantiated.
  // At this point b could be A or B. The call to "foo" thus needs to go through
  // an interceptor. Tests that the interceptor works for retrieving the Dart
  // class field and invoking the closure.
  Expect.equals(499, b.foo(498));
}
