Revert "Don't mark all macros with double underscores as reserved."

Fails a WebGL CTS test.

BUG=angleproject:989

This reverts commit 942e36254a1e3537371c39f3f23d1ce12f4c87e8.

Change-Id: I9f833366d5b69535ef74e358ac21efaccb1f1a3d
Reviewed-on: https://chromium-review.googlesource.com/268751
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
diff --git a/src/compiler/preprocessor/DirectiveParser.cpp b/src/compiler/preprocessor/DirectiveParser.cpp
index 64b48b4..b38f332 100644
--- a/src/compiler/preprocessor/DirectiveParser.cpp
+++ b/src/compiler/preprocessor/DirectiveParser.cpp
@@ -118,28 +118,13 @@
 
 bool isMacroNameReserved(const std::string &name)
 {
-    const char *kPredefinedMacros[] =
-    {
-        "__LINE__",
-        "__FILE__",
-        "__VERSION__",
-        "GL_ES",
-    };
-    const size_t kPredefinedMacrosCount = sizeof(kPredefinedMacros) / sizeof(*kPredefinedMacros);
-
-    for (size_t i = 0; i < kPredefinedMacrosCount; i++)
-    {
-        if (name == kPredefinedMacros[i])
-        {
-            return true;
-        }
-    }
-
     // Names prefixed with "GL_" are reserved.
-    if (name.compare(0, 3, "GL_") == 0)
-    {
+    if (name.substr(0, 3) == "GL_")
         return true;
-    }
+
+    // Names containing two consecutive underscores are reserved.
+    if (name.find("__") != std::string::npos)
+        return true;
 
     return false;
 }
diff --git a/src/tests/preprocessor_tests/define_test.cpp b/src/tests/preprocessor_tests/define_test.cpp
index e8e03d5..fd3ae41 100644
--- a/src/tests/preprocessor_tests/define_test.cpp
+++ b/src/tests/preprocessor_tests/define_test.cpp
@@ -65,24 +65,32 @@
     preprocess(input, expected);
 }
 
-TEST_F(DefineTest, UnderScore1)
+TEST_F(DefineTest, ReservedUnderScore1)
 {
-    const char* input = "#define __foo bar\n";
-    const char* expected = "\n";
+    const char* input = "#define __foo bar\n"
+                        "__foo\n";
+    const char* expected = "\n"
+                           "__foo\n";
 
-    using testing::_;
-    EXPECT_CALL(mDiagnostics, print(_, _, _)).Times(0);
+    EXPECT_CALL(mDiagnostics,
+                print(pp::Diagnostics::PP_MACRO_NAME_RESERVED,
+                      pp::SourceLocation(0, 1),
+                      "__foo"));
 
     preprocess(input, expected);
 }
 
-TEST_F(DefineTest, UnderScore2)
+TEST_F(DefineTest, ReservedUnderScore2)
 {
-    const char* input = "#define foo__bar baz\n";
-    const char* expected = "\n";
+    const char* input = "#define foo__bar baz\n"
+                        "foo__bar\n";
+    const char* expected = "\n"
+                           "foo__bar\n";
 
-    using testing::_;
-    EXPECT_CALL(mDiagnostics, print(_, _, _)).Times(0);
+    EXPECT_CALL(mDiagnostics,
+                print(pp::Diagnostics::PP_MACRO_NAME_RESERVED,
+                      pp::SourceLocation(0, 1),
+                      "foo__bar"));
 
     preprocess(input, expected);
 }