diff --git a/src/runtime/error.go b/src/runtime/error.go
index 4b6fb32b78f5b26295ed75bfb37ea454e52da4f3..1f77c0a0b56855b2561971148e2f6d2c4022a282 100644
--- a/src/runtime/error.go
+++ b/src/runtime/error.go
@@ -36,8 +36,13 @@ func (e *TypeAssertionError) Error() string {
 		return "interface conversion: " + inter + " is nil, not " + e.assertedString
 	}
 	if e.missingMethod == "" {
-		return "interface conversion: " + inter + " is " + e.concreteString +
+		msg := "interface conversion: " + inter + " is " + e.concreteString +
 			", not " + e.assertedString
+		if e.concreteString == e.assertedString {
+			// provide slightly clearer error message
+			msg += " (types from different packages)"
+		}
+		return msg
 	}
 	return "interface conversion: " + e.concreteString + " is not " + e.assertedString +
 		": missing method " + e.missingMethod
diff --git a/test/fixedbugs/issue18911.dir/a.go b/test/fixedbugs/issue18911.dir/a.go
new file mode 100644
index 0000000000000000000000000000000000000000..d2221e761288a26d94b0104cbaa0bd4f9e07f538
--- /dev/null
+++ b/test/fixedbugs/issue18911.dir/a.go
@@ -0,0 +1,7 @@
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package a
+
+var X interface{} = struct{ x int }{}
diff --git a/test/fixedbugs/issue18911.dir/b.go b/test/fixedbugs/issue18911.dir/b.go
new file mode 100644
index 0000000000000000000000000000000000000000..da2388b88d1b14d711fa726aecf55bf8575ed1d7
--- /dev/null
+++ b/test/fixedbugs/issue18911.dir/b.go
@@ -0,0 +1,21 @@
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import "./a"
+import "strings"
+
+func main() {
+	defer func() {
+		p, ok := recover().(error)
+		if ok && strings.Contains(p.Error(), "different packages") {
+			return
+		}
+		panic(p)
+	}()
+
+	// expected to fail and report two identical looking (but different) types
+	_ = a.X.(struct{ x int })
+}
diff --git a/test/fixedbugs/issue18911.go b/test/fixedbugs/issue18911.go
new file mode 100644
index 0000000000000000000000000000000000000000..8bf34a382afc3687a03a1098368abcaff70d3e4b
--- /dev/null
+++ b/test/fixedbugs/issue18911.go
@@ -0,0 +1,7 @@
+// rundir
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package ignore