On 02/14/2015 08:43 PM, Boris Zbarsky wrote:
> On 2/14/15 11:06 PM, obastemur wrote:
>> On Friday, February 13, 2015 at 5:06:31 PM UTC+1, Boris Zbarsky wrote:
>>> Note that this does not do the same thing as obastemur's proposed API.
>>> Whether it does what he actually wants is an interesting question

Moreover: whether *any* of these APIs does what is really wanted, is an even 
better question.  ES6^H2015 includes an IsRegExp abstract operation.  Perhaps 
that's what we should be exposing, not an exact-class sort of check that exists 
nowhere in the standard.  I would certainly be hesitant at this point to expose 
anything that doesn't have identical API to the standard method, even if in the 
short run it might have a semantically-different implementation.

Jeff

P.S. -- For elucidation, the algorithm in the February 12 draft is this:

> 7.2.8 IsRegExp(argument)
> 
> The abstract operation IsRegExp with argument argument performs the following 
> steps:
> 
> 1. If Type(argument) is not Object, return false.
> 2. Let isRegExp be Get(argument, @@match).
> 3. ReturnIfAbrupt(isRegExp).
> 4. If isRegExp is not undefined, return ToBoolean(isRegExp).
> 5. If argument has a [[RegExpMatcher]] internal slot, return true.
> 6. Return false.

Salient differences at a glance are that this algorithm is 1) pluggable, and 2) 
would throw a TypeError when used upon a revoked proxy.  So it is an absolute 
certainty that this operation expressed in JSAPI terms must return both a 
boolean succeeded/failed value, and also a conditionally-valid (if succeeded) 
wasRegExp boolean value.
_______________________________________________
dev-tech-js-engine-internals mailing list
dev-tech-js-engine-internals@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-tech-js-engine-internals

Reply via email to