Closed Bug 251742 Opened 20 years ago Closed 20 years ago

Add JS_HasProperty(cx, obj, id) API to make it easier to find out if a property exists or not.

Categories

(Core :: JavaScript Engine, defect)

defect
Not set
normal

Tracking

()

RESOLVED FIXED

People

(Reporter: jst, Assigned: brendan)

Details

(Keywords: fixed-aviary1.0, fixed1.7.5)

Attachments

(1 file)

Currently you'll need to use JS_Lookup[UC]Property() to find out if a property
already exists on an object, and that means you'll need to decrypt how you can
tell from the result of that if the property existed or not, and since the
answer is different depending on if the object is native or not, it's less than
ideal. JS_HasProperty() could hide that in a clean easy to use API...
The JS_ReportPendingException patch is a slightly better change than the patch
in bug 248065.	Here, JS_ReportPendingException calls
js_ReportUncaughtException calls JS_ClearPendingException when it has succeeded
in reporting the pending exception.  This means the DOM script error reporter
need not clear.

/be
Attachment #153445 - Flags: superreview?(jst)
Attachment #153445 - Flags: review?(shaver)
Comment on attachment 153445 [details] [diff] [review]
proposed fix, plus JS_ReportPendingException patch

sr=jst.

But *I* would rather see one single JS_HasProperty() that takes a jsval id in
stead of three separate functions for for string, ucstring, and int. Not how
the JS engine API generally does things, but it would be less code in the
engine, and less in *my* call sites.
Attachment #153445 - Flags: superreview?(jst) → superreview+
Comment on attachment 153445 [details] [diff] [review]
proposed fix, plus JS_ReportPendingException patch

I think most callers will want the str/wstr/int set, though I'm sympathetic to
the desire for a slimmer API.

If we had good INT_TO_ID/CSTR_TO_ID/etc. macros to indulge the other callers I
channel above, I could swing the other way.
Attachment #153445 - Flags: review?(shaver) → review+
CSTR_TO_ID can't be macroized, involving as it does fallible JS_InternString or
equivalent operation.

jst, it looks like JS_HasUCProperty will fit just fine into your patch in bug
248459, attachment 153433 [details] [diff] [review].

Fixed, thanks!

/be
Status: NEW → RESOLVED
Closed: 20 years ago
Resolution: --- → FIXED
Keywords: fixed-aviary1.0
Keywords: fixed1.7.x
Flags: testcase-
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: