diff --git a/src/printer-postcss.js b/src/printer-postcss.js index 1ecc2907..48149fdc 100644 --- a/src/printer-postcss.js +++ b/src/printer-postcss.js @@ -110,7 +110,12 @@ function genericPrint(path, options, print) { /^\(\s*\)$/.test(n.params.value); return concat([ "@", - isDetachedRulesetCall ? n.name : maybeToLowerCase(n.name), + // If a Less file ends up being parsed with the SCSS parser, Less + // variable declarations will be parsed as atrules with names ending + // with a colon, so keep the original case then. + isDetachedRulesetCall || n.name.endsWith(":") + ? n.name + : maybeToLowerCase(n.name), hasParams ? concat([ isDetachedRulesetCall ? "" : " ", diff --git a/tests/css_case/__snapshots__/jsfmt.spec.js.snap b/tests/css_case/__snapshots__/jsfmt.spec.js.snap index d23c2747..5a8267bc 100644 --- a/tests/css_case/__snapshots__/jsfmt.spec.js.snap +++ b/tests/css_case/__snapshots__/jsfmt.spec.js.snap @@ -42,9 +42,13 @@ a[HREF=KeepAttrValue]:HOVER::FIRST-letter, BACKGROUND: RED; } +@KeepTopLevelVar: val; +$KeepScssVar: val; + .Keep(@Keep: 12e03PX) WHEN (@Keep=Case) /*:*/ { @KeepVar: KeepName; /*:*/ @{KeepInterpolationVar}: val; + $KeepScssVar: val; @{Keep}[@{Keep}][@{Keep}^=@{Keep-1A}]:@{Keep} { prop: val; @@ -119,9 +123,13 @@ a[href="KeepAttrValue"]:hover::first-letter, background: RED; } +@KeepTopLevelVar: val; +$KeepScssVar: val; + .Keep(@Keep: 12e3px) when (@Keep=Case) { @KeepVar: KeepName; /*:*/ @{KeepInterpolationVar}: val; + $KeepScssVar: val; @{Keep}[@{Keep}][@{Keep}^=@{Keep-1A}]:@{Keep} { prop: val; @@ -206,11 +214,15 @@ a[HREF=KeepAttrValue]:HOVER::FIRST-letter, @RETURN 12; } +$KeepTopLevelVar: val; +@KeepLessVar: val; + @MIXIN KeepMixinName($Keep: 15IN, $Keep: $Keep15IN, $Keep: Keep-1E-2Em) { $KeepVar: KeepFuncName(); #{$KeepInterpolationVar}: val; #{$Keep + 15PX}: val; #{$Keep + $Keep15PX}: val; + @KeepLessVar: val; #{$Keep}[#{$Keep}][#{Keep}^=#{Keep-1A}]:#{$Keep} { prop: val; @@ -286,11 +298,15 @@ a[href="KeepAttrValue"]:hover::first-letter, @return 12; } +$KeepTopLevelVar: val; +@KeepLessVar: val; + @mixin KeepMixinName($Keep: 15in, $Keep: $Keep15IN, $Keep: Keep-1E-2Em) { $KeepVar: KeepFuncName(); #{$KeepInterpolationVar}: val; #{$Keep + 15PX}: val; #{$Keep + $Keep15PX}: val; + @KeepLessVar: val; #{$Keep}[#{$Keep}][#{Keep}^="#{Keep-1A}"]:#{$Keep} { prop: val; diff --git a/tests/css_case/case.less b/tests/css_case/case.less index 637f13f8..ea33b7c7 100644 --- a/tests/css_case/case.less +++ b/tests/css_case/case.less @@ -39,9 +39,13 @@ a[HREF=KeepAttrValue]:HOVER::FIRST-letter, BACKGROUND: RED; } +@KeepTopLevelVar: val; +$KeepScssVar: val; + .Keep(@Keep: 12e03PX) WHEN (@Keep=Case) /*:*/ { @KeepVar: KeepName; /*:*/ @{KeepInterpolationVar}: val; + $KeepScssVar: val; @{Keep}[@{Keep}][@{Keep}^=@{Keep-1A}]:@{Keep} { prop: val; diff --git a/tests/css_case/case.scss b/tests/css_case/case.scss index bc0fe16e..aa02639b 100644 --- a/tests/css_case/case.scss +++ b/tests/css_case/case.scss @@ -40,11 +40,15 @@ a[HREF=KeepAttrValue]:HOVER::FIRST-letter, @RETURN 12; } +$KeepTopLevelVar: val; +@KeepLessVar: val; + @MIXIN KeepMixinName($Keep: 15IN, $Keep: $Keep15IN, $Keep: Keep-1E-2Em) { $KeepVar: KeepFuncName(); #{$KeepInterpolationVar}: val; #{$Keep + 15PX}: val; #{$Keep + $Keep15PX}: val; + @KeepLessVar: val; #{$Keep}[#{$Keep}][#{Keep}^=#{Keep-1A}]:#{$Keep} { prop: val;