]>
git.proxmox.com Git - rustc.git/blob - src/libsyntax/show_span.rs
3 //! This module shows spans for all expressions in the crate
4 //! to help with compiler debugging.
10 use crate::visit
::Visitor
;
18 impl FromStr
for Mode
{
20 fn from_str(s
: &str) -> Result
<Mode
, ()> {
22 "expr" => Mode
::Expression
,
23 "pat" => Mode
::Pattern
,
31 struct ShowSpanVisitor
<'a
> {
32 span_diagnostic
: &'a errors
::Handler
,
36 impl<'a
> Visitor
<'a
> for ShowSpanVisitor
<'a
> {
37 fn visit_expr(&mut self, e
: &'a ast
::Expr
) {
38 if let Mode
::Expression
= self.mode
{
39 self.span_diagnostic
.span_warn(e
.span
, "expression");
41 visit
::walk_expr(self, e
);
44 fn visit_pat(&mut self, p
: &'a ast
::Pat
) {
45 if let Mode
::Pattern
= self.mode
{
46 self.span_diagnostic
.span_warn(p
.span
, "pattern");
48 visit
::walk_pat(self, p
);
51 fn visit_ty(&mut self, t
: &'a ast
::Ty
) {
52 if let Mode
::Type
= self.mode
{
53 self.span_diagnostic
.span_warn(t
.span
, "type");
55 visit
::walk_ty(self, t
);
58 fn visit_mac(&mut self, mac
: &'a ast
::Mac
) {
59 visit
::walk_mac(self, mac
);
63 pub fn run(span_diagnostic
: &errors
::Handler
,
66 let mode
= match mode
.parse().ok() {
70 let mut v
= ShowSpanVisitor
{
74 visit
::walk_crate(&mut v
, krate
);