diff --git a/src/librustdoc/html/static/js/search.js b/src/librustdoc/html/static/js/search.js
index d419e384a59..971bd3930cf 100644
--- a/src/librustdoc/html/static/js/search.js
+++ b/src/librustdoc/html/static/js/search.js
@@ -152,16 +152,26 @@ window.initSearch = function(rawSearchIndex) {
removeEmptyStringsFromArray(split);
function transformResults(results) {
+ var duplicates = {};
var out = [];
+
for (var i = 0, len = results.length; i < len; ++i) {
- if (results[i].id > -1) {
- var obj = searchIndex[results[i].id];
- obj.lev = results[i].lev;
+ var result = results[i];
+
+ if (result.id > -1) {
+ var obj = searchIndex[result.id];
+ obj.lev = result.lev;
var res = buildHrefAndPath(obj);
obj.displayPath = pathSplitter(res[0]);
obj.fullPath = obj.displayPath + obj.name;
// To be sure than it some items aren't considered as duplicate.
obj.fullPath += "|" + obj.ty;
+
+ if (duplicates[obj.fullPath]) {
+ continue;
+ }
+ duplicates[obj.fullPath] = true;
+
obj.href = res[1];
out.push(obj);
if (out.length >= MAX_RESULTS) {
@@ -971,19 +981,11 @@ window.initSearch = function(rawSearchIndex) {
}
var output = document.createElement("div");
- var duplicates = {};
var length = 0;
if (array.length > 0) {
output.className = "search-results " + extraClass;
array.forEach(function(item) {
- if (item.is_alias !== true) {
- if (duplicates[item.fullPath]) {
- return;
- }
- duplicates[item.fullPath] = true;
- }
-
var name = item.name;
var type = itemTypes[item.ty];