diff options
| author | Mark Rousskov <mark.simulacrum@gmail.com> | 2019-09-08 10:00:26 -0400 |
|---|---|---|
| committer | Mark Rousskov <mark.simulacrum@gmail.com> | 2019-10-07 19:47:53 -0400 |
| commit | e068cec13e2a63dba29d40f0130527d980f83f7c (patch) | |
| tree | 470d71559704d86bde0c9d913be7fa8bc71ba9c1 /src/libsyntax_ext/source_util.rs | |
| parent | f3c9cece7b6829e6fd7854a1aee6a1619a81a38c (diff) | |
| download | rust-e068cec13e2a63dba29d40f0130527d980f83f7c.tar.gz rust-e068cec13e2a63dba29d40f0130527d980f83f7c.zip | |
Warn if include macro fails to include entire file
Diffstat (limited to 'src/libsyntax_ext/source_util.rs')
| -rw-r--r-- | src/libsyntax_ext/source_util.rs | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/libsyntax_ext/source_util.rs b/src/libsyntax_ext/source_util.rs index 9dc9d66b86f..f74507dcc21 100644 --- a/src/libsyntax_ext/source_util.rs +++ b/src/libsyntax_ext/source_util.rs @@ -5,6 +5,7 @@ use syntax::print::pprust; use syntax::ptr::P; use syntax::symbol::Symbol; use syntax::tokenstream::TokenStream; +use syntax::early_buffered_lints::BufferedEarlyLintId; use smallvec::SmallVec; use syntax_pos::{self, Pos, Span}; @@ -83,7 +84,16 @@ pub fn expand_include<'cx>(cx: &'cx mut ExtCtxt<'_>, sp: Span, tts: TokenStream) } impl<'a> base::MacResult for ExpandResult<'a> { fn make_expr(mut self: Box<ExpandResult<'a>>) -> Option<P<ast::Expr>> { - Some(panictry!(self.p.parse_expr())) + let r = panictry!(self.p.parse_expr()); + if self.p.token != token::Eof { + self.p.sess.buffer_lint( + BufferedEarlyLintId::IncompleteInclude, + self.p.token.span, + ast::CRATE_NODE_ID, + "include macro expected single expression in source", + ); + } + Some(r) } fn make_items(mut self: Box<ExpandResult<'a>>) -> Option<SmallVec<[P<ast::Item>; 1]>> { |
