diff --git a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkType.java b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkType.java
index 4e9f449..9dd9b03 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkType.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkType.java
@@ -668,21 +668,19 @@
       return ImmutableMap.of();
     }
     if (!(obj instanceof Map<?, ?>)) {
-      throw Starlark.errorf(
-          "expected a dictionary for '%s' but got '%s' instead",
-          what, EvalUtils.getDataTypeName(obj));
+      throw Starlark.errorf("got '%s' for '%s', want 'dict'", EvalUtils.getDataTypeName(obj), what);
     }
 
     for (Map.Entry<?, ?> input : ((Map<?, ?>) obj).entrySet()) {
       if (!keyType.isAssignableFrom(input.getKey().getClass())
           || !valueType.isAssignableFrom(input.getValue().getClass())) {
         throw Starlark.errorf(
-            "expected <%s, %s> type for '%s' but got <%s, %s> instead",
-            keyType.getSimpleName(),
-            valueType.getSimpleName(),
+            "got dict<%s, %s> for '%s', want dict<%s, %s>",
+            Starlark.type(input.getKey()),
+            Starlark.type(input.getValue()),
             what,
-            EvalUtils.getDataTypeName(input.getKey()),
-            EvalUtils.getDataTypeName(input.getValue()));
+            EvalUtils.getDataTypeNameFromClass(keyType),
+            EvalUtils.getDataTypeNameFromClass(valueType));
       }
     }
 
diff --git a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java
index 232e18b..7728813 100644
--- a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java
@@ -832,7 +832,7 @@
   public void testRuleBadTypeInAdd() throws Exception {
     registerDummyStarlarkFunction();
     checkEvalErrorContains(
-        "expected <String, Descriptor> type for 'attrs' but got <string, string> instead",
+        "got dict<string, string> for 'attrs', want dict<string, Attribute>",
         "rule(impl, attrs = {'a1': 'some text'})");
   }
 
