// Copyright (c) 2013, 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.

// @dart = 2.9

// Ensure that dart2js's receiver specialization optimization works
// with captured variables.

import "package:expect/expect.dart";

var list = <dynamic>[new Object(), 31];

main() {
  Expect.throwsNoSuchMethodError(() => foo()() + 42);
}

foo() {
  var a = list[0];
  var closure = (() => a + 42);
  if (list[1] == 0) {
    a.toInt();
    return closure;
  }
  return closure;
}
