diff --git a/src/com/google/javascript/jscomp/JsMessage.java b/src/com/google/javascript/jscomp/JsMessage.java
index <HASH>..<HASH> 100644
--- a/src/com/google/javascript/jscomp/JsMessage.java
+++ b/src/com/google/javascript/jscomp/JsMessage.java
@@ -445,7 +445,11 @@ public class JsMessage {
     private static String fingerprint(List<CharSequence> messageParts) {
       StringBuilder sb = new StringBuilder();
       for (CharSequence part : messageParts) {
-        sb.append(part);
+        if (part instanceof JsMessage.PlaceholderReference) {
+          sb.append(part.toString());
+        } else {
+          sb.append(part);
+        }
       }
       long nonnegativeHash = Long.MAX_VALUE & Hash.hash64(sb.toString());
       return Long.toString(nonnegativeHash, 36).toUpperCase();
PlaceholderReference implements CharSequence but violates its contract for toString, so the change to JsMessage should not have been made.
-------------
Created by MOE: <URL>