PR4395: Don't detect token concatenation in C mode for 
C++-specific tokens.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73408 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Lex/TokenConcatenation.cpp b/lib/Lex/TokenConcatenation.cpp
index ab989ca..be13b27 100644
--- a/lib/Lex/TokenConcatenation.cpp
+++ b/lib/Lex/TokenConcatenation.cpp
@@ -192,7 +192,8 @@
     return isalnum(FirstChar) || Tok.is(tok::numeric_constant) ||
     FirstChar == '+' || FirstChar == '-' || FirstChar == '.';
   case tok::period:          // ..., .*, .1234
-    return FirstChar == '.' || isdigit(FirstChar) || FirstChar == '*';
+    return FirstChar == '.' || isdigit(FirstChar) ||
+    (PP.getLangOptions().CPlusPlus && FirstChar == '*');
   case tok::amp:             // &&
     return FirstChar == '&';
   case tok::plus:            // ++
@@ -210,10 +211,11 @@
   case tok::percent:         // %>, %:
     return FirstChar == '>' || FirstChar == ':';
   case tok::colon:           // ::, :>
-    return FirstChar == ':' ||FirstChar == '>';
+    return FirstChar == '>' ||
+    (PP.getLangOptions().CPlusPlus && FirstChar == ':');
   case tok::hash:            // ##, #@, %:%:
     return FirstChar == '#' || FirstChar == '@' || FirstChar == '%';
   case tok::arrow:           // ->*
-    return FirstChar == '*';
+    return PP.getLangOptions().CPlusPlus && FirstChar == '*';
   }
 }