Treat @DefaultLocale as equivalent to "default" when determining preference
order.

Patch by: jat
Review by: rjrjr


git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@6693 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/user/src/com/google/gwt/i18n/rebind/AbstractResource.java b/user/src/com/google/gwt/i18n/rebind/AbstractResource.java
index 51058a7..abaeb89 100644
--- a/user/src/com/google/gwt/i18n/rebind/AbstractResource.java
+++ b/user/src/com/google/gwt/i18n/rebind/AbstractResource.java
@@ -143,15 +143,21 @@
       for (int i = 0; i < searchList.size(); ++i) {
         derivedIndex.put(searchList.get(i), i);
       }
-      GwtLocale best = LocaleUtils.getLocaleFactory().getDefault();
+      GwtLocale defaultLocale = LocaleUtils.getLocaleFactory().getDefault();
+      GwtLocale best = defaultLocale;
       int bestIdx = Integer.MAX_VALUE;
       for (int i = 0; i < list.size(); ++i) {
         GwtLocale matchLocale = list.get(i).getMatchLocale();
         Integer wrappedIdx = derivedIndex.get(matchLocale);
         if (wrappedIdx == null) {
-          logger.log(TreeLogger.WARN, "Locale " + matchLocale
-              + " not in searchlist " + searchList);
-          continue;
+          // We had an @DefaultLocale for a locale not present in this
+          // permutation -- treat it as the default locale.
+          wrappedIdx = derivedIndex.get(defaultLocale);
+          if (wrappedIdx == null) {
+            // shouldn't happen
+            assert false : "No default locale in search list";
+            continue;
+          }
         }
         int idx = wrappedIdx;
         if (idx < bestIdx) {