Reexport static methods on structs & enums.
Fix a small typo in a comment.
librustc: Don't require `pub extern` to make extern functions visible
Remove all uses of `pub impl`. rs=style
auto merge of #6871 : pcwalton/rust/de-pub-impl, r=pcwalton
std: fix run tests when symlink is in the rust checkout path
librustc: Have destructor run for unit-like structs.
auto merge of #6889 : luqmana/rust/unit-struct-drop, r=catamorphism

Fixes #6861
syntax: move callee_id into the expr_ variants
auto merge of #6880 : thomaslee/rust/issue-6745, r=catamorphism

This fixes #6745, which itself relates to #4202. Slightly ham-fisted -- feel particularly funny about using the typeck phase to gather the base -> impl mapping, and the separate code paths for traits vs. "real" bases feels like it could be avoided -- but it seems to work.

As always, open to suggestions if there's a better way to accomplish what I'm trying to do.

@catamorphism r?
Add test for #6861
auto merge of #6885 : erickt/rust/move-callee_id, r=catamorphism

The `callee_id` in `ast::expr` in only used in a couple expression variants. This moves the `callee_id` into those branches to make it more clear when its should be used.

Also, it fixes a bug in a std::run test when there is a symlink in the path rust where was checked out.
Refactor some hashmap code into a new private function mangle()

Add new private hashmap function

    fn mangle(&mut self,
              k: K,
              not_found: &fn(&K) -> V,
              found: &fn(&K, &mut V)) -> uint

Rewrite find_or_insert() and find_or_insert_with() on top of mangle().

Also take the opportunity to change the return type of find_or_insert()
and find_or_insert_with() to &'a mut V. This fixes #6394.
Add new function hashmap.insert_or_update_with()

fn insert_or_update_with<'a>(&'a mut self,
                             k: K,
                             f: &fn(&K, &mut V)) -> &'a V
Swap return value of pipes::init Fixes #4501
rustc: Improve astconv error message
syntax: Add an each_view_item method on traits
rustc: Call str::is_empty
rustc/rusti/rustpkg: Infer packages from `extern mod` directives

This commit won't be quite as useful until I implement RUST_PATH and
until we change `extern mod` to take a general string instead of
an identifier (#5682 and #6407).

With that said, now if you're using rustpkg and a program contains:

extern mod foo;

rustpkg will attempt to search for `foo`, so that you don't have to
provide a -L directory explicitly. In addition, rustpkg will
actually try to build and install `foo`, unless it's already
installed (specifically, I tested that `extern mod extra;` would
not cause it to try to find source for `extra` and compile it
again).

This is as per #5681.

Incidentally, I changed some driver code to infer the link name
from the crate link_meta attributes. If that change isn't ok, say
something. Also, I changed the addl_lib_search_paths field in the
session options to be an @mut ~[Path] so that it can be modified
after expansion but before later phases.
testsuite: Add an xfailed test case for the new `extern mod` syntax