Natalie Weizenbaum
44b542fcef
Include argument names when reporting selector parse errors
2019-07-25 08:37:01 +01:00
Natalie Weizenbaum
8d5e3d9a67
Include argument names when reporting range errors
...
Closes #771
2019-07-25 08:37:00 +01:00
Natalie Weizenbaum
c971615fbf
Remove an unused Parser.scanWhitespace() method ( #770 )
...
Closes #767
2019-07-18 21:50:41 +01:00
Natalie Weizenbaum
e454647d27
Improve the error message for a global member conflict ( #762 )
2019-07-18 01:47:56 +01:00
Natalie Weizenbaum
0f8f7577a5
Don't create an intermediate stylesheet for @import if possible
...
We really only need this stylesheet when we're resolving imported
cross-module @extends, which doesn't come up very often.
2019-07-17 15:45:26 -07:00
Natalie Weizenbaum
c8770da29b
Short-circuit combineCSS() if no upstream modules contain CSS
2019-07-17 15:45:00 -07:00
Natalie Weizenbaum
66c2c26a7e
Use whereType() to avoid a cast
2019-07-17 15:45:00 -07:00
Natalie Weizenbaum
7b3a2adc12
Properly indicate the error location in the REPL
...
Previously, errors in variable assignment lines would be reported
incorrectly.
2019-07-17 15:45:00 -07:00
Natalie Weizenbaum
83cf390406
Delete a fixed TODO
2019-07-17 15:45:00 -07:00
Natalie Weizenbaum
c794abd858
Eagerly dash-normalize Sass identifiers
...
This avoids using maps and sets with custom equality, which are
moderately inefficient relative to built-in maps and sets on both Node
and the Dart VM. In order to make error messages continue to use the
original identifiers where possible, this updates some of them to rely
more heavily on their associated source spans for context.
2019-07-16 19:42:38 -07:00
Natalie Weizenbaum
437e04ea0b
Merge remote-tracking branch 'origin/master' into feature.use
2019-07-16 18:49:15 -07:00
Natalie Weizenbaum
7f2055e775
Make colorsByName a normal map
...
There was no reason for this to be a normalized map, since color names
don't contain dashes or underscores.
2019-07-16 13:37:03 -07:00
Marcel Greter
d91e758889
Fix typo in silent comment error message ( #761 )
2019-07-16 00:44:32 +01:00
Natalie Weizenbaum
58e9e74b37
Use list comprehensions in *Evaluate._evaluateArguments
...
As well as being arguably more readable, the toList() method was
running a type check that was showing up as a minor bottleneck in JS
profiles.
2019-07-15 21:59:54 +01:00
Natalie Weizenbaum
a8e99e9152
Pass a dummy isValidKey callback to normalized map and set
...
The default implementation runs a type check, which was a performance
bottleneck when compiled to JS. There's no need for this type check in
practice, since we never pass a non-String value to the contains(),
containsKey(), or remove() methods (and if we do, it will throw a
TypeError in our tests).
2019-07-15 21:59:54 +01:00
Natalie Weizenbaum
0e47e03305
Fix at-rules in nested imports ( #758 )
...
Closes #755
2019-07-12 01:55:30 +01:00
Natalie Weizenbaum
2003f1c6ec
Merge remote-tracking branch 'origin/master' into function-fixes
2019-07-03 16:56:54 -07:00
Natalie Weizenbaum
b7999e41ad
Fix a new lint ( #752 )
2019-07-03 16:56:33 -07:00
Natalie Weizenbaum
d3e288ccf2
Support map-remove() with a named $key argument
...
Closes #742
2019-07-03 15:31:56 -07:00
Natalie Weizenbaum
eff8c37457
Fix a deadlock in zip()
...
Closes #739
2019-07-03 15:31:56 -07:00
Natalie Weizenbaum
5ff434da6a
Fix join() and append() $separator error messages
...
Closes #738
2019-07-03 15:31:56 -07:00
Natalie Weizenbaum
47e0cfc8c8
Empty maps have undecided separators
...
Closes #737
2019-07-03 15:31:56 -07:00
Natalie Weizenbaum
821b5e2521
Fix str-insert() with $index: -1
...
Closes #733
2019-07-02 17:25:46 -07:00
Natalie Weizenbaum
40df8e3bc1
Fix str-slice() with astral plane characters
...
Closes #732
2019-07-02 17:25:46 -07:00
Natalie Weizenbaum
2105a138c0
Clamp $alpha in adjust-color() with HSL args
...
Closes #708
2019-07-02 17:25:45 -07:00
Natalie Weizenbaum
7bfba04b79
Throw an error for plain-CSS invert() with $weight
...
Closes #705
2019-07-02 17:25:36 -07:00
Natalie Weizenbaum
d5adb4621e
Fix invert() with $weight: 50%
...
Closes #704
2019-07-02 17:25:25 -07:00
Natalie Weizenbaum
9838caff6f
Improve errors for alpha() with the wrong number of arguments
...
Closes #700
2019-07-02 17:25:14 -07:00
Natalie Weizenbaum
ed06a41afc
Fix the argument name for a single-argument saturate() function
...
Closes #699
2019-07-02 16:10:28 -07:00
Natalie Weizenbaum
88774b3a07
Fix a Dart 2.4 analysis hint
2019-06-29 07:08:58 +01:00
Natalie Weizenbaum
72d932884f
Merge remote-tracking branch 'origin/feature.use' into load-css
2019-06-29 05:54:39 +01:00
Natalie Weizenbaum
b8186fee05
Merge remote-tracking branch 'origin/master' into merge-master
2019-06-29 00:34:38 +01:00
Natalie Weizenbaum
532358d7fa
Merge pull request #727 from sass/static-require
...
Require dependencies in the preamble rather than through JS-interop
2019-06-28 14:32:18 -07:00
Natalie Weizenbaum
abf7d7f922
Fix a new analysis hint from Dart 2.4.0 ( #743 )
2019-06-28 14:32:04 -07:00
Natalie Weizenbaum
bfbe1efd3e
Add a load-css() function
2019-06-27 14:12:38 -07:00
Natalie Weizenbaum
fe30fd61a3
Add the ability for built-in modules to expose mixins
2019-06-27 12:09:34 -07:00
Natalie Weizenbaum
6f89055ea6
Add support for "@use with" ( #728 )
2019-06-26 17:34:24 -07:00
Natalie Weizenbaum
18b06df84f
Merge remote-tracking branch 'origin/master' into merge-master
2019-06-26 15:04:36 -07:00
Natalie Weizenbaum
174ef128a2
Merge remote-tracking branch 'origin/feature.use' into merge-use
2019-06-24 14:12:05 -07:00
Natalie Weizenbaum
19cfb63ab4
Address code review comments from #724 ( #729 )
2019-06-24 14:05:17 -07:00
Natalie Weizenbaum
494e208067
Require dependencies in the preamble rather than through JS-interop
...
Closes #726
2019-06-19 19:41:16 +01:00
Natalie Weizenbaum
a46e779675
Clarify !global deprecation warnings
...
Closes #723
2019-06-18 17:39:29 -07:00
Natalie Weizenbaum
bc4508d80d
Remove a reference to Sass 4.0 in a deprecation warning
2019-06-18 17:38:55 -07:00
Natalie Weizenbaum
e4b18b5231
Produce better stack traces for syntax errors loaded via import/use ( #722 )
...
We now wrap _withStackFrame() around wider sections of code, including
_loadStylesheet() which handles parse errors, so that the @use/@import
stack frames are available.
2019-06-18 17:26:46 -07:00
Natalie Weizenbaum
d89fef612b
Add a module-functions() function
2019-06-18 12:05:56 -07:00
Natalie Weizenbaum
bbaa91d658
Add a module-variables() function
2019-06-18 12:05:26 -07:00
Natalie Weizenbaum
4716349a0e
Add new module-system features for existing functions ( #720 )
2019-06-18 12:03:12 -07:00
Natalie Weizenbaum
6600de2dfe
Add built-in modules for core Sass functions ( #716 )
...
Partially addresses #554
2019-06-12 16:46:28 +01:00
Natalie Weizenbaum
e888f84ce5
Merge branch 'master' into feature.use
2019-06-06 21:46:51 +01:00
Natalie Weizenbaum
bea609d74b
Add a top-level warn() function for functions and importers ( #711 )
...
In addition to being useful for users of Sass, this will make it
possible for core Sass functions to produce warnings without needing
an explicit reference to the evaluator.
2019-06-06 19:42:44 +01:00
Natalie Weizenbaum
6494951e48
Improve the error message for module loops
2019-06-04 12:55:43 +01:00
Natalie Weizenbaum
a000bffd98
Add support for @forward
...
See sass/sass#1094
See #554
2019-06-02 14:26:54 +01:00
Natalie Weizenbaum
11e3749721
Merge pull request #709 from sass/analysis
...
Enable stricter analysis options, especially around typing
2019-05-31 17:01:13 +01:00
Natalie Weizenbaum
ac38653776
Enable strict raw types
2019-05-31 16:01:49 +01:00
Natalie Weizenbaum
79e9bbd816
Enable strict inference
2019-05-31 15:54:59 +01:00
Natalie Weizenbaum
1340ba7b8a
Enable and fix (most) pedantic lints
2019-05-31 15:18:59 +01:00
Natalie Weizenbaum
1ac41898e8
Add map views to represent the ways a module can be forwarded
2019-05-24 16:41:10 -07:00
Natalie Weizenbaum
f6575704dd
Factor out a function to load modules ( #693 )
...
This will allow us to re-use logic for @forward. It also fixes some
usability issues where incorrect or duplicated spans were being used
for @use errors.
2019-05-24 16:39:22 -07:00
Natalie Weizenbaum
2836780339
Merge pull request #689 from sass/exponent
...
Fix some number serialization bugs
2019-05-24 15:09:37 -07:00
Natalie Weizenbaum
6591e315af
Ensure that built-in functions aren't part of a module's API ( #692 )
...
The way this worked previously, you could call "mod.rgb()" for any
module and it would be the same as calling the built-in rgb()
function.
2019-05-23 13:24:41 -07:00
Natalie Weizenbaum
0fe0208f6e
Remove exponent notation for integers on Node.js
...
Closes #688
2019-05-21 13:36:36 -07:00
Natalie Weizenbaum
c76ef209af
Merge branch 'master' into master-into-use
2019-05-20 16:52:20 -07:00
Natalie Weizenbaum
fb383de20e
Fix a bug in SerializeVisitor._writeDecimal
...
This function didn't expect a number ending in ".0", because they're
normally filtered out by fuzzyAsInt(). However, they can make it
through for very large doubles.
2019-05-20 15:50:45 -07:00
Natalie Weizenbaum
5b9835a5bd
Make SerializeVisitor._removeExponent work with non-exponent numbers
...
This allows us to avoid traversing the number string more times than
necessary.
2019-05-20 15:47:59 -07:00
Natalie Weizenbaum
768da7088c
Resolve imports using custom imports before load paths ( #687 )
...
Closes #681
2019-05-20 15:34:57 -07:00
Natalie Weizenbaum
2317be8812
Give Module a type parameter rather than making it synchronized ( #686 )
...
This allows us to have one fewer synchronized file, which reduces
complexity, and also lets us just write "Module" in async code rather
than "AsyncModule".
2019-05-20 15:34:14 -07:00
Natalie Weizenbaum
db87ed2f0e
Use the new Dart 2.3.0 literal syntax ( #684 )
2019-05-17 18:02:12 -07:00
Natalie Weizenbaum
19df69d26c
Continue running feature.use in use mode
2019-05-17 14:40:34 -07:00
Natalie Weizenbaum
7c9d63a4dc
Reformat with the latest formatter
2019-05-15 18:17:26 -07:00
Natalie Weizenbaum
aaebd424ed
Get rid of tool/synchronize.dart
...
This was moved to tool/grind/synchronize.dart in #318 , but the old
file never got removed.
2019-05-15 18:17:06 -07:00
Natalie Weizenbaum
c1ae142ca9
Merge remote-tracking branch 'origin/master' into merge-use
2019-05-15 12:23:42 -07:00
Natalie Weizenbaum
3b47e34c87
Fix some places where a null could sneak into a boolean condition
2019-05-08 17:19:12 -07:00
Natalie Weizenbaum
4b572f6ad5
Merge branch 'feature.use'
2019-05-08 15:38:12 -07:00
Natalie Weizenbaum
92a2c67410
Merge branch 'master' into feature.use
2019-05-06 16:40:24 -07:00
Natalie Weizenbaum
34c068a189
Generate a CSS file describing an error when one occurs ( #659 )
...
Closes #657
2019-05-02 18:14:25 -07:00
Natalie Weizenbaum
57260a9fc1
Update color algorithm URLs ( #664 )
2019-05-02 16:16:33 -07:00
Natalie Weizenbaum
892f301d5a
Remove a debugging print ( #655 )
...
This never actually triggered because we always overrode the listener
before the directory was modified.
2019-05-02 13:07:57 -07:00
Natalie Weizenbaum
407eefded1
Add support for attribute selector modifiers ( #658 )
...
Closes #656
2019-04-30 11:31:18 -07:00
Natalie Weizenbaum
37f0740307
Allow ! in url()s ( #650 )
...
Closes #646
2019-04-18 17:37:20 -07:00
Natalie Weizenbaum
413c949446
Make FilesystemImport._loadPath absolute ( #651 )
...
This avoids having the effective load path change when the process's
working directory changes.
2019-04-18 16:34:48 -07:00
Natalie Weizenbaum
3b3a43a8f9
Add a --charset flag and API option ( #644 )
...
The automatic @charset adding is useful in general, but there are
consistently cases where it trips up naïve downstream tools. This
option makes it easier for users to control when it occurs.
2019-04-08 14:49:08 -07:00
Natalie Weizenbaum
59800ad1f9
Don't recursively list directories in realCasePath() ( #641 )
...
We only need to list the path's immediate parent directory in order to
find its real case.
Closes #636
2019-04-04 12:18:02 -07:00
Natalie Weizenbaum
495c6f3163
Only claim "package:" URLs are unsupported on Node ( #637 )
...
Closes #630
2019-04-04 12:17:36 -07:00
Jennifer Thakar
c2c9cedb81
Extend RecursiveStatementVisitor for expressions ( #639 )
...
This adds `RecursiveAstVisitor`, which extends
`RecursiveStatementVisitor` to traverse expressions as well.
2019-04-03 14:37:27 -07:00
Natalie Weizenbaum
8c9412b520
Fix importing files relative to "package:" imports ( #638 )
...
The PackageImporter wasn't accepting paths relative to its
canonicalized outputs as inputs.
Closes #631
2019-04-03 13:57:52 -07:00
Natalie Weizenbaum
9999835df0
Add a sass.types.Error constructor to the JS API ( #627 )
...
Closes #590
2019-04-03 01:07:12 -07:00
Natalie Weizenbaum
eddf36a07e
Don't copy the selector in ModifiableStyleRule.copyWithoutChildren()
2019-04-03 01:03:40 -07:00
Natalie Weizenbaum
2d1047bb36
Only clone CSS if it actually uses @extends
2019-03-30 17:47:24 -07:00
Natalie Weizenbaum
d6f319f5b4
Clone CSS after importing it
2019-03-30 17:37:30 -07:00
Natalie Weizenbaum
11c95900c8
Add a Module.cloneCss() function
...
This will allow us to run extends on the same module multiple times
when it's @imported or loaded via load-file().
2019-03-30 17:05:57 -07:00
Natalie Weizenbaum
eae2077d6b
More thoroughly document why we duplicate visitor logic
2019-03-29 16:26:36 -07:00
Natalie Weizenbaum
5603af3d19
Include CSS for modules used by imported files
2019-03-27 14:49:52 -07:00
Natalie Weizenbaum
9f9011d9cc
Load @imported CSS into an entirely new stylesheet
...
This will allow us to inject CSS from modules @used by an imported
stylesheet between the importer's existing CSS and the importee's new
CSS.
2019-03-27 14:49:13 -07:00
Natalie Weizenbaum
511e525619
Add a ModifiableCssVisitor
...
This lets us traverse a modifiable CSS tree while preserving the fact
that it's modifiable.
2019-03-22 14:09:38 -07:00
Natalie Weizenbaum
14787d86e0
Add "Css" to the visit methods for CssVisitor
...
This allows the same class to implement StatementVisitor and
CssVisitor.
2019-03-22 13:58:51 -07:00
Natalie Weizenbaum
bc5e3c4f8f
Properly parse CR, CR LF, and FF as newlines everywhere ( #626 )
...
Closes #623
2019-03-18 16:50:23 -07:00
Natalie Weizenbaum
cf6801ab5b
Fix a typo
2019-03-13 13:30:45 -07:00
Natalie Weizenbaum
f2a34408ec
Verify mandatory extensions
2019-03-12 16:53:14 -07:00
Natalie Weizenbaum
0194728f29
Mostly add support for module-scoped @extend
...
Verifying that a mandatory extension actually matched a real style
rule doesn't work at all.
2019-03-12 16:53:14 -07:00
Natalie Weizenbaum
c80ae01ce0
Make CssStyleRule.originalSelector modifiable-only
2019-03-12 16:53:14 -07:00
Natalie Weizenbaum
132be045f0
Merge branch 'feature.use' into merge-master
2019-03-11 18:36:27 -07:00
Natalie Weizenbaum
c98cfd53b0
Emit CSS for used modules ( #620 )
2019-03-11 16:49:58 -07:00
Natalie Weizenbaum
e4245a7643
Merge branch 'master' into feature.use
2019-03-10 23:31:06 -07:00
Natalie Weizenbaum
a0e63ac704
Merge branch 'feature.use' into merge-use
2019-03-07 18:17:42 -08:00
Natalie Weizenbaum
b66e1bad28
Fix some documentation issues in AsyncEnvironment ( #618 )
...
See #610
2019-03-07 18:14:44 -08:00
Natalie Weizenbaum
62bce0c5b9
Properly stringify slash-separated numbers in operations ( #612 )
...
Closes #607
2019-03-07 18:14:12 -08:00
Natalie Weizenbaum
e84c8b1995
Don't put style rules inside empty @keyframes rules ( #613 )
...
Closes #611
2019-03-07 17:04:30 -08:00
Natalie Weizenbaum
284f4ef7dd
Make .scss and .sass take precedence over .css in @use ( #609 )
...
See sass/language#68
2019-03-04 18:47:57 -08:00
Natalie Weizenbaum
b59b86304d
Ensure that global variables are always module members
...
See sass/language#50
2019-02-22 18:03:24 -08:00
Natalie Weizenbaum
8ab9ce1141
Deprecate assignment to non-existent global variables ( #601 )
...
See #600
See sass/sass#2606
2019-02-21 15:16:52 -08:00
Natalie Weizenbaum
6d6974c50e
Add the ability to refer to members from other modules
2019-02-21 00:30:04 -08:00
Natalie Weizenbaum
7a7aea95b3
Add a module class and a way to create it from an Environment
2019-02-21 00:30:04 -08:00
Natalie Weizenbaum
5d4db9eb17
Merge branch 'master' into 'feature.use'
2019-02-21 00:29:59 -08:00
Natalie Weizenbaum
149bf85b4d
Explicitly mark classes as sealed ( #602 )
2019-02-20 16:39:46 -08:00
Natalie Weizenbaum
26401fb135
Fix an attribute selector quoting bug ( #599 )
...
Closes #598
2019-02-20 13:38:21 -08:00
Jennifer Thakar
b22ae51955
Fix bug in RecursiveStatementVisitor ( #596 )
...
The value of an `AtRule` can be null, so it should not be visited in that case.
Ran across this issue when I attempted to run the module migrator on a stylesheet containing `@font-face` (which has children, but no value).
2019-02-15 13:53:17 -08:00
Natalie Weizenbaum
776e2bfcc2
Disable @use parsing
2019-02-13 00:36:36 -08:00
Natalie Weizenbaum
4b10c22bd4
Add more explanatory error messages
2019-02-13 00:02:42 -08:00
Natalie Weizenbaum
6354cdd02a
Don't parse private module member references
2019-02-11 17:17:31 -08:00
Natalie Weizenbaum
d757d99569
Add support for parsing @use
2019-02-11 17:17:31 -08:00
Natalie Weizenbaum
7ca989a4f7
Produce a better error for invalid function contents ( #587 )
...
Closes #584
2019-02-04 13:14:25 -08:00
Natalie Weizenbaum
a81017275a
Produce a better error message for unclosed style rules ( #586 )
...
Closes #577
2019-02-01 17:21:15 -08:00
Natalie Weizenbaum
b102dc496a
Allow individual directories to be passed on the command-line ( #581 )
...
Closes #543
2019-02-01 14:59:58 -08:00
Natalie Weizenbaum
cd3b82e2be
Fix a check for adjusting parse errors ( #582 )
2019-02-01 14:55:34 -08:00
Natalie Weizenbaum
e8ac314f56
Support dart-lang/source_span#25 ( #566 )
...
This adds a --no-unicode option to disable Unicode span rendering,
decouples repl highlighting from SourceSpan.highlight, and updates
tests to work with the new error highlighting.
It also tightly scopes source spans for statements with children.
Previously, source spans for these nodes extended all the way through
any whitespace that followed the node. This led to messy-looking
multiline span highlights with dart-lang/source_span#25 .
Now, StylesheetParser.children doesn't consume trailing whitespace.
Instead, we add a helper method StylesheetParser._withChildren that
parses children, creates the appropriate span, and then consumes the
trailing whitespace.
2019-01-28 20:42:32 -05:00
Matt Felten
923615a7f8
Fix "compound selectors may *no* longer be extended" error message ( #576 )
2019-01-25 20:52:05 -05:00
Natalie Weizenbaum
d3c3a3d515
Delete ModifiableCssNode.modifyChildren
...
Instead of doing this, we now construct a new (unmodifiable)
CssStylesheet if additional imports need to be added.
2019-01-24 16:25:37 -08:00
Natalie Weizenbaum
93f4876b28
Split the CSS AST into mutable and immutable variants
...
This codifies in types the constraint that only the evaluator should
modify CSS nodes. It also makes it possible to create non-mutable
classes that don't need to care about stuff like tracking parent nodes.
2019-01-24 15:59:39 -08:00
Natalie Weizenbaum
9fdf5612ea
Fix a performance bug in BinaryOperatorExpression.span ( #569 )
...
Previously, evaluator called BinaryOperationExpression.span for each
binary operation it evaluated, which in turn called spanForList() to
create a span covering both child expressions. spanForList() then
called .span for both the left and right child operations *twice*,
leading to exponential behavior.
This is now avoided in three complementary ways:
1. The evaluator avoids eagerly calling AstNode.span, instead keeping
the original AstNode until the span itself needs to be accessed.
This means that a span will only be accessed when an error actually
occurs, and then only one operation's span will be accessed.
2. BinaryOperationExpression.span now iterates through any child
operations before calling their .span methods, so it only performs
O(1) allocations.
3. spanForList() now only calls each AstNode.span once.
2019-01-17 18:04:14 -05:00
Natalie Weizenbaum
55ebe56d3c
Add support for new special number strings ( #556 )
...
See sass/sass#2584
2019-01-09 15:50:04 -05:00
Natalie Weizenbaum
32be730b6e
Emit tab characters as \9 ( #553 )
...
Closes #552
2019-01-04 14:20:28 -05:00
Natalie Weizenbaum
7a75b7b786
Don't canonicalize file case in source maps ( #541 )
...
Closes #540
2019-01-04 14:17:18 -05:00
Nicholas Shahan
948fe17a53
Remove unused import ( #559 )
...
Originally added in #548 but after changes during review it is no longer needed.
2019-01-03 15:36:05 -08:00
Natalie Weizenbaum
18c0cbdaea
Match Node Sass's this.includePaths behavior for importers ( #551 )
...
On Windows, paths are separated with a semicolon rather than a colon.
Closes #549
2019-01-03 10:48:20 -08:00
Natalie Weizenbaum
759b587364
Don't omit units in numbers in compressed mode ( #545 )
...
See https://github.com/sass/sass/issues/649#issuecomment-447033060
2019-01-03 10:47:54 -08:00
Natalie Weizenbaum
dbda396401
Compile to JS with -O4 ( #555 )
...
Closes #526
2019-01-03 10:47:12 -08:00
Natalie Weizenbaum
06b9fbd812
Merge branch 'master' into windows-path-separator
2018-12-26 14:17:45 -08:00
Natalie Weizenbaum
9f2f11682e
Merge pull request #546 from sass/source-map-urls
...
Properly use ImportResult.sourceMapUrl for source map URLs
2018-12-20 17:39:28 -08:00
Natalie Weizenbaum
23968148d0
Properly use ImportResult.sourceMapUrl for source map URLs
...
This also uses data: URLs to refer to stylesheets from stdin in source
maps.
2018-12-20 16:22:43 -08:00
Nicholas Shahan
3a493f23ab
Add documentation comment collection to AST ( #548 )
...
- Documentation comments are simply identified by starting with a triple-slash "///".
- Adjacent comments in indented syntax are now coalesced into a single comment.
2018-12-20 16:08:26 -08:00
Natalie Weizenbaum
9d6de5af23
Add a missing import
2018-12-17 15:52:49 -08:00
Natalie Weizenbaum
519bfa3d6b
Match Node Sass's this.includePaths behavior for importers
...
On Windows, paths are separated with a semicolon rather than a colon.
Closes #549
2018-12-17 15:30:17 -08:00
Natalie Weizenbaum
94fd7e6e50
Match Ruby Sass's number behavior ( #544 )
...
This introduces two changes:
1. It changes the epsilon within which two numbers are considered
equal to be an order of magnitude smaller than the numeric
precision. Ruby Sass has always done this, and Dart Sass should
have but did not until now.
2. It parses the component of a number after the decimal point using
double.parse() to avoid accumulating floating point errors.
2018-12-13 15:27:08 -08:00
Natalie Weizenbaum
fa29e80d29
Merge pull request #542 from sass/compile-refactor
...
Move some compilation logic from the executable to compile.dart
2018-12-13 11:58:46 -08:00
Natalie Weizenbaum
a09a62538e
Remove extra importer parameters from internal compile functions
...
These can be passed as an ImportCache now, so they make the API more
confusing for relatively little benefit.
This also changes the const AsyncImportCache.none field to a non-const
AsyncImportCache.none() constructor. The const field didn't make sense
for a couple reasons: first, it wouldn't use a user's custom logger;
and second, it couldn't cache any relative imports, which were still
possible when the initial file was loaded from disk.
2018-12-12 15:54:32 -08:00
Natalie Weizenbaum
4c2d3af3b0
Move some compilation logic from the executable to compile.dart
2018-12-11 00:12:27 -08:00
Natalie Weizenbaum
56247975ed
Automatically synchronize lib/src/compile.dart
2018-12-10 17:39:21 -08:00
Natalie Weizenbaum
f3db1d6a66
Properly merge "all and" media queries ( #539 )
...
Closes #537
2018-12-10 13:13:19 -08:00
Natalie Weizenbaum
dad8491035
Make types.String.prototype.setValue() de-quote a string ( #535 )
...
Closes #513
2018-12-06 15:06:32 -08:00
Natalie Weizenbaum
aa52cf1474
Always add quotes to attribute selector values that begin with -- ( #529 )
...
Closes #527
2018-11-16 13:51:36 -08:00
Natalie Weizenbaum
487e5025ff
Reformat with Dart-2-only features
2018-11-15 15:16:24 -08:00
Natalie Weizenbaum
50efdabcce
Add support for CSS Color Level 4 rgb() and hsl() syntax
...
Closes #497
2018-11-12 16:33:54 -08:00
Natalie Weizenbaum
e0c328576b
Track slash-separated numbers as numbers rather than strings
...
This will allow us to refer to them as numbers in functions that use
the slash as an argument separator.
2018-11-12 14:49:24 -08:00
Natalie Weizenbaum
13006e9902
Clamp saturation and lightness rather than throwing errors ( #521 )
...
This matches Ruby Sass's behavior.
2018-11-12 14:25:40 -08:00
Natalie Weizenbaum
4520b8b53b
Don't trim escaped whitespace ( #523 )
...
Related to sass/ruby-sass#96
2018-11-08 11:54:59 -08:00
Natalie Weizenbaum
1206761da4
Add support for passing arguments to @content blocks ( #518 )
...
Closes #498
2018-11-05 16:53:43 -08:00
Natalie Weizenbaum
8f86d6d157
Remove the ignoreCase flag from scanIdentifier and expectIdentifier ( #517 )
...
This flag wasn't being respected, so all of these identifiers were de
facto case-insensitive. Changing that now would be breaking, and it's
probably better to make them case-insensitive anyway since CSS
identifiers are.
2018-11-05 16:28:10 -08:00
Natalie Weizenbaum
77563be056
Add support for SASS_PATH ( #514 )
...
Closes #512
2018-11-05 15:24:14 -08:00
Natalie Weizenbaum
e0c1895712
Make sure RecursiveStatementVisitor visits AtRule.name ( #516 )
...
I missed this as part of #509 . It doesn't actually cause any problems,
because we don't use the expression-visiting functionality, but it
could cause issues for the linter.
2018-11-05 15:23:58 -08:00
Natalie Weizenbaum
bf71ca359d
Add support for interpolation in at-rule names ( #509 )
...
Closes #496
2018-11-01 14:31:46 -07:00
Natalie Weizenbaum
9e18b7e95b
Always include the error location in JS error messages ( #511 )
...
Always include the error location in JS error messages
I was trying to match Node Sass's behavior by having Error.formatted
property have more detail than Error.message, but our errors rely on
source snippets for context so this just ended up making them
confusing.
2018-10-31 18:13:04 -07:00
Natalie Weizenbaum
de1fcfbbe3
Fix a minor style guide violation ( #508 )
2018-10-31 18:12:49 -07:00
Natalie Weizenbaum
6bdb49a9d5
Properly escape U+0009 CHARACTER TABULATION in unquoted strings ( #504 )
2018-10-18 18:50:03 -07:00
Natalie Weizenbaum
a25bbb3fc7
Add a ParenthesizedExpression class ( #503 )
...
This allows us to accurately track the source spans for parenthesized
expressions, which in turn allows us to print accurate error
indications.
Adding a new class for this more accurately represents the structure
of the expression, but it also involves an extra allocation during
parsing and an extra level of nesting during evaluation which could
have a small but real performance impact.
We could alternatively add a package-internal setter for
Expression.span, and update the source span for parenthesized
expressions after they're initially parsed. However, this has its own
downsides: it adds complexity and mutability to the object model; and
many expression classes currently use lazily-generated spans, so
making them settable would require adding extra slots on those
classes.
I decided to go with the extra class because it only adds overhead
when parentheses are actually used in practice, as opposed to adding
overhead to every list/color/etc. The runtime overhead is also likely
to be mitigated if at any point we add a constant-folding step.
2018-10-17 16:52:32 -07:00
Natalie Weizenbaum
96468e4fa5
Fix a small documentation typo ( #499 )
2018-10-15 15:53:48 -07:00
Natalie Weizenbaum
453d89bad5
Treat :before et al a pseudo-elements ( #495 )
...
Closes #484
2018-10-12 14:35:49 -07:00
Jen Thakar
9a1f322d7f
Remove space around combinators in compressed mode ( #494 )
...
Complex selectors like "a > b" will now be output as "a>b" in
compressed mode.
2018-10-11 18:03:09 -07:00
Natalie Weizenbaum
0595ac3e71
Fix an import-resolution bug ( #488 )
...
When a stylesheet is imported, the parsed stylesheet object is cached
based on its canonical URL. However, the stylesheet.span.sourceUrl was
based on the text of the import that was used to load that stylesheet.
The idea was to make the source URL in stack traces look nicer, but it
meant that relative URLs could be resolved based on the old importer's
URL before being sent to the new importer, which caused bugs.
Now stylesheet.span.sourceUrl is always the canonical URL of the
stylesheet, and thus safe to cache. We then use the import cache to
convert the canonical URL to a human-friendly URL at the point at
which we generate stack traces.
This also deprecates support for relative canonical URLs. The
semantics of these URLs were always unclear, and with the new change
in import internals the old behavior doesn't make much sense. It's
preserved for backwards-compatibility, but deprecated.
2018-10-11 15:06:26 -07:00
Natalie Weizenbaum
123bc1ff68
Properly escape U+001F INFORMATION SEPARATOR ONE in unquoted strings ( #487 )
...
See sass/sass-spec#1288
2018-10-10 15:49:43 -07:00
Natalie Weizenbaum
0620ccc19a
Fix @debug on stdin ( #493 )
2018-10-10 15:05:23 -07:00
Natalie Weizenbaum
ff3cea5312
Properly parse escaped digits at the beginning of identifiers ( #486 )
...
See sass/sass#1542
Closes sass/dart-sass#485
2018-09-26 21:01:46 -04:00
Natalie Weizenbaum
b3c9e7b00f
Fix a parsing bug involving nested content blocks ( #483 )
...
Closes #482
2018-09-26 14:32:55 -04:00
Progracientist
a6164217df
Prettify URIs ( #481 )
...
Closes #464
2018-09-26 13:39:49 -04:00
Natalie Weizenbaum
89b86be5e8
Enable full alpha hex support ( #478 )
...
Closes #371
2018-09-19 16:03:32 -04:00
Natalie Weizenbaum
1a5eb2a2e3
Fix embedding source maps with non-ASCII characters ( #471 )
...
Closes #457
2018-09-11 12:13:43 -07:00
Natalie Weizenbaum
ede9c81e0b
Properly adjust source maps when prepending encoding information ( #470 )
...
Closes #469
2018-09-10 15:38:30 -07:00
Natalie Weizenbaum
edf3370cd9
Parse :nth-child() selectors with extra whitespace ( #467 )
...
As a side effect of the new parse, this also removes extra whitespace
from :nth-child() selectors.
Closes #465
2018-09-05 15:28:26 -07:00
Natalie Weizenbaum
048b17495e
Support browser hacks in plain CSS mode ( #468 )
...
Closes #466
2018-09-05 14:31:59 -07:00
Natalie Weizenbaum
9e5ef91f22
Add support for the single-equals operator in plain CSS ( #463 )
...
Closes #462
2018-08-31 18:15:23 -06:00
Natalie Weizenbaum
15202c48dc
Simplify trimming for extend ( #460 )
...
We were previously trimming at bath the compound selector level and
the selector list level. This now only trims at the selector list
level.
The _trim() function also took a list of selector lists, on the
idea (from Ruby Sass) that it could avoid trimming selectors generated
from the same extension that were very unlikely to be redundant. In
practice, though, the fact that we weaved together selector lists at
the compound level meant that we didn't have meaningful
known-non-redundant lists like Ruby Sass did, so this wasn't useful.
This has no behavioral effect, although it does seem to improve
performance slightly for extend-heavy stylesheets.
2018-08-30 01:02:05 -06:00
Natalie Weizenbaum
997e068499
Add support for extending selector lists ( #455 )
...
Closes #452
2018-08-17 13:32:10 -07:00
Natalie Weizenbaum
677d781c52
Fix a crash with nested media rules ( #454 )
...
Closes #453
2018-08-17 12:34:31 -07:00
Natalie Weizenbaum
3346c7974a
Fix analysis hints ( #450 )
2018-08-15 12:43:55 -07:00
Natalie Weizenbaum
a33bc8812e
Use the proper scope for nested imports ( #449 )
...
Closes #443
2018-08-14 16:43:39 -07:00
Sam Rawlins
54192ee815
Fix a new missing_return error in Dart 2.1.0-dev.0.0 ( #445 )
2018-08-14 13:11:21 -07:00
Natalie Weizenbaum
d1bb4a0d6d
Allow a BOM at the beginning of a document ( #441 )
...
This was only breaking in JS because apparently dart:io automatically
filters out BOMs.
Closes #437
2018-08-10 16:31:15 -07:00
Natalie Weizenbaum
0f7f9e69a7
Add support for plain CSS imports ( #436 )
...
Closes #424
2018-08-10 15:58:15 -07:00
Natalie Weizenbaum
4f248c6d3f
Add an error() function to Parser ( #430 )
...
This simplifies the process of throwing an error associated with an
existing span.
2018-08-03 15:38:59 -07:00
Natalie Weizenbaum
8bffd52729
Don't hang after a syntax error in --watch ( #435 )
...
Closes #401
2018-08-03 15:38:16 -07:00
Natalie Weizenbaum
3b2f20d71b
Add support for plain CSS min() and max() ( #428 )
...
See sass/sass#2378
Closes #426
2018-08-03 12:50:56 -07:00
Natalie Weizenbaum
468e3b0270
Normalize escapes in identifiers ( #427 )
...
Closes #425
See sass/sass#1542
2018-07-26 16:21:02 -07:00
Natalie Weizenbaum
313b939ed8
Add support for range-form media queries ( #423 )
...
See sass/sass#1864
2018-07-25 15:48:24 -07:00
Natalie Weizenbaum
628cf7b83f
Don't use type parameters for types that come from JS
...
JS values never have reified generics.
2018-07-24 16:32:36 -07:00
Natalie Weizenbaum
e1750216ee
Don't crash when passing includePaths with importer
...
Closes #412
2018-07-23 16:20:06 -07:00
Natalie Weizenbaum
45da11dad5
Preserve nested media queries when they can't be merged ( #410 )
...
See sass/sass#1831
2018-07-18 12:12:17 -07:00
Natalie Weizenbaum
f740e97e05
Fix a typo in an error message ( #411 )
2018-07-18 12:11:24 -07:00
Natalie Weizenbaum
02781130b8
Give the dummy Node.js FileSystemException a usable toString() ( #407 )
...
Closes #406
2018-07-12 19:26:21 -07:00
Jenny Messerly
6d3cd8dd06
Fix --watch option with node on Mac OS ( #402 )
...
Closes #399
2018-07-11 13:15:55 -07:00
Natalie Weizenbaum
df7c1030cf
Don't emit ANSI codes to Windows terminals that don't support them ( #403 )
...
These codes *could* be supported on all Windows terminals, but
dart-lang/sdk#28614 means that they won't actually be recognized.
Partially addresses #395
2018-07-10 15:59:16 -07:00
Natalie Weizenbaum
9bb272dcff
Support Node Sass's sass.types.Color(argb) constructor ( #398 )
...
Closes #397
2018-07-03 17:09:54 -07:00