diff options
author | Henri Sara <hesara@vaadin.com> | 2013-02-12 14:43:11 +0000 |
---|---|---|
committer | Vaadin Code Review <review@vaadin.com> | 2013-02-12 14:43:11 +0000 |
commit | 616d98c9719a3758f413d9ff43de612fc35d9881 (patch) | |
tree | dd9ee8e2c30474b35f2b6fd5e3b904b9628f87a7 /theme-compiler | |
parent | be11c6dbbf6d9731fbdeb124116bada5fae6bc89 (diff) | |
parent | 28cb23f111782a2335a9eec47f93633e064d068d (diff) | |
download | vaadin-framework-616d98c9719a3758f413d9ff43de612fc35d9881.tar.gz vaadin-framework-616d98c9719a3758f413d9ff43de612fc35d9881.zip |
Merge "Referencing multiple params in multiple lines inside mixin (Ticket #10987)" into 7.0
Diffstat (limited to 'theme-compiler')
3 files changed, 33 insertions, 15 deletions
diff --git a/theme-compiler/src/com/vaadin/sass/internal/parser/LexicalUnitImpl.java b/theme-compiler/src/com/vaadin/sass/internal/parser/LexicalUnitImpl.java index 3527a77642..ae097537b9 100644 --- a/theme-compiler/src/com/vaadin/sass/internal/parser/LexicalUnitImpl.java +++ b/theme-compiler/src/com/vaadin/sass/internal/parser/LexicalUnitImpl.java @@ -28,6 +28,7 @@ import java.io.Serializable; import org.w3c.css.sac.LexicalUnit; import com.vaadin.sass.internal.util.ColorUtil; +import com.vaadin.sass.internal.util.DeepCopy; /** * @version $Revision: 1.3 $ @@ -380,23 +381,26 @@ public class LexicalUnitImpl implements LexicalUnit, SCSSLexicalUnit, } public void replaceValue(LexicalUnitImpl another) { - type = another.getLexicalUnitType(); - i = another.getIntegerValue(); - f = another.getFloatValue(); - s = another.getStringValue(); - fname = another.getFunctionName(); - prev = another.getPreviousLexicalUnit(); - dimension = another.getDimension(); - sdimension = another.getSdimension(); - params = another.getParameters(); - - LexicalUnitImpl finalNextInAnother = another; + // shouldn't modify 'another' directly, should only modify its copy. + LexicalUnitImpl deepCopyAnother = (LexicalUnitImpl) DeepCopy + .copy(another); + type = deepCopyAnother.getLexicalUnitType(); + i = deepCopyAnother.getIntegerValue(); + f = deepCopyAnother.getFloatValue(); + s = deepCopyAnother.getStringValue(); + fname = deepCopyAnother.getFunctionName(); + prev = deepCopyAnother.getPreviousLexicalUnit(); + dimension = deepCopyAnother.getDimension(); + sdimension = deepCopyAnother.getSdimension(); + params = deepCopyAnother.getParameters(); + + LexicalUnitImpl finalNextInAnother = deepCopyAnother; while (finalNextInAnother.getNextLexicalUnit() != null) { finalNextInAnother = finalNextInAnother.getNextLexicalUnit(); } finalNextInAnother.setNextLexicalUnit(next); - next = another.next; + next = deepCopyAnother.next; } public void setParameters(LexicalUnitImpl params) { @@ -617,8 +621,7 @@ public class LexicalUnitImpl implements LexicalUnit, SCSSLexicalUnit, @Override public LexicalUnitImpl clone() { - LexicalUnitImpl cloned = new LexicalUnitImpl(type, line, column, - (LexicalUnitImpl) prev); + LexicalUnitImpl cloned = new LexicalUnitImpl(type, line, column, prev); cloned.replaceValue(this); return cloned; } @@ -636,8 +639,9 @@ public class LexicalUnitImpl implements LexicalUnit, SCSSLexicalUnit, return i; } else if (f != -1) { return f; - } else + } else { return null; + } } public void setFunctionName(String functionName) { diff --git a/theme-compiler/tests/resources/automatic/css/mixin-multiple-params.css b/theme-compiler/tests/resources/automatic/css/mixin-multiple-params.css new file mode 100644 index 0000000000..affb47896f --- /dev/null +++ b/theme-compiler/tests/resources/automatic/css/mixin-multiple-params.css @@ -0,0 +1,4 @@ +-webkit-test: foo bar; +-moz-test: foo bar; +-webkit-test: foo bar zoo; +-moz-test: foo bar zoo;
\ No newline at end of file diff --git a/theme-compiler/tests/resources/automatic/scss/mixin-multiple-params.scss b/theme-compiler/tests/resources/automatic/scss/mixin-multiple-params.scss new file mode 100644 index 0000000000..2695ef9860 --- /dev/null +++ b/theme-compiler/tests/resources/automatic/scss/mixin-multiple-params.scss @@ -0,0 +1,10 @@ +@mixin test2 ($p1, $p2) { + -webkit-test: $p1 $p2; + -moz-test: $p1 $p2; +} +@mixin test3 ($p1, $p2, $p3) { + -webkit-test: $p1 $p2 $p3; + -moz-test: $p1 $p2 $p3; +} +@include test2(foo, bar); +@include test3(foo, bar, zoo);
\ No newline at end of file |