about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2018-05-10 07:52:15 +0000
committerbors <bors@rust-lang.org>2018-05-10 07:52:15 +0000
commitc8a3ec1ce6dc12f86de39bf5ac55fc2fa38358f8 (patch)
treec2870f831a6a7edfca099b17202cff7d66f3559d /src
parent95d0b9e96795aea20ac4a1fad9251982714d3c55 (diff)
parent2c91b49fe45b71e30f3e47e185671fc75b36952f (diff)
downloadrust-c8a3ec1ce6dc12f86de39bf5ac55fc2fa38358f8.tar.gz
rust-c8a3ec1ce6dc12f86de39bf5ac55fc2fa38358f8.zip
Auto merge of #50432 - GuillaumeGomez:fix-vec-new-search, r=QuietMisdreavus
Fix rustdoc pathes search

Fixes #50086.

Depends on #50302.

r? @QuietMisdreavus
Diffstat (limited to 'src')
-rw-r--r--src/librustdoc/html/static/main.js2
-rw-r--r--src/test/rustdoc-js/pinbox-new.js20
-rw-r--r--src/test/rustdoc-js/vec-new.js19
-rw-r--r--src/tools/rustdoc-js/tester.js10
4 files changed, 48 insertions, 3 deletions
diff --git a/src/librustdoc/html/static/main.js b/src/librustdoc/html/static/main.js
index 6d80145b29c..8569abeb09c 100644
--- a/src/librustdoc/html/static/main.js
+++ b/src/librustdoc/html/static/main.js
@@ -993,7 +993,7 @@
                             Math.min(results_returned[fullId].lev, returned);
                     }
                     if (index !== -1 || lev <= MAX_LEV_DISTANCE) {
-                        if (index !== -1) {
+                        if (index !== -1 && paths.length < 2) {
                             lev = 0;
                         }
                         if (results[fullId] === undefined) {
diff --git a/src/test/rustdoc-js/pinbox-new.js b/src/test/rustdoc-js/pinbox-new.js
new file mode 100644
index 00000000000..061c7b30741
--- /dev/null
+++ b/src/test/rustdoc-js/pinbox-new.js
@@ -0,0 +1,20 @@
+// Copyright 2018 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+// exact-check
+
+const QUERY = 'pinbox::new';
+
+const EXPECTED = {
+    'others': [
+        { 'path': 'std::boxed::PinBox', 'name': 'new' },
+        { 'path': 'alloc::boxed::PinBox', 'name': 'new' },
+    ],
+};
diff --git a/src/test/rustdoc-js/vec-new.js b/src/test/rustdoc-js/vec-new.js
new file mode 100644
index 00000000000..702953e2e9d
--- /dev/null
+++ b/src/test/rustdoc-js/vec-new.js
@@ -0,0 +1,19 @@
+// Copyright 2018 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+const QUERY = 'Vec::new';
+
+const EXPECTED = {
+    'others': [
+        { 'path': 'std::vec::Vec', 'name': 'new' },
+        { 'path': 'std::vec::Vec', 'name': 'ne' },
+        { 'path': 'std::boxed::PinBox', 'name': 'new' },
+    ],
+};
diff --git a/src/tools/rustdoc-js/tester.js b/src/tools/rustdoc-js/tester.js
index 1c79443dedf..25f7a2d1294 100644
--- a/src/tools/rustdoc-js/tester.js
+++ b/src/tools/rustdoc-js/tester.js
@@ -88,6 +88,7 @@ function loadContent(content) {
     var m = new Module();
     m._compile(content, "tmp.js");
     m.exports.ignore_order = content.indexOf("\n// ignore-order\n") !== -1;
+    m.exports.exact_check = content.indexOf("\n// exact-check\n") !== -1;
     return m.exports;
 }
 
@@ -179,6 +180,7 @@ function main(argv) {
         const expected = loadedFile.EXPECTED;
         const query = loadedFile.QUERY;
         const ignore_order = loadedFile.ignore_order;
+        const exact_check = loadedFile.exact_check;
         var results = loaded.execSearch(loaded.getQuery(query), index);
         process.stdout.write('Checking "' + file + '" ... ');
         var error_text = [];
@@ -191,13 +193,17 @@ function main(argv) {
                 break;
             }
             var entry = expected[key];
-            var prev_pos = 0;
+            var prev_pos = -1;
             for (var i = 0; i < entry.length; ++i) {
                 var entry_pos = lookForEntry(entry[i], results[key]);
                 if (entry_pos === null) {
                     error_text.push("==> Result not found in '" + key + "': '" +
                                     JSON.stringify(entry[i]) + "'");
-                } else if (entry_pos < prev_pos && ignore_order === false) {
+                } else if (exact_check === true && prev_pos + 1 !== entry_pos) {
+                    error_text.push("==> Exact check failed at position " + (prev_pos + 1) + ": " +
+                                    "expected '" + JSON.stringify(entry[i]) + "' but found '" +
+                                    JSON.stringify(results[key][i]) + "'");
+                } else if (ignore_order === false && entry_pos < prev_pos) {
                     error_text.push("==> '" + JSON.stringify(entry[i]) + "' was supposed to be " +
                                     " before '" + JSON.stringify(results[key][entry_pos]) + "'");
                 } else {