From 8581d5f70ace398a30dd8d8b108ce562b29ab39d Mon Sep 17 00:00:00 2001 From: Sebastian Pahnke Date: Mon, 25 Feb 2019 09:28:55 +0100 Subject: [PATCH] Set the class name of a function template This is used for printing objects created with the function created from the FunctionTemplate as its constructor; e.g in the debug inspector protocol. Otherwise a class Foo is printed as "Object". Note that this does not alter the behavior of toString. --- Source/Noesis.Javascript/JavascriptContext.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Source/Noesis.Javascript/JavascriptContext.cpp b/Source/Noesis.Javascript/JavascriptContext.cpp index 3a44396..ab93ed9 100644 --- a/Source/Noesis.Javascript/JavascriptContext.cpp +++ b/Source/Noesis.Javascript/JavascriptContext.cpp @@ -292,10 +292,12 @@ void JavascriptContext::SetConstructor(System::String^ name, System::Type^ assoc v8::Isolate *isolate = JavascriptContext::GetCurrentIsolate(); HandleScope handleScope(isolate); + Local className = ToV8String(isolate, name); Handle functionTemplate = JavascriptInterop::GetFunctionTemplateFromSystemDelegate(constructor); + functionTemplate->SetClassName(className); JavascriptInterop::InitObjectWrapperTemplate(functionTemplate->InstanceTemplate()); mTypeToConstructorMapping[associatedType] = System::IntPtr(new Persistent(isolate, functionTemplate)); - Local::New(isolate, *mContext)->Global()->Set(isolate->GetCurrentContext(), ToV8String(isolate, name), functionTemplate->GetFunction()); + Local::New(isolate, *mContext)->Global()->Set(isolate->GetCurrentContext(), className, functionTemplate->GetFunction()); } ////////////////////////////////////////////////////////////////////////////////////////////////////