Yeah, I forgot to validate it in my branch. In BuiltinFuncCall, something like this would work:
But then you assume that all objects implementing the interface will use the same struct layout for that. I can't think of an example inside MSHTML where it's currently not the case, but that's not generally a promise that QI gives.
Alternatively, we can pass around `func_info_t` instead of dispid and tid, but still look it up like in your branch.
So what's the point of it then? Avoiding one argument in a call?
I mean the test will simply start failing if it picks `IHTMLCSSStyleDeclaration` because the assignment does not throw exception anymore (when it should be!).
I think that you misinterprets your observations. Here is a test proving that currentStyle should have a setter that throws an error (unless used for modifiable style object):
``` sync_test("currentStyle", function() { if (document.documentMode < 9) return;
var s = document.body.currentStyle; var d = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(Object.getPrototypeOf(s)), "zoom"); ok(typeof(d.get) === "function", "d.get = " + d.get); ok(typeof(d.set) === "function", "d.set = " + d.set);
d.set.call(document.body.style, "1"); try { d.set.call(s, "1"); ok(false, "exception expected"); }catch(e) { trace("MSG: " + e.message); } }); ```