Add tests for JSON non-inlining

This commit is contained in:
Guillaume Gomez
2022-07-15 17:48:46 +02:00
parent 3c55a26cb4
commit b95b1389c5
12 changed files with 126 additions and 24 deletions
@@ -0,0 +1,22 @@
// Regression test for <https://github.com/rust-lang/rust/issues/98007>.
#![feature(no_core)]
#![no_core]
mod auto {
mod action_row {
pub struct ActionRowBuilder;
}
#[doc(hidden)]
pub mod builders {
pub use super::action_row::ActionRowBuilder;
}
}
// @count doc_hidden_failure.json "$.index[*][?(@.name=='builders')]" 2
pub use auto::*;
pub mod builders {
pub use crate::auto::builders::*;
}
@@ -0,0 +1 @@
pub struct Foo;
@@ -3,15 +3,16 @@
#![no_core]
#![feature(no_core)]
// @!has glob_extern.json "$.index[*][?(@.name=='mod1')]"
// @is glob_extern.json "$.index[*][?(@.name=='mod1')].kind" \"module\"
// @is glob_extern.json "$.index[*][?(@.name=='mod1')].inner.is_stripped" "true"
mod mod1 {
extern "C" {
// @set public_fn_id = - "$.index[*][?(@.name=='public_fn')].id"
// @has - "$.index[*][?(@.name=='public_fn')].id"
pub fn public_fn();
// @!has - "$.index[*][?(@.name=='private_fn')]"
fn private_fn();
}
}
// @has - "$.index[*][?(@.name=='glob_extern')].inner.items[*]" $public_fn_id
// @is - "$.index[*][?(@.kind=='import')].inner.glob" true
pub use mod1::*;
+10 -5
View File
@@ -3,9 +3,11 @@
#![no_core]
#![feature(no_core)]
// @!has glob_private.json "$.index[*][?(@.name=='mod1')]"
// @is glob_private.json "$.index[*][?(@.name=='mod1')].kind" \"module\"
// @is glob_private.json "$.index[*][?(@.name=='mod1')].inner.is_stripped" "true"
mod mod1 {
// @!has - "$.index[*][?(@.name=='mod2')]"
// @is - "$.index[*][?(@.name=='mod2')].kind" \"module\"
// @is - "$.index[*][?(@.name=='mod2')].inner.is_stripped" "true"
mod mod2 {
// @set m2pub_id = - "$.index[*][?(@.name=='Mod2Public')].id"
pub struct Mod2Public;
@@ -13,15 +15,18 @@ mod mod2 {
// @!has - "$.index[*][?(@.name=='Mod2Private')]"
struct Mod2Private;
}
// @has - "$.index[*][?(@.kind=='import' && @.inner.name=='mod2')]"
pub use self::mod2::*;
// @set m1pub_id = - "$.index[*][?(@.name=='Mod1Public')].id"
pub struct Mod1Public;
// @!has - "$.index[*][?(@.name=='Mod1Private')]"
struct Mod1Private;
}
// @has - "$.index[*][?(@.kind=='import' && @.inner.name=='mod1')]"
pub use mod1::*;
// @has - "$.index[*][?(@.name=='glob_private')].inner.items[*]" $m2pub_id
// @has - "$.index[*][?(@.name=='glob_private')].inner.items[*]" $m1pub_id
// @has - "$.index[*][?(@.name=='mod2')].inner.items[*]" $m2pub_id
// @has - "$.index[*][?(@.name=='mod1')].inner.items[*]" $m1pub_id
@@ -1,15 +1,17 @@
#![feature(no_core)]
#![no_core]
// @is in_root_and_mod.json "$.index[*][?(@.name=='foo')].kind" \"module\"
// @is in_root_and_mod.json "$.index[*][?(@.name=='foo')].inner.is_stripped" "true"
mod foo {
// @set foo_id = in_root_and_mod.json "$.index[*][?(@.name=='Foo')].id"
// @has - "$.index[*][?(@.name=='Foo')]"
pub struct Foo;
}
// @has - "$.index[*][?(@.name=='in_root_and_mod')].inner.items[*]" $foo_id
// @has - "$.index[*][?(@.kind=='import' && @.inner.source=='foo::Foo')]"
pub use foo::Foo;
pub mod bar {
// @has - "$.index[*][?(@.name=='bar')].inner.items[*]" $foo_id
// @has - "$.index[*][?(@.kind=='import' && @.inner.source=='crate::foo::Foo')]"
pub use crate::foo::Foo;
}
@@ -0,0 +1,18 @@
// aux-build:pub-struct.rs
// Test for the ICE in rust/83057
// Am external type re-exported with different attributes shouldn't cause an error
#![no_core]
#![feature(no_core)]
extern crate pub_struct as foo;
#[doc(inline)]
pub use foo::Foo;
pub mod bar {
pub use foo::Foo;
}
// @count private_twice_one_inline.json "$.index[*][?(@.kind=='import')]" 2
@@ -0,0 +1,17 @@
// Test for the ICE in rust/83720
// A pub-in-private type re-exported under two different names shouldn't cause an error
#![no_core]
#![feature(no_core)]
// @is private_two_names.json "$.index[*][?(@.name=='style')].kind" \"module\"
// @is private_two_names.json "$.index[*][?(@.name=='style')].inner.is_stripped" "true"
mod style {
// @has - "$.index[*](?(@.name=='Color'))"
pub struct Color;
}
// @has - "$.index[*][?(@.kind=='import' && @.inner.name=='Color')]"
pub use style::Color;
// @has - "$.index[*][?(@.kind=='import' && @.inner.name=='Colour')]"
pub use style::Color as Colour;
@@ -2,13 +2,13 @@
#![no_core]
#![feature(no_core)]
// @!has rename_private.json "$.index[*][?(@.name=='inner')]"
// @is rename_private.json "$.index[*][?(@.name=='inner')].kind" \"module\"
// @is rename_private.json "$.index[*][?(@.name=='inner')].inner.is_stripped" "true"
mod inner {
// @!has - "$.index[*][?(@.name=='Public')]"
// @has - "$.index[*][?(@.name=='Public')]"
pub struct Public;
}
// @set newname_id = - "$.index[*][?(@.name=='NewName')].id"
// @is - "$.index[*][?(@.name=='NewName')].kind" \"struct\"
// @has - "$.index[*][?(@.name=='rename_private')].inner.items[*]" $newname_id
// @is - "$.index[*][?(@.kind=='import')].inner.name" \"NewName\"
pub use inner::Public as NewName;
@@ -1,15 +1,13 @@
// Regression test for https://github.com/rust-lang/rust/issues/97432.
// Regression test for <https://github.com/rust-lang/rust/issues/97432>.
#![feature(no_core)]
#![no_std]
#![no_core]
// @has same_type_reexported_more_than_once.json
// @set trait_id = - "$.index[*][?(@.name=='Trait')].id"
// @has - "$.index[*][?(@.name=='same_type_reexported_more_than_once')].inner.items[*]" $trait_id
// @has - "$.index[*][?(@.name=='Trait')]"
pub use inner::Trait;
// @set reexport_id = - "$.index[*][?(@.name=='Reexport')].id"
// @has - "$.index[*][?(@.name=='same_type_reexported_more_than_once')].inner.items[*]" $reexport_id
// @has - "$.index[*].inner[?(@.name=='Reexport')].id"
pub use inner::Trait as Reexport;
mod inner {
@@ -1,13 +1,15 @@
// edition:2018
#![no_core]
#![feature(no_core)]
// @!has simple_private.json "$.index[*][?(@.name=='inner')]"
// @is simple_private.json "$.index[*][?(@.name=='inner')].kind" \"module\"
// @is simple_private.json "$.index[*][?(@.name=='inner')].inner.is_stripped" "true"
mod inner {
// @set pub_id = - "$.index[*][?(@.name=='Public')].id"
pub struct Public;
}
// @has - "$.index[*][?(@.name=='simple_private')].inner.items[*]" $pub_id
// @is - "$.index[*][?(@.kind=='import')].inner.name" \"Public\"
pub use inner::Public;
// @has - "$.index[*][?(@.name=='inner')].inner.items[*]" $pub_id
+15
View File
@@ -0,0 +1,15 @@
// Regression test for <https://github.com/rust-lang/rust/issues/96161>.
// ignore-tidy-linelength
#![feature(no_core)]
#![no_core]
mod secret {
pub struct Secret;
}
// @is return_private.json "$.index[*][?(@.name=='get_secret')].kind" \"function\"
// @is return_private.json "$.index[*][?(@.name=='get_secret')].inner.decl.output.inner.name" \"secret::Secret\"
pub fn get_secret() -> secret::Secret {
secret::Secret
}
+21
View File
@@ -0,0 +1,21 @@
#![no_core]
#![feature(no_core)]
// @!has stripped_modules.json "$.index[*][?(@.name=='no_pub_inner')]"
mod no_pub_inner {
fn priv_inner() {}
}
// @!has - "$.index[*][?(@.name=='pub_inner_unreachable')]"
mod pub_inner_unreachable {
// @!has - "$.index[*][?(@.name=='pub_inner_1')]"
pub fn pub_inner_1() {}
}
// @has - "$.index[*][?(@.name=='pub_inner_reachable')]"
mod pub_inner_reachable {
// @has - "$.index[*][?(@.name=='pub_inner_2')]"
pub fn pub_inner_2() {}
}
pub use pub_inner_reachable::pub_inner_2;