// -*- rust -*-

#[link(name = "rustc",
       vers = "0.3",
       uuid = "0ce89b41-2f92-459e-bbc1-8f5fe32f16cf",
       url = "https://github.com/mozilla/rust/tree/master/src/rustc")];

#[comment = "The Rust compiler"];
#[license = "MIT"];
#[crate_type = "lib"];

#[no_core];

#[warn(no_vecs_not_implicitly_copyable)];

use core(vers = "0.3");
use std(vers = "0.3");
use syntax(vers = "0.3");

import core::*;

/*
Alternate names for some modules.

I am using this to help extract metadata into its own crate. In metadata.rs
it redefines all these modules in order to gate access from metadata to the
rest of the compiler, then uses these to access the original implementation.
*/
import util_ = util;
import lib_ = lib;
import driver_ = driver;
import middle_ = middle;
import back_ = back;

mod middle {
    mod trans {
        mod common;
        mod type_of;
        mod build;
        mod base;
        mod alt;
        mod uniq;
        mod closure;
        mod tvec;
        mod impl;
        mod foreign;
        mod reflect;
        mod shape;
        mod debuginfo;
        mod type_use;
        mod reachable;
    }
    mod ty;
    mod resolve;
    mod resolve3;
    mod typeck {
        mod check {
            mod alt;
            mod vtable;
            mod writeback;
            mod regionmanip;
            mod regionck;
            mod demand;
            mod method;
        }
        mod rscope;
        mod astconv;
        mod infer;
        mod collect;
    }
    mod check_loop;
    mod check_alt;
    mod check_const;
    mod lint;
    mod borrowck {
        mod check_loans;
        mod gather_loans;
        mod categorization;
        mod loan;
        mod preserve;
    }
    mod liveness;
    mod block_use;
    mod kind;
    mod freevars;
    mod capture;
    mod pat_util;
    mod region;
    mod const_eval;
    mod astencode;

    mod tstate {
        mod ck;
        mod annotate;
        #[path = "auxiliary.rs"]
        mod aux;
        mod bitvectors;
        mod collect_locals;
        mod pre_post_conditions;
        mod states;
        mod ann;
        mod tritv;
    }
}

mod front {
    mod config;
    mod test;
    mod core_inject;
    mod intrinsic_inject;
}

mod back {
    mod link;
    mod abi;
    mod upcall;
    mod x86;
    mod x86_64;
    mod rpath;
    mod target_strs;
}

mod metadata {
    export encoder;
    export creader;
    export cstore;
    export csearch;
    export common;
    export decoder;
    export tyencode;
    export tydecode;
    export loader;
    export filesearch;

    mod common;
    mod tyencode;
    mod tydecode;
    mod encoder;
    mod decoder;
    mod creader;
    mod cstore;
    mod csearch;
    mod loader;
    mod filesearch;
}

mod driver {
    mod driver;
    mod session;
}

mod util {
    mod common;
    mod ppaux;
}

mod lib {
    mod llvm;
}

// Local Variables:
// fill-column: 78;
// indent-tabs-mode: nil
// c-basic-offset: 4
// buffer-file-coding-system: utf-8-unix
// End:
