Fix JS_WIDESTRING to work with clang-cl
authorJohn Abd-El-Malek <jam@chromium.org>
Thu, 19 Jun 2014 15:07:13 +0000 (08:07 -0700)
committerJohn Abd-El-Malek <jam@chromium.org>
Thu, 19 Jun 2014 15:07:13 +0000 (08:07 -0700)
MSVC lexes L#macro_arg as a single wide string literal token, but
Clang and other C/C++ compliant lexers do not.  There was already
a workaround to use implicit string concatenation for GCC, but there's
a simpler solution of token pasting the L onto the stringized macro
argument with 'L###macro_arg'.  This works with Clang, GCC, and MSVC.

R=jun_fang@foxitsoftware.com, jam@chromium.org
BUG=82385

Original patch by Reid Kleckner <rnk@chromium.org>

Review URL: https://codereview.chromium.org/345643002

AUTHORS
fpdfsdk/include/javascript/JS_Define.h

diff --git a/AUTHORS b/AUTHORS
index 1d2ef49..0d72e22 100644 (file)
--- a/AUTHORS
+++ b/AUTHORS
@@ -20,6 +20,7 @@ Lucas Nihlen <luken@chromium.org>
 Matt Giuca <mgiuca@chromium.org>
 Nico Weber <thakis@chromium.org>
 Raymes Khoury <raymes@chromium.org>
+Reid Kleckner <rnk@chromium.org>
 
 Foxit Software Inc <*@foxitsoftware.com>
 Google Inc. <*@google.com>
index cc20333..ba978e9 100644 (file)
@@ -44,11 +44,7 @@ typedef CFX_WideString       JS_ErrorString;
 #define CJS_IntArray           CFX_ArrayTemplate<int>
 
 /* ====================================== PUBLIC DEFINE SPEC ============================================== */
-#ifndef __GNUC__
-#define JS_WIDESTRING(widestring) L#widestring
-#else
-#define JS_WIDESTRING(widestring) L""#widestring
-#endif
+#define JS_WIDESTRING(widestring) L###widestring
 
 #define OBJ_PROP_PARAMS                        IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError
 #define OBJ_METHOD_PARAMS              IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError