Commit Graph

369 Commits

Author SHA1 Message Date
Natalie Weizenbaum
bf35513a4c
Avoid adding duplicate modules when importing forwarded stylesheets (#973)
Avoid adding duplicate modules when importing forwarded stylesheets

In Google stylesheets that imported import-only stylesheets with many
forwards many of times, we were seeing Environment._globalModules grow
large enough that variable accesses were a problem. This addresses
that in several ways:

* Forwarded modules are now ignored if the module is already being
  forwarded.

* Module equality is more intelligent, so that shadowed and forwarded
  modules can be effectively de-duplicated.

* If a module would be fully shadowed by a later import *and* that
  module has no CSS, we no longer add an empty ShadowedModule to the
  module list.
2020-03-24 15:31:06 -07:00
georgpukk
4d78316cb7
Fix a check that prevents compiling .css files to themselves (#968)
Co-Authored-By: Natalie Weizenbaum <nweiz@google.com>
2020-03-11 14:48:00 -07:00
Natalie Weizenbaum
cb8a048e58
Refactor Extender._extendOrReplace() (#965)
This combines all targets into a single extender invocation, which is
more efficient and allows it to more aggressively do redundant
selector elimination.
2020-02-28 15:48:36 -08:00
Natalie Weizenbaum
a333059e71 Keep recompiling downstream dependencies after an error in --watch
Prior to this, the watcher handled all the logic around recompiling
stylesheets if an upstream file was deleted or added in a way that
could affect their import resolution. This left a gap where the
stylesheet graph wouldn't be aware that a newly-added file had become
upstream dependency of an existing downstream file, leading to
recompilation failures.

This commit fixes that by moving all that logic into the stylesheet
graph. The graph now has full and sole responsibility for providing a
consistent view of which stylesheets depend on one another even as the
shape of the graph changes, and the watcher is just a client of that
logic.

Closes #550
2020-02-24 20:18:03 -08:00
Natalie Weizenbaum
01ed720e9c
Temporarily disable deploying to Chocolatey (#960)
The cli_pkg Chocolatey deployment is still failing for unknown
reasons, and until I have time to debug it I want to get a full
release out.
2020-02-24 11:38:42 -08:00
Natalie Weizenbaum
4f8f509584
Cut a release (#958)
* Use cli_pkg's updated Chocolatey support
* Stop running Node tests on the Dart dev channel for now

See dart-lang/test#1184
2020-02-19 13:42:56 -08:00
Natalie Weizenbaum
0d0270cb12
Cut a release (#957) 2020-02-13 16:05:04 -08:00
Natalie Weizenbaum
6d388248b6
Eagerly initialize Environment._globalModules (#952)
We had been lazily initializing this to be more efficient when no
global modules were used, but this meant that the object wasn't shared
with closures created for mixins and functions that were created when
it was still `null`, so later imported forwards weren't visible to
those members.
2020-02-13 15:23:53 -08:00
Natalie Weizenbaum
0a2142dc86
Don't include leading underscores in implicit namespaces (#955)
Closes #934
See sass/sass#2800
2020-02-12 12:52:53 -08:00
Natalie Weizenbaum
7d8002ec9b Cut a release 2020-02-07 17:04:13 -08:00
Natalie Weizenbaum
67c4e1bdea
Don't throw conflict errors for identical members (#947)
See sass/sass#2820
Closes #946
2020-02-07 15:17:05 -08:00
Natalie Weizenbaum
73ddae9c34 Bump the pubspec and add a CHANGELOG entry
Normally I'd just release this, but releasing is currently on hold
until a few cli_pkg bugs are fixed.
2020-02-07 01:00:41 -08:00
Natalie Weizenbaum
7457d2e9e7
Create a release to test cli_pkg infrastructure (#940) 2020-01-24 16:49:59 -08:00
Natalie Weizenbaum
eeeac1d689
Give JavaScript value objects useful constructor.name values (#936)
Closes #810
2020-01-17 14:46:10 -08:00
awjin
4c0c6b48e4 Merge branch 'master' into math-functions 2020-01-16 14:55:40 -08:00
Awjin Ahn
75cab86448 Add trigonometric math functions. (#921)
See https://github.com/sass/sass-spec/pull/1504
2020-01-15 14:44:13 -08:00
Awjin Ahn
3cbaec11b2 Add exponential math functions. (#909) 2020-01-15 14:44:13 -08:00
awjin
d487d761bd Revert "Revert "Add built-in variables e and pi. (#907)""
This reverts commit 3c64addbf3.
2020-01-15 14:44:13 -08:00
awjin
5f72acb14d Revert "Revert "Adds built-in clamp() and hypot() (#906)""
This reverts commit 76280409bd.
2020-01-15 14:44:13 -08:00
Natalie Weizenbaum
0c1370ce25 Allow errors to refer to multiple source spans at once
This makes error messages for issues like configuring a module after
it's loaded much clearer.
2020-01-10 22:31:48 -08:00
Natalie Weizenbaum
ca63b1ba7d
Don't try to resolve relative Node importer URLs for source maps (#923)
* Don't try to resolve relative Node importer URLs for source maps

Closes #922

* Reformat
2020-01-09 13:14:44 -08:00
Natalie Weizenbaum
e110961120
Pass the version variable to script snapshots at build time (#920)
Closes #914
See https://github.com/dart-lang/sdk/issues/36579#issuecomment-571386118
2020-01-07 13:53:30 -08:00
Jennifer Thakar
bfdf4b35a4
Fix import-only files for Node importers (#919) 2020-01-03 15:41:12 -08:00
Jennifer Thakar
79d9a73474
Cache separate canonical URLs for @use and @import (#908)
Fixes #899.

The cache for canonical URLs is now keyed on *both* the rule URL and
whether that URL was canonicalized for an `@import` rule.
2020-01-02 15:25:02 -08:00
Jennifer Thakar
76280409bd Revert "Adds built-in clamp() and hypot() (#906)"
This reverts commit 24f84e2c88.
2020-01-02 13:45:51 -08:00
Jennifer Thakar
3c64addbf3 Revert "Add built-in variables e and pi. (#907)"
This reverts commit 2cb69e70ab.
2020-01-02 13:45:49 -08:00
Awjin Ahn
2cb69e70ab
Add built-in variables e and pi. (#907) 2019-12-26 16:31:33 -08:00
Awjin Ahn
24f84e2c88
Adds built-in clamp() and hypot() (#906) 2019-12-26 12:40:08 -08:00
Natalie Weizenbaum
de3f3208e9 Support @forward ... with
See sass/sass#2744
Closes #846
2019-11-27 16:03:43 -08:00
Jennifer Thakar
8270dc1664
Support configuring modules through imports (#885)
Fixes #882

See sass/sass-spec#1497
2019-11-26 09:46:51 -08:00
Natalie Weizenbaum
15be59be31
Make SassFormatException implement SourceSpanFormatException (#891) 2019-11-25 18:54:45 -08:00
Natalie Weizenbaum
731bd441ca Don't produce name conflict errors due to imports
Closes #888
2019-11-20 16:25:48 -08:00
Natalie Weizenbaum
aa76c8ab3b Always create scopes for nested imports 2019-11-20 16:21:03 -08:00
Natalie Weizenbaum
aac599947d
Run the GitHub Windows release on the latest Dart version (#886) 2019-11-18 17:33:56 -08:00
Natalie Weizenbaum
e1e96338d8 Bump the version 2019-11-15 16:40:47 -08:00
Natalie Weizenbaum
0d782fbccf
Fix inline comments in the indented syntax (#881)
Closes #880
2019-11-15 15:45:11 -08:00
Awjin Ahn
07b5c84b7d
Fix arity in overloaded function argument error (#883)
When overloaded functions receive an incorrect number of positional
arguments, determine which overload has the most similar number of
arguments, and then correctly display that number in the error.

Closes #520
sass/sass-spec#1496
2019-11-15 14:26:11 -08:00
Awjin Ahn
3d1dab3563 Print call-site for @errors in mixins and functions (#878)
For any @errors encountered in mixins or functions, use the call-site
(instead of the @error rule) as the span printed in the error message.

Closes #474
See sass/sass-spec#1494
2019-11-13 17:56:35 -08:00
Natalie Weizenbaum
44059573bb
Watch files through @forward rules (#871)
Closes #870
2019-11-04 13:32:27 -08:00
Natalie Weizenbaum
be4ca60045 Propagate selector source specificity between modules
Closes #866
2019-10-30 15:11:25 -07:00
Natalie Weizenbaum
3392db0074
Don't compile .css files in directories to themselves (#862)
This also adds support for compiling .css files in directories *at
all*, which had previously only worked in --watch mode.

Closes #853
2019-10-29 23:48:21 +00:00
Natalie Weizenbaum
1b17ab76cf
Reset the forwarded config to empty for @use and meta.load-module() (#855)
In #827 I made configuration never be null, but this turns out to be
overkill: we still need a way for _loadModule() and _execute() to
distinguish between "use the existing configuration" (for @forward)
and "use no configuration" (for an unconfigured @use or
meta.load-module()). We now use null as a sentinel value there, while
still ensuring that _configuration is non-nullable.

Closes #854
2019-10-22 01:35:11 +01:00
Natalie Weizenbaum
73de08b817
Only generate and update selectors, not rules, in Extender (#856)
We switched to *updating* selectors a while ago so that cloned rules
would continue to see updates in their selectors, but we were still
generating and tracking rules in the Extender. This caused skew
between what rules the extender knew about and what rules actually
existed in situations where rules were copied (such as when resolving
nested media queries).

There's no principled reason the extender needs to know about style
rules at all, so now it just tracks modifiable wrappers of selectors.
These are re-used even when style rules are cloned, so they're safe
from the skew problem.

Closes #843
2019-10-21 21:07:51 +01:00
Natalie Weizenbaum
6b8c168779
Improve error messages for color functions that aren't in sass:color (#844) 2019-10-14 17:56:13 -07:00
Natalie Weizenbaum
e68592f8f3
Allow saturate() in plain CSS files (#845)
Closes #840
2019-10-14 11:47:16 -07:00
Jennifer Thakar
664260159e Update changelog and bump pubspec version 2019-10-10 15:42:39 -07:00
Natalie Weizenbaum
87c9223b66
Fix broken CHANGELOG links (#836) 2019-10-02 11:19:51 -07:00
Natalie Weizenbaum
5052350150 Bump the pubspec and add a changelog entry for @use 2019-10-01 14:54:54 -07:00
Natalie Weizenbaum
d901bcb00c
Properly handle some CSS identifier edge cases (#816)
See sass/sass#2738
Closes #815
2019-09-06 16:54:54 -07:00
Natalie Weizenbaum
aea990d4fc
Properly watch .css files for changes (#814)
Closes #806
2019-09-03 16:42:21 -07:00