From: Marc Englund Date: Thu, 4 Oct 2012 12:46:02 +0000 (+0300) Subject: Partial fix for sass mixins with multiple optional params #9846 (author: seba) X-Git-Tag: 7.0.0.beta6~87^2~6 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=c380ecbe45dbb507e12f5cf22c72313229e66530;p=vaadin-framework.git Partial fix for sass mixins with multiple optional params #9846 (author: seba) Change-Id: Iacd94ffb41a91e9dd20874cd7f981830e4267a87 --- diff --git a/theme-compiler/src/com/vaadin/sass/parser/Parser.java b/theme-compiler/src/com/vaadin/sass/parser/Parser.java index a841bd5445..eb4c52ae0d 100644 --- a/theme-compiler/src/com/vaadin/sass/parser/Parser.java +++ b/theme-compiler/src/com/vaadin/sass/parser/Parser.java @@ -3143,6 +3143,15 @@ boolean isPseudoElement = false; throw new Error("Missing return statement in function"); } + void checkMixinOptionalArguments(LexicalUnitImpl arg, String name) throws ParseException { + boolean currentArgHasArguments = arg.getLexicalUnitType() == LexicalUnitImpl.SCSS_VARIABLE; + + if(currentArgHasArguments) + { + throw new ParseException("Sass Error: Required argument "+ name +" must come before any optional arguments."); + } + } + final public VariableNode mixinArg() throws ParseException { String name; LexicalUnitImpl first = null; @@ -3194,7 +3203,11 @@ boolean isPseudoElement = false; ; } next = term(prev); - prev.setNextLexicalUnit(next); prev = next; + if(next.getLexicalUnitType() == LexicalUnitImpl.SCSS_VARIABLE) + { + {if (true) throw new ParseException("Sass Error: Required argument "+ next.toString() +" must come before any optional arguments.");} + } + prev.setNextLexicalUnit(next); prev = next; } break; default: @@ -3218,6 +3231,7 @@ boolean isPseudoElement = false; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case PLUS: case MINUS: + case COLON: case STRING: case IDENT: case NUMBER: @@ -3249,39 +3263,60 @@ boolean isPseudoElement = false; jj_la1[143] = jj_gen; break label_94; } + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case COLON: + jj_consume_token(COLON); + label_95: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[144] = jj_gen; + break label_95; + } + jj_consume_token(S); + } + break; + default: + jj_la1[145] = jj_gen; + ; + } next = term(prev); - prev.setNextLexicalUnit(next); prev = next; + prev.setNextLexicalUnit(next); prev = next; } - label_95: + label_96: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case COMMA: ; break; default: - jj_la1[144] = jj_gen; - break label_95; + jj_la1[146] = jj_gen; + break label_96; } jj_consume_token(COMMA); - label_96: + label_97: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case S: ; break; default: - jj_la1[145] = jj_gen; - break label_96; + jj_la1[147] = jj_gen; + break label_97; } jj_consume_token(S); } first = term(null); args.add(first); prev = first; - label_97: + label_98: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case PLUS: case MINUS: + case COLON: case STRING: case IDENT: case NUMBER: @@ -3310,11 +3345,31 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[146] = jj_gen; - break label_97; + jj_la1[148] = jj_gen; + break label_98; + } + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case COLON: + jj_consume_token(COLON); + label_99: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[149] = jj_gen; + break label_99; + } + jj_consume_token(S); + } + break; + default: + jj_la1[150] = jj_gen; + ; } next = term(prev); - prev.setNextLexicalUnit(next); prev = next; + prev.setNextLexicalUnit(next); prev = next; } } {if (true) return args;} @@ -3325,15 +3380,15 @@ boolean isPseudoElement = false; String name; ArrayList args=null; jj_consume_token(INCLUDE_SYM); - label_98: + label_100: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case S: ; break; default: - jj_la1[147] = jj_gen; - break label_98; + jj_la1[151] = jj_gen; + break label_100; } jj_consume_token(S); } @@ -3347,22 +3402,22 @@ boolean isPseudoElement = false; jj_consume_token(RPARAN); break; default: - jj_la1[148] = jj_gen; + jj_la1[152] = jj_gen; jj_consume_token(-1); throw new ParseException(); } - label_99: + label_101: while (true) { jj_consume_token(SEMICOLON); - label_100: + label_102: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case S: ; break; default: - jj_la1[149] = jj_gen; - break label_100; + jj_la1[153] = jj_gen; + break label_102; } jj_consume_token(S); } @@ -3371,8 +3426,8 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[150] = jj_gen; - break label_99; + jj_la1[154] = jj_gen; + break label_101; } } documentHandler.includeDirective(name, args); @@ -3389,41 +3444,41 @@ boolean isPseudoElement = false; Token n = null; n = jj_consume_token(VARIABLE); variable = n.image; - label_101: + label_103: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case S: ; break; default: - jj_la1[151] = jj_gen; - break label_101; + jj_la1[155] = jj_gen; + break label_103; } jj_consume_token(S); } jj_consume_token(COLON); - label_102: + label_104: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case S: ; break; default: - jj_la1[152] = jj_gen; - break label_102; + jj_la1[156] = jj_gen; + break label_104; } jj_consume_token(S); } jj_consume_token(REMOVE); - label_103: + label_105: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case S: ; break; default: - jj_la1[153] = jj_gen; - break label_103; + jj_la1[157] = jj_gen; + break label_105; } jj_consume_token(S); } @@ -3433,19 +3488,19 @@ boolean isPseudoElement = false; jj_consume_token(RPARAN); break; default: - jj_la1[154] = jj_gen; + jj_la1[158] = jj_gen; ; } jj_consume_token(COMMA); - label_104: + label_106: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case S: ; break; default: - jj_la1[155] = jj_gen; - break label_104; + jj_la1[159] = jj_gen; + break label_106; } jj_consume_token(S); } @@ -3453,60 +3508,60 @@ boolean isPseudoElement = false; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case COMMA: jj_consume_token(COMMA); - label_105: + label_107: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case S: ; break; default: - jj_la1[156] = jj_gen; - break label_105; + jj_la1[160] = jj_gen; + break label_107; } jj_consume_token(S); } n = jj_consume_token(IDENT); separator = n.image; - label_106: + label_108: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case S: ; break; default: - jj_la1[157] = jj_gen; - break label_106; + jj_la1[161] = jj_gen; + break label_108; } jj_consume_token(S); } break; default: - jj_la1[158] = jj_gen; + jj_la1[162] = jj_gen; ; } jj_consume_token(RPARAN); - label_107: + label_109: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case S: ; break; default: - jj_la1[159] = jj_gen; - break label_107; + jj_la1[163] = jj_gen; + break label_109; } jj_consume_token(S); } jj_consume_token(SEMICOLON); - label_108: + label_110: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case S: ; break; default: - jj_la1[160] = jj_gen; - break label_108; + jj_la1[164] = jj_gen; + break label_110; } jj_consume_token(S); } @@ -3618,20 +3673,20 @@ boolean isPseudoElement = false; exclusive = false; break; default: - jj_la1[161] = jj_gen; + jj_la1[165] = jj_gen; jj_consume_token(-1); throw new ParseException(); } to = skipStatementUntilLeftBrace(); - label_109: + label_111: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case S: ; break; default: - jj_la1[162] = jj_gen; - break label_109; + jj_la1[166] = jj_gen; + break label_111; } jj_consume_token(S); } @@ -3652,31 +3707,31 @@ boolean isPseudoElement = false; final public void extendDirective() throws ParseException { ArrayList list; jj_consume_token(EXTEND_SYM); - label_110: + label_112: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case S: ; break; default: - jj_la1[163] = jj_gen; - break label_110; + jj_la1[167] = jj_gen; + break label_112; } jj_consume_token(S); } list = selectorList(); - label_111: + label_113: while (true) { jj_consume_token(SEMICOLON); - label_112: + label_114: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case S: ; break; default: - jj_la1[164] = jj_gen; - break label_112; + jj_la1[168] = jj_gen; + break label_114; } jj_consume_token(S); } @@ -3685,8 +3740,8 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[165] = jj_gen; - break label_111; + jj_la1[169] = jj_gen; + break label_113; } } documentHandler.extendDirective(list); @@ -3713,28 +3768,28 @@ boolean isPseudoElement = false; LexicalUnit exp; name = property(); jj_consume_token(COLON); - label_113: + label_115: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case S: ; break; default: - jj_la1[166] = jj_gen; - break label_113; + jj_la1[170] = jj_gen; + break label_115; } jj_consume_token(S); } jj_consume_token(LBRACE); - label_114: + label_116: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case S: ; break; default: - jj_la1[167] = jj_gen; - break label_114; + jj_la1[171] = jj_gen; + break label_116; } jj_consume_token(S); } @@ -3744,29 +3799,29 @@ LexicalUnit exp; declaration(); break; default: - jj_la1[168] = jj_gen; + jj_la1[172] = jj_gen; ; } - label_115: + label_117: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case SEMICOLON: ; break; default: - jj_la1[169] = jj_gen; - break label_115; + jj_la1[173] = jj_gen; + break label_117; } jj_consume_token(SEMICOLON); - label_116: + label_118: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case S: ; break; default: - jj_la1[170] = jj_gen; - break label_116; + jj_la1[174] = jj_gen; + break label_118; } jj_consume_token(S); } @@ -3775,21 +3830,21 @@ LexicalUnit exp; declaration(); break; default: - jj_la1[171] = jj_gen; + jj_la1[175] = jj_gen; ; } } jj_consume_token(RBRACE); documentHandler.endNestedProperties(name); - label_117: + label_119: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case S: ; break; default: - jj_la1[172] = jj_gen; - break label_117; + jj_la1[176] = jj_gen; + break label_119; } jj_consume_token(S); } @@ -3808,15 +3863,15 @@ LexicalUnit exp; name = property(); save = token; jj_consume_token(COLON); - label_118: + label_120: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case S: ; break; default: - jj_la1[173] = jj_gen; - break label_118; + jj_la1[177] = jj_gen; + break label_120; } jj_consume_token(S); } @@ -3854,7 +3909,7 @@ LexicalUnit exp; important = prio(); break; default: - jj_la1[174] = jj_gen; + jj_la1[178] = jj_gen; ; } Token next = getToken(1); @@ -3872,15 +3927,15 @@ LexicalUnit exp; break; case LBRACE: jj_consume_token(LBRACE); - label_119: + label_121: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case S: ; break; default: - jj_la1[175] = jj_gen; - break label_119; + jj_la1[179] = jj_gen; + break label_121; } jj_consume_token(S); } @@ -3890,29 +3945,29 @@ LexicalUnit exp; declaration(); break; default: - jj_la1[176] = jj_gen; + jj_la1[180] = jj_gen; ; } - label_120: + label_122: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case SEMICOLON: ; break; default: - jj_la1[177] = jj_gen; - break label_120; + jj_la1[181] = jj_gen; + break label_122; } jj_consume_token(SEMICOLON); - label_121: + label_123: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case S: ; break; default: - jj_la1[178] = jj_gen; - break label_121; + jj_la1[182] = jj_gen; + break label_123; } jj_consume_token(S); } @@ -3921,27 +3976,27 @@ LexicalUnit exp; declaration(); break; default: - jj_la1[179] = jj_gen; + jj_la1[183] = jj_gen; ; } } jj_consume_token(RBRACE); - label_122: + label_124: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case S: ; break; default: - jj_la1[180] = jj_gen; - break label_122; + jj_la1[184] = jj_gen; + break label_124; } jj_consume_token(S); } documentHandler.endNestedProperties(name); break; default: - jj_la1[181] = jj_gen; + jj_la1[185] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -3991,15 +4046,15 @@ LexicalUnit exp; name = property(); save = token; jj_consume_token(COLON); - label_123: + label_125: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case S: ; break; default: - jj_la1[182] = jj_gen; - break label_123; + jj_la1[186] = jj_gen; + break label_125; } jj_consume_token(S); } @@ -4009,7 +4064,7 @@ LexicalUnit exp; important = prio(); break; default: - jj_la1[183] = jj_gen; + jj_la1[187] = jj_gen; ; } documentHandler.property(name, exp, important); @@ -4052,15 +4107,15 @@ LexicalUnit exp; */ final public boolean prio() throws ParseException { jj_consume_token(IMPORTANT_SYM); - label_124: + label_126: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case S: ; break; default: - jj_la1[184] = jj_gen; - break label_124; + jj_la1[188] = jj_gen; + break label_126; } jj_consume_token(S); } @@ -4070,15 +4125,15 @@ LexicalUnit exp; final public boolean guarded() throws ParseException { jj_consume_token(GUARDED_SYM); - label_125: + label_127: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case S: ; break; default: - jj_la1[185] = jj_gen; - break label_125; + jj_la1[189] = jj_gen; + break label_127; } jj_consume_token(S); } @@ -4094,15 +4149,15 @@ LexicalUnit exp; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case DIV: n = jj_consume_token(DIV); - label_126: + label_128: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case S: ; break; default: - jj_la1[186] = jj_gen; - break label_126; + jj_la1[190] = jj_gen; + break label_128; } jj_consume_token(S); } @@ -4112,15 +4167,15 @@ LexicalUnit exp; break; case COMMA: n = jj_consume_token(COMMA); - label_127: + label_129: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case S: ; break; default: - jj_la1[187] = jj_gen; - break label_127; + jj_la1[191] = jj_gen; + break label_129; } jj_consume_token(S); } @@ -4129,7 +4184,7 @@ LexicalUnit exp; prev);} break; default: - jj_la1[188] = jj_gen; + jj_la1[192] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -4144,12 +4199,12 @@ LexicalUnit exp; char op; first = term(null); res = first; - label_128: + label_130: while (true) { if (jj_2_11(2)) { ; } else { - break label_128; + break label_130; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case COMMA: @@ -4157,7 +4212,7 @@ LexicalUnit exp; res = operator(res); break; default: - jj_la1[189] = jj_gen; + jj_la1[193] = jj_gen; ; } res = term(res); @@ -4180,7 +4235,7 @@ LexicalUnit exp; {if (true) return '+';} break; default: - jj_la1[190] = jj_gen; + jj_la1[194] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -4250,7 +4305,7 @@ LexicalUnit exp; op = unaryOperator(); break; default: - jj_la1[191] = jj_gen; + jj_la1[195] = jj_gen; ; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { @@ -4355,7 +4410,7 @@ LexicalUnit exp; result = function(op, prev); break; default: - jj_la1[192] = jj_gen; + jj_la1[196] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -4418,25 +4473,25 @@ LexicalUnit exp; result = unicode(prev); break; default: - jj_la1[193] = jj_gen; + jj_la1[197] = jj_gen; jj_consume_token(-1); throw new ParseException(); } break; default: - jj_la1[194] = jj_gen; + jj_la1[198] = jj_gen; jj_consume_token(-1); throw new ParseException(); } - label_129: + label_131: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case S: ; break; default: - jj_la1[195] = jj_gen; - break label_129; + jj_la1[199] = jj_gen; + break label_131; } jj_consume_token(S); } @@ -4447,7 +4502,7 @@ LexicalUnit exp; prev, varName); break; default: - jj_la1[196] = jj_gen; + jj_la1[200] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -4463,15 +4518,15 @@ LexicalUnit exp; Token n; LexicalUnit params = null; n = jj_consume_token(FUNCTION); - label_130: + label_132: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case S: ; break; default: - jj_la1[197] = jj_gen; - break label_130; + jj_la1[201] = jj_gen; + break label_132; } jj_consume_token(S); } @@ -4512,7 +4567,7 @@ LexicalUnit exp; params = expr(); break; default: - jj_la1[198] = jj_gen; + jj_la1[202] = jj_gen; ; } jj_consume_token(RPARAN); @@ -4983,15 +5038,15 @@ LexicalUnit exp; */ final public void _parseRule() throws ParseException { String ret = null; - label_131: + label_133: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case S: ; break; default: - jj_la1[199] = jj_gen; - break label_131; + jj_la1[203] = jj_gen; + break label_133; } jj_consume_token(S); } @@ -5019,7 +5074,7 @@ LexicalUnit exp; fontFace(); break; default: - jj_la1[200] = jj_gen; + jj_la1[204] = jj_gen; ret = skipStatement(); if ((ret == null) || (ret.length() == 0)) { {if (true) return;} @@ -5034,15 +5089,15 @@ LexicalUnit exp; } final public void _parseImportRule() throws ParseException { - label_132: + label_134: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case S: ; break; default: - jj_la1[201] = jj_gen; - break label_132; + jj_la1[205] = jj_gen; + break label_134; } jj_consume_token(S); } @@ -5050,15 +5105,15 @@ LexicalUnit exp; } final public void _parseMediaRule() throws ParseException { - label_133: + label_135: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case S: ; break; default: - jj_la1[202] = jj_gen; - break label_133; + jj_la1[206] = jj_gen; + break label_135; } jj_consume_token(S); } @@ -5066,15 +5121,15 @@ LexicalUnit exp; } final public void _parseDeclarationBlock() throws ParseException { - label_134: + label_136: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case S: ; break; default: - jj_la1[203] = jj_gen; - break label_134; + jj_la1[207] = jj_gen; + break label_136; } jj_consume_token(S); } @@ -5083,29 +5138,29 @@ LexicalUnit exp; declaration(); break; default: - jj_la1[204] = jj_gen; + jj_la1[208] = jj_gen; ; } - label_135: + label_137: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case SEMICOLON: ; break; default: - jj_la1[205] = jj_gen; - break label_135; + jj_la1[209] = jj_gen; + break label_137; } jj_consume_token(SEMICOLON); - label_136: + label_138: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case S: ; break; default: - jj_la1[206] = jj_gen; - break label_136; + jj_la1[210] = jj_gen; + break label_138; } jj_consume_token(S); } @@ -5114,7 +5169,7 @@ LexicalUnit exp; declaration(); break; default: - jj_la1[207] = jj_gen; + jj_la1[211] = jj_gen; ; } } @@ -5123,15 +5178,15 @@ LexicalUnit exp; final public ArrayList _parseSelectors() throws ParseException { ArrayList p = null; try { - label_137: + label_139: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case S: ; break; default: - jj_la1[208] = jj_gen; - break label_137; + jj_la1[212] = jj_gen; + break label_139; } jj_consume_token(S); } @@ -5220,142 +5275,102 @@ LexicalUnit exp; finally { jj_save(10, xla); } } - private boolean jj_3R_174() { - if (jj_scan_token(COMMA)) return true; + private boolean jj_3R_218() { + if (jj_scan_token(FUNCTION)) return true; Token xsp; while (true) { xsp = jj_scanpos; if (jj_scan_token(1)) { jj_scanpos = xsp; break; } } - return false; - } - - private boolean jj_3R_161() { - Token xsp; xsp = jj_scanpos; - if (jj_3R_173()) { - jj_scanpos = xsp; - if (jj_3R_174()) return true; - } + if (jj_3R_226()) jj_scanpos = xsp; + if (jj_scan_token(RPARAN)) return true; return false; } - private boolean jj_3R_173() { - if (jj_scan_token(DIV)) return true; - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_scan_token(1)) { jj_scanpos = xsp; break; } - } + private boolean jj_3_1() { + if (jj_3R_140()) return true; return false; } - private boolean jj_3R_219() { - if (jj_scan_token(UNICODERANGE)) return true; + private boolean jj_3R_162() { + if (jj_3R_174()) return true; return false; } - private boolean jj_3_1() { - if (jj_3R_138()) return true; + private boolean jj_3R_215() { + if (jj_3R_221()) return true; return false; } - private boolean jj_3R_224() { - if (jj_3R_169()) return true; + private boolean jj_3R_214() { + if (jj_3R_220()) return true; return false; } - private boolean jj_3R_216() { - if (jj_scan_token(FUNCTION)) return true; - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_scan_token(1)) { jj_scanpos = xsp; break; } - } - xsp = jj_scanpos; - if (jj_3R_224()) jj_scanpos = xsp; - if (jj_scan_token(RPARAN)) return true; + private boolean jj_3R_213() { + if (jj_3R_219()) return true; return false; } private boolean jj_3_4() { - if (jj_3R_141()) return true; - if (jj_3R_142()) return true; + if (jj_3R_143()) return true; + if (jj_3R_144()) return true; return false; } private boolean jj_3_7() { - if (jj_3R_138()) return true; - return false; - } - - private boolean jj_3R_160() { - if (jj_3R_172()) return true; - return false; - } - - private boolean jj_3R_213() { - if (jj_3R_219()) return true; - return false; - } - - private boolean jj_3R_212() { - if (jj_3R_218()) return true; + if (jj_3R_140()) return true; return false; } - private boolean jj_3R_167() { + private boolean jj_3R_169() { if (jj_scan_token(COLON)) return true; return false; } private boolean jj_3_6() { - if (jj_3R_143()) return true; + if (jj_3R_145()) return true; return false; } - private boolean jj_3R_211() { - if (jj_3R_217()) return true; + private boolean jj_3R_212() { + if (jj_scan_token(IDENT)) return true; return false; } private boolean jj_3_5() { - if (jj_3R_143()) return true; + if (jj_3R_145()) return true; return false; } - private boolean jj_3_2() { - if (jj_3R_138()) return true; + private boolean jj_3R_211() { + if (jj_scan_token(STRING)) return true; return false; } private boolean jj_3R_210() { - if (jj_scan_token(IDENT)) return true; - return false; - } - - private boolean jj_3R_209() { - if (jj_scan_token(STRING)) return true; + if (jj_3R_218()) return true; return false; } - private boolean jj_3R_208() { - if (jj_3R_216()) return true; + private boolean jj_3_2() { + if (jj_3R_140()) return true; return false; } - private boolean jj_3R_171() { + private boolean jj_3R_173() { Token xsp; xsp = jj_scanpos; - if (jj_3R_209()) { - jj_scanpos = xsp; - if (jj_3R_210()) { - jj_scanpos = xsp; if (jj_3R_211()) { jj_scanpos = xsp; if (jj_3R_212()) { jj_scanpos = xsp; - if (jj_3R_213()) return true; + if (jj_3R_213()) { + jj_scanpos = xsp; + if (jj_3R_214()) { + jj_scanpos = xsp; + if (jj_3R_215()) return true; } } } @@ -5363,37 +5378,72 @@ LexicalUnit exp; return false; } - private boolean jj_3R_221() { - if (jj_scan_token(INTERPOLATION)) return true; - return false; - } - - private boolean jj_3R_207() { + private boolean jj_3R_209() { if (jj_scan_token(DIMEN)) return true; return false; } - private boolean jj_3R_206() { + private boolean jj_3R_208() { if (jj_scan_token(KHZ)) return true; return false; } - private boolean jj_3R_168() { - if (jj_scan_token(LBRACKET)) return true; + private boolean jj_3R_207() { + if (jj_scan_token(HZ)) return true; + return false; + } + + private boolean jj_3R_206() { + if (jj_scan_token(MS)) return true; return false; } private boolean jj_3R_205() { - if (jj_scan_token(HZ)) return true; + if (jj_scan_token(SECOND)) return true; + return false; + } + + private boolean jj_3R_223() { + if (jj_scan_token(INTERPOLATION)) return true; return false; } private boolean jj_3R_204() { - if (jj_scan_token(MS)) return true; + if (jj_scan_token(GRAD)) return true; return false; } - private boolean jj_3R_156() { + private boolean jj_3R_203() { + if (jj_scan_token(RAD)) return true; + return false; + } + + private boolean jj_3R_160() { + if (jj_scan_token(LBRACE)) return true; + return false; + } + + private boolean jj_3R_202() { + if (jj_scan_token(DEG)) return true; + return false; + } + + private boolean jj_3R_201() { + if (jj_scan_token(EXS)) return true; + return false; + } + + private boolean jj_3R_170() { + if (jj_scan_token(LBRACKET)) return true; + return false; + } + + private boolean jj_3R_200() { + if (jj_scan_token(EMS)) return true; + return false; + } + + private boolean jj_3R_158() { if (jj_scan_token(IDENT)) return true; Token xsp; while (true) { @@ -5403,17 +5453,17 @@ LexicalUnit exp; return false; } - private boolean jj_3R_140() { - if (jj_3R_143()) return true; + private boolean jj_3R_199() { + if (jj_scan_token(PX)) return true; return false; } - private boolean jj_3R_203() { - if (jj_scan_token(SECOND)) return true; + private boolean jj_3R_142() { + if (jj_3R_145()) return true; return false; } - private boolean jj_3R_172() { + private boolean jj_3R_174() { if (jj_scan_token(VARIABLE)) return true; Token xsp; while (true) { @@ -5423,174 +5473,252 @@ LexicalUnit exp; return false; } - private boolean jj_3R_144() { - if (jj_scan_token(COMMA)) return true; - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_scan_token(1)) { jj_scanpos = xsp; break; } - } + private boolean jj_3R_198() { + if (jj_scan_token(IN)) return true; return false; } - private boolean jj_3R_188() { + private boolean jj_3R_190() { if (jj_scan_token(PARENT)) return true; return false; } - private boolean jj_3R_202() { - if (jj_scan_token(GRAD)) return true; + private boolean jj_3R_159() { + if (jj_3R_171()) return true; return false; } - private boolean jj_3R_187() { + private boolean jj_3R_189() { if (jj_scan_token(ANY)) return true; return false; } - private boolean jj_3R_201() { - if (jj_scan_token(RAD)) return true; + private boolean jj_3R_197() { + if (jj_scan_token(PC)) return true; return false; } - private boolean jj_3R_158() { - if (jj_scan_token(LBRACE)) return true; + private boolean jj_3R_196() { + if (jj_scan_token(MM)) return true; return false; } - private boolean jj_3R_200() { - if (jj_scan_token(DEG)) return true; + private boolean jj_3R_195() { + if (jj_scan_token(CM)) return true; return false; } - private boolean jj_3R_220() { + private boolean jj_3R_222() { if (jj_scan_token(IDENT)) return true; return false; } - private boolean jj_3R_214() { + private boolean jj_3R_216() { Token xsp; xsp = jj_scanpos; - if (jj_3R_220()) { + if (jj_3R_222()) { jj_scanpos = xsp; - if (jj_3R_221()) return true; + if (jj_3R_223()) return true; } return false; } - private boolean jj_3R_199() { - if (jj_scan_token(EXS)) return true; + private boolean jj_3R_145() { + if (jj_3R_158()) return true; + if (jj_scan_token(COLON)) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_scan_token(1)) { jj_scanpos = xsp; break; } + } + xsp = jj_scanpos; + if (jj_3R_159()) { + jj_scanpos = xsp; + if (jj_3R_160()) return true; + } return false; } - private boolean jj_3R_164() { + private boolean jj_3R_166() { Token xsp; xsp = jj_scanpos; - if (jj_3R_186()) { + if (jj_3R_188()) { jj_scanpos = xsp; - if (jj_3R_187()) { + if (jj_3R_189()) { jj_scanpos = xsp; - if (jj_3R_188()) return true; + if (jj_3R_190()) return true; } } return false; } - private boolean jj_3R_186() { + private boolean jj_3R_188() { Token xsp; - if (jj_3R_214()) return true; + if (jj_3R_216()) return true; while (true) { xsp = jj_scanpos; - if (jj_3R_214()) { jj_scanpos = xsp; break; } + if (jj_3R_216()) { jj_scanpos = xsp; break; } } return false; } - private boolean jj_3_10() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_144()) jj_scanpos = xsp; - if (jj_3R_145()) return true; + private boolean jj_3R_194() { + if (jj_scan_token(PT)) return true; return false; } - private boolean jj_3R_198() { - if (jj_scan_token(EMS)) return true; + private boolean jj_3R_140() { + if (jj_scan_token(VARIABLE)) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_scan_token(1)) { jj_scanpos = xsp; break; } + } + if (jj_scan_token(COLON)) return true; + while (true) { + xsp = jj_scanpos; + if (jj_scan_token(1)) { jj_scanpos = xsp; break; } + } + if (jj_scan_token(REMOVE)) return true; + while (true) { + xsp = jj_scanpos; + if (jj_scan_token(1)) { jj_scanpos = xsp; break; } + } + if (true) { jj_la = 0; jj_scanpos = jj_lastpos; return false;} return false; } - private boolean jj_3R_183() { + private boolean jj_3R_185() { if (jj_scan_token(S)) return true; return false; } - private boolean jj_3R_182() { + private boolean jj_3R_184() { if (jj_scan_token(DOT)) return true; return false; } - private boolean jj_3R_181() { + private boolean jj_3R_193() { + if (jj_scan_token(PERCENTAGE)) return true; + return false; + } + + private boolean jj_3R_183() { if (jj_scan_token(EQ)) return true; return false; } - private boolean jj_3R_180() { + private boolean jj_3R_182() { if (jj_scan_token(RPARAN)) return true; return false; } - private boolean jj_3R_197() { - if (jj_scan_token(PX)) return true; + private boolean jj_3R_191() { + if (jj_3R_217()) return true; return false; } - private boolean jj_3R_179() { + private boolean jj_3R_181() { if (jj_scan_token(FUNCTION)) return true; return false; } - private boolean jj_3R_178() { - if (jj_scan_token(COLON)) return true; + private boolean jj_3R_192() { + if (jj_scan_token(NUMBER)) return true; return false; } - private boolean jj_3R_139() { - if (jj_3R_147()) return true; + private boolean jj_3R_180() { + if (jj_scan_token(COLON)) return true; return false; } - private boolean jj_3R_177() { - if (jj_scan_token(INTERPOLATION)) return true; + private boolean jj_3R_141() { + if (jj_3R_149()) return true; return false; } - private boolean jj_3R_196() { - if (jj_scan_token(IN)) return true; + private boolean jj_3R_179() { + if (jj_scan_token(INTERPOLATION)) return true; return false; } - private boolean jj_3R_176() { + private boolean jj_3R_178() { if (jj_scan_token(NUMBER)) return true; return false; } - private boolean jj_3R_157() { - if (jj_3R_169()) return true; + private boolean jj_3R_172() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_191()) jj_scanpos = xsp; + xsp = jj_scanpos; + if (jj_3R_192()) { + jj_scanpos = xsp; + if (jj_3R_193()) { + jj_scanpos = xsp; + if (jj_3R_194()) { + jj_scanpos = xsp; + if (jj_3R_195()) { + jj_scanpos = xsp; + if (jj_3R_196()) { + jj_scanpos = xsp; + if (jj_3R_197()) { + jj_scanpos = xsp; + if (jj_3R_198()) { + jj_scanpos = xsp; + if (jj_3R_199()) { + jj_scanpos = xsp; + if (jj_3R_200()) { + jj_scanpos = xsp; + if (jj_3R_201()) { + jj_scanpos = xsp; + if (jj_3R_202()) { + jj_scanpos = xsp; + if (jj_3R_203()) { + jj_scanpos = xsp; + if (jj_3R_204()) { + jj_scanpos = xsp; + if (jj_3R_205()) { + jj_scanpos = xsp; + if (jj_3R_206()) { + jj_scanpos = xsp; + if (jj_3R_207()) { + jj_scanpos = xsp; + if (jj_3R_208()) { + jj_scanpos = xsp; + if (jj_3R_209()) { + jj_scanpos = xsp; + if (jj_3R_210()) return true; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } return false; } private boolean jj_3_9() { - if (jj_3R_143()) return true; + if (jj_3R_145()) return true; return false; } - private boolean jj_3R_162() { + private boolean jj_3R_164() { Token xsp; xsp = jj_scanpos; - if (jj_3R_175()) { - jj_scanpos = xsp; - if (jj_3R_176()) { - jj_scanpos = xsp; if (jj_3R_177()) { jj_scanpos = xsp; if (jj_3R_178()) { @@ -5603,7 +5731,11 @@ LexicalUnit exp; jj_scanpos = xsp; if (jj_3R_182()) { jj_scanpos = xsp; - if (jj_3R_183()) return true; + if (jj_3R_183()) { + jj_scanpos = xsp; + if (jj_3R_184()) { + jj_scanpos = xsp; + if (jj_3R_185()) return true; } } } @@ -5615,48 +5747,46 @@ LexicalUnit exp; return false; } - private boolean jj_3R_175() { + private boolean jj_3R_177() { if (jj_scan_token(IDENT)) return true; return false; } - private boolean jj_3R_195() { - if (jj_scan_token(PC)) return true; + private boolean jj_3R_161() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_172()) { + jj_scanpos = xsp; + if (jj_3R_173()) return true; + } + while (true) { + xsp = jj_scanpos; + if (jj_scan_token(1)) { jj_scanpos = xsp; break; } + } return false; } - private boolean jj_3R_194() { - if (jj_scan_token(MM)) return true; + private boolean jj_3R_147() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_161()) { + jj_scanpos = xsp; + if (jj_3R_162()) return true; + } return false; } - private boolean jj_3R_193() { - if (jj_scan_token(CM)) return true; + private boolean jj_3R_148() { + if (jj_3R_163()) return true; return false; } - private boolean jj_3R_166() { + private boolean jj_3R_168() { if (jj_scan_token(DOT)) return true; return false; } - private boolean jj_3R_143() { - if (jj_3R_156()) return true; - if (jj_scan_token(COLON)) return true; - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_scan_token(1)) { jj_scanpos = xsp; break; } - } - xsp = jj_scanpos; - if (jj_3R_157()) { - jj_scanpos = xsp; - if (jj_3R_158()) return true; - } - return false; - } - - private boolean jj_3R_147() { + private boolean jj_3R_149() { if (jj_scan_token(MICROSOFT_RULE)) return true; Token xsp; while (true) { @@ -5664,20 +5794,20 @@ LexicalUnit exp; if (jj_scan_token(1)) { jj_scanpos = xsp; break; } } if (jj_scan_token(COLON)) return true; - if (jj_3R_162()) return true; + if (jj_3R_164()) return true; while (true) { xsp = jj_scanpos; - if (jj_3R_162()) { jj_scanpos = xsp; break; } + if (jj_3R_164()) { jj_scanpos = xsp; break; } } return false; } - private boolean jj_3R_192() { - if (jj_scan_token(PT)) return true; + private boolean jj_3R_219() { + if (jj_scan_token(HASH)) return true; return false; } - private boolean jj_3R_185() { + private boolean jj_3R_187() { if (jj_scan_token(PRECEDES)) return true; return false; } @@ -5685,128 +5815,49 @@ LexicalUnit exp; private boolean jj_3_3() { Token xsp; xsp = jj_scanpos; - if (jj_3R_139()) { + if (jj_3R_141()) { jj_scanpos = xsp; - if (jj_3R_140()) return true; - } - return false; - } - - private boolean jj_3R_138() { - if (jj_scan_token(VARIABLE)) return true; - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_scan_token(1)) { jj_scanpos = xsp; break; } - } - if (jj_scan_token(COLON)) return true; - while (true) { - xsp = jj_scanpos; - if (jj_scan_token(1)) { jj_scanpos = xsp; break; } - } - if (jj_scan_token(REMOVE)) return true; - while (true) { - xsp = jj_scanpos; - if (jj_scan_token(1)) { jj_scanpos = xsp; break; } + if (jj_3R_142()) return true; } - if (true) { jj_la = 0; jj_scanpos = jj_lastpos; return false;} return false; } - private boolean jj_3R_191() { - if (jj_scan_token(PERCENTAGE)) return true; + private boolean jj_3R_186() { + if (jj_scan_token(PLUS)) return true; return false; } - private boolean jj_3R_184() { + private boolean jj_3R_225() { if (jj_scan_token(PLUS)) return true; return false; } - private boolean jj_3R_189() { - if (jj_3R_215()) return true; + private boolean jj_3R_224() { + if (jj_scan_token(MINUS)) return true; return false; } - private boolean jj_3R_163() { + private boolean jj_3R_217() { Token xsp; xsp = jj_scanpos; - if (jj_3R_184()) { + if (jj_3R_224()) { jj_scanpos = xsp; - if (jj_3R_185()) return true; + if (jj_3R_225()) return true; } return false; } - private boolean jj_3R_190() { - if (jj_scan_token(NUMBER)) return true; - return false; - } - - private boolean jj_3R_170() { + private boolean jj_3R_165() { Token xsp; xsp = jj_scanpos; - if (jj_3R_189()) jj_scanpos = xsp; - xsp = jj_scanpos; - if (jj_3R_190()) { - jj_scanpos = xsp; - if (jj_3R_191()) { - jj_scanpos = xsp; - if (jj_3R_192()) { - jj_scanpos = xsp; - if (jj_3R_193()) { - jj_scanpos = xsp; - if (jj_3R_194()) { - jj_scanpos = xsp; - if (jj_3R_195()) { - jj_scanpos = xsp; - if (jj_3R_196()) { - jj_scanpos = xsp; - if (jj_3R_197()) { - jj_scanpos = xsp; - if (jj_3R_198()) { - jj_scanpos = xsp; - if (jj_3R_199()) { - jj_scanpos = xsp; - if (jj_3R_200()) { - jj_scanpos = xsp; - if (jj_3R_201()) { - jj_scanpos = xsp; - if (jj_3R_202()) { - jj_scanpos = xsp; - if (jj_3R_203()) { - jj_scanpos = xsp; - if (jj_3R_204()) { - jj_scanpos = xsp; - if (jj_3R_205()) { - jj_scanpos = xsp; - if (jj_3R_206()) { - jj_scanpos = xsp; - if (jj_3R_207()) { + if (jj_3R_186()) { jj_scanpos = xsp; - if (jj_3R_208()) return true; - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } + if (jj_3R_187()) return true; } return false; } - private boolean jj_3R_149() { + private boolean jj_3R_151() { if (jj_scan_token(PRECEDES)) return true; Token xsp; while (true) { @@ -5817,43 +5868,27 @@ LexicalUnit exp; } private boolean jj_3_8() { - if (jj_3R_143()) return true; - return false; - } - - private boolean jj_3R_159() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_170()) { - jj_scanpos = xsp; - if (jj_3R_171()) return true; - } - while (true) { - xsp = jj_scanpos; - if (jj_scan_token(1)) { jj_scanpos = xsp; break; } - } + if (jj_3R_145()) return true; return false; } - private boolean jj_3R_145() { + private boolean jj_3_11() { Token xsp; xsp = jj_scanpos; - if (jj_3R_159()) { - jj_scanpos = xsp; - if (jj_3R_160()) return true; - } + if (jj_3R_148()) jj_scanpos = xsp; + if (jj_3R_147()) return true; return false; } - private boolean jj_3R_150() { + private boolean jj_3R_152() { if (jj_scan_token(S)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_163()) jj_scanpos = xsp; + if (jj_3R_165()) jj_scanpos = xsp; return false; } - private boolean jj_3R_148() { + private boolean jj_3R_150() { if (jj_scan_token(PLUS)) return true; Token xsp; while (true) { @@ -5863,69 +5898,89 @@ LexicalUnit exp; return false; } - private boolean jj_3R_141() { + private boolean jj_3R_143() { Token xsp; xsp = jj_scanpos; - if (jj_3R_148()) { + if (jj_3R_150()) { jj_scanpos = xsp; - if (jj_3R_149()) { + if (jj_3R_151()) { jj_scanpos = xsp; - if (jj_3R_150()) return true; + if (jj_3R_152()) return true; } } return false; } - private boolean jj_3R_146() { - if (jj_3R_161()) return true; + private boolean jj_3R_220() { + if (jj_scan_token(URL)) return true; return false; } - private boolean jj_3R_217() { - if (jj_scan_token(HASH)) return true; + private boolean jj_3R_171() { + if (jj_3R_147()) return true; return false; } - private boolean jj_3R_223() { - if (jj_scan_token(PLUS)) return true; + private boolean jj_3R_146() { + if (jj_scan_token(COMMA)) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_scan_token(1)) { jj_scanpos = xsp; break; } + } return false; } - private boolean jj_3R_222() { - if (jj_scan_token(MINUS)) return true; + private boolean jj_3R_176() { + if (jj_scan_token(COMMA)) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_scan_token(1)) { jj_scanpos = xsp; break; } + } return false; } - private boolean jj_3R_215() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_222()) { - jj_scanpos = xsp; - if (jj_3R_223()) return true; - } + private boolean jj_3R_157() { + if (jj_3R_170()) return true; return false; } - private boolean jj_3_11() { + private boolean jj_3_10() { Token xsp; xsp = jj_scanpos; if (jj_3R_146()) jj_scanpos = xsp; - if (jj_3R_145()) return true; + if (jj_3R_147()) return true; return false; } - private boolean jj_3R_218() { - if (jj_scan_token(URL)) return true; + private boolean jj_3R_156() { + if (jj_3R_169()) return true; return false; } - private boolean jj_3R_155() { - if (jj_3R_168()) return true; + private boolean jj_3R_163() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_175()) { + jj_scanpos = xsp; + if (jj_3R_176()) return true; + } return false; } - private boolean jj_3R_169() { - if (jj_3R_145()) return true; + private boolean jj_3R_175() { + if (jj_scan_token(DIV)) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_scan_token(1)) { jj_scanpos = xsp; break; } + } + return false; + } + + private boolean jj_3R_155() { + if (jj_3R_168()) return true; return false; } @@ -5934,33 +5989,33 @@ LexicalUnit exp; return false; } - private boolean jj_3R_153() { - if (jj_3R_166()) return true; + private boolean jj_3R_221() { + if (jj_scan_token(UNICODERANGE)) return true; return false; } - private boolean jj_3R_152() { - if (jj_3R_165()) return true; + private boolean jj_3R_226() { + if (jj_3R_171()) return true; return false; } - private boolean jj_3R_151() { - if (jj_3R_164()) return true; + private boolean jj_3R_153() { + if (jj_3R_166()) return true; return false; } - private boolean jj_3R_142() { + private boolean jj_3R_144() { Token xsp; xsp = jj_scanpos; - if (jj_3R_151()) { - jj_scanpos = xsp; - if (jj_3R_152()) { - jj_scanpos = xsp; if (jj_3R_153()) { jj_scanpos = xsp; if (jj_3R_154()) { jj_scanpos = xsp; - if (jj_3R_155()) return true; + if (jj_3R_155()) { + jj_scanpos = xsp; + if (jj_3R_156()) { + jj_scanpos = xsp; + if (jj_3R_157()) return true; } } } @@ -5968,7 +6023,7 @@ LexicalUnit exp; return false; } - private boolean jj_3R_165() { + private boolean jj_3R_167() { if (jj_scan_token(HASH)) return true; return false; } @@ -5983,7 +6038,7 @@ LexicalUnit exp; private Token jj_scanpos, jj_lastpos; private int jj_la; private int jj_gen; - final private int[] jj_la1 = new int[209]; + final private int[] jj_la1 = new int[213]; static private int[] jj_la1_0; static private int[] jj_la1_1; static private int[] jj_la1_2; @@ -5995,16 +6050,16 @@ LexicalUnit exp; jj_la1_init_3(); } private static void jj_la1_init_0() { - jj_la1_0 = new int[] {0x0,0xc02,0xc02,0x0,0xc00,0x2,0x2,0x2,0x0,0xe8000000,0xc00,0x2,0xc00,0x2,0x0,0x2,0x0,0x2,0x2,0x2,0xe9f45400,0xe9f45400,0x2,0x400000,0x2,0x2,0x2,0x2,0x0,0x0,0x2,0x0,0x800000,0x2,0x0,0x2,0x2,0x2,0x2,0x0,0x800000,0x2,0x0,0x2,0x1f45400,0x2,0x2,0x1100000,0x2,0x1100000,0x1100002,0x2,0x80080002,0x80080002,0x2,0x2,0x2,0x2,0x2,0xe8000000,0x0,0x0,0x0,0xe8000000,0x2,0x400000,0x2,0x2,0x88000000,0x88000000,0x88000000,0x88000000,0x88000000,0x88000000,0x88000000,0x88000000,0x88000000,0x88000000,0xe8000000,0x0,0x0,0x0,0x0,0x60000000,0x2,0x2,0xfc000,0x2,0x0,0x2,0xfc000,0x0,0x2,0x2,0x0,0x2,0x0,0x2,0x800000,0x27380002,0x2,0xe8000000,0x0,0xe8000000,0x2,0x0,0x2,0x27380002,0x0,0x2,0xe8000000,0x0,0xe8000000,0x2,0x27380002,0x2,0x2,0x2,0x0,0x2,0xe8000000,0x0,0x0,0xe8000000,0x2,0x2,0x400000,0x2,0x2,0x2,0x2,0x0,0x2,0xe8000000,0x0,0xe8000000,0x2,0x400000,0x2,0x2,0x2,0x400000,0x0,0x300000,0x400000,0x2,0x300000,0x2,0x0,0x2,0x800000,0x2,0x2,0x2,0x0,0x2,0x2,0x2,0x400000,0x2,0x2,0x0,0x2,0x2,0x2,0x800000,0x2,0x2,0x0,0x800000,0x2,0x0,0x2,0x2,0x0,0x2,0x0,0x800000,0x2,0x0,0x2,0x301000,0x2,0x0,0x2,0x2,0x2,0x2,0x4400000,0x4400000,0x300000,0x300000,0x0,0x0,0x300000,0x2,0x300000,0x2,0x300000,0x2,0xe8000000,0x2,0x2,0x2,0x0,0x800000,0x2,0x0,0x2,}; + jj_la1_0 = new int[] {0x0,0xc02,0xc02,0x0,0xc00,0x2,0x2,0x2,0x0,0xe8000000,0xc00,0x2,0xc00,0x2,0x0,0x2,0x0,0x2,0x2,0x2,0xe9f45400,0xe9f45400,0x2,0x400000,0x2,0x2,0x2,0x2,0x0,0x0,0x2,0x0,0x800000,0x2,0x0,0x2,0x2,0x2,0x2,0x0,0x800000,0x2,0x0,0x2,0x1f45400,0x2,0x2,0x1100000,0x2,0x1100000,0x1100002,0x2,0x80080002,0x80080002,0x2,0x2,0x2,0x2,0x2,0xe8000000,0x0,0x0,0x0,0xe8000000,0x2,0x400000,0x2,0x2,0x88000000,0x88000000,0x88000000,0x88000000,0x88000000,0x88000000,0x88000000,0x88000000,0x88000000,0x88000000,0xe8000000,0x0,0x0,0x0,0x0,0x60000000,0x2,0x2,0xfc000,0x2,0x0,0x2,0xfc000,0x0,0x2,0x2,0x0,0x2,0x0,0x2,0x800000,0x27380002,0x2,0xe8000000,0x0,0xe8000000,0x2,0x0,0x2,0x27380002,0x0,0x2,0xe8000000,0x0,0xe8000000,0x2,0x27380002,0x2,0x2,0x2,0x0,0x2,0xe8000000,0x0,0x0,0xe8000000,0x2,0x2,0x400000,0x2,0x2,0x2,0x2,0x0,0x2,0xe8000000,0x0,0xe8000000,0x2,0x400000,0x2,0x2,0x2,0x400000,0x0,0x300000,0x2,0x0,0x400000,0x2,0x300000,0x2,0x0,0x2,0x0,0x2,0x800000,0x2,0x2,0x2,0x0,0x2,0x2,0x2,0x400000,0x2,0x2,0x0,0x2,0x2,0x2,0x800000,0x2,0x2,0x0,0x800000,0x2,0x0,0x2,0x2,0x0,0x2,0x0,0x800000,0x2,0x0,0x2,0x301000,0x2,0x0,0x2,0x2,0x2,0x2,0x4400000,0x4400000,0x300000,0x300000,0x0,0x0,0x300000,0x2,0x300000,0x2,0x300000,0x2,0xe8000000,0x2,0x2,0x2,0x0,0x800000,0x2,0x0,0x2,}; } private static void jj_la1_init_1() { - jj_la1_1 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x83000c0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1c0,0x1c0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x100,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc2,0xc2,0x0,0x0,0x0,0x0,0x0,0xa82000c0,0x0,0x20000000,0x88200000,0xc0,0x0,0x0,0x0,0x0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0xc0,0x80,0x80,0x80,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3f,0x0,0x802000c0,0x80200000,0xc0,0x0,0x40000000,0x0,0x3f,0x0,0x0,0x802000c0,0x80200000,0xc0,0x0,0x3f,0x0,0x0,0x0,0x0,0x0,0x802000c0,0x200000,0x80000000,0xc0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x882000c0,0x88200000,0xc0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x0,0x0,0x0,0x60000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,}; + jj_la1_1 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x83000c0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1c0,0x1c0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x100,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc2,0xc2,0x0,0x0,0x0,0x0,0x0,0xa82000c0,0x0,0x20000000,0x88200000,0xc0,0x0,0x0,0x0,0x0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0xc0,0x80,0x80,0x80,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3f,0x0,0x802000c0,0x80200000,0xc0,0x0,0x40000000,0x0,0x3f,0x0,0x0,0x802000c0,0x80200000,0xc0,0x0,0x3f,0x0,0x0,0x0,0x0,0x0,0x802000c0,0x200000,0x80000000,0xc0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x882000c0,0x88200000,0xc0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x40,0x0,0x40,0x0,0x0,0x40,0x0,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x0,0x0,0x0,0x60000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,}; } private static void jj_la1_init_2() { - jj_la1_2 = new int[] {0x80000000,0x0,0x0,0x20000000,0x0,0x0,0x0,0x0,0x400,0x50000440,0x0,0x0,0x0,0x0,0x220,0x0,0x40,0x0,0x0,0x0,0xf0000ae0,0xf0000ae0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x0,0x0,0x40,0x0,0x0,0x40,0x0,0x0,0x0,0x0,0x40,0x0,0x0,0x40,0x0,0xe0000aa0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0xc0,0x0,0x0,0x0,0x0,0x0,0x50000444,0x44,0x0,0x40000400,0x10000040,0x0,0x0,0x0,0x0,0x10000000,0x10000000,0x0,0x0,0x10000000,0x10000000,0x10000000,0x10000000,0x10000000,0x10000000,0x10000040,0x40,0x40,0x40,0x40,0x40,0x0,0x0,0x0,0x0,0x60,0x0,0x0,0x0,0x0,0x0,0x40,0x0,0x10,0x0,0x0,0x4c0,0x0,0x50000440,0x40000400,0x10000040,0x0,0x0,0x0,0x4c0,0x8,0x0,0x50000440,0x40000400,0x10000040,0x0,0x4c0,0x0,0x0,0x0,0x440,0x0,0x50000440,0x0,0x40000400,0x10000040,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x0,0x50000440,0x40000400,0x10000040,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1ffffee0,0x0,0x0,0x1ffffee0,0x0,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x0,0x0,0x40,0x0,0x0,0x0,0x0,0x40,0x0,0x0,0x40,0x0,0x1ffffee0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffff880,0x10000260,0x1ffffae0,0x0,0x1ffffee0,0x0,0x1ffffee0,0x0,0x70000040,0x0,0x0,0x0,0x40,0x0,0x0,0x40,0x0,}; + jj_la1_2 = new int[] {0x80000000,0x0,0x0,0x20000000,0x0,0x0,0x0,0x0,0x400,0x50000440,0x0,0x0,0x0,0x0,0x220,0x0,0x40,0x0,0x0,0x0,0xf0000ae0,0xf0000ae0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x0,0x0,0x40,0x0,0x0,0x40,0x0,0x0,0x0,0x0,0x40,0x0,0x0,0x40,0x0,0xe0000aa0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0xc0,0x0,0x0,0x0,0x0,0x0,0x50000444,0x44,0x0,0x40000400,0x10000040,0x0,0x0,0x0,0x0,0x10000000,0x10000000,0x0,0x0,0x10000000,0x10000000,0x10000000,0x10000000,0x10000000,0x10000000,0x10000040,0x40,0x40,0x40,0x40,0x40,0x0,0x0,0x0,0x0,0x60,0x0,0x0,0x0,0x0,0x0,0x40,0x0,0x10,0x0,0x0,0x4c0,0x0,0x50000440,0x40000400,0x10000040,0x0,0x0,0x0,0x4c0,0x8,0x0,0x50000440,0x40000400,0x10000040,0x0,0x4c0,0x0,0x0,0x0,0x440,0x0,0x50000440,0x0,0x40000400,0x10000040,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x0,0x50000440,0x40000400,0x10000040,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1ffffee0,0x0,0x0,0x0,0x0,0x1ffffee0,0x0,0x0,0x0,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x0,0x0,0x40,0x0,0x0,0x0,0x0,0x40,0x0,0x0,0x40,0x0,0x1ffffee0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffff880,0x10000260,0x1ffffae0,0x0,0x1ffffee0,0x0,0x1ffffee0,0x0,0x70000040,0x0,0x0,0x0,0x40,0x0,0x0,0x40,0x0,}; } private static void jj_la1_init_3() { - jj_la1_3 = new int[] {0x0,0x4,0x4,0x0,0x4,0x0,0x0,0x0,0x0,0x3,0x4,0x0,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1a00f,0x1a00f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1a00f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8000,0x8000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xa000,0x0,0x0,0xa000,0x0,0x8000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0xa000,0x0,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8000,0x2000,0xa000,0x0,0xa000,0x0,0xa000,0x0,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,}; + jj_la1_3 = new int[] {0x0,0x4,0x4,0x0,0x4,0x0,0x0,0x0,0x0,0x3,0x4,0x0,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1a00f,0x1a00f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1a00f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8000,0x8000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xa000,0x0,0x0,0x0,0x0,0xa000,0x0,0x0,0x0,0x8000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0xa000,0x0,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8000,0x2000,0xa000,0x0,0xa000,0x0,0xa000,0x0,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,}; } final private JJCalls[] jj_2_rtns = new JJCalls[11]; private boolean jj_rescan = false; @@ -6016,7 +6071,7 @@ LexicalUnit exp; token = new Token(); jj_ntk = -1; jj_gen = 0; - for (int i = 0; i < 209; i++) jj_la1[i] = -1; + for (int i = 0; i < 213; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } @@ -6026,7 +6081,7 @@ LexicalUnit exp; token = new Token(); jj_ntk = -1; jj_gen = 0; - for (int i = 0; i < 209; i++) jj_la1[i] = -1; + for (int i = 0; i < 213; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } @@ -6036,7 +6091,7 @@ LexicalUnit exp; token = new Token(); jj_ntk = -1; jj_gen = 0; - for (int i = 0; i < 209; i++) jj_la1[i] = -1; + for (int i = 0; i < 213; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } @@ -6046,7 +6101,7 @@ LexicalUnit exp; token = new Token(); jj_ntk = -1; jj_gen = 0; - for (int i = 0; i < 209; i++) jj_la1[i] = -1; + for (int i = 0; i < 213; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } @@ -6163,7 +6218,7 @@ LexicalUnit exp; la1tokens[jj_kind] = true; jj_kind = -1; } - for (int i = 0; i < 209; i++) { + for (int i = 0; i < 213; i++) { if (jj_la1[i] == jj_gen) { for (int j = 0; j < 32; j++) { if ((jj_la1_0[i] & (1< arglist() : } } +JAVACODE +void checkMixinOptionalArguments(LexicalUnitImpl arg, String name) { + boolean currentArgHasArguments = arg.getLexicalUnitType() == LexicalUnitImpl.SCSS_VARIABLE; + if(currentArgHasArguments) { throw new ParseException("Sass Error: Required argument "+ name +" must come before any optional arguments."); + } +} + VariableNode mixinArg() : { String name; @@ -1522,7 +1529,16 @@ VariableNode mixinArg() : LexicalUnitImpl prev = null; } { - name=variableName() (":" ()* first=term(null){ prev = first; } (LOOKAHEAD(2)(< COMMA >(< S >)*)?next=term(prev){prev.setNextLexicalUnit(next); prev = next;})* )? + name=variableName() (":" ()* first=term(null){ prev = first; } + (LOOKAHEAD(2)(< COMMA >(< S >)*)? + next=term(prev){ + if(next.getLexicalUnitType() == LexicalUnitImpl.SCSS_VARIABLE) + { + throw new ParseException("Sass Error: Required argument "+ next.toString() +" must come before any optional arguments."); + } + prev.setNextLexicalUnit(next); prev = next; + + })* )? { VariableNode arg = new VariableNode(name, first, false); return arg; @@ -1537,9 +1553,9 @@ ArrayList argValuelist() : LexicalUnitImpl prev = null; } { - first = term(null) { args.add(first); prev = first;}(next=term(prev){prev.setNextLexicalUnit(next); prev = next;})* + first = term(null) { args.add(first); prev = first;}((< COLON > (< S >)*)?next=term(prev){prev.setNextLexicalUnit(next); prev = next;})* ( ()* - first = term(null) { args.add(first); prev = first;}(next=term(prev){prev.setNextLexicalUnit(next); prev = next;})* + first = term(null) { args.add(first); prev = first;}((< COLON > (< S >)*)?next=term(prev){prev.setNextLexicalUnit(next); prev = next;})* )* {return args;} } diff --git a/theme-compiler/src/com/vaadin/sass/visitor/MixinVisitor.java b/theme-compiler/src/com/vaadin/sass/visitor/MixinVisitor.java index bf1fb65ae3..fecc717437 100644 --- a/theme-compiler/src/com/vaadin/sass/visitor/MixinVisitor.java +++ b/theme-compiler/src/com/vaadin/sass/visitor/MixinVisitor.java @@ -25,6 +25,7 @@ import com.vaadin.sass.tree.IVariableNode; import com.vaadin.sass.tree.MixinDefNode; import com.vaadin.sass.tree.MixinNode; import com.vaadin.sass.tree.Node; +import com.vaadin.sass.tree.VariableNode; import com.vaadin.sass.util.DeepCopy; public class MixinVisitor implements Visitor { @@ -78,12 +79,7 @@ public class MixinVisitor implements Visitor { MixinDefNode defClone = (MixinDefNode) DeepCopy.copy(mixinDef); - int i = 0; - for (final LexicalUnitImpl unit : mixinNode.getArglist()) { - defClone.getArglist().get(i) - .setExpr((LexicalUnitImpl) DeepCopy.copy(unit)); - i++; - } + replacePossibleArguments(mixinNode, defClone); Node previous = mixinNode; for (final Node child : defClone.getChildren()) { @@ -102,6 +98,48 @@ public class MixinVisitor implements Visitor { current.removeChild(mixinNode); } + /** + * We have to replace all the mixin parameters. This is done in two phases. + * First phase replaces all the named parameters while the second replaces + * in order of remaining unmodified parameters. + * + * @param mixinNode + * @param def + */ + private void replacePossibleArguments(MixinNode mixinNode, MixinDefNode def) { + + if (mixinNode.getArglist().size() > 0) { + ArrayList remainingNodes = new ArrayList( + def.getArglist()); + ArrayList remainingUnits = new ArrayList( + mixinNode.getArglist()); + + for (final LexicalUnitImpl unit : mixinNode.getArglist()) { + if (unit.getLexicalUnitType() == LexicalUnitImpl.SCSS_VARIABLE + && unit.getNextLexicalUnit() != null) { + for (final VariableNode node : def.getArglist()) { + if (node.getName().equals(unit.getValue().toString())) { + node.setExpr((LexicalUnitImpl) DeepCopy.copy(unit + .getNextLexicalUnit())); + remainingNodes.remove(node); + remainingUnits.remove(unit); + break; + } + } + } + } + + int i = 0; + for (final LexicalUnitImpl unit : remainingUnits) { + remainingNodes.get(i).setExpr( + (LexicalUnitImpl) DeepCopy.copy(unit)); + i++; + } + + } + + } + private void replaceChildVariables(MixinDefNode mixinDef, Node node) { for (final Node child : node.getChildren()) { replaceChildVariables(mixinDef, child); diff --git a/theme-compiler/tests/resources/css/mixins.css b/theme-compiler/tests/resources/css/mixins.css index a1ba5b1259..9bb9c95efa 100644 --- a/theme-compiler/tests/resources/css/mixins.css +++ b/theme-compiler/tests/resources/css/mixins.css @@ -22,6 +22,7 @@ .banner { border: 1px solid black; + font-color: red; } .interpolation-test { diff --git a/theme-compiler/tests/resources/scss/mixins.scss b/theme-compiler/tests/resources/scss/mixins.scss index 5ae7dc8faa..32d8250fe8 100644 --- a/theme-compiler/tests/resources/scss/mixins.scss +++ b/theme-compiler/tests/resources/scss/mixins.scss @@ -55,11 +55,12 @@ $mixinVar : 1px; } .banner { - @include fontType(1px solid black); + @include fontType(1px solid black, $color : red); } -@mixin fontType($border){ +@mixin fontType($border, $color : black){ border : $border; + font-color: $color; } @include interpolation(interpolation);