rustdoc-json: Add tests for fn qualifiers and ABI
This commit is contained in:
parent
aa601574a5
commit
fd5adefce1
25
src/test/rustdoc-json/fn_pointer/abi.rs
Normal file
25
src/test/rustdoc-json/fn_pointer/abi.rs
Normal file
@ -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();
|
@ -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();
|
9
src/test/rustdoc-json/fn_pointer/qualifiers.rs
Normal file
9
src/test/rustdoc-json/fn_pointer/qualifiers.rs
Normal file
@ -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();
|
25
src/test/rustdoc-json/fns/abi.rs
Normal file
25
src/test/rustdoc-json/fns/abi.rs
Normal file
@ -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() {}
|
@ -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
|
33
src/test/rustdoc-json/fns/qualifiers.rs
Normal file
33
src/test/rustdoc-json/fns/qualifiers.rs
Normal file
@ -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
|
@ -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();
|
||||
}
|
55
src/test/rustdoc-json/methods/abi.rs
Normal file
55
src/test/rustdoc-json/methods/abi.rs
Normal file
@ -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() {}
|
||||
}
|
@ -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
|
||||
}
|
37
src/test/rustdoc-json/methods/qualifiers.rs
Normal file
37
src/test/rustdoc-json/methods/qualifiers.rs
Normal file
@ -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
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user