libsyntax: Don't ICE on macro invocation in count expr of fixed array type.
This commit is contained in:
parent
779d100541
commit
445340771d
@ -536,13 +536,16 @@ fn expand_non_macro_stmt(s: &Stmt, fld: &mut MacroExpander)
|
||||
} => {
|
||||
// take it apart:
|
||||
let Local {
|
||||
ty: _,
|
||||
ty: ty,
|
||||
pat: pat,
|
||||
init: init,
|
||||
id: id,
|
||||
span: span,
|
||||
source: source,
|
||||
} = **local;
|
||||
// expand the ty since TyFixedLengthVec contains an Expr
|
||||
// and thus may have a macro use
|
||||
let expanded_ty = fld.fold_ty(ty);
|
||||
// expand the pat (it might contain macro uses):
|
||||
let expanded_pat = fld.fold_pat(pat);
|
||||
// find the PatIdents in the pattern:
|
||||
@ -566,7 +569,7 @@ fn expand_non_macro_stmt(s: &Stmt, fld: &mut MacroExpander)
|
||||
let new_init_opt = init.map(|e| fld.fold_expr(e));
|
||||
let rewritten_local =
|
||||
box(GC) Local {
|
||||
ty: local.ty,
|
||||
ty: expanded_ty,
|
||||
pat: rewritten_pat,
|
||||
init: new_init_opt,
|
||||
id: id,
|
||||
|
@ -0,0 +1,18 @@
|
||||
// Copyright 2014 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
#![feature(macro_rules)]
|
||||
|
||||
macro_rules! four (
|
||||
() => (4)
|
||||
)
|
||||
fn main() {
|
||||
let _x: [u16, ..four!()];
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user