Make handle ctors explicit
Without this change, the v8::Local<> constructor will be picked up by the compiler as an option for an implicit cast for any pointer type. This leads to bad error messages when accidentally passing an erroneous pointer type to a function wanting a Local<> (complains about a pointer assignment in Local<>'s constructor as opposed to a bad type for the parameter of the function being called) and also causes ambiguity errors where none should exist when calling overloaded functions (for example a function taking either a std::string or a v8::Local<v8::Script> cannot be called with a const char * because the compiler sees both types as being constructable with a const char *). R=jochen@chromium.org BUG= Review URL: https://codereview.chromium.org/1647833005 Cr-Commit-Position: refs/heads/master@{#33602}
This commit is contained in:
parent
11f7c2e63c
commit
b6c9b70356
1
AUTHORS
1
AUTHORS
@ -108,5 +108,6 @@ Vlad Burlik <vladbph@gmail.com>
|
||||
Vladimir Krivosheev <develar@gmail.com>
|
||||
Vladimir Shutoff <vovan@shutoff.ru>
|
||||
Yu Yin <xwafish@gmail.com>
|
||||
Zac Hansen <xaxxon@gmail.com>
|
||||
Zhongping Wang <kewpie.w.zp@gmail.com>
|
||||
柳荣一 <admin@web-tinker.com>
|
@ -329,9 +329,7 @@ class Local {
|
||||
friend class PersistentValueMapBase;
|
||||
template<class F1, class F2> friend class PersistentValueVector;
|
||||
|
||||
template <class S>
|
||||
V8_INLINE Local(S* that)
|
||||
: val_(that) {}
|
||||
explicit V8_INLINE Local(T* that) : val_(that) {}
|
||||
V8_INLINE static Local<T> New(Isolate* isolate, T* that);
|
||||
T* val_;
|
||||
};
|
||||
@ -787,7 +785,7 @@ template <class T, class M> class Persistent : public PersistentBase<T> {
|
||||
template<class F1, class F2> friend class Persistent;
|
||||
template<class F> friend class ReturnValue;
|
||||
|
||||
template <class S> V8_INLINE Persistent(S* that) : PersistentBase<T>(that) { }
|
||||
explicit V8_INLINE Persistent(T* that) : PersistentBase<T>(that) {}
|
||||
V8_INLINE T* operator*() const { return this->val_; }
|
||||
template<class S, class M2>
|
||||
V8_INLINE void Copy(const Persistent<S, M2>& that);
|
||||
|
Loading…
Reference in New Issue
Block a user