From 372509050f1f88e2b2f5e21ace894e2a5bc70b6f Mon Sep 17 00:00:00 2001 From: Jakub Pawlowicz Date: Sun, 27 Sep 2015 12:14:12 +0100 Subject: [PATCH] Fixes #675 - overriding with `!important`. There was an edge case with overriding properties with `!important` modifier. It's a regression introduced in 2ba023dd151d9c494a3cffbda538ca46f7e36f5b. --- History.md | 5 +++++ lib/properties/optimizer.js | 3 +++ test/selectors/advanced-test.js | 4 ++++ 3 files changed, 12 insertions(+) diff --git a/History.md b/History.md index 0278f48c..113e7b13 100644 --- a/History.md +++ b/History.md @@ -3,6 +3,11 @@ * Requires Node.js 4.0+ to run. +[3.4.5 / 2015-xx-xx](https://github.com/jakubpawlowicz/clean-css/compare/v3.4.4...3.4) +================== + +* Fixed issue [#675](https://github.com/jakubpawlowicz/clean-css/issues/675) - overriding with `!important`. + [3.4.4 / 2015-09-21](https://github.com/jakubpawlowicz/clean-css/compare/v3.4.3...v3.4.4) ================== diff --git a/lib/properties/optimizer.js b/lib/properties/optimizer.js index accf121a..d244ad8e 100644 --- a/lib/properties/optimizer.js +++ b/lib/properties/optimizer.js @@ -162,7 +162,10 @@ function _optimize(properties, mergeAdjacent, aggressiveMerging, validator) { if (anyRemoved) { position = -1; + lastProperty = null; + lastName = null; overrideMapping = {}; + continue; } } else { overrideMapping[_name] = overrideMapping[_name] || []; diff --git a/test/selectors/advanced-test.js b/test/selectors/advanced-test.js index ee55c6a4..33c842ff 100644 --- a/test/selectors/advanced-test.js +++ b/test/selectors/advanced-test.js @@ -7,6 +7,10 @@ vows.describe('advanced optimizer') 'adjacent': [ 'a{display:none}a{display:none;visibility:hidden}', 'a{display:none;visibility:hidden}' + ], + 'overriding by !important': [ + 'a{margin:0}a{margin:0!important}', + 'a{margin:0!important}' ] }, { advanced: true }) ) -- 2.34.1