diff options
author | wolfbeast <mcwerewolf@wolfbeast.com> | 2019-06-08 07:48:28 +0000 |
---|---|---|
committer | wolfbeast <mcwerewolf@wolfbeast.com> | 2019-06-08 07:48:28 +0000 |
commit | ba9e648ce2705ad1c4679325a9326c47263e2a3e (patch) | |
tree | 724cf5101a1b5923c235dc767b355a7b0e906eb7 /js/src/builtin/SymbolObject.cpp | |
parent | c8300fbd6ae08925736c32f8b02c980ce1531f3f (diff) | |
parent | 19c0f5e9ff625c6a67e5e0a08f0a800782168492 (diff) | |
download | UXP-ba9e648ce2705ad1c4679325a9326c47263e2a3e.tar UXP-ba9e648ce2705ad1c4679325a9326c47263e2a3e.tar.gz UXP-ba9e648ce2705ad1c4679325a9326c47263e2a3e.tar.lz UXP-ba9e648ce2705ad1c4679325a9326c47263e2a3e.tar.xz UXP-ba9e648ce2705ad1c4679325a9326c47263e2a3e.zip |
Merge branch 'master' into remove-unboxed
Diffstat (limited to 'js/src/builtin/SymbolObject.cpp')
-rw-r--r-- | js/src/builtin/SymbolObject.cpp | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/js/src/builtin/SymbolObject.cpp b/js/src/builtin/SymbolObject.cpp index cf48402d6..ae38d5371 100644 --- a/js/src/builtin/SymbolObject.cpp +++ b/js/src/builtin/SymbolObject.cpp @@ -33,6 +33,7 @@ SymbolObject::create(JSContext* cx, JS::HandleSymbol symbol) } const JSPropertySpec SymbolObject::properties[] = { + JS_PSG("description", descriptionGetter, 0), JS_PS_END }; @@ -227,6 +228,34 @@ SymbolObject::toPrimitive(JSContext* cx, unsigned argc, Value* vp) return CallNonGenericMethod<IsSymbol, valueOf_impl>(cx, args); } +// ES2019 Stage 4 Draft / November 28, 2018 +// Symbol description accessor +// See: https://tc39.github.io/proposal-Symbol-description/ +bool +SymbolObject::descriptionGetter_impl(JSContext* cx, const CallArgs& args) +{ + // Get symbol object pointer. + HandleValue thisv = args.thisv(); + MOZ_ASSERT(IsSymbol(thisv)); + Rooted<Symbol*> sym(cx, thisv.isSymbol() + ? thisv.toSymbol() + : thisv.toObject().as<SymbolObject>().unbox()); + + // Return the symbol's description if present, otherwise return undefined. + if (JSString* str = sym->description()) + args.rval().setString(str); + else + args.rval().setUndefined(); + return true; +} + +bool +SymbolObject::descriptionGetter(JSContext* cx, unsigned argc, Value* vp) +{ + CallArgs args = CallArgsFromVp(argc, vp); + return CallNonGenericMethod<IsSymbol, descriptionGetter_impl>(cx, args); +} + JSObject* js::InitSymbolClass(JSContext* cx, HandleObject obj) { |