Merge pull request #2783 from seven-phases-max/fix-unknown-atrules

Allow unknown non-{}-block at-rules
This commit is contained in:
Max Mikhailov
2016-01-26 11:19:48 +03:00
6 changed files with 27 additions and 42 deletions

View File

@@ -1291,12 +1291,10 @@ var Parser = function Parser(context, imports, fileInfo) {
} else if (e) {
nodes.push(new(tree.Paren)(e));
} else {
parserInput.restore("badly formed media feature definition");
return null;
error("badly formed media feature definition");
}
} else {
parserInput.restore("Missing closing ')'");
return null;
error("Missing closing ')'", "Parse");
}
}
} while (e);
@@ -1341,8 +1339,7 @@ var Parser = function Parser(context, imports, fileInfo) {
rules = this.block();
if (!rules) {
parserInput.restore("media definitions require block statements after any features");
return;
error("media definitions require block statements after any features");
}
parserInput.forget();
@@ -1420,33 +1417,6 @@ var Parser = function Parser(context, imports, fileInfo) {
}
switch(nonVendorSpecificName) {
/*
case "@font-face":
case "@viewport":
case "@top-left":
case "@top-left-corner":
case "@top-center":
case "@top-right":
case "@top-right-corner":
case "@bottom-left":
case "@bottom-left-corner":
case "@bottom-center":
case "@bottom-right":
case "@bottom-right-corner":
case "@left-top":
case "@left-middle":
case "@left-bottom":
case "@right-top":
case "@right-middle":
case "@right-bottom":
hasBlock = true;
isRooted = true;
break;
*/
case "@counter-style":
hasIdentifier = true;
hasBlock = true;
break;
case "@charset":
hasIdentifier = true;
hasBlock = false;
@@ -1456,17 +1426,17 @@ var Parser = function Parser(context, imports, fileInfo) {
hasBlock = false;
break;
case "@keyframes":
case "@counter-style":
hasIdentifier = true;
break;
case "@host":
case "@page":
hasUnknown = true;
break;
case "@document":
case "@supports":
hasUnknown = true;
isRooted = false;
break;
default:
hasUnknown = true;
break;
}
parserInput.commentStore.length = 0;
@@ -1483,6 +1453,7 @@ var Parser = function Parser(context, imports, fileInfo) {
}
} else if (hasUnknown) {
value = (parserInput.$re(/^[^{;]+/) || '').trim();
hasBlock = (parserInput.currentChar() == '{');
if (value) {
value = new(tree.Anonymous)(value);
}

View File

@@ -149,3 +149,9 @@ body ^^ .shadow {
}
@-ms-viewport {
}
@unknown foo 42 (bar) {
x {
y: z;
}
}
@unknown foo 43;

View File

@@ -144,11 +144,19 @@ body ^^ .shadow {
#issue2066 {
background: url('/images/icon-team.svg') 0 0 / contain;
}
@counter-style triangle {
system: cyclic;
symbols: ‣;
suffix: " ";
}
@-ms-viewport{
//width: auto !important;
}
// width: auto !important;
}
@unknown foo 42 (bar) {
x {y: z}
}
@unknown foo 43;

View File

@@ -1,3 +1,3 @@
ParseError: media definitions require block statements after any features in {path}parse-error-media-no-block-1.less on line 1, column 24:
SyntaxError: media definitions require block statements after any features in {path}parse-error-media-no-block-1.less on line 1, column 24:
1 @media (extra: bracket)) {
2 body {

View File

@@ -1,2 +1,2 @@
ParseError: media definitions require block statements after any features in {path}parse-error-media-no-block-2.less on line 1, column 7:
SyntaxError: media definitions require block statements after any features in {path}parse-error-media-no-block-2.less on line 1, column 7:
1 @media

View File

@@ -1,3 +1,3 @@
ParseError: media definitions require block statements after any features in {path}parse-error-media-no-block-3.less on line 4, column 4:
SyntaxError: media definitions require block statements after any features in {path}parse-error-media-no-block-3.less on line 4, column 4:
3 font-size: 5000px;
4 }