Commit Graph

836 Commits

Author SHA1 Message Date
Niko Matsakis
2ba5fac1a4 fix rebase flaws 2016-05-02 11:49:26 -04:00
Niko Matsakis
489a6c95bf replace fileline_{help,note} with {help,note}
The extra filename and line was mainly there to keep the indentation
relative to the main snippet; now that this doesn't include
filename/line-number as a prefix, it is distracted.
2016-05-02 11:49:23 -04:00
Jeffrey Seyfried
a70e42a953 Remove use of ast_map.expect_item() and improve diagnostics (fixes #33186) 2016-04-29 18:34:49 +00:00
Jeffrey Seyfried
5a4e0b14e3 Remove use of ast_map.span_if_local() and improve diagnostics 2016-04-29 18:34:40 +00:00
Jeffrey Seyfried
60c8f7dbf5 Revert #27493 2016-04-29 18:34:13 +00:00
Jeffrey Seyfried
ac264196e2 Address style nits 2016-04-28 03:43:35 +00:00
Jeffrey Seyfried
6aa9145753 Avoid using the hir map when visibility checking in resolve
Refactor `ty::Visibility` methods to use a new trait `NodeIdTree` instead of the ast map.
2016-04-27 06:40:54 +00:00
Jeffrey Seyfried
33bb26998c Refactor away a use of ast_map.span_if_local() 2016-04-27 06:40:52 +00:00
Jeffrey Seyfried
3bcf818a8f Refactor resolve_crate_relative_path and resolve_module_relative_path
to return a `NameBinding` instead of a `Def`
2016-04-27 01:13:22 +00:00
Jeffrey Seyfried
6da115374f Refactor away get_trait_name 2016-04-27 01:13:22 +00:00
Jeffrey Seyfried
82e0dd5ac1 Refactor away is_static_method 2016-04-27 01:13:22 +00:00
Jeffrey Seyfried
2ccaeed50e Refactor away FallbackChecks and remove dead code 2016-04-27 01:13:21 +00:00
Jeffrey Seyfried
c9d8e1493c Refactor field span of NameBinding from Option<Span> to Span. 2016-04-27 01:13:15 +00:00
Jeffrey Seyfried
c46164b626 Refactor away field vis of ModuleS 2016-04-26 09:01:24 +00:00
Vadim Petrochenkov
6c44bea644 syntax: Check paths in visibilities for type parameters
syntax: Merge PathParsingMode::NoTypesAllowed and PathParsingMode::ImportPrefix
syntax: Rename PathParsingMode and its variants to better express their purpose
syntax: Remove obsolete error message about 'self lifetime
syntax: Remove ALLOW_MODULE_PATHS workaround
syntax/resolve: Adjust some error messages
resolve: Compare unhygienic (not renamed) names with keywords::Invalid, invalid identifiers may appear to be valid after renaming
2016-04-24 20:59:44 +03:00
Vadim Petrochenkov
e2c821d35e syntax: Make static/super/self/Self keywords + special ident cleanup 2016-04-24 20:59:44 +03:00
bors
c2aaad4e22 Auto merge of #33060 - jseyfried:cleanup_resolve, r=nrc
resolve: miscellaneous clean-ups

This PR consists of some small, miscellaneous clean-ups in `resolve`.
r? @eddyb
2016-04-19 08:02:59 -07:00
Jeffrey Seyfried
6ae80273a0 resolve: improve performance 2016-04-18 02:01:57 +00:00
Jeffrey Seyfried
b01e63009f Refactor the per-module node map module_children into a per-resolver map. 2016-04-17 23:48:13 +00:00
Jeffrey Seyfried
5b12832012 Make import resolution and error resolution reporting deterministic.
These tasks used to depend on the iteration order of `module_children`.
2016-04-17 23:48:11 +00:00
Manish Goregaokar
e1db767dbc Rollup merge of #33046 - jseyfried:fix_unresolved_pattern_diagnostics, r=eddyb
Fix diagnostics for unresolved patterns

This fixes #33043, a bug in the diagnostics for unresolved patterns.
r? @eddyb
2016-04-17 17:50:35 +05:30
Jeffrey Seyfried
2c978dc80b resolve: Refactor away DefModifiers 2016-04-17 02:54:22 +00:00
Jeffrey Seyfried
1a374b8d11 Fix diagnostics for unresolved patterns 2016-04-17 02:42:39 +00:00
Jeffrey Seyfried
0833a89a3e resolve: refactor away PRIVATE_VARIANT and ensure that restricted
reexports of private variants are handled correctly.
2016-04-14 04:58:32 +00:00
Jeffrey Seyfried
a0c3ce3424 resolve: use the Restricted variant of ty::Visibility when privacy checking 2016-04-14 04:57:33 +00:00
Jeffrey Seyfried
a4196cd490 resolve: Use vis: ty::Visibility instead of is_public: bool 2016-04-14 04:56:21 +00:00
Manish Goregaokar
b0f81a3595 Rollup merge of #32789 - jseyfried:fix_duplicate_resolve_errors, r=eddyb
resolve: Avoid emitting redundant path resolution errors

This PR avoids emitting redundant path resolution errors in `resolve` (fixes #32760).

r? @eddyb
2016-04-07 20:22:43 +05:30
Jeffrey Seyfried
07dac9732d Fix tidy errors 2016-04-07 05:48:46 +00:00
Jeffrey Seyfried
20ee53c2f1 Improve path resolution diagnostics 2016-04-07 03:55:20 +00:00
Eduard Burtescu
20f0f3c1f1 rustc: move some maps from ty to hir. 2016-04-06 09:14:21 +03:00
Eduard Burtescu
ffca6c3e15 rustc: move middle::{def,def_id,pat_util} to hir. 2016-04-06 09:14:21 +03:00
Eduard Burtescu
ef4c7241f8 rustc: dismantle hir::util, mostly moving functions to methods. 2016-04-06 09:01:55 +03:00
Eduard Burtescu
8b0937293b rustc: move rustc_front to rustc::hir. 2016-04-06 09:01:55 +03:00
bors
7fd331e166 Auto merge of #32328 - jseyfried:coherence, r=nikomatsakis
resolve: Improve import failure detection and lay groundwork for RFC 1422

This PR improves import failure detection and lays some groundwork for RFC 1422.
More specifically, it
 - Avoids recomputing the resolution of an import directive's module path.
 - Refactors code in `resolve_imports` that does not scale to the arbitrarily many levels of visibility that will be required by RFC 1422.
  - Replaces `ModuleS`'s fields `public_glob_count`, `private_glob_count`, and `resolved_globs` with a list of glob import directives `globs`.
  - Replaces `NameResolution`'s fields `pub_outstanding_references` and `outstanding_references` with a field `single_imports` of a newly defined type `SingleImports`.
 - Improves import failure detection by detecting cycles that include single imports (currently, only cycles of globs are detected). This fixes #32119.

r? @nikomatsakis
2016-04-04 21:50:05 -07:00
Benjamin Herr
d05f726eed librustc_resolve: use bug!(), span_bug!() 2016-03-31 22:06:52 +02:00
Jeffrey Seyfried
3d9db59566 Detect cycles that include renamed imports 2016-03-30 23:50:19 +00:00
Jeffrey Seyfried
5ff21f138a Refactor ModuleS fields public_glob_count, private_glob_count, and
`resolved_globs` into a single field `globs: RefCell<Vec<ImportDirective>>`.
2016-03-27 03:53:42 +00:00
Jeffrey Seyfried
fc06ea5f9c Add a type parameter to ImportDirective 2016-03-27 03:53:23 +00:00
Eduard Burtescu
5efdde0de1 rustc: move cfg, infer, traits and ty from middle to top-level. 2016-03-27 01:05:54 +02:00
Eduard Burtescu
5647586ed3 rustc: move middle::subst into middle::ty. 2016-03-27 01:05:53 +02:00
Jeffrey Seyfried
e011ae5ea9 Cleanup trait search 2016-03-26 18:23:57 +00:00
Jeffrey Seyfried
60a836fc93 Remove unnecessary pubs 2016-03-26 18:23:56 +00:00
Jeffrey Seyfried
3e7a22e3bc Remove outdated comment 2016-03-26 18:23:55 +00:00
Jeffrey Seyfried
4b6b506ef4 Improve the error message for paths with too many initial supers 2016-03-26 18:23:54 +00:00
Jeffrey Seyfried
bb09ae28c0 Refactor away resolve_name_in_lexical_scope and resolve_identifier_in_local_ribs. 2016-03-26 18:23:45 +00:00
Jeffrey Seyfried
73417853e4 Refactor out the common functionality of
`resolve_item_in_lexical_scope` and `resolve_identifier_in_local_ribs` into
a new function `resolve_ident_in_lexical_scope`.
2016-03-26 18:22:42 +00:00
Jeffrey Seyfried
07fecf8098 Replace uses of DefLike with Def (only the DlDef variant of DefLike was being used) 2016-03-26 18:22:41 +00:00
Jeffrey Seyfried
1744f55ad7 Refactor away GraphBuilder 2016-03-26 18:22:40 +00:00
Jeffrey Seyfried
0bed9aea2d Make populate_module_if_necessary a method of resolver 2016-03-26 18:22:37 +00:00
Manish Goregaokar
b8b17a54cf Rollup merge of #32131 - petrochenkov:prim, r=eddyb
resolve: Minimize hacks in name resolution of primitive types

When resolving the first unqualified segment in a path with `n` segments and `n - 1` associated item segments, e.g. (`a` or `a::assoc` or `a::assoc::assoc` etc) try to resolve `a` without considering primitive types first. If the "normal" lookup fails or results in a module, then try to resolve `a` as a primitive type as a fallback.

This way backward compatibility is respected, but the restriction from E0317 can be lifted, i.e. primitive names mostly can be shadowed like any other names.

Furthermore, if names of primitive types are [put into prelude](https://github.com/petrochenkov/rust/tree/prim2) (now it's possible to do), then most of names will be resolved in conventional way and amount of code relying on this fallback will be greatly reduced. Although, it's not entirely convenient to put them into prelude right now due to temporary conflicts like `use prelude::v1::*; use usize;` in libcore/libstd, I'd better wait for proper glob shadowing before doing it.
I wish the `no_prelude` attribute were unstable as intended :(

cc @jseyfried @arielb1
r? @eddyb
2016-03-26 09:07:20 +05:30