Dump results of analysis phase as CSV
Adds the option -Zsave-analysis which will dump the results of syntax and type checking into CSV files. These can be interpreted by tools such as DXR to provide semantic information about Rust programs for code search, cross-reference, etc. Authored by Nick Cameron and Peter Elmers (@pelmers; including enums, type parameters/generics).
This commit is contained in:
parent
c20aed0930
commit
984e9afae5
11 changed files with 2531 additions and 37 deletions
3
src/test/run-make/save-analysis/Makefile
Normal file
3
src/test/run-make/save-analysis/Makefile
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
-include ../tools.mk
|
||||
all:
|
||||
$(RUSTC) foo.rs -Zsave-analysis
|
||||
58
src/test/run-make/save-analysis/foo.rs
Normal file
58
src/test/run-make/save-analysis/foo.rs
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
// Copyright 2014 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.
|
||||
|
||||
struct Foo {
|
||||
f: int
|
||||
}
|
||||
|
||||
impl Foo {
|
||||
fn bar(&self) -> int {
|
||||
println!("f is {}", self.f);
|
||||
self.f
|
||||
}
|
||||
}
|
||||
|
||||
trait Tr {
|
||||
fn tar(&self, x: Box<Foo>) -> Foo;
|
||||
}
|
||||
|
||||
impl Tr for Foo {
|
||||
fn tar(&self, x: Box<Foo>) -> Foo {
|
||||
Foo{ f: self.f + x.f }
|
||||
}
|
||||
}
|
||||
|
||||
trait Tr2<X, Y: Tr> {
|
||||
fn squid(&self, y: &Y, z: Self) -> Box<X>;
|
||||
}
|
||||
|
||||
impl Tr2<Foo, Foo> for Foo {
|
||||
fn squid(&self, y: &Foo, z: Foo) -> Box<Foo> {
|
||||
box Foo { f: y.f + z.f + self.f }
|
||||
}
|
||||
}
|
||||
|
||||
enum En {
|
||||
Var1,
|
||||
Var2,
|
||||
Var3(int, int, Foo)
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let x = Foo { f: 237 };
|
||||
let _f = x.bar();
|
||||
let en = Var2;
|
||||
|
||||
let _ = match en {
|
||||
Var1 => x.bar(),
|
||||
Var2 => 34,
|
||||
Var3(x, y, f) => f.bar()
|
||||
};
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue