about summary refs log tree commit diff
path: root/src/libregex
diff options
context:
space:
mode:
authorAlex Crichton <alex@alexcrichton.com>2014-05-16 14:23:04 -0700
committerAlex Crichton <alex@alexcrichton.com>2014-05-17 01:01:47 -0700
commit4e9e091e91ea2ad8a6f45a9b20ff331d4bca7a23 (patch)
treec01cb3c61732225abd28d5eb8991537ca7ad30b5 /src/libregex
parent25c54226c3e7dd6f59cf2e92238a4d79d8b0128d (diff)
downloadrust-4e9e091e91ea2ad8a6f45a9b20ff331d4bca7a23.tar.gz
rust-4e9e091e91ea2ad8a6f45a9b20ff331d4bca7a23.zip
syntax: Tighten search paths for inner modules
This is an implementation of RFC 16. A module can now only be loaded if the
module declaring `mod name;` "owns" the current directory. A module is
considered as owning its directory if it meets one of the following criteria:

* It is the top-level crate file
* It is a `mod.rs` file
* It was loaded via `#[path]`
* It was loaded via `include!`
* The module was declared via an inline `mod foo { ... }` statement

For example, this directory structure is now invalid

    // lib.rs
    mod foo;

    // foo.rs
    mod bar;

    // bar.rs;
    fn bar() {}

With this change `foo.rs` must be renamed to `foo/mod.rs`, and `bar.rs` must be
renamed to `foo/bar.rs`. This makes it clear that `bar` is a submodule of `foo`,
and can only be accessed through `foo`.

RFC: 0016-module-file-system-hierarchy
Closes #14180

[breaking-change]
Diffstat (limited to 'src/libregex')
-rw-r--r--src/libregex/parse/mod.rs (renamed from src/libregex/parse.rs)0
-rw-r--r--src/libregex/parse/unicode.rs (renamed from src/libregex/unicode.rs)0
2 files changed, 0 insertions, 0 deletions
diff --git a/src/libregex/parse.rs b/src/libregex/parse/mod.rs
index a695da9fa16..a695da9fa16 100644
--- a/src/libregex/parse.rs
+++ b/src/libregex/parse/mod.rs
diff --git a/src/libregex/unicode.rs b/src/libregex/parse/unicode.rs
index c263827dab8..c263827dab8 100644
--- a/src/libregex/unicode.rs
+++ b/src/libregex/parse/unicode.rs