Use absolute path to FullRange, rather than assuming it is in the prelude
Closes #21263 [breaking-change] If you are using `core::ops::FullRange` you should change to using `core::ops::RangeFull`
This commit is contained in:
@@ -147,6 +147,7 @@ mod array;
|
|||||||
mod core {
|
mod core {
|
||||||
pub use panicking;
|
pub use panicking;
|
||||||
pub use fmt;
|
pub use fmt;
|
||||||
|
pub use ops;
|
||||||
}
|
}
|
||||||
|
|
||||||
#[doc(hidden)]
|
#[doc(hidden)]
|
||||||
|
|||||||
@@ -2531,10 +2531,23 @@ impl<'a> Parser<'a> {
|
|||||||
// FIXME(#20516) It would be better to use a lang item or
|
// FIXME(#20516) It would be better to use a lang item or
|
||||||
// something for FullRange.
|
// something for FullRange.
|
||||||
hi = self.last_span.hi;
|
hi = self.last_span.hi;
|
||||||
let range = ExprStruct(ident_to_path(mk_sp(lo, hi),
|
|
||||||
token::special_idents::FullRange),
|
let idents = vec![token::str_to_ident("core"),
|
||||||
vec![],
|
token::str_to_ident("ops"),
|
||||||
None);
|
token::str_to_ident("FullRange")];
|
||||||
|
let segments = idents.into_iter().map(|ident| {
|
||||||
|
ast::PathSegment {
|
||||||
|
identifier: ident,
|
||||||
|
parameters: ast::PathParameters::none(),
|
||||||
|
}
|
||||||
|
}).collect();
|
||||||
|
let path = ast::Path {
|
||||||
|
span: mk_sp(lo, hi),
|
||||||
|
global: true,
|
||||||
|
segments: segments,
|
||||||
|
};
|
||||||
|
|
||||||
|
let range = ExprStruct(path, vec![], None);
|
||||||
let ix = self.mk_expr(bracket_pos, hi, range);
|
let ix = self.mk_expr(bracket_pos, hi, range);
|
||||||
let index = self.mk_index(e, ix);
|
let index = self.mk_index(e, ix);
|
||||||
e = self.mk_expr(lo, hi, index)
|
e = self.mk_expr(lo, hi, index)
|
||||||
|
|||||||
@@ -516,66 +516,65 @@ declare_special_idents_and_keywords! {
|
|||||||
(9, unnamed_field, "<unnamed_field>");
|
(9, unnamed_field, "<unnamed_field>");
|
||||||
(10, type_self, "Self");
|
(10, type_self, "Self");
|
||||||
(11, prelude_import, "prelude_import");
|
(11, prelude_import, "prelude_import");
|
||||||
(12, FullRange, "FullRange");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub mod keywords {
|
pub mod keywords {
|
||||||
// These ones are variants of the Keyword enum
|
// These ones are variants of the Keyword enum
|
||||||
|
|
||||||
'strict:
|
'strict:
|
||||||
(13, As, "as");
|
(12, As, "as");
|
||||||
(14, Break, "break");
|
(13, Break, "break");
|
||||||
(15, Crate, "crate");
|
(14, Crate, "crate");
|
||||||
(16, Else, "else");
|
(15, Else, "else");
|
||||||
(17, Enum, "enum");
|
(16, Enum, "enum");
|
||||||
(18, Extern, "extern");
|
(17, Extern, "extern");
|
||||||
(19, False, "false");
|
(18, False, "false");
|
||||||
(20, Fn, "fn");
|
(19, Fn, "fn");
|
||||||
(21, For, "for");
|
(20, For, "for");
|
||||||
(22, If, "if");
|
(21, If, "if");
|
||||||
(23, Impl, "impl");
|
(22, Impl, "impl");
|
||||||
(24, In, "in");
|
(23, In, "in");
|
||||||
(25, Let, "let");
|
(24, Let, "let");
|
||||||
(26, Loop, "loop");
|
(25, Loop, "loop");
|
||||||
(27, Match, "match");
|
(26, Match, "match");
|
||||||
(28, Mod, "mod");
|
(27, Mod, "mod");
|
||||||
(29, Move, "move");
|
(28, Move, "move");
|
||||||
(30, Mut, "mut");
|
(29, Mut, "mut");
|
||||||
(31, Pub, "pub");
|
(30, Pub, "pub");
|
||||||
(32, Ref, "ref");
|
(31, Ref, "ref");
|
||||||
(33, Return, "return");
|
(32, Return, "return");
|
||||||
// Static and Self are also special idents (prefill de-dupes)
|
// Static and Self are also special idents (prefill de-dupes)
|
||||||
(super::STATIC_KEYWORD_NAME_NUM, Static, "static");
|
(super::STATIC_KEYWORD_NAME_NUM, Static, "static");
|
||||||
(super::SELF_KEYWORD_NAME_NUM, Self, "self");
|
(super::SELF_KEYWORD_NAME_NUM, Self, "self");
|
||||||
(34, Struct, "struct");
|
(33, Struct, "struct");
|
||||||
(super::SUPER_KEYWORD_NAME_NUM, Super, "super");
|
(super::SUPER_KEYWORD_NAME_NUM, Super, "super");
|
||||||
(35, True, "true");
|
(34, True, "true");
|
||||||
(36, Trait, "trait");
|
(35, Trait, "trait");
|
||||||
(37, Type, "type");
|
(36, Type, "type");
|
||||||
(38, Unsafe, "unsafe");
|
(37, Unsafe, "unsafe");
|
||||||
(39, Use, "use");
|
(38, Use, "use");
|
||||||
(40, Virtual, "virtual");
|
(39, Virtual, "virtual");
|
||||||
(41, While, "while");
|
(40, While, "while");
|
||||||
(42, Continue, "continue");
|
(41, Continue, "continue");
|
||||||
(43, Proc, "proc");
|
(42, Proc, "proc");
|
||||||
(44, Box, "box");
|
(43, Box, "box");
|
||||||
(45, Const, "const");
|
(44, Const, "const");
|
||||||
(46, Where, "where");
|
(45, Where, "where");
|
||||||
'reserved:
|
'reserved:
|
||||||
(47, Alignof, "alignof");
|
(46, Alignof, "alignof");
|
||||||
(48, Be, "be");
|
(47, Be, "be");
|
||||||
(49, Offsetof, "offsetof");
|
(48, Offsetof, "offsetof");
|
||||||
(50, Priv, "priv");
|
(49, Priv, "priv");
|
||||||
(51, Pure, "pure");
|
(50, Pure, "pure");
|
||||||
(52, Sizeof, "sizeof");
|
(51, Sizeof, "sizeof");
|
||||||
(53, Typeof, "typeof");
|
(52, Typeof, "typeof");
|
||||||
(54, Unsized, "unsized");
|
(53, Unsized, "unsized");
|
||||||
(55, Yield, "yield");
|
(54, Yield, "yield");
|
||||||
(56, Do, "do");
|
(55, Do, "do");
|
||||||
(57, Abstract, "abstract");
|
(56, Abstract, "abstract");
|
||||||
(58, Final, "final");
|
(57, Final, "final");
|
||||||
(59, Override, "override");
|
(58, Override, "override");
|
||||||
(60, Macro, "macro");
|
(59, Macro, "macro");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user