Skip to content

Commit 9010c93

Browse files
committed
Merge pull request #429 from sunng87/fix/panic-within-errors
Fixes panic on invalid tag name
1 parent c2984eb commit 9010c93

File tree

1 file changed

+20
-4
lines changed

1 file changed

+20
-4
lines changed

src/template.rs

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,14 @@ impl Parameter {
164164
let mut it = parser.flatten().peekable();
165165
Template::parse_param(s, &mut it, s.len() - 1)
166166
}
167+
168+
fn debug_name(&self) -> String {
169+
if let Some(name) = self.as_name() {
170+
name.to_owned()
171+
} else {
172+
format!("{:?}", self)
173+
}
174+
}
167175
}
168176

169177
impl Template {
@@ -647,8 +655,8 @@ impl Template {
647655
} else {
648656
return Err(TemplateError::of(
649657
TemplateErrorReason::MismatchingClosedHelper(
650-
h.name.as_name().unwrap().into(),
651-
close_tag_name.unwrap().into(),
658+
h.name.debug_name(),
659+
exp.name.debug_name(),
652660
),
653661
)
654662
.at(source, line_no, col_no));
@@ -669,8 +677,8 @@ impl Template {
669677
} else {
670678
return Err(TemplateError::of(
671679
TemplateErrorReason::MismatchingClosedDecorator(
672-
d.name.as_name().unwrap().into(),
673-
close_tag_name.unwrap().into(),
680+
d.name.debug_name(),
681+
exp.name.debug_name(),
674682
),
675683
)
676684
.at(source, line_no, col_no));
@@ -1144,3 +1152,11 @@ fn test_decorator() {
11441152
}
11451153
}
11461154
}
1155+
1156+
#[test]
1157+
fn test_panic_with_tag_name() {
1158+
let s = "{{#>(X)}}{{/X}}";
1159+
let result = Template::compile(s);
1160+
assert!(result.is_err());
1161+
assert_eq!("decorator \"Subexpression(Subexpression { element: Expression(HelperTemplate { name: Path(Relative(([Named(\\\"X\\\")], \\\"X\\\"))), params: [], hash: {}, block_param: None, template: None, inverse: None, block: false }) })\" was opened, but \"X\" is closing", format!("{}", result.unwrap_err().reason));
1162+
}

0 commit comments

Comments
 (0)