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);
}