diff --git a/src/shared/cplusplus/ASTMatcher.cpp b/src/shared/cplusplus/ASTMatcher.cpp
index 47dac58232a99b0214f5c08a1abf5f7f1e2261b8..5d137e9e9c1239efb8d2320401a641b439853d56 100644
--- a/src/shared/cplusplus/ASTMatcher.cpp
+++ b/src/shared/cplusplus/ASTMatcher.cpp
@@ -57,6 +57,9 @@ bool ASTMatcher::matchToken(unsigned tokenIndex, unsigned patternTokenIndex) con
     else if (token.is(T_IDENTIFIER)) {
         if (! token.identifier->isEqualTo(otherToken.identifier))
             return false;
+    } else if (token.isLiteral()) {
+        if (! token.literal->isEqualTo(otherToken.literal))
+            return false;
     }
     return true;
 }
diff --git a/src/shared/cplusplus/Literals.cpp b/src/shared/cplusplus/Literals.cpp
index 40042eb66e431353c9d0f76cbdf3d2652b7c6d08..078c0702705a5d6f4580e138de06327ee1cadcef 100644
--- a/src/shared/cplusplus/Literals.cpp
+++ b/src/shared/cplusplus/Literals.cpp
@@ -72,6 +72,19 @@ Literal::Literal(const char *chars, unsigned size)
 Literal::~Literal()
 { delete[] _chars; }
 
+bool Literal::isEqualTo(const Literal *other) const
+{
+    if (! other)
+        return false;
+    else if (this == other)
+        return true;
+    else if (hashCode() != other->hashCode())
+        return false;
+    else if (size() != other->size())
+        return false;
+    return ! strcmp(chars(), other->chars());
+}
+
 Literal::iterator Literal::begin() const
 { return _chars; }
 
@@ -214,17 +227,3 @@ Identifier::Identifier(const char *chars, unsigned size)
 Identifier::~Identifier()
 { }
 
-bool Identifier::isEqualTo(const Identifier *other) const
-{
-    if (! other)
-        return false;
-    else if (this == other)
-        return true;
-    else if (hashCode() != other->hashCode())
-        return false;
-    else if (size() != other->size())
-        return false;
-    return ! strcmp(chars(), other->chars());
-}
-
-
diff --git a/src/shared/cplusplus/Literals.h b/src/shared/cplusplus/Literals.h
index 2a11cdada73bc3d12e4838230702885bf88a8c85..7f380ed08620c333451b680065ce7e9bbfe6fc00 100644
--- a/src/shared/cplusplus/Literals.h
+++ b/src/shared/cplusplus/Literals.h
@@ -78,6 +78,8 @@ public:
     unsigned hashCode() const;
     static unsigned hashCode(const char *chars, unsigned size);
 
+    bool isEqualTo(const Literal *other) const;
+
 private:
     char *_chars;
     unsigned _size;
@@ -131,8 +133,6 @@ class CPLUSPLUS_EXPORT Identifier: public Literal
 public:
     Identifier(const char *chars, unsigned size);
     virtual ~Identifier();
-
-    bool isEqualTo(const Identifier *other) const;
 };
 
 } // end of namespace CPlusPlus