From 18490d3d5af3131751791e501302bc57865337b3 Mon Sep 17 00:00:00 2001 From: Brian White Date: Tue, 15 Dec 2015 03:55:35 -0500 Subject: module: always decorate thrown errors This provides more information when encountering a syntax or similar error when executing a file with require(). Fixes: https://github.com/nodejs/node/issues/4286 PR-URL: https://github.com/nodejs/node/pull/4287 Reviewed-By: Ben Noordhuis Reviewed-By: Colin Ihrig --- src/node_util.cc | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'src/node_util.cc') diff --git a/src/node_util.cc b/src/node_util.cc index 1e0f214ae4..8475468c1f 100644 --- a/src/node_util.cc +++ b/src/node_util.cc @@ -52,6 +52,21 @@ static void GetHiddenValue(const FunctionCallbackInfo& args) { args.GetReturnValue().Set(obj->GetHiddenValue(name)); } +static void SetHiddenValue(const FunctionCallbackInfo& args) { + Environment* env = Environment::GetCurrent(args); + + if (!args[0]->IsObject()) + return env->ThrowTypeError("obj must be an object"); + + if (!args[1]->IsString()) + return env->ThrowTypeError("name must be a string"); + + Local obj = args[0].As(); + Local name = args[1].As(); + + args.GetReturnValue().Set(obj->SetHiddenValue(name, args[2])); +} + void Initialize(Local target, Local unused, @@ -63,6 +78,7 @@ void Initialize(Local target, #undef V env->SetMethod(target, "getHiddenValue", GetHiddenValue); + env->SetMethod(target, "setHiddenValue", SetHiddenValue); } } // namespace util -- cgit v1.2.3