@@ -7,8 +7,8 @@ import 'dart:collection';
77import 'package:meta/meta.dart' ;
88import 'package:source_span/source_span.dart' ;
99
10+ import '../../../deprecation.dart' ;
1011import '../../../exception.dart' ;
11- import '../../../logger.dart' ;
1212import '../../../parse/css.dart' ;
1313import '../../../parse/sass.dart' ;
1414import '../../../parse/scss.dart' ;
@@ -46,16 +46,25 @@ final class Stylesheet extends ParentStatement<List<Statement>> {
4646 List <ForwardRule > get forwards => UnmodifiableListView (_forwards);
4747 final _forwards = < ForwardRule > [];
4848
49+ /// List of warnings discovered while parsing this stylesheet, to be emitted
50+ /// during evaluation once we have a proper logger to use.
51+ ///
52+ /// @nodoc
53+ @internal
54+ final List <ParseTimeWarning > parseTimeWarnings;
55+
4956 Stylesheet (Iterable <Statement > children, FileSpan span)
50- : this .internal (children, span);
57+ : this .internal (children, span, [] );
5158
5259 /// A separate internal constructor that allows [plainCss] to be set.
5360 ///
5461 /// @nodoc
5562 @internal
5663 Stylesheet .internal (Iterable <Statement > children, this .span,
64+ List <ParseTimeWarning > parseTimeWarnings,
5765 {this .plainCss = false })
58- : super (List .unmodifiable (children)) {
66+ : parseTimeWarnings = UnmodifiableListView (parseTimeWarnings),
67+ super (List .unmodifiable (children)) {
5968 loop:
6069 for (var child in this .children) {
6170 switch (child) {
@@ -81,16 +90,15 @@ final class Stylesheet extends ParentStatement<List<Statement>> {
8190 /// If passed, [url] is the name of the file from which [contents] comes.
8291 ///
8392 /// Throws a [SassFormatException] if parsing fails.
84- factory Stylesheet .parse (String contents, Syntax syntax,
85- {Object ? url, Logger ? logger}) {
93+ factory Stylesheet .parse (String contents, Syntax syntax, {Object ? url}) {
8694 try {
8795 switch (syntax) {
8896 case Syntax .sass:
89- return Stylesheet .parseSass (contents, url: url, logger : logger );
97+ return Stylesheet .parseSass (contents, url: url);
9098 case Syntax .scss:
91- return Stylesheet .parseScss (contents, url: url, logger : logger );
99+ return Stylesheet .parseScss (contents, url: url);
92100 case Syntax .css:
93- return Stylesheet .parseCss (contents, url: url, logger : logger );
101+ return Stylesheet .parseCss (contents, url: url);
94102 }
95103 } on SassException catch (error, stackTrace) {
96104 var url = error.span.sourceUrl;
@@ -106,28 +114,33 @@ final class Stylesheet extends ParentStatement<List<Statement>> {
106114 /// If passed, [url] is the name of the file from which [contents] comes.
107115 ///
108116 /// Throws a [SassFormatException] if parsing fails.
109- factory Stylesheet .parseSass (String contents,
110- {Object ? url, Logger ? logger}) =>
111- SassParser (contents, url: url, logger: logger).parse ();
117+ factory Stylesheet .parseSass (String contents, {Object ? url}) =>
118+ SassParser (contents, url: url).parse ();
112119
113120 /// Parses an SCSS stylesheet from [contents] .
114121 ///
115122 /// If passed, [url] is the name of the file from which [contents] comes.
116123 ///
117124 /// Throws a [SassFormatException] if parsing fails.
118- factory Stylesheet .parseScss (String contents,
119- {Object ? url, Logger ? logger}) =>
120- ScssParser (contents, url: url, logger: logger).parse ();
125+ factory Stylesheet .parseScss (String contents, {Object ? url}) =>
126+ ScssParser (contents, url: url).parse ();
121127
122128 /// Parses a plain CSS stylesheet from [contents] .
123129 ///
124130 /// If passed, [url] is the name of the file from which [contents] comes.
125131 ///
126132 /// Throws a [SassFormatException] if parsing fails.
127- factory Stylesheet .parseCss (String contents, {Object ? url, Logger ? logger }) =>
128- CssParser (contents, url: url, logger : logger ).parse ();
133+ factory Stylesheet .parseCss (String contents, {Object ? url}) =>
134+ CssParser (contents, url: url).parse ();
129135
130136 T accept <T >(StatementVisitor <T > visitor) => visitor.visitStylesheet (this );
131137
132138 String toString () => children.join (" " );
133139}
140+
141+ /// Record type for a warning discovered while parsing a stylesheet.
142+ typedef ParseTimeWarning = ({
143+ Deprecation ? deprecation,
144+ FileSpan span,
145+ String message
146+ });
0 commit comments