cssnano / cssnano

A modular minifier, built on top of the PostCSS ecosystem.
https://cssnano.github.io/cssnano/
MIT License
4.7k stars 320 forks source link

[Bug]: border-color of 'inherit' mistakenly removed #1426

Open jelmerdemaat opened 2 years ago

jelmerdemaat commented 2 years ago

Describe the bug

Given the following code:

div {
  border: 1em solid; 
  border-color: inherit;
  border-top: none;
}

The entire border-color: inherit; rule will be removed. This is incorrect. Reduced test case: here.

Given the following code:

div {
  border: 1em solid; 
  border-color: inherit;
}

The border-color: inherit; rule will not be removed. This is correct. The default value of a border-color is currentColor which is different from inherit. This is why the rule must be kept. See also: MDN.

Expected behaviour

Given the following code:

div {
  border: 1em solid; 
  border-color: inherit;
  border-top: none;
}

All 3 of the rules need to be kept as-is.

Steps to reproduce

  1. Go to this playground link
  2. Click Minimize
  3. See rule border-color: inherit; removed

Version

5.0.14

Preset

default

Environment

System:
    OS: macOS 12.5
    CPU: (10) arm64 Apple M1 Pro
    Memory: 283.16 MB / 16.00 GB
    Shell: 5.8.1 - /bin/zsh

Package details

└─┬ @netvlies/wsc-builder@5.6.0
  ├─┬ autoprefixer@10.4.1
  │ └── postcss@8.4.5 deduped
  ├─┬ cssnano@5.0.14
  │ ├─┬ cssnano-preset-default@5.1.9
  │ │ ├─┬ css-declaration-sorter@6.1.3
  │ │ │ └── postcss@8.4.5 deduped
  │ │ ├─┬ cssnano-utils@2.0.1
  │ │ │ └── postcss@8.4.5 deduped
  │ │ ├─┬ postcss-calc@8.1.0
  │ │ │ └── postcss@8.4.5 deduped
  │ │ ├─┬ postcss-colormin@5.2.2
  │ │ │ └── postcss@8.4.5 deduped
  │ │ ├─┬ postcss-convert-values@5.0.2
  │ │ │ └── postcss@8.4.5 deduped
  │ │ ├─┬ postcss-discard-comments@5.0.1
  │ │ │ └── postcss@8.4.5 deduped
  │ │ ├─┬ postcss-discard-duplicates@5.0.1
  │ │ │ └── postcss@8.4.5 deduped
  │ │ ├─┬ postcss-discard-empty@5.0.1
  │ │ │ └── postcss@8.4.5 deduped
  │ │ ├─┬ postcss-discard-overridden@5.0.1
  │ │ │ └── postcss@8.4.5 deduped
  │ │ ├─┬ postcss-merge-longhand@5.0.4
  │ │ │ ├── postcss@8.4.5 deduped
  │ │ │ └─┬ stylehacks@5.0.1
  │ │ │   └── postcss@8.4.5 deduped
  │ │ ├─┬ postcss-merge-rules@5.0.3
  │ │ │ └── postcss@8.4.5 deduped
  │ │ ├─┬ postcss-minify-font-values@5.0.1
  │ │ │ └── postcss@8.4.5 deduped
  │ │ ├─┬ postcss-minify-gradients@5.0.3
  │ │ │ └── postcss@8.4.5 deduped
  │ │ ├─┬ postcss-minify-params@5.0.2
  │ │ │ └── postcss@8.4.5 deduped
  │ │ ├─┬ postcss-minify-selectors@5.1.0
  │ │ │ └── postcss@8.4.5 deduped
  │ │ ├─┬ postcss-normalize-charset@5.0.1
  │ │ │ └── postcss@8.4.5 deduped
  │ │ ├─┬ postcss-normalize-display-values@5.0.1
  │ │ │ └── postcss@8.4.5 deduped
  │ │ ├─┬ postcss-normalize-positions@5.0.1
  │ │ │ └── postcss@8.4.5 deduped
  │ │ ├─┬ postcss-normalize-repeat-style@5.0.1
  │ │ │ └── postcss@8.4.5 deduped
  │ │ ├─┬ postcss-normalize-string@5.0.1
  │ │ │ └── postcss@8.4.5 deduped
  │ │ ├─┬ postcss-normalize-timing-functions@5.0.1
  │ │ │ └── postcss@8.4.5 deduped
  │ │ ├─┬ postcss-normalize-unicode@5.0.1
  │ │ │ └── postcss@8.4.5 deduped
  │ │ ├─┬ postcss-normalize-url@5.0.4
  │ │ │ └── postcss@8.4.5 deduped
  │ │ ├─┬ postcss-normalize-whitespace@5.0.1
  │ │ │ └── postcss@8.4.5 deduped
  │ │ ├─┬ postcss-ordered-values@5.0.2
  │ │ │ └── postcss@8.4.5 deduped
  │ │ ├─┬ postcss-reduce-initial@5.0.2
  │ │ │ └── postcss@8.4.5 deduped
  │ │ ├─┬ postcss-reduce-transforms@5.0.1
  │ │ │ └── postcss@8.4.5 deduped
  │ │ ├─┬ postcss-svgo@5.0.3
  │ │ │ └── postcss@8.4.5 deduped
  │ │ ├─┬ postcss-unique-selectors@5.0.2
  │ │ │ └── postcss@8.4.5 deduped
  │ │ └── postcss@8.4.5 deduped
  │ └── postcss@8.4.5 deduped
  ├─┬ postcss-combine-media-query@1.0.1
  │ └── postcss@7.0.39
  ├── postcss@8.4.5
  ├─┬ stylelint-order@4.1.0
  │ ├─┬ postcss-sorting@5.0.1
  │ │ └── postcss@7.0.39
  │ └── postcss@7.0.39
  └─┬ stylelint@13.13.1
    ├─┬ @stylelint/postcss-css-in-js@0.37.2
    │ └── postcss@8.4.5 deduped
    ├─┬ @stylelint/postcss-markdown@0.36.2
    │ └── postcss@8.4.5 deduped
    ├─┬ autoprefixer@9.8.8
    │ └── postcss@7.0.39 deduped
    ├─┬ postcss-html@0.36.0
    │ └── postcss@8.4.5 deduped
    ├─┬ postcss-less@3.1.4
    │ └── postcss@7.0.39
    ├─┬ postcss-safe-parser@4.0.2
    │ └── postcss@7.0.39
    ├─┬ postcss-sass@0.4.4
    │ └── postcss@7.0.39
    ├─┬ postcss-scss@2.1.1
    │ └── postcss@7.0.39
    ├─┬ postcss-syntax@0.36.2
    │ └── postcss@8.4.5 deduped
    ├── postcss@7.0.39
    └─┬ sugarss@2.0.0
      └── postcss@7.0.39

Additional context

Please note that I have v5.0.14 on my system, which has this bug, but it also happens on the online playground, of which I don't know the version.

ludofischer commented 1 year ago

I can reproduce this bug, disabling merge-longhand fixes this, looks similar to https://github.com/cssnano/cssnano/issues/864