about summary refs log tree commit diff
path: root/tests/rustdoc-js-std
diff options
context:
space:
mode:
authorMichael Howell <michael@notriddle.com>2024-09-24 18:18:01 -0700
committerMichael Howell <michael@notriddle.com>2024-10-30 12:27:48 -0700
commit12dc24f46007f82b93ed85614347a42d47580afa (patch)
tree9982abfa57e7b6e6c6548c0e98e9eace563e8363 /tests/rustdoc-js-std
parent20a4b4fea1e5f3005973ae1391b039722d207119 (diff)
downloadrust-12dc24f46007f82b93ed85614347a42d47580afa.tar.gz
rust-12dc24f46007f82b93ed85614347a42d47580afa.zip
rustdoc-search: simplify rules for generics and type params
This commit is a response to feedback on the displayed type
signatures results, by making generics act stricter.

Generics are tightened by making order significant. This means
`Vec<Allocator>` now matches only with a true vector of allocators,
instead of matching the second type param. It also makes unboxing
within generics stricter, so `Result<A, B>` only matches if `B`
is in the error type and `A` is in the success type. The top level
of the function search is unaffected.

Find the discussion on:

* <https://rust-lang.zulipchat.com/#narrow/stream/393423-t-rustdoc.2Fmeetings/topic/meeting.202024-07-08/near/449965149>
* <https://github.com/rust-lang/rust/pull/124544#issuecomment-2204272265>
* <https://rust-lang.zulipchat.com/#narrow/channel/266220-t-rustdoc/topic/deciding.20on.20semantics.20of.20generics.20in.20rustdoc.20search/near/476841363>
Diffstat (limited to 'tests/rustdoc-js-std')
-rw-r--r--tests/rustdoc-js-std/bufread-fill-buf.js11
-rw-r--r--tests/rustdoc-js-std/option-type-signatures.js31
-rw-r--r--tests/rustdoc-js-std/vec-type-signatures.js12
3 files changed, 25 insertions, 29 deletions
diff --git a/tests/rustdoc-js-std/bufread-fill-buf.js b/tests/rustdoc-js-std/bufread-fill-buf.js
index 3828cf76026..6b9309f6864 100644
--- a/tests/rustdoc-js-std/bufread-fill-buf.js
+++ b/tests/rustdoc-js-std/bufread-fill-buf.js
@@ -2,12 +2,15 @@
 
 const EXPECTED = [
     {
-        'query': 'bufread -> result<u8>',
+        'query': 'bufread -> result<[u8]>',
         'others': [
-            { 'path': 'std::io::Split', 'name': 'next' },
             { 'path': 'std::boxed::Box', 'name': 'fill_buf' },
-            { 'path': 'std::io::Chain', 'name': 'fill_buf' },
-            { 'path': 'std::io::Take', 'name': 'fill_buf' },
+        ],
+    },
+    {
+        'query': 'split<bufread> -> option<result<vec<u8>>>',
+        'others': [
+            { 'path': 'std::io::Split', 'name': 'next' },
         ],
     },
 ];
diff --git a/tests/rustdoc-js-std/option-type-signatures.js b/tests/rustdoc-js-std/option-type-signatures.js
index 1690d5dc8b5..3be18e6adf3 100644
--- a/tests/rustdoc-js-std/option-type-signatures.js
+++ b/tests/rustdoc-js-std/option-type-signatures.js
@@ -80,11 +80,6 @@ const EXPECTED = [
                 'name': 'and',
                 'displayType': '`Option`<`T`>, `Option`<`U`> -> `Option`<`U`>',
             },
-            {
-                'path': 'std::option::Option',
-                'name': 'zip',
-                'displayType': '`Option`<`T`>, `Option`<`U`> -> `Option`<(T, `U`)>',
-            },
         ],
     },
     {
@@ -103,12 +98,12 @@ const EXPECTED = [
         ],
     },
     {
-        'query': 'option<t>, option<u> -> option<t, u>',
+        'query': 'option<t>, option<u> -> option<(t, u)>',
         'others': [
             {
                 'path': 'std::option::Option',
                 'name': 'zip',
-                'displayType': '`Option`<`T`>, `Option`<`U`> -> `Option`<(`T`, `U`)>',
+                'displayType': '`Option`<`T`>, `Option`<`U`> -> `Option`<`(T`, `U)`>',
             },
         ],
     },
@@ -174,37 +169,23 @@ const EXPECTED = [
                 'path': 'std::option::Option',
                 'name': 'map',
                 'displayType': '`Option`<`T`>, F -> `Option`<U>',
-                'displayMappedNames': `T = t, U = u`,
+                'displayMappedNames': `t = T, u = U`,
                 'displayWhereClause': "F: `FnOnce` (T) -> `U`",
             },
             {
                 'path': 'std::option::Option',
                 'name': 'and_then',
                 'displayType': '`Option`<`T`>, F -> `Option`<U>',
-                'displayMappedNames': `T = t, U = u`,
+                'displayMappedNames': `t = T, u = U`,
                 'displayWhereClause': "F: `FnOnce` (T) -> Option<`U`>",
             },
             {
                 'path': 'std::option::Option',
                 'name': 'zip_with',
                 'displayType': 'Option<T>, `Option`<`U`>, F -> `Option`<R>',
-                'displayMappedNames': `U = t, R = u`,
+                'displayMappedNames': `t = U, u = R`,
                 'displayWhereClause': "F: `FnOnce` (T, U) -> `R`",
             },
-            {
-                'path': 'std::task::Poll',
-                'name': 'map_ok',
-                'displayType': 'Poll<`Option`<Result<`T`, E>>>, F -> Poll<`Option`<Result<U, E>>>',
-                'displayMappedNames': `T = t, U = u`,
-                'displayWhereClause': "F: `FnOnce` (T) -> `U`",
-            },
-            {
-                'path': 'std::task::Poll',
-                'name': 'map_err',
-                'displayType': 'Poll<`Option`<Result<`T`, E>>>, F -> Poll<`Option`<Result<T, U>>>',
-                'displayMappedNames': `T = t, U = u`,
-                'displayWhereClause': "F: `FnOnce` (E) -> `U`",
-            },
         ],
     },
     {
@@ -214,7 +195,7 @@ const EXPECTED = [
                 'path': 'std::option::Option',
                 'name': 'and_then',
                 'displayType': '`Option`<`T`>, F -> `Option`<U>',
-                'displayMappedNames': `T = t, U = u`,
+                'displayMappedNames': `t = T, u = U`,
                 'displayWhereClause': "F: `FnOnce` (T) -> `Option`<`U`>",
             },
         ],
diff --git a/tests/rustdoc-js-std/vec-type-signatures.js b/tests/rustdoc-js-std/vec-type-signatures.js
index 18cf9d6efd0..3c2ff30a833 100644
--- a/tests/rustdoc-js-std/vec-type-signatures.js
+++ b/tests/rustdoc-js-std/vec-type-signatures.js
@@ -19,4 +19,16 @@ const EXPECTED = [
             { 'path': 'std::vec::IntoIter', 'name': 'next_chunk' },
         ],
     },
+    {
+        'query': 'vec<T, Allocator> -> Box<[T]>',
+        'others': [
+            {
+                'path': 'std::boxed::Box',
+                'name': 'from',
+                'displayType': '`Vec`<`T`, `A`> -> `Box`<`[T]`, A>',
+                'displayMappedNames': `T = T`,
+                'displayWhereClause': 'A: `Allocator`',
+            },
+        ],
+    },
 ];