Skip to content

minifier: call expressions for Object.getOwnPropertyDescriptor is not preserved when combined with proxies #17157

Description

@armano2

i was doing some testing and noticed that some buildin's are not properly preserved,

function b() {
	var passed = false;
	var proxy = new Proxy({}, {
		getOwnPropertyDescriptor() {
			passed = true;
			return undefined;
		} 
	});
	Object.getOwnPropertyDescriptor(proxy, "foo"); // this is removed
	return passed;
}
b();

Object.getOwnPropertyDescriptor(proxy, "foo"); is removed

looks like this issue is also present for other Object accessors:

  • Object.hasOwn
  • Object.getOwnPropertyDescriptor

after further investigation, issue seem to be with how we deal with Proxy as a whole

function b() {
	var passed = false;
	var proxy = new Proxy({}, {
		ownKeys() {
			passed = true;
			return [];
		} 
	});
	Object.keys(proxy); // this is removed
	return passed;
}
b();

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    Fields

    Priority

    None yet

    Effort

    None yet

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions