diff --git a/Stencil/Parser.swift b/Stencil/Parser.swift index 48a975f..8e2f761 100644 --- a/Stencil/Parser.swift +++ b/Stencil/Parser.swift @@ -74,8 +74,12 @@ public class TokenParser { return nodes } - if let tag = tag, let parser = self.tags[tag] { - nodes.append(try parser(self, token)) + if let tag = tag { + if let parser = self.tags[tag] { + nodes.append(try parser(self, token)) + } else { + throw TemplateSyntaxError("Unknown template tag '\(tag)'") + } } case .Comment: continue diff --git a/StencilSpecs/ParserSpec.swift b/StencilSpecs/ParserSpec.swift index dfe59ea..778415a 100644 --- a/StencilSpecs/ParserSpec.swift +++ b/StencilSpecs/ParserSpec.swift @@ -44,4 +44,12 @@ describe("TokenParser") { let nodes = try parser.parse() try expect(nodes.count) == 1 } + + $0.it("errors when parsing an unknown tag") { + let parser = TokenParser(tokens: [ + Token.Block(value: "unknown"), + ]) + + try expect(try parser.parse()).toThrow(TemplateSyntaxError("Unknown template tag 'unknown'")) + } }