[heycam/webidl] IsDataDescriptor check for legacy setters is not implemented (#624)

But what happens instead is different everywhere. Consider the following test, which tries to define a property with a getter on a `Storage` object:
```html
<pre id=log>
</pre>
<script>
var log = (...m) => document.getElementById("log").append(...m, "\n");
var storage = window.sessionStorage;
var key = "x";
var threw = false;
storage.clear();

log("Before property access: ", storage[key], " (expected undefined)");
log("Before getItem call: ", storage.getItem(key), " (expected null)");
try {
  Object.defineProperty(storage, key, { get: function() { return "getter" } })
} catch (e) {
  threw = true;
}
log("Did throw? ", threw);
log("After property access: ", storage[key], " with type ", typeof storage[key], " (expected undefined)");
log("After getItem call: ", storage.getItem(key), " with type ", typeof storage.getItem(key), " (expected null)");
</script>
```

Results:

| Test | Gecko | WebKit | Chrome |
|---|---|---|---|
| Did throw? | false | false | false |
| After property access: | undefined with type string | undefined with type undefined | getter with type string |
| After getItem call: | undefined with type string | null with type object | null with type object |

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/heycam/webidl/issues/624

Received on Thursday, 17 January 2019 12:37:04 UTC