about summary refs log tree commit diff
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
parentaa601574a5fe861bffd641beccf59c7be3ed16c9 (diff)
downloadrust-fd5adefce11c820b5ee1045058a435aa174bccf4.tar.gz
rust-fd5adefce11c820b5ee1045058a435aa174bccf4.zip
rustdoc-json: Add tests for fn qualifiers and ABI
-rw-r--r--src/test/rustdoc-json/fn_pointer/abi.rs25
-rw-r--r--src/test/rustdoc-json/fn_pointer/header.rs5
-rw-r--r--src/test/rustdoc-json/fn_pointer/qualifiers.rs9
-rw-r--r--src/test/rustdoc-json/fns/abi.rs25
-rw-r--r--src/test/rustdoc-json/fns/header.rs22
-rw-r--r--src/test/rustdoc-json/fns/qualifiers.rs33
-rw-r--r--src/test/rustdoc-json/method_abi.rs25
-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
10 files changed, 184 insertions, 78 deletions
diff --git a/src/test/rustdoc-json/fn_pointer/abi.rs b/src/test/rustdoc-json/fn_pointer/abi.rs
new file mode 100644
index 00000000000..eef20e60a6a
--- /dev/null
+++ b/src/test/rustdoc-json/fn_pointer/abi.rs
@@ -0,0 +1,25 @@
+// ignore-tidy-linelength
+
+#![feature(abi_vectorcall)]
+#![feature(c_unwind)]
+
+// @is abi.json "$.index[*][?(@.name=='AbiRust')].inner.type.inner.header.abi" \"Rust\"
+pub type AbiRust = fn();
+
+// @is - "$.index[*][?(@.name=='AbiC')].inner.type.inner.header.abi" '{"C": {"unwind": false}}'
+pub type AbiC = extern "C" fn();
+
+// @is - "$.index[*][?(@.name=='AbiSystem')].inner.type.inner.header.abi" '{"System": {"unwind": false}}'
+pub type AbiSystem = extern "system" fn();
+
+// @is - "$.index[*][?(@.name=='AbiCUnwind')].inner.type.inner.header.abi" '{"C": {"unwind": true}}'
+pub type AbiCUnwind = extern "C-unwind" fn();
+
+// @is - "$.index[*][?(@.name=='AbiSystemUnwind')].inner.type.inner.header.abi" '{"System": {"unwind": true}}'
+pub type AbiSystemUnwind = extern "system-unwind" fn();
+
+// @is - "$.index[*][?(@.name=='AbiVecorcall')].inner.type.inner.header.abi.Other" '"\"vectorcall\""'
+pub type AbiVecorcall = extern "vectorcall" fn();
+
+// @is - "$.index[*][?(@.name=='AbiVecorcallUnwind')].inner.type.inner.header.abi.Other" '"\"vectorcall-unwind\""'
+pub type AbiVecorcallUnwind = extern "vectorcall-unwind" fn();
diff --git a/src/test/rustdoc-json/fn_pointer/header.rs b/src/test/rustdoc-json/fn_pointer/header.rs
deleted file mode 100644
index a5038e0cd2a..00000000000
--- a/src/test/rustdoc-json/fn_pointer/header.rs
+++ /dev/null
@@ -1,5 +0,0 @@
-// @has header.json "$.index[*][?(@.name=='FnPointer')].inner.type.inner.header" "[]"
-pub type FnPointer = fn();
-
-// @has - "$.index[*][?(@.name=='UnsafePointer')].inner.type.inner.header" '["unsafe"]'
-pub type UnsafePointer = unsafe fn();
diff --git a/src/test/rustdoc-json/fn_pointer/qualifiers.rs b/src/test/rustdoc-json/fn_pointer/qualifiers.rs
new file mode 100644
index 00000000000..38192208536
--- /dev/null
+++ b/src/test/rustdoc-json/fn_pointer/qualifiers.rs
@@ -0,0 +1,9 @@
+// @is qualifiers.json "$.index[*][?(@.name=='FnPointer')].inner.type.inner.header.unsafe" false
+// @is - "$.index[*][?(@.name=='FnPointer')].inner.type.inner.header.const" false
+// @is - "$.index[*][?(@.name=='FnPointer')].inner.type.inner.header.async" false
+pub type FnPointer = fn();
+
+// @is - "$.index[*][?(@.name=='UnsafePointer')].inner.type.inner.header.unsafe" true
+// @is - "$.index[*][?(@.name=='UnsafePointer')].inner.type.inner.header.const" false
+// @is - "$.index[*][?(@.name=='UnsafePointer')].inner.type.inner.header.async" false
+pub type UnsafePointer = unsafe fn();
diff --git a/src/test/rustdoc-json/fns/abi.rs b/src/test/rustdoc-json/fns/abi.rs
new file mode 100644
index 00000000000..16b57913065
--- /dev/null
+++ b/src/test/rustdoc-json/fns/abi.rs
@@ -0,0 +1,25 @@
+// ignore-tidy-linelength
+
+#![feature(abi_vectorcall)]
+#![feature(c_unwind)]
+
+// @is abi.json "$.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() {}
diff --git a/src/test/rustdoc-json/fns/header.rs b/src/test/rustdoc-json/fns/header.rs
deleted file mode 100644
index 29741dd50da..00000000000
--- a/src/test/rustdoc-json/fns/header.rs
+++ /dev/null
@@ -1,22 +0,0 @@
-// edition:2018
-
-// @has header.json "$.index[*][?(@.name=='nothing_fn')].inner.header" "[]"
-pub fn nothing_fn() {}
-
-// @has - "$.index[*][?(@.name=='const_fn')].inner.header" '["const"]'
-pub const fn const_fn() {}
-
-// @has - "$.index[*][?(@.name=='async_fn')].inner.header" '["async"]'
-pub async fn async_fn() {}
-
-// @count - "$.index[*][?(@.name=='async_unsafe_fn')].inner.header[*]" 2
-// @has - "$.index[*][?(@.name=='async_unsafe_fn')].inner.header[*]" '"async"'
-// @has - "$.index[*][?(@.name=='async_unsafe_fn')].inner.header[*]" '"unsafe"'
-pub async unsafe fn async_unsafe_fn() {}
-
-// @count - "$.index[*][?(@.name=='const_unsafe_fn')].inner.header[*]" 2
-// @has - "$.index[*][?(@.name=='const_unsafe_fn')].inner.header[*]" '"const"'
-// @has - "$.index[*][?(@.name=='const_unsafe_fn')].inner.header[*]" '"unsafe"'
-pub const unsafe fn const_unsafe_fn() {}
-
-// It's impossible for a function to be both const and async, so no test for that
diff --git a/src/test/rustdoc-json/fns/qualifiers.rs b/src/test/rustdoc-json/fns/qualifiers.rs
new file mode 100644
index 00000000000..5cb3b43e66a
--- /dev/null
+++ b/src/test/rustdoc-json/fns/qualifiers.rs
@@ -0,0 +1,33 @@
+// edition:2018
+
+// @is qualifiers.json "$.index[*][?(@.name=='nothing_fn')].inner.header.async" false
+// @is - "$.index[*][?(@.name=='nothing_fn')].inner.header.const"  false
+// @is - "$.index[*][?(@.name=='nothing_fn')].inner.header.unsafe" false
+pub fn nothing_fn() {}
+
+// @is - "$.index[*][?(@.name=='unsafe_fn')].inner.header.async"  false
+// @is - "$.index[*][?(@.name=='unsafe_fn')].inner.header.const"  false
+// @is - "$.index[*][?(@.name=='unsafe_fn')].inner.header.unsafe" true
+pub unsafe fn unsafe_fn() {}
+
+// @is - "$.index[*][?(@.name=='const_fn')].inner.header.async"  false
+// @is - "$.index[*][?(@.name=='const_fn')].inner.header.const"  true
+// @is - "$.index[*][?(@.name=='const_fn')].inner.header.unsafe" false
+pub const fn const_fn() {}
+
+// @is - "$.index[*][?(@.name=='async_fn')].inner.header.async"  true
+// @is - "$.index[*][?(@.name=='async_fn')].inner.header.const"  false
+// @is - "$.index[*][?(@.name=='async_fn')].inner.header.unsafe" false
+pub async fn async_fn() {}
+
+// @is - "$.index[*][?(@.name=='async_unsafe_fn')].inner.header.async"  true
+// @is - "$.index[*][?(@.name=='async_unsafe_fn')].inner.header.const"  false
+// @is - "$.index[*][?(@.name=='async_unsafe_fn')].inner.header.unsafe" true
+pub async unsafe fn async_unsafe_fn() {}
+
+// @is - "$.index[*][?(@.name=='const_unsafe_fn')].inner.header.async"  false
+// @is - "$.index[*][?(@.name=='const_unsafe_fn')].inner.header.const"  true
+// @is - "$.index[*][?(@.name=='const_unsafe_fn')].inner.header.unsafe" true
+pub const unsafe fn const_unsafe_fn() {}
+
+// It's impossible for a function to be both const and async, so no test for that
diff --git a/src/test/rustdoc-json/method_abi.rs b/src/test/rustdoc-json/method_abi.rs
deleted file mode 100644
index 6fabbc83611..00000000000
--- a/src/test/rustdoc-json/method_abi.rs
+++ /dev/null
@@ -1,25 +0,0 @@
-// @has method_abi.json "$.index[*][?(@.name=='Foo')]"
-pub struct Foo;
-
-impl Foo {
-    // @has - "$.index[*][?(@.name=='abi_rust')].inner.abi" '"\"Rust\""'
-    pub fn abi_rust() {}
-
-    // @has - "$.index[*][?(@.name=='abi_c')].inner.abi" '"\"C\""'
-    pub extern "C" fn abi_c() {}
-
-    // @has - "$.index[*][?(@.name=='abi_system')].inner.abi" '"\"system\""'
-    pub extern "system" fn abi_system() {}
-}
-
-// @has method_abi.json "$.index[*][?(@.name=='Bar')]"
-pub trait Bar {
-    // @has - "$.index[*][?(@.name=='trait_abi_rust')].inner.abi" '"\"Rust\""'
-    fn trait_abi_rust();
-
-    // @has - "$.index[*][?(@.name=='trait_abi_c')].inner.abi" '"\"C\""'
-    extern "C" fn trait_abi_c();
-
-    // @has - "$.index[*][?(@.name=='trait_abi_system')].inner.abi" '"\"system\""'
-    extern "system" fn trait_abi_system();
-}
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
+}