Aborted due to an error: invalid pattern in look-behind
roydukkey opened this issue · comments
v0.0.10
> vscode-tmgrammar-test -s source.sass -g ./dist/Sass.tmLanguage.json -t ./test/**/*.sass "-c"
✓ ./test/Rules/Control/while.sass run successfuly.
✖ testcase ./test/Rules/Control/conditional.sass aborted due to an error
Error: invalid pattern in look-behind
at Object.createOnigScanner (./node_modules/vscode-textmate/release/main.js:67:24)
at Grammar.createOnigScanner (./node_modules/vscode-textmate/release/main.js:2578:30)
at RegExpSourceList.compile (./node_modules/vscode-textmate/release/main.js:1875:38)
at BeginEndRule.compile (./node_modules/vscode-textmate/release/main.js:2045:45)
at matchRule (./node_modules/vscode-textmate/release/main.js:2822:28)
at matchRuleOrInjections (./node_modules/vscode-textmate/release/main.js:2841:23)
at scanNext (./node_modules/vscode-textmate/release/main.js:2937:17)
at _tokenizeString (./node_modules/vscode-textmate/release/main.js:2930:9)
at Grammar._tokenize (./node_modules/vscode-textmate/release/main.js:2680:25)
at Grammar.tokenizeLine (./node_modules/vscode-textmate/release/main.js:2643:22)
Sass.tmLanguage.json
{
"name": "SASS",
"scopeName": "source.sass",
"patterns": [
{
"name": "meta.at-rule.conditional.sass",
"begin": "((@)if)\\b|((@)else(?=.*?if))\\b",
"end": "$",
"beginCaptures": {
"1": {
"name": "keyword.control.conditional.if.sass"
},
"2": {
"name": "punctuation.definition.keyword.sass"
},
"3": {
"name": "keyword.control.conditional.else.sass"
},
"4": {
"name": "punctuation.definition.keyword.sass"
}
},
"patterns": [
{
"name": "keyword.control.conditional.if",
"match": "(?<=@else.*?)if"
},
{
"include": "#line-comment"
}
]
},
{
"name": "meta.at-rule.conditional.sass",
"begin": "((@)else)\\b",
"end": "$",
"beginCaptures": {
"1": {
"name": "keyword.control.conditional.else.sass"
},
"2": {
"name": "punctuation.definition.keyword.sass"
}
},
"patterns": [
{
"include": "#line-comment"
}
]
},
{
"name": "meta.at-rule.loop.while.sass",
"begin": "((@)while)\\b",
"end": "$",
"beginCaptures": {
"1": {
"name": "keyword.control.loop.sass"
},
"2": {
"name": "punctuation.definition.keyword.sass"
}
},
"patterns": [
{
"include": "#line-comment"
}
]
}
],
"repository": {
"line-comment": {
"patterns": [
{
"name": "comment.line.double-slash.sass",
"begin": "\\/\\/",
"end": "$",
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.sass"
}
}
},
{
"name": "comment.line.slash-asterisk.sass",
"begin": "\\/\\*",
"end": "(\\*\\/)|$",
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.begin.sass"
}
},
"endCaptures": {
"1": {
"name": "punctuation.definition.comment.end.sass"
}
},
"patterns": [
{
"include": "#interpolation"
}
]
}
]
},
"interpolation": {
"name": "variable.interpolation.sass",
"begin": "#{",
"end": "(})|$",
"beginCaptures": {
"0": {
"name": "punctuation.definition.interpolation.begin.bracket.curly.sass"
}
},
"endCaptures": {
"1": {
"name": "punctuation.definition.interpolation.end.bracket.curly.sass"
}
},
"patterns": [
{
"include": "#property-value"
}
]
},
"property-value": {
"patterns": [
{
"name": "variable.sass",
"match": "(\\$|--)[-_[:alnum:]]+\\b"
},
{
"name": "string.quoted.single.sass",
"begin": "'",
"end": "'",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.sass"
}
},
"endCaptures": {
"0": {
"name": "punctuation.definition.string.end.sass"
}
},
"patterns": [
{
"include": "#interpolation"
}
]
},
{
"name": "string.quoted.double.sass",
"begin": "\"",
"end": "\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.sass"
}
},
"endCaptures": {
"0": {
"name": "punctuation.definition.string.end.sass"
}
},
"patterns": [
{
"include": "#interpolation"
}
]
},
{
"include": "#0f1cf79-numeric-values"
},
{
"include": "#0f1cf79-property-keywords"
},
{
"include": "#0f1cf79-color-keywords"
},
{
"name": "keyword.operator.arithmetic.sass",
"match": "[*/]|[-+](?!\\d)|(?<!\\s)[-+](?=\\d)"
},
{
"begin": "\\(",
"end": "\\)",
"beginCaptures": {
"0": {
"name": "punctuation.definition.begin.bracket.round.sass"
}
},
"endCaptures": {
"0": {
"name": "punctuation.definition.end.bracket.round.sass"
}
},
"patterns": [
{
"include": "#property-value"
}
]
}
]
},
"0f1cf79-numeric-values": {
"patterns": [
{
"captures": {
"1": {
"name": "punctuation.definition.constant.css"
}
},
"match": "(#)(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})\\b",
"name": "constant.other.color.rgb-value.hex.css"
},
{
"captures": {
"1": {
"name": "keyword.other.unit.percentage.css"
},
"2": {
"name": "keyword.other.unit.${2:/downcase}.css"
}
},
"match": "(?xi) (?<![\\w-])\n[-+]? # Sign indicator\n\n(?: # Numerals\n [0-9]+ (?:\\.[0-9]+)? # Integer/float with leading digits\n | \\.[0-9]+ # Float without leading digits\n)\n\n(?: # Scientific notation\n (?<=[0-9]) # Exponent must follow a digit\n E # Exponent indicator\n [-+]? # Possible sign indicator\n [0-9]+ # Exponent value\n)?\n\n(?: # Possible unit for data-type:\n (%) # - Percentage\n | ( deg|grad|rad|turn # - Angle\n | Hz|kHz # - Frequency\n | ch|cm|em|ex|fr|in|mm|mozmm| # - Length\n pc|pt|px|q|rem|vh|vmax|vmin|\n vw\n | dpi|dpcm|dppx # - Resolution\n | s|ms # - Time\n )\n \\b # Boundary checking intentionally lax to\n)? # facilitate embedding in CSS-like grammars",
"name": "constant.numeric.css"
}
]
},
"0f1cf79-property-keywords": {
"patterns": [
{
"match": "(?xi) (?<![\\w-])\n(above|absolute|active|add|additive|after-edge|alias|all|all-petite-caps|all-scroll|all-small-caps|alpha|alphabetic|alternate|alternate-reverse\n|always|antialiased|auto|auto-pos|available|avoid|avoid-column|avoid-page|avoid-region|backwards|balance|baseline|before-edge|below|bevel\n|bidi-override|blink|block|block-axis|block-start|block-end|bold|bolder|border|border-box|both|bottom|bottom-outside|break-all|break-word|bullets\n|butt|capitalize|caption|cell|center|central|char|circle|clip|clone|close-quote|closest-corner|closest-side|col-resize|collapse|color|color-burn\n|color-dodge|column|column-reverse|common-ligatures|compact|condensed|contain|content|content-box|contents|context-menu|contextual|copy|cover\n|crisp-edges|crispEdges|crosshair|cyclic|darken|dashed|decimal|default|dense|diagonal-fractions|difference|digits|disabled|disc|discretionary-ligatures\n|distribute|distribute-all-lines|distribute-letter|distribute-space|dot|dotted|double|double-circle|downleft|downright|e-resize|each-line|ease|ease-in\n|ease-in-out|ease-out|economy|ellipse|ellipsis|embed|end|evenodd|ew-resize|exact|exclude|exclusion|expanded|extends|extra-condensed|extra-expanded\n|fallback|farthest-corner|farthest-side|fill|fill-available|fill-box|filled|fit-content|fixed|flat|flex|flex-end|flex-start|flip|forwards|freeze\n|from-image|full-width|geometricPrecision|georgian|grab|grabbing|grayscale|grid|groove|hand|hanging|hard-light|help|hidden|hide\n|historical-forms|historical-ligatures|horizontal|horizontal-tb|hue|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space\n|ideographic|inactive|infinite|inherit|initial|inline|inline-axis|inline-block|inline-end|inline-flex|inline-grid|inline-list-item|inline-start\n|inline-table|inset|inside|inter-character|inter-ideograph|inter-word|intersect|invert|isolate|isolate-override|italic|jis04|jis78|jis83\n|jis90|justify|justify-all|kannada|keep-all|landscape|large|larger|left|lighten|lighter|line|line-edge|line-through|linear|linearRGB\n|lining-nums|list-item|local|loose|lowercase|lr|lr-tb|ltr|luminance|luminosity|main-size|mandatory|manipulation|manual|margin-box|match-parent\n|match-source|mathematical|max-content|medium|menu|message-box|middle|min-content|miter|mixed|move|multiply|n-resize|narrower|ne-resize\n|nearest-neighbor|nesw-resize|newspaper|no-change|no-clip|no-close-quote|no-common-ligatures|no-contextual|no-discretionary-ligatures\n|no-drop|no-historical-ligatures|no-open-quote|no-repeat|none|nonzero|normal|not-allowed|nowrap|ns-resize|numbers|numeric|nw-resize|nwse-resize\n|oblique|oldstyle-nums|open|open-quote|optimizeLegibility|optimizeQuality|optimizeSpeed|optional|ordinal|outset|outside|over|overlay|overline|padding\n|padding-box|page|painted|pan-down|pan-left|pan-right|pan-up|pan-x|pan-y|paused|petite-caps|pixelated|plaintext|pointer|portrait|pre|pre-line\n|pre-wrap|preserve-3d|progress|progressive|proportional-nums|proportional-width|proximity|radial|recto|region|relative|remove|repeat|repeat-[xy]\n|reset-size|reverse|revert|ridge|right|rl|rl-tb|round|row|row-resize|row-reverse|row-severse|rtl|ruby|ruby-base|ruby-base-container|ruby-text\n|ruby-text-container|run-in|running|s-resize|saturation|scale-down|screen|scroll|scroll-position|self-start|self-end|se-resize|semi-condensed\n|semi-expanded|separate\n|sesame|show|sideways|sideways-left|sideways-lr|sideways-right|sideways-rl|simplified|slashed-zero|slice|small|small-caps|small-caption|smaller\n|smooth|soft-light|solid|space|space-around|space-between|space-evenly|spell-out|square|sRGB|stacked-fractions|start|static|status-bar|swap\n|step-end|step-start|sticky|stretch|strict|stroke|stroke-box|style|sub|subgrid|subpixel-antialiased|subtract|super|sw-resize|symbolic|table\n|table-caption|table-cell|table-column|table-column-group|table-footer-group|table-header-group|table-row|table-row-group|tabular-nums|tb|tb-rl\n|text|text-after-edge|text-before-edge|text-bottom|text-top|thick|thin|titling-caps|top|top-outside|touch|traditional|transparent|triangle\n|ultra-condensed|ultra-expanded|under|underline|unicase|unset|upleft|uppercase|upright|use-glyph-orientation|use-script|verso|vertical\n|vertical-ideographic|vertical-lr|vertical-rl|vertical-text|view-box|visible|visibleFill|visiblePainted|visibleStroke|w-resize|wait|wavy\n|weight|whitespace|wider|words|wrap|wrap-reverse|x-large|x-small|xx-large|xx-small|zero|zoom-in|zoom-out)\n(?![\\w-])",
"name": "support.constant.property-value.css"
},
{
"match": "(?xi) (?<![\\w-])\n(arabic-indic|armenian|bengali|cambodian|circle|cjk-decimal|cjk-earthly-branch|cjk-heavenly-stem|cjk-ideographic\n|decimal|decimal-leading-zero|devanagari|disc|disclosure-closed|disclosure-open|ethiopic-halehame-am\n|ethiopic-halehame-ti-e[rt]|ethiopic-numeric|georgian|gujarati|gurmukhi|hangul|hangul-consonant|hebrew\n|hiragana|hiragana-iroha|japanese-formal|japanese-informal|kannada|katakana|katakana-iroha|khmer\n|korean-hangul-formal|korean-hanja-formal|korean-hanja-informal|lao|lower-alpha|lower-armenian|lower-greek\n|lower-latin|lower-roman|malayalam|mongolian|myanmar|oriya|persian|simp-chinese-formal|simp-chinese-informal\n|square|tamil|telugu|thai|tibetan|trad-chinese-formal|trad-chinese-informal|upper-alpha|upper-armenian\n|upper-latin|upper-roman|urdu)\n(?![\\w-])",
"name": "support.constant.property-value.list-style-type.css"
},
{
"match": "(?<![\\w-])(?i:-(?:ah|apple|atsc|epub|hp|khtml|moz|ms|o|rim|ro|tc|wap|webkit|xv)|(?:mso|prince))-[a-zA-Z-]+",
"name": "support.constant.vendored.property-value.css"
},
{
"match": "(?<![\\w-])(?i:arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|cursive|fantasy|monospace)(?![\\w-])",
"name": "support.constant.font-name.css"
}
]
},
"0f1cf79-color-keywords": {
"patterns": [
{
"match": "(?i)(?<![\\w-])(aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow)(?![\\w-])",
"name": "support.constant.color.w3c-standard-color-name.css"
},
{
"match": "(?xi) (?<![\\w-])\n(aliceblue|antiquewhite|aquamarine|azure|beige|bisque|blanchedalmond|blueviolet|brown|burlywood\n|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan\n|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange\n|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise\n|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen\n|gainsboro|ghostwhite|gold|goldenrod|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki\n|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow\n|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray\n|lightslategrey|lightsteelblue|lightyellow|limegreen|linen|magenta|mediumaquamarine|mediumblue\n|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise\n|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|oldlace|olivedrab|orangered\n|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum\n|powderblue|rebeccapurple|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell\n|sienna|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|thistle|tomato\n|transparent|turquoise|violet|wheat|whitesmoke|yellowgreen)\n(?![\\w-])",
"name": "support.constant.color.w3c-extended-color-name.css"
},
{
"match": "(?i)(?<![\\w-])currentColor(?![\\w-])",
"name": "support.constant.color.current.css"
},
{
"match": "(?xi) (?<![\\w-])\n(ActiveBorder|ActiveCaption|AppWorkspace|Background|ButtonFace|ButtonHighlight|ButtonShadow\n|ButtonText|CaptionText|GrayText|Highlight|HighlightText|InactiveBorder|InactiveCaption\n|InactiveCaptionText|InfoBackground|InfoText|Menu|MenuText|Scrollbar|ThreeDDarkShadow\n|ThreeDFace|ThreeDHighlight|ThreeDLightShadow|ThreeDShadow|Window|WindowFrame|WindowText)\n(?![\\w-])",
"name": "invalid.deprecated.color.system.css"
}
]
}
}
}
./test/while.sass
// SYNTAX TEST "source.sass"
@while$value<10
// <----- meta.at-rule.loop.while.sass keyword.control.loop.sass
// <- punctuation.definition.keyword.sass
@while/* 1 */$value<10/* 4 */// 5
// ^^ comment.line.slash-asterisk.sass punctuation.definition.comment.begin.sass
// ^^ comment.line.slash-asterisk.sass punctuation.definition.comment.end.sass
// ^^ comment.line.slash-asterisk.sass punctuation.definition.comment.begin.sass
// ^^ comment.line.slash-asterisk.sass punctuation.definition.comment.end.sass
// ^^ comment.line.double-slash.sass punctuation.definition.comment.sass
./test/conditional.sass
// SYNTAX TEST "source.sass"
@if$value<10
// <----- meta.at-rule.loop.conditional.sass keyword.control.conditional.if.sass
// <- punctuation.definition.keyword.sass