about summary refs log tree commit diff
path: root/src/test/rustdoc-json/methods
diff options
context:
space:
mode:
authorNixon Enraght-Moony <nixon.emoony@gmail.com>2022-02-18 23:32:37 +0000
committerNixon Enraght-Moony <nixon.emoony@gmail.com>2022-02-18 23:48:41 +0000
commitfd5adefce11c820b5ee1045058a435aa174bccf4 (patch)
treee48641d7128babdf0e556b3bfe13df9dc140b081 /src/test/rustdoc-json/methods
parentaa601574a5fe861bffd641beccf59c7be3ed16c9 (diff)
downloadrust-fd5adefce11c820b5ee1045058a435aa174bccf4.tar.gz
rust-fd5adefce11c820b5ee1045058a435aa174bccf4.zip
rustdoc-json: Add tests for fn qualifiers and ABI
Diffstat (limited to 'src/test/rustdoc-json/methods')
-rw-r--r--src/test/rustdoc-json/methods/abi.rs55
-rw-r--r--src/test/rustdoc-json/methods/header.rs26
-rw-r--r--src/test/rustdoc-json/methods/qualifiers.rs37
3 files changed, 92 insertions, 26 deletions
diff --git a/src/test/rustdoc-json/methods/abi.rs b/src/test/rustdoc-json/methods/abi.rs
new file mode 100644
index 00000000000..07b01d03bf6
--- /dev/null
+++ b/src/test/rustdoc-json/methods/abi.rs
@@ -0,0 +1,55 @@
+// ignore-tidy-linelength
+
+#![feature(abi_vectorcall)]
+#![feature(c_unwind)]
+#![feature(no_core)]
+#![no_core]
+
+// @has abi.json "$.index[*][?(@.name=='Foo')]"
+pub struct Foo;
+
+impl Foo {
+    // @is - "$.index[*][?(@.name=='abi_rust')].inner.header.abi" \"Rust\"
+    pub fn abi_rust() {}
+
+    // @is - "$.index[*][?(@.name=='abi_c')].inner.header.abi" '{"C": {"unwind": false}}'
+    pub extern "C" fn abi_c() {}
+
+    // @is - "$.index[*][?(@.name=='abi_system')].inner.header.abi" '{"System": {"unwind": false}}'
+    pub extern "system" fn abi_system() {}
+
+    // @is - "$.index[*][?(@.name=='abi_c_unwind')].inner.header.abi" '{"C": {"unwind": true}}'
+    pub extern "C-unwind" fn abi_c_unwind() {}
+
+    // @is - "$.index[*][?(@.name=='abi_system_unwind')].inner.header.abi" '{"System": {"unwind": true}}'
+    pub extern "system-unwind" fn abi_system_unwind() {}
+
+    // @is - "$.index[*][?(@.name=='abi_vectorcall')].inner.header.abi.Other" '"\"vectorcall\""'
+    pub extern "vectorcall" fn abi_vectorcall() {}
+
+    // @is - "$.index[*][?(@.name=='abi_vectorcall_unwind')].inner.header.abi.Other" '"\"vectorcall-unwind\""'
+    pub extern "vectorcall-unwind" fn abi_vectorcall_unwind() {}
+}
+
+pub trait Bar {
+    // @is - "$.index[*][?(@.name=='trait_abi_rust')].inner.header.abi" \"Rust\"
+    fn trait_abi_rust() {}
+
+    // @is - "$.index[*][?(@.name=='trait_abi_c')].inner.header.abi" '{"C": {"unwind": false}}'
+    extern "C" fn trait_abi_c() {}
+
+    // @is - "$.index[*][?(@.name=='trait_abi_system')].inner.header.abi" '{"System": {"unwind": false}}'
+    extern "system" fn trait_abi_system() {}
+
+    // @is - "$.index[*][?(@.name=='trait_abi_c_unwind')].inner.header.abi" '{"C": {"unwind": true}}'
+    extern "C-unwind" fn trait_abi_c_unwind() {}
+
+    // @is - "$.index[*][?(@.name=='trait_abi_system_unwind')].inner.header.abi" '{"System": {"unwind": true}}'
+    extern "system-unwind" fn trait_abi_system_unwind() {}
+
+    // @is - "$.index[*][?(@.name=='trait_abi_vectorcall')].inner.header.abi.Other" '"\"vectorcall\""'
+    extern "vectorcall" fn trait_abi_vectorcall() {}
+
+    // @is - "$.index[*][?(@.name=='trait_abi_vectorcall_unwind')].inner.header.abi.Other" '"\"vectorcall-unwind\""'
+    extern "vectorcall-unwind" fn trait_abi_vectorcall_unwind() {}
+}
diff --git a/src/test/rustdoc-json/methods/header.rs b/src/test/rustdoc-json/methods/header.rs
deleted file mode 100644
index 50a3db75ef3..00000000000
--- a/src/test/rustdoc-json/methods/header.rs
+++ /dev/null
@@ -1,26 +0,0 @@
-// edition:2018
-
-pub struct Foo;
-
-impl Foo {
-    // @has header.json "$.index[*][?(@.name=='nothing_meth')].inner.header" "[]"
-    pub fn nothing_meth() {}
-
-    // @has - "$.index[*][?(@.name=='const_meth')].inner.header" '["const"]'
-    pub const fn const_meth() {}
-
-    // @has - "$.index[*][?(@.name=='async_meth')].inner.header" '["async"]'
-    pub async fn async_meth() {}
-
-    // @count - "$.index[*][?(@.name=='async_unsafe_meth')].inner.header[*]" 2
-    // @has - "$.index[*][?(@.name=='async_unsafe_meth')].inner.header[*]" '"async"'
-    // @has - "$.index[*][?(@.name=='async_unsafe_meth')].inner.header[*]" '"unsafe"'
-    pub async unsafe fn async_unsafe_meth() {}
-
-    // @count - "$.index[*][?(@.name=='const_unsafe_meth')].inner.header[*]" 2
-    // @has - "$.index[*][?(@.name=='const_unsafe_meth')].inner.header[*]" '"const"'
-    // @has - "$.index[*][?(@.name=='const_unsafe_meth')].inner.header[*]" '"unsafe"'
-    pub const unsafe fn const_unsafe_meth() {}
-
-    // It's impossible for a method to be both const and async, so no test for that
-}
diff --git a/src/test/rustdoc-json/methods/qualifiers.rs b/src/test/rustdoc-json/methods/qualifiers.rs
new file mode 100644
index 00000000000..af36d36b660
--- /dev/null
+++ b/src/test/rustdoc-json/methods/qualifiers.rs
@@ -0,0 +1,37 @@
+// edition:2018
+
+pub struct Foo;
+
+impl Foo {
+    // @is qualifiers.json "$.index[*][?(@.name=='const_meth')].inner.header.async" false
+    // @is - "$.index[*][?(@.name=='const_meth')].inner.header.const"  true
+    // @is - "$.index[*][?(@.name=='const_meth')].inner.header.unsafe" false
+    pub const fn const_meth() {}
+
+    // @is - "$.index[*][?(@.name=='nothing_meth')].inner.header.async"  false
+    // @is - "$.index[*][?(@.name=='nothing_meth')].inner.header.const"  false
+    // @is - "$.index[*][?(@.name=='nothing_meth')].inner.header.unsafe" false
+    pub fn nothing_meth() {}
+
+    // @is - "$.index[*][?(@.name=='unsafe_meth')].inner.header.async"  false
+    // @is - "$.index[*][?(@.name=='unsafe_meth')].inner.header.const"  false
+    // @is - "$.index[*][?(@.name=='unsafe_meth')].inner.header.unsafe" true
+    pub unsafe fn unsafe_meth() {}
+
+    // @is - "$.index[*][?(@.name=='async_meth')].inner.header.async"  true
+    // @is - "$.index[*][?(@.name=='async_meth')].inner.header.const"  false
+    // @is - "$.index[*][?(@.name=='async_meth')].inner.header.unsafe" false
+    pub async fn async_meth() {}
+
+    // @is - "$.index[*][?(@.name=='async_unsafe_meth')].inner.header.async"  true
+    // @is - "$.index[*][?(@.name=='async_unsafe_meth')].inner.header.const"  false
+    // @is - "$.index[*][?(@.name=='async_unsafe_meth')].inner.header.unsafe" true
+    pub async unsafe fn async_unsafe_meth() {}
+
+    // @is - "$.index[*][?(@.name=='const_unsafe_meth')].inner.header.async"  false
+    // @is - "$.index[*][?(@.name=='const_unsafe_meth')].inner.header.const"  true
+    // @is - "$.index[*][?(@.name=='const_unsafe_meth')].inner.header.unsafe" true
+    pub const unsafe fn const_unsafe_meth() {}
+
+    // It's impossible for a method to be both const and async, so no test for that
+}