diff options
| author | Sean Griffin <sean@seantheprogrammer.com> | 2016-08-31 13:25:00 -0400 |
|---|---|---|
| committer | Sean Griffin <sean@seantheprogrammer.com> | 2016-12-06 09:35:32 -0500 |
| commit | 0ddf61890bc68409b8e72352a83520940c228b29 (patch) | |
| tree | f81c3873430197b4d8bb3d90974dc97e060a1098 /src/libsyntax/ext | |
| parent | d346dbc938da2f8d1bd13492331d9ec1b15bdac7 (diff) | |
| download | rust-0ddf61890bc68409b8e72352a83520940c228b29.tar.gz rust-0ddf61890bc68409b8e72352a83520940c228b29.zip | |
Don't perform span mangling when building field/tup access nodes
There are no guarantees that the two spans used to create the new one come from the same place or are even valid. Fixes #36081.
Diffstat (limited to 'src/libsyntax/ext')
| -rw-r--r-- | src/libsyntax/ext/build.rs | 18 |
1 files changed, 3 insertions, 15 deletions
diff --git a/src/libsyntax/ext/build.rs b/src/libsyntax/ext/build.rs index a208b934d79..6c0d40b69d3 100644 --- a/src/libsyntax/ext/build.rs +++ b/src/libsyntax/ext/build.rs @@ -11,7 +11,7 @@ use abi::Abi; use ast::{self, Ident, Generics, Expr, BlockCheckMode, UnOp, PatKind}; use attr; -use syntax_pos::{Span, DUMMY_SP, Pos}; +use syntax_pos::{Span, DUMMY_SP}; use codemap::{dummy_spanned, respan, Spanned}; use ext::base::ExtCtxt; use ptr::P; @@ -659,23 +659,11 @@ impl<'a> AstBuilder for ExtCtxt<'a> { } fn expr_field_access(&self, sp: Span, expr: P<ast::Expr>, ident: ast::Ident) -> P<ast::Expr> { - let field_span = Span { - lo: sp.lo - Pos::from_usize(ident.name.as_str().len()), - hi: sp.hi, - expn_id: sp.expn_id, - }; - - let id = Spanned { node: ident, span: field_span }; + let id = Spanned { node: ident, span: sp }; self.expr(sp, ast::ExprKind::Field(expr, id)) } fn expr_tup_field_access(&self, sp: Span, expr: P<ast::Expr>, idx: usize) -> P<ast::Expr> { - let field_span = Span { - lo: sp.lo - Pos::from_usize(idx.to_string().len()), - hi: sp.hi, - expn_id: sp.expn_id, - }; - - let id = Spanned { node: idx, span: field_span }; + let id = Spanned { node: idx, span: sp }; self.expr(sp, ast::ExprKind::TupField(expr, id)) } fn expr_addr_of(&self, sp: Span, e: P<ast::Expr>) -> P<ast::Expr> { |
