[Win] Use C++17 in MSVC
authorutatane.tea@gmail.com <utatane.tea@gmail.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 16 May 2018 17:50:38 +0000 (17:50 +0000)
committerutatane.tea@gmail.com <utatane.tea@gmail.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 16 May 2018 17:50:38 +0000 (17:50 +0000)
https://bugs.webkit.org/show_bug.cgi?id=185232

Reviewed by Alex Christensen.

.:

Use /std:c++17 option.

* Source/cmake/OptionsMSVC.cmake:

Source/ThirdParty:

Use std::tuple instead of std::tr1::tuple since std::tr1::tuple is removed in C++17 MSVC.
In a subsequent patch, we will upgrade gtest too.

* gtest/include/gtest/internal/gtest-param-util-generated.h:
(testing::internal::CartesianProductHolder2::operator ParamGenerator< ::std::tuple<T1, T2> > const):
(testing::internal::CartesianProductHolder3::operator ParamGenerator< ::std::tuple<T1, T2, T3> > const):
(testing::internal::CartesianProductHolder4::operator ParamGenerator< ::std::tuple<T1, T2, T3, T4> > const):
(testing::internal::CartesianProductHolder5::operator ParamGenerator< ::std::tuple<T1, T2, T3, T4, T5> > const):
(testing::internal::CartesianProductHolder6::operator ParamGenerator< ::std::tuple<T1, T2, T3, T4, T5, T6> > const):
(testing::internal::CartesianProductHolder7:: const):
(testing::internal::CartesianProductHolder8:: const):
(testing::internal::CartesianProductHolder9:: const):
(testing::internal::CartesianProductHolder10:: const):
(testing::internal::CartesianProductHolder2::operator ParamGenerator< ::std::tr1::tuple<T1, T2> > const): Deleted.
(testing::internal::CartesianProductHolder3::operator ParamGenerator< ::std::tr1::tuple<T1, T2, T3> > const): Deleted.
(testing::internal::CartesianProductHolder4::operator ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4> > const): Deleted.
(testing::internal::CartesianProductHolder5::operator ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5> > const): Deleted.
(testing::internal::CartesianProductHolder6::operator ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6> > const): Deleted.
* gtest/include/gtest/internal/gtest-tuple.h:

Source/WebCore:

Workaround for MSVC + /std:c++17.

* Modules/geolocation/Coordinates.h:
(WebCore::Coordinates::isolatedCopy const):

Source/WTF:

Disable some WebKit defined C++17 features for MSVC.

* wtf/StdLibExtras.h:

Tools:

Do not use `using namespace std;`. In C++17, we have std::byte. This "byte"
conflicts with ::byte defined in Windows' header.

* DumpRenderTree/TestNetscapePlugIn/win/WindowedPluginTest.cpp:
(WindowedPluginTest::WindowedPluginTest):
* DumpRenderTree/win/AccessibilityControllerWin.cpp:
(logEventProc):
(stringEvent):
(AccessibilityController::winNotificationReceived):
* DumpRenderTree/win/TextInputController.cpp:
(markedRangeCallback):
(firstRectForCharacterRangeCallback):
(selectedRangeCallback):
* DumpRenderTree/win/TextInputController.h:
* DumpRenderTree/win/TextInputControllerWin.cpp:
(TextInputController::markedRange):
(TextInputController::firstRectForCharacterRange):
(TextInputController::selectedRange):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@231852 268f45cc-cd09-0410-ab3c-d52691b4dbfc

15 files changed:
ChangeLog
Source/ThirdParty/ChangeLog
Source/ThirdParty/gtest/include/gtest/internal/gtest-param-util-generated.h
Source/ThirdParty/gtest/include/gtest/internal/gtest-tuple.h
Source/WTF/ChangeLog
Source/WTF/wtf/StdLibExtras.h
Source/WebCore/ChangeLog
Source/WebCore/Modules/geolocation/Coordinates.h
Source/cmake/OptionsMSVC.cmake
Tools/ChangeLog
Tools/DumpRenderTree/TestNetscapePlugIn/win/WindowedPluginTest.cpp
Tools/DumpRenderTree/win/AccessibilityControllerWin.cpp
Tools/DumpRenderTree/win/TextInputController.cpp
Tools/DumpRenderTree/win/TextInputController.h
Tools/DumpRenderTree/win/TextInputControllerWin.cpp

index af93285..d75aae7 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2018-05-14  Yusuke Suzuki  <utatane.tea@gmail.com>
+
+        [Win] Use C++17 in MSVC
+        https://bugs.webkit.org/show_bug.cgi?id=185232
+
+        Reviewed by Alex Christensen.
+
+        Use /std:c++17 option.
+
+        * Source/cmake/OptionsMSVC.cmake:
+
 2018-05-16  Alberto Garcia  <berto@igalia.com>
 
         [CMake] Properly detect compiler flags, needed libs, and fallbacks for usage of 64-bit atomic operations
index 32a88cf..a0917c0 100644 (file)
@@ -1,3 +1,30 @@
+2018-05-14  Yusuke Suzuki  <utatane.tea@gmail.com>
+
+        [Win] Use C++17 in MSVC
+        https://bugs.webkit.org/show_bug.cgi?id=185232
+
+        Reviewed by Alex Christensen.
+
+        Use std::tuple instead of std::tr1::tuple since std::tr1::tuple is removed in C++17 MSVC.
+        In a subsequent patch, we will upgrade gtest too.
+
+        * gtest/include/gtest/internal/gtest-param-util-generated.h:
+        (testing::internal::CartesianProductHolder2::operator ParamGenerator< ::std::tuple<T1, T2> > const):
+        (testing::internal::CartesianProductHolder3::operator ParamGenerator< ::std::tuple<T1, T2, T3> > const):
+        (testing::internal::CartesianProductHolder4::operator ParamGenerator< ::std::tuple<T1, T2, T3, T4> > const):
+        (testing::internal::CartesianProductHolder5::operator ParamGenerator< ::std::tuple<T1, T2, T3, T4, T5> > const):
+        (testing::internal::CartesianProductHolder6::operator ParamGenerator< ::std::tuple<T1, T2, T3, T4, T5, T6> > const):
+        (testing::internal::CartesianProductHolder7:: const):
+        (testing::internal::CartesianProductHolder8:: const):
+        (testing::internal::CartesianProductHolder9:: const):
+        (testing::internal::CartesianProductHolder10:: const):
+        (testing::internal::CartesianProductHolder2::operator ParamGenerator< ::std::tr1::tuple<T1, T2> > const): Deleted.
+        (testing::internal::CartesianProductHolder3::operator ParamGenerator< ::std::tr1::tuple<T1, T2, T3> > const): Deleted.
+        (testing::internal::CartesianProductHolder4::operator ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4> > const): Deleted.
+        (testing::internal::CartesianProductHolder5::operator ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5> > const): Deleted.
+        (testing::internal::CartesianProductHolder6::operator ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6> > const): Deleted.
+        * gtest/include/gtest/internal/gtest-tuple.h:
+
 2018-05-10  Michael Catanzaro  <mcatanzaro@igalia.com>
 
         Fix some -Wstring-op-truncation warnings
index ab4ab56..62b5ae1 100644 (file)
@@ -38,7 +38,7 @@
 // and at most 10 arguments in Combine. Please contact
 // googletestframework@googlegroups.com if you need more.
 // Please note that the number of arguments to Combine is limited
-// by the maximum arity of the implementation of tr1::tuple which is
+// by the maximum arity of the implementation of tuple which is
 // currently set at 10.
 
 #ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_
@@ -2834,9 +2834,9 @@ class ValueArray50 {
 //
 template <typename T1, typename T2>
 class CartesianProductGenerator2
-    : public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2> > {
+    : public ParamGeneratorInterface< ::std::tuple<T1, T2> > {
  public:
-  typedef ::std::tr1::tuple<T1, T2> ParamType;
+  typedef ::std::tuple<T1, T2> ParamType;
 
   CartesianProductGenerator2(const ParamGenerator<T1>& g1,
       const ParamGenerator<T2>& g2)
@@ -2949,9 +2949,9 @@ class CartesianProductGenerator2
 
 template <typename T1, typename T2, typename T3>
 class CartesianProductGenerator3
-    : public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2, T3> > {
+    : public ParamGeneratorInterface< ::std::tuple<T1, T2, T3> > {
  public:
-  typedef ::std::tr1::tuple<T1, T2, T3> ParamType;
+  typedef ::std::tuple<T1, T2, T3> ParamType;
 
   CartesianProductGenerator3(const ParamGenerator<T1>& g1,
       const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3)
@@ -3081,9 +3081,9 @@ class CartesianProductGenerator3
 
 template <typename T1, typename T2, typename T3, typename T4>
 class CartesianProductGenerator4
-    : public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2, T3, T4> > {
+    : public ParamGeneratorInterface< ::std::tuple<T1, T2, T3, T4> > {
  public:
-  typedef ::std::tr1::tuple<T1, T2, T3, T4> ParamType;
+  typedef ::std::tuple<T1, T2, T3, T4> ParamType;
 
   CartesianProductGenerator4(const ParamGenerator<T1>& g1,
       const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3,
@@ -3232,9 +3232,9 @@ class CartesianProductGenerator4
 
 template <typename T1, typename T2, typename T3, typename T4, typename T5>
 class CartesianProductGenerator5
-    : public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2, T3, T4, T5> > {
+    : public ParamGeneratorInterface< ::std::tuple<T1, T2, T3, T4, T5> > {
  public:
-  typedef ::std::tr1::tuple<T1, T2, T3, T4, T5> ParamType;
+  typedef ::std::tuple<T1, T2, T3, T4, T5> ParamType;
 
   CartesianProductGenerator5(const ParamGenerator<T1>& g1,
       const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3,
@@ -3400,10 +3400,10 @@ class CartesianProductGenerator5
 template <typename T1, typename T2, typename T3, typename T4, typename T5,
     typename T6>
 class CartesianProductGenerator6
-    : public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2, T3, T4, T5,
+    : public ParamGeneratorInterface< ::std::tuple<T1, T2, T3, T4, T5,
         T6> > {
  public:
-  typedef ::std::tr1::tuple<T1, T2, T3, T4, T5, T6> ParamType;
+  typedef ::std::tuple<T1, T2, T3, T4, T5, T6> ParamType;
 
   CartesianProductGenerator6(const ParamGenerator<T1>& g1,
       const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3,
@@ -3586,10 +3586,10 @@ class CartesianProductGenerator6
 template <typename T1, typename T2, typename T3, typename T4, typename T5,
     typename T6, typename T7>
 class CartesianProductGenerator7
-    : public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6,
+    : public ParamGeneratorInterface< ::std::tuple<T1, T2, T3, T4, T5, T6,
         T7> > {
  public:
-  typedef ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7> ParamType;
+  typedef ::std::tuple<T1, T2, T3, T4, T5, T6, T7> ParamType;
 
   CartesianProductGenerator7(const ParamGenerator<T1>& g1,
       const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3,
@@ -3789,10 +3789,10 @@ class CartesianProductGenerator7
 template <typename T1, typename T2, typename T3, typename T4, typename T5,
     typename T6, typename T7, typename T8>
 class CartesianProductGenerator8
-    : public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6,
+    : public ParamGeneratorInterface< ::std::tuple<T1, T2, T3, T4, T5, T6,
         T7, T8> > {
  public:
-  typedef ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8> ParamType;
+  typedef ::std::tuple<T1, T2, T3, T4, T5, T6, T7, T8> ParamType;
 
   CartesianProductGenerator8(const ParamGenerator<T1>& g1,
       const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3,
@@ -4011,10 +4011,10 @@ class CartesianProductGenerator8
 template <typename T1, typename T2, typename T3, typename T4, typename T5,
     typename T6, typename T7, typename T8, typename T9>
 class CartesianProductGenerator9
-    : public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6,
+    : public ParamGeneratorInterface< ::std::tuple<T1, T2, T3, T4, T5, T6,
         T7, T8, T9> > {
  public:
-  typedef ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9> ParamType;
+  typedef ::std::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9> ParamType;
 
   CartesianProductGenerator9(const ParamGenerator<T1>& g1,
       const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3,
@@ -4250,10 +4250,10 @@ class CartesianProductGenerator9
 template <typename T1, typename T2, typename T3, typename T4, typename T5,
     typename T6, typename T7, typename T8, typename T9, typename T10>
 class CartesianProductGenerator10
-    : public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6,
+    : public ParamGeneratorInterface< ::std::tuple<T1, T2, T3, T4, T5, T6,
         T7, T8, T9, T10> > {
  public:
-  typedef ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> ParamType;
+  typedef ::std::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> ParamType;
 
   CartesianProductGenerator10(const ParamGenerator<T1>& g1,
       const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3,
@@ -4515,8 +4515,8 @@ class CartesianProductHolder2 {
 CartesianProductHolder2(const Generator1& g1, const Generator2& g2)
       : g1_(g1), g2_(g2) {}
   template <typename T1, typename T2>
-  operator ParamGenerator< ::std::tr1::tuple<T1, T2> >() const {
-    return ParamGenerator< ::std::tr1::tuple<T1, T2> >(
+  operator ParamGenerator< ::std::tuple<T1, T2> >() const {
+    return ParamGenerator< ::std::tuple<T1, T2> >(
         new CartesianProductGenerator2<T1, T2>(
         static_cast<ParamGenerator<T1> >(g1_),
         static_cast<ParamGenerator<T2> >(g2_)));
@@ -4537,8 +4537,8 @@ CartesianProductHolder3(const Generator1& g1, const Generator2& g2,
     const Generator3& g3)
       : g1_(g1), g2_(g2), g3_(g3) {}
   template <typename T1, typename T2, typename T3>
-  operator ParamGenerator< ::std::tr1::tuple<T1, T2, T3> >() const {
-    return ParamGenerator< ::std::tr1::tuple<T1, T2, T3> >(
+  operator ParamGenerator< ::std::tuple<T1, T2, T3> >() const {
+    return ParamGenerator< ::std::tuple<T1, T2, T3> >(
         new CartesianProductGenerator3<T1, T2, T3>(
         static_cast<ParamGenerator<T1> >(g1_),
         static_cast<ParamGenerator<T2> >(g2_),
@@ -4562,8 +4562,8 @@ CartesianProductHolder4(const Generator1& g1, const Generator2& g2,
     const Generator3& g3, const Generator4& g4)
       : g1_(g1), g2_(g2), g3_(g3), g4_(g4) {}
   template <typename T1, typename T2, typename T3, typename T4>
-  operator ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4> >() const {
-    return ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4> >(
+  operator ParamGenerator< ::std::tuple<T1, T2, T3, T4> >() const {
+    return ParamGenerator< ::std::tuple<T1, T2, T3, T4> >(
         new CartesianProductGenerator4<T1, T2, T3, T4>(
         static_cast<ParamGenerator<T1> >(g1_),
         static_cast<ParamGenerator<T2> >(g2_),
@@ -4589,8 +4589,8 @@ CartesianProductHolder5(const Generator1& g1, const Generator2& g2,
     const Generator3& g3, const Generator4& g4, const Generator5& g5)
       : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5) {}
   template <typename T1, typename T2, typename T3, typename T4, typename T5>
-  operator ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5> >() const {
-    return ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5> >(
+  operator ParamGenerator< ::std::tuple<T1, T2, T3, T4, T5> >() const {
+    return ParamGenerator< ::std::tuple<T1, T2, T3, T4, T5> >(
         new CartesianProductGenerator5<T1, T2, T3, T4, T5>(
         static_cast<ParamGenerator<T1> >(g1_),
         static_cast<ParamGenerator<T2> >(g2_),
@@ -4620,8 +4620,8 @@ CartesianProductHolder6(const Generator1& g1, const Generator2& g2,
       : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6) {}
   template <typename T1, typename T2, typename T3, typename T4, typename T5,
       typename T6>
-  operator ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6> >() const {
-    return ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6> >(
+  operator ParamGenerator< ::std::tuple<T1, T2, T3, T4, T5, T6> >() const {
+    return ParamGenerator< ::std::tuple<T1, T2, T3, T4, T5, T6> >(
         new CartesianProductGenerator6<T1, T2, T3, T4, T5, T6>(
         static_cast<ParamGenerator<T1> >(g1_),
         static_cast<ParamGenerator<T2> >(g2_),
@@ -4653,9 +4653,9 @@ CartesianProductHolder7(const Generator1& g1, const Generator2& g2,
       : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7) {}
   template <typename T1, typename T2, typename T3, typename T4, typename T5,
       typename T6, typename T7>
-  operator ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6,
+  operator ParamGenerator< ::std::tuple<T1, T2, T3, T4, T5, T6,
       T7> >() const {
-    return ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7> >(
+    return ParamGenerator< ::std::tuple<T1, T2, T3, T4, T5, T6, T7> >(
         new CartesianProductGenerator7<T1, T2, T3, T4, T5, T6, T7>(
         static_cast<ParamGenerator<T1> >(g1_),
         static_cast<ParamGenerator<T2> >(g2_),
@@ -4691,9 +4691,9 @@ CartesianProductHolder8(const Generator1& g1, const Generator2& g2,
           g8_(g8) {}
   template <typename T1, typename T2, typename T3, typename T4, typename T5,
       typename T6, typename T7, typename T8>
-  operator ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7,
+  operator ParamGenerator< ::std::tuple<T1, T2, T3, T4, T5, T6, T7,
       T8> >() const {
-    return ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8> >(
+    return ParamGenerator< ::std::tuple<T1, T2, T3, T4, T5, T6, T7, T8> >(
         new CartesianProductGenerator8<T1, T2, T3, T4, T5, T6, T7, T8>(
         static_cast<ParamGenerator<T1> >(g1_),
         static_cast<ParamGenerator<T2> >(g2_),
@@ -4732,9 +4732,9 @@ CartesianProductHolder9(const Generator1& g1, const Generator2& g2,
           g9_(g9) {}
   template <typename T1, typename T2, typename T3, typename T4, typename T5,
       typename T6, typename T7, typename T8, typename T9>
-  operator ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8,
+  operator ParamGenerator< ::std::tuple<T1, T2, T3, T4, T5, T6, T7, T8,
       T9> >() const {
-    return ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8,
+    return ParamGenerator< ::std::tuple<T1, T2, T3, T4, T5, T6, T7, T8,
         T9> >(
         new CartesianProductGenerator9<T1, T2, T3, T4, T5, T6, T7, T8, T9>(
         static_cast<ParamGenerator<T1> >(g1_),
@@ -4776,9 +4776,9 @@ CartesianProductHolder10(const Generator1& g1, const Generator2& g2,
           g9_(g9), g10_(g10) {}
   template <typename T1, typename T2, typename T3, typename T4, typename T5,
       typename T6, typename T7, typename T8, typename T9, typename T10>
-  operator ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8,
+  operator ParamGenerator< ::std::tuple<T1, T2, T3, T4, T5, T6, T7, T8,
       T9, T10> >() const {
-    return ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8,
+    return ParamGenerator< ::std::tuple<T1, T2, T3, T4, T5, T6, T7, T8,
         T9, T10> >(
         new CartesianProductGenerator10<T1, T2, T3, T4, T5, T6, T7, T8, T9,
             T10>(
index 16178fc..c27f3a4 100644 (file)
@@ -912,7 +912,7 @@ struct SameSizeTuplePrefixComparator<k, k> {
   template <class Tuple1, class Tuple2>
   static bool Eq(const Tuple1& t1, const Tuple2& t2) {
     return SameSizeTuplePrefixComparator<k - 1, k - 1>::Eq(t1, t2) &&
-        ::std::tr1::get<k - 1>(t1) == ::std::tr1::get<k - 1>(t2);
+        ::std::get<k - 1>(t1) == ::std::get<k - 1>(t2);
   }
 };
 
index 68d8d91..0bac5a3 100644 (file)
@@ -1,5 +1,16 @@
 2018-05-14  Yusuke Suzuki  <utatane.tea@gmail.com>
 
+        [Win] Use C++17 in MSVC
+        https://bugs.webkit.org/show_bug.cgi?id=185232
+
+        Reviewed by Alex Christensen.
+
+        Disable some WebKit defined C++17 features for MSVC.
+
+        * wtf/StdLibExtras.h:
+
+2018-05-14  Yusuke Suzuki  <utatane.tea@gmail.com>
+
         [JSC] timeClip(-0) should produce +0
         https://bugs.webkit.org/show_bug.cgi?id=185589
 
index 6383892..760b2ad 100644 (file)
@@ -545,7 +545,7 @@ template<class... _Args> struct conjunction : wtf_conjunction_impl<_Args...> { }
 
 // Provide in_place_t when not building with -std=c++17, or when building with libstdc++ 6
 // (which doesn't define the _GLIBCXX_RELEASE macro that's been introduced in libstdc++ 7).
-#if __cplusplus < 201703L || (defined(__GLIBCXX__) && !defined(_GLIBCXX_RELEASE))
+#if (__cplusplus < 201703L || (defined(__GLIBCXX__) && !defined(_GLIBCXX_RELEASE))) && (!defined(_MSC_FULL_VER) || _MSC_FULL_VER < 190023918)
 
 // These are inline variable for C++17 and later.
 #define __IN_PLACE_INLINE_VARIABLE static const
index 1adef64..051b6bc 100644 (file)
@@ -1,3 +1,15 @@
+2018-05-14  Yusuke Suzuki  <utatane.tea@gmail.com>
+
+        [Win] Use C++17 in MSVC
+        https://bugs.webkit.org/show_bug.cgi?id=185232
+
+        Reviewed by Alex Christensen.
+
+        Workaround for MSVC + /std:c++17.
+
+        * Modules/geolocation/Coordinates.h:
+        (WebCore::Coordinates::isolatedCopy const):
+
 2018-05-16  Chris Nardi  <cnardi@chromium.org>
 
         Remove Document#selectedStylesheetSet/preferredStylesheetSet
index 0b73cf6..e1975be 100644 (file)
@@ -41,7 +41,7 @@ public:
 
     Ref<Coordinates> isolatedCopy() const
     {
-        return Coordinates::create( GeolocationPosition { m_position });
+        return Coordinates::create(GeolocationPosition(m_position));
     }
 
     double latitude() const { return m_position.latitude; }
index 7f378ff..9f9e34e 100644 (file)
@@ -29,6 +29,10 @@ endif ()
 # Turn off certain link features
 add_compile_options(/Gy- /openmp- /GF-)
 
+# Enable C++17
+# https://docs.microsoft.com/en-us/cpp/build/reference/std-specify-language-standard-version
+add_compile_options(/std:c++17)
+
 # Specify the source code encoding
 add_compile_options(/utf-8 /validate-charset)
 
index 60292ab..9a4a47e 100644 (file)
@@ -1,3 +1,29 @@
+2018-05-14  Yusuke Suzuki  <utatane.tea@gmail.com>
+
+        [Win] Use C++17 in MSVC
+        https://bugs.webkit.org/show_bug.cgi?id=185232
+
+        Reviewed by Alex Christensen.
+
+        Do not use `using namespace std;`. In C++17, we have std::byte. This "byte"
+        conflicts with ::byte defined in Windows' header.
+
+        * DumpRenderTree/TestNetscapePlugIn/win/WindowedPluginTest.cpp:
+        (WindowedPluginTest::WindowedPluginTest):
+        * DumpRenderTree/win/AccessibilityControllerWin.cpp:
+        (logEventProc):
+        (stringEvent):
+        (AccessibilityController::winNotificationReceived):
+        * DumpRenderTree/win/TextInputController.cpp:
+        (markedRangeCallback):
+        (firstRectForCharacterRangeCallback):
+        (selectedRangeCallback):
+        * DumpRenderTree/win/TextInputController.h:
+        * DumpRenderTree/win/TextInputControllerWin.cpp:
+        (TextInputController::markedRange):
+        (TextInputController::firstRectForCharacterRange):
+        (TextInputController::selectedRange):
+
 2018-05-16  Sihui Liu  <sihui_liu@apple.com>
 
         Session cookies aren't reliably set when using default WKWebSiteDataStore
index 2e75ca1..8878192 100644 (file)
 
 #include "WindowedPluginTest.h"
 
-using namespace std;
-
 static const wchar_t instancePointerProperty[] = L"org.webkit.TestNetscapePlugin.WindowedPluginTest.InstancePointer";
 
-WindowedPluginTest::WindowedPluginTest(NPP npp, const string& identifier)
+WindowedPluginTest::WindowedPluginTest(NPP npp, const std::string& identifier)
     : PluginTest(npp, identifier)
     , m_window(0)
     , m_originalWndProc(0)
index cf5d246..b98a028 100644 (file)
@@ -42,8 +42,6 @@
 #include <wtf/Assertions.h>
 #include <wtf/text/AtomicString.h>
 
-using namespace std;
-
 AccessibilityController::AccessibilityController()
     : m_focusEventHook(0)
     , m_scrollingStartEventHook(0)
@@ -189,7 +187,7 @@ static void CALLBACK logEventProc(HWINEVENTHOOK, DWORD event, HWND hwnd, LONG id
     _bstr_t nameBSTR;
     hr = parentObject->get_accName(vChild, &nameBSTR.GetBSTR());
     ASSERT(SUCCEEDED(hr));
-    wstring name(nameBSTR, nameBSTR.length());
+    std::wstring name(nameBSTR, nameBSTR.length());
 
     switch (event) {
         case EVENT_OBJECT_FOCUS:
@@ -204,7 +202,7 @@ static void CALLBACK logEventProc(HWINEVENTHOOK, DWORD event, HWND hwnd, LONG id
             _bstr_t valueBSTR;
             hr = parentObject->get_accValue(vChild, &valueBSTR.GetBSTR());
             ASSERT(SUCCEEDED(hr));
-            wstring value(valueBSTR, valueBSTR.length());
+            std::wstring value(valueBSTR, valueBSTR.length());
 
             fprintf(testResult, "Received value change event for object '%S', value '%S'.\n", name.c_str(), value.c_str());
             break;
@@ -304,7 +302,7 @@ void AccessibilityController::setLogAccessibilityEvents(bool logAccessibilityEve
     ASSERT(m_allEventsHook);
 }
 
-static string stringEvent(DWORD event)
+static std::string stringEvent(DWORD event)
 {
     switch(event) {
         case EVENT_OBJECT_VALUECHANGE:
@@ -341,7 +339,7 @@ void AccessibilityController::removeNotificationListener()
 {
 }
 
-void AccessibilityController::winNotificationReceived(PlatformUIElement element, const string& eventName)
+void AccessibilityController::winNotificationReceived(PlatformUIElement element, const std::string& eventName)
 {
     for (auto& slot : m_notificationListeners) {
         COMPtr<IServiceProvider> thisServiceProvider(Query, slot.key);
index da5fdf6..3b9a2b7 100644 (file)
@@ -80,7 +80,7 @@ static JSValueRef markedRangeCallback(JSContextRef context, JSObjectRef function
 {
     TextInputController* controller = static_cast<TextInputController*>(JSObjectGetPrivate(thisObject));
     if (controller) {
-        vector<int> range = controller->markedRange();
+        std::vector<int> range = controller->markedRange();
         if (range.size() == 2) {
             JSValueRef argumentsArrayValues[] = { JSValueMakeNumber(context, range[0]), JSValueMakeNumber(context, range[1]) };
             JSObjectRef result = JSObjectMakeArray(context, sizeof(argumentsArrayValues) / sizeof(JSValueRef), argumentsArrayValues, exception);
@@ -122,7 +122,7 @@ static JSValueRef firstRectForCharacterRangeCallback(JSContextRef context, JSObj
     TextInputController* controller = static_cast<TextInputController*>(JSObjectGetPrivate(thisObject));
 
     if (controller) {
-        vector<int> rect = controller->firstRectForCharacterRange(start, length);
+        std::vector<int> rect = controller->firstRectForCharacterRange(start, length);
         if (rect.size() == 4) {
             JSValueRef argumentsArrayValues[] = 
             { 
@@ -145,7 +145,7 @@ static JSValueRef selectedRangeCallback(JSContextRef context, JSObjectRef functi
     TextInputController* controller = static_cast<TextInputController*>(JSObjectGetPrivate(thisObject));
 
     if (controller) {
-        vector<int> rect = controller->selectedRange();
+        std::vector<int> rect = controller->selectedRange();
         if (rect.size() == 2) {
             JSValueRef argumentsArrayValues[] = { 
                 JSValueMakeNumber(context, rect[0]), 
index 761b57d..25c348e 100644 (file)
@@ -35,8 +35,6 @@
 #include <JavaScriptCore/JSValueRef.h>
 #include <vector>
 
-using namespace std;
-
 class TextInputController {
 public:
     void makeWindowObject(JSContextRef, JSObjectRef windowObject, JSValueRef* exception);
@@ -44,10 +42,10 @@ public:
     void setMarkedText(JSStringRef text, unsigned int from, unsigned int length);
     bool hasMarkedText();
     void unmarkText();
-    vector<int> markedRange();
+    std::vector<int> markedRange();
     void insertText(JSStringRef text);
-    vector<int> firstRectForCharacterRange(unsigned int start, unsigned int length);
-    vector<int> selectedRange();
+    std::vector<int> firstRectForCharacterRange(unsigned int start, unsigned int length);
+    std::vector<int> selectedRange();
 
 private:    
     static JSClassRef getJSClass();
index 199f684..67e5c69 100644 (file)
@@ -36,8 +36,6 @@
 #include <comutil.h>
 #include <string>
 
-using namespace std;
-
 void TextInputController::setMarkedText(JSStringRef text, unsigned int from, unsigned int length) 
 {    
     COMPtr<IWebView> webView;
@@ -82,10 +80,10 @@ void TextInputController::unmarkText()
     viewPrivate->confirmCompositionForTesting(empty);
 }
 
-vector<int> TextInputController::markedRange()
+std::vector<int> TextInputController::markedRange()
 {
     // empty vector
-    vector<int> result;
+    std::vector<int> result;
 
     COMPtr<IWebView> webView;
     if (FAILED(frame->webView(&webView)))
@@ -121,10 +119,10 @@ void TextInputController::insertText(JSStringRef text)
     viewPrivate->confirmCompositionForTesting(bstr);
 }
 
-vector<int> TextInputController::firstRectForCharacterRange(unsigned int start, unsigned int length)
+std::vector<int> TextInputController::firstRectForCharacterRange(unsigned int start, unsigned int length)
 {
     // empty vector
-    vector<int> result;
+    std::vector<int> result;
 
     COMPtr<IWebView> webView;
     if (FAILED(frame->webView(&webView)))
@@ -146,10 +144,10 @@ vector<int> TextInputController::firstRectForCharacterRange(unsigned int start,
     return result;
 }
 
-vector<int> TextInputController::selectedRange()
+std::vector<int> TextInputController::selectedRange()
 {
     // empty vector
-    vector<int> result;
+    std::vector<int> result;
 
     COMPtr<IWebView> webView;
     if (FAILED(frame->webView(&webView)))