From 62b97a58ccc092501926b2946d02808fd3de2f90 Mon Sep 17 00:00:00 2001 From: Adrian Cochrane Date: Mon, 15 Jul 2019 07:36:13 +1200 Subject: [PATCH] Fix incorrect handling of invalid syntaxes. --- src/Data/CSS/Syntax/StyleSheet.hs | 3 ++- src/Stylish.hs | 8 -------- test/Test.hs | 7 +++++++ 3 files changed, 9 insertions(+), 9 deletions(-) delete mode 100644 src/Stylish.hs diff --git a/src/Data/CSS/Syntax/StyleSheet.hs b/src/Data/CSS/Syntax/StyleSheet.hs index b46ac78..0a83d5d 100644 --- a/src/Data/CSS/Syntax/StyleSheet.hs +++ b/src/Data/CSS/Syntax/StyleSheet.hs @@ -52,7 +52,8 @@ parse' stylesheet tokens = parse' (addRules stylesheet rule) tokens' -------- parseProperties (LeftCurlyBracket:tokens) = parseProperties' tokens parseProperties (Whitespace:tokens) = parseProperties tokens -parseProperties (_:tokens) = ([], tokens) +-- This error recovery is a bit overly conservative, but it's simple. +parseProperties (_:tokens) = ([], skipAtRule tokens) parseProperties [] = ([], []) parseProperties' (Whitespace:tokens) = parseProperties' tokens diff --git a/src/Stylish.hs b/src/Stylish.hs deleted file mode 100644 index 890df1d..0000000 --- a/src/Stylish.hs +++ /dev/null @@ -1,8 +0,0 @@ -module Stylish( - parse, - StyleSheet, addRule, addAtRule, - StyleRule, - Selector, Combinator, SimpleSelector, AttrTest - ) where - -import Stylish.Parse diff --git a/test/Test.hs b/test/Test.hs index a6e21d8..572ad25 100644 --- a/test/Test.hs +++ b/test/Test.hs @@ -270,6 +270,13 @@ spec = do let rules = parse queryable "a {color: red;}" let TrivialPropertyParser style = cascade rules el [("color", [Ident "green"])] temp::TrivialPropertyParser style ! "color" `shouldBe` [Ident "green"] + describe "Parser freezes" $ do + it "does not regress" $ do + -- TODO handle psuedoelements + parse emptyStyle "output::before {content: 'Output'; pitch: high}" + `shouldBe` TrivialStyleSheet [ + StyleRule (Element [Tag "output"]) [] + ] styleIndex :: StyleIndex styleIndex = new -- 2.30.2