diff options
| author | Alex Crichton <alex@alexcrichton.com> | 2014-09-23 15:13:56 -0700 |
|---|---|---|
| committer | Alex Crichton <alex@alexcrichton.com> | 2014-09-23 15:13:56 -0700 |
| commit | d2b30f7d3883a9f5d2e419d3d2c86cb66e9d3410 (patch) | |
| tree | 671144eff818881bd08f1b4f174aa56df9f6c590 /src/test/run-make/rustdoc-recursion | |
| parent | 7fbbfe6bf29b984275c9bc59754e8ec053838781 (diff) | |
| download | rust-d2b30f7d3883a9f5d2e419d3d2c86cb66e9d3410.tar.gz rust-d2b30f7d3883a9f5d2e419d3d2c86cb66e9d3410.zip | |
rustdoc: Prevent infinite recursion when inlining
Cyclic pub-use chains triggered infinite recursion, and this commit adds a hash set to guard against cyclic recursion. This will cause one of the reexports to render as a `pub use` instead of inlining the documentation. Closes #16274
Diffstat (limited to 'src/test/run-make/rustdoc-recursion')
| -rw-r--r-- | src/test/run-make/rustdoc-recursion/Makefile | 10 | ||||
| -rw-r--r-- | src/test/run-make/rustdoc-recursion/foo.rs | 25 |
2 files changed, 35 insertions, 0 deletions
diff --git a/src/test/run-make/rustdoc-recursion/Makefile b/src/test/run-make/rustdoc-recursion/Makefile new file mode 100644 index 00000000000..97c0385828d --- /dev/null +++ b/src/test/run-make/rustdoc-recursion/Makefile @@ -0,0 +1,10 @@ +-include ../tools.mk + +# FIXME ignore windows +ifndef IS_WINDOWS +all: + $(HOST_RPATH_ENV) $(RUSTDOC) -w html -o $(TMPDIR)/doc foo.rs +else +all: +endif + diff --git a/src/test/run-make/rustdoc-recursion/foo.rs b/src/test/run-make/rustdoc-recursion/foo.rs new file mode 100644 index 00000000000..05f11205b71 --- /dev/null +++ b/src/test/run-make/rustdoc-recursion/foo.rs @@ -0,0 +1,25 @@ +// Copyright 2012-2013 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or +// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license +// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +#![crate_type = "lib"] +#![feature(globs)] + +mod m { + pub use self::a::Foo; + + mod a { + pub struct Foo; + } + + mod b { + pub use super::*; + } +} + |
