Skip to content

Commit 04a234a

Browse files
authored
Merge pull request #2990 from jquense/parse-unknown-psuedos
unrecognized psuedos with arguments parse as declaration-values
2 parents 23cabbe + 4f22bee commit 04a234a

File tree

1 file changed

+17
-4
lines changed

1 file changed

+17
-4
lines changed

src/parser.cpp

+17-4
Original file line numberDiff line numberDiff line change
@@ -766,10 +766,23 @@ namespace Sass {
766766
if (peek_css< exactly<')'>>() && Util::equalsLiteral("nth-", name.substr(0, 4))) {
767767
css_error("Invalid CSS", " after ", ": expected An+B expression, was ");
768768
}
769-
if (SelectorListObj wrapped = parseSelectorList(true)) {
770-
if (wrapped && lex_css< exactly<')'> >()) {
771-
Pseudo_Selector* pseudo = SASS_MEMORY_NEW(Pseudo_Selector, p, name, element);
772-
pseudo->selector(wrapped);
769+
770+
std::string unvendored = Util::unvendor(name);
771+
772+
if (unvendored == "not" || unvendored == "matches" || unvendored == "current" || unvendored == "any" || unvendored == "has" || unvendored == "host" || unvendored == "host-context" || unvendored == "slotted") {
773+
if (SelectorListObj wrapped = parseSelectorList(true)) {
774+
if (wrapped && lex_css< exactly<')'> >()) {
775+
Pseudo_Selector* pseudo = SASS_MEMORY_NEW(Pseudo_Selector, p, name, element);
776+
pseudo->selector(wrapped);
777+
return pseudo;
778+
}
779+
}
780+
} else {
781+
String_Schema_Obj arg = parse_css_variable_value();
782+
Pseudo_Selector* pseudo = SASS_MEMORY_NEW(Pseudo_Selector, p, name, element);
783+
pseudo->argument(arg);
784+
785+
if (lex_css< exactly<')'> >()) {
773786
return pseudo;
774787
}
775788
}

0 commit comments

Comments
 (0)