// Copyright 2018 the V8 project authors.  All rights reserved. 
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. 

// Flags: --allow-natives-syntax

// Check that we do appropriate used/unused field accounting
var p = Promise.resolve();
var then = p.then = () => {};

function spread() { return { ...p }; }

assertEquals({ then }, spread());
assertEquals({ then }, spread());
assertEquals({ then }, spread());
%OptimizeFunctionOnNextCall(spread);
assertEquals({ then }, spread());
