Only emit each warning once per source location (#1322)

This commit is contained in:
Natalie Weizenbaum 2021-05-21 16:23:53 -07:00 committed by GitHub
parent 112aaa6aef
commit 7f982a1b3a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 34 additions and 14 deletions

View File

@ -1,3 +1,7 @@
## 1.33.1
* Don't emit the same warning in the same location multiple times.
## 1.33.0
* Deprecate the use of `/` for division. The new `math.div()` function should be

View File

@ -148,6 +148,13 @@ class _EvaluateVisitor
/// The logger to use to print warnings.
final Logger _logger;
/// A set of message/location pairs for warnings that have been emitted via
/// [_warn].
///
/// We only want to emit one warning per location, to avoid blowing up users'
/// consoles with redundant warnings.
final _warningsEmitted = <Tuple2<String, SourceSpan>>{};
/// Whether to track source map information.
final bool _sourceMap;
@ -1936,7 +1943,7 @@ class _EvaluateVisitor
}
if (node.isGlobal && !_environment.globalVariableExists(node.name)) {
_logger.warn(
_warn(
_environment.atRoot
? "As of Dart Sass 2.0.0, !global assignments won't be able to\n"
"declare new variables. Since this assignment is at the root "
@ -1946,8 +1953,7 @@ class _EvaluateVisitor
"declare new variables. Consider adding "
"`${node.originalName}: null` at the root of the\n"
"stylesheet.",
span: node.span,
trace: _stackTrace(node.span),
node.span,
deprecation: true);
}
@ -3087,9 +3093,11 @@ class _EvaluateVisitor
}
/// Emits a warning with the given [message] about the given [span].
void _warn(String message, FileSpan span, {bool deprecation = false}) =>
_logger.warn(message,
span: span, trace: _stackTrace(span), deprecation: deprecation);
void _warn(String message, FileSpan span, {bool deprecation = false}) {
if (!_warningsEmitted.add(Tuple2(message, span))) return;
_logger.warn(message,
span: span, trace: _stackTrace(span), deprecation: deprecation);
}
/// Returns a [SassRuntimeException] with the given [message].
///

View File

@ -5,7 +5,7 @@
// DO NOT EDIT. This file was generated from async_evaluate.dart.
// See tool/grind/synchronize.dart for details.
//
// Checksum: 1fc6b9e6018eba3ac520464abb56e686f4cb9886
// Checksum: 7eb518e3fd9269a2117e8f4a4b4149ca05e3ec25
//
// ignore_for_file: unused_import
@ -156,6 +156,13 @@ class _EvaluateVisitor
/// The logger to use to print warnings.
final Logger _logger;
/// A set of message/location pairs for warnings that have been emitted via
/// [_warn].
///
/// We only want to emit one warning per location, to avoid blowing up users'
/// consoles with redundant warnings.
final _warningsEmitted = <Tuple2<String, SourceSpan>>{};
/// Whether to track source map information.
final bool _sourceMap;
@ -1928,7 +1935,7 @@ class _EvaluateVisitor
}
if (node.isGlobal && !_environment.globalVariableExists(node.name)) {
_logger.warn(
_warn(
_environment.atRoot
? "As of Dart Sass 2.0.0, !global assignments won't be able to\n"
"declare new variables. Since this assignment is at the root "
@ -1938,8 +1945,7 @@ class _EvaluateVisitor
"declare new variables. Consider adding "
"`${node.originalName}: null` at the root of the\n"
"stylesheet.",
span: node.span,
trace: _stackTrace(node.span),
node.span,
deprecation: true);
}
@ -3058,9 +3064,11 @@ class _EvaluateVisitor
}
/// Emits a warning with the given [message] about the given [span].
void _warn(String message, FileSpan span, {bool deprecation = false}) =>
_logger.warn(message,
span: span, trace: _stackTrace(span), deprecation: deprecation);
void _warn(String message, FileSpan span, {bool deprecation = false}) {
if (!_warningsEmitted.add(Tuple2(message, span))) return;
_logger.warn(message,
span: span, trace: _stackTrace(span), deprecation: deprecation);
}
/// Returns a [SassRuntimeException] with the given [message].
///

View File

@ -1,5 +1,5 @@
name: sass
version: 1.33.0
version: 1.33.1-dev
description: A Sass implementation in Dart.
author: Sass Team
homepage: https://github.com/sass/dart-sass