diff --git a/src/librustdoc/html/format.rs b/src/librustdoc/html/format.rs index d7763197f8a3b..7af5322e7bdf1 100644 --- a/src/librustdoc/html/format.rs +++ b/src/librustdoc/html/format.rs @@ -26,6 +26,7 @@ use rustc::hir; use clean; use core::DocAccessLevels; use html::item_type::ItemType; +use html::escape::Escape; use html::render; use html::render::{cache, CURRENT_LOCATION_KEY}; @@ -496,7 +497,7 @@ impl fmt::Display for clean::Type { primitive_link(f, clean::PrimitiveType::Array, "[")?; write!(f, "{}", t)?; primitive_link(f, clean::PrimitiveType::Array, - &format!("; {}]", *s)) + &format!("; {}]", Escape(s))) } clean::Bottom => f.write_str("!"), clean::RawPointer(m, ref t) => { diff --git a/src/librustdoc/html/render.rs b/src/librustdoc/html/render.rs index 5cdddc76582b3..36da95279fb24 100644 --- a/src/librustdoc/html/render.rs +++ b/src/librustdoc/html/render.rs @@ -1866,7 +1866,7 @@ impl<'a> fmt::Display for Initializer<'a> { let Initializer(s) = *self; if s.is_empty() { return Ok(()); } write!(f, " = ")?; - write!(f, "{}", s) + write!(f, "{}", Escape(s)) } } @@ -2106,7 +2106,7 @@ fn assoc_const(w: &mut fmt::Formatter, write!(w, ": {}", ty)?; if let Some(default) = default { - write!(w, " = {}", default)?; + write!(w, " = {}", Escape(default))?; } Ok(()) } diff --git a/src/test/rustdoc/escape-rust-expr.rs b/src/test/rustdoc/escape-rust-expr.rs new file mode 100644 index 0000000000000..7f9a2bf175a5f --- /dev/null +++ b/src/test/rustdoc/escape-rust-expr.rs @@ -0,0 +1,15 @@ +// Copyright 2016 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 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +// Test that we HTML-escape Rust expressions, where HTML special chars +// can occur, and we know it's definitely not markup. + +// @has escape_rust_expr/constant.CONST_S.html '//pre[@class="rust const"]' '"