about summary refs log tree commit diff
path: root/src/libsyntax_ext
diff options
context:
space:
mode:
authorManish Goregaokar <manishsmail@gmail.com>2016-07-30 13:44:47 +0530
committerGitHub <noreply@github.com>2016-07-30 13:44:47 +0530
commit0b64a561f630330ecf3e78b4ffb988d6e7328dce (patch)
treec8bcef60d6f6328a8368deb30bf08f844769275f /src/libsyntax_ext
parentce79972314a7efb8044b2236539850d126b119af (diff)
parent2a41b31a88356d5a772cb644ab8d29af0bf44742 (diff)
downloadrust-0b64a561f630330ecf3e78b4ffb988d6e7328dce.tar.gz
rust-0b64a561f630330ecf3e78b4ffb988d6e7328dce.zip
Rollup merge of #35106 - xen0n:issue-35082, r=alexcrichton
syntax_ext: format: fix ICE with bad named arguments

Fixes #35082 by guarding against a new case of malformed invocation not previously covered.

r? @alexcrichton
Diffstat (limited to 'src/libsyntax_ext')
-rw-r--r--src/libsyntax_ext/format.rs4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/libsyntax_ext/format.rs b/src/libsyntax_ext/format.rs
index 94bb78edaac..1f6f57c70f7 100644
--- a/src/libsyntax_ext/format.rs
+++ b/src/libsyntax_ext/format.rs
@@ -406,7 +406,9 @@ impl<'a, 'b> Context<'a, 'b> {
                             let arg_idx = match arg_index_consumed.get_mut(i) {
                                 None => 0, // error already emitted elsewhere
                                 Some(offset) => {
-                                    let arg_idx = self.arg_index_map[i][*offset];
+                                    let ref idx_map = self.arg_index_map[i];
+                                    // unwrap_or branch: error already emitted elsewhere
+                                    let arg_idx = *idx_map.get(*offset).unwrap_or(&0);
                                     *offset += 1;
                                     arg_idx
                                 }