Skip to content

Commit 28d0dab

Browse files
authored
Deprecate the missingCodeBlockLanguage warning. (#3743)
* Deprecate the missingCodeBlockLanguage warning. * Added a stderr warning. * Add a copyright msg. * Write error on warn and error warnings that are deprecated. * Generalize warning oops.
1 parent 12988e0 commit 28d0dab

File tree

2 files changed

+27
-8
lines changed

2 files changed

+27
-8
lines changed

lib/src/model/documentation_comment.dart

+4
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file
2+
// for details. All rights reserved. Use of this source code is governed by a
3+
// BSD-style license that can be found in the LICENSE file.
4+
15
import 'package:analyzer/dart/element/element.dart';
26
import 'package:args/args.dart';
37
import 'package:crypto/crypto.dart' as crypto;

lib/src/warnings.dart

+23-8
Original file line numberDiff line numberDiff line change
@@ -279,16 +279,19 @@ enum PackageWarning implements Comparable<PackageWarning> {
279279
'deprecated dartdoc usage: {0}',
280280
shortHelp: 'A dartdoc directive has a deprecated format.',
281281
),
282+
// TODO(kallentu): Remove this warning.
282283
missingCodeBlockLanguage(
283284
'missing-code-block-language',
284285
'missing code block language: {0}',
285-
shortHelp: 'A fenced code block is missing a specified language.',
286-
longHelp:
287-
'To enable proper syntax highlighting of Markdown code blocks, Dartdoc '
288-
'requires code blocks to specify the language used after the initial '
289-
'declaration. As an example, to specify Dart you would open the '
290-
'Markdown code block with ```dart or ~~~dart.',
286+
shortHelp: '(Deprecated: Use `missing_code_block_language_in_doc_comment` '
287+
'lint) A fenced code block is missing a specified language.',
288+
longHelp: '(Deprecated: Use `missing_code_block_language_in_doc_comment` '
289+
'lint) To enable proper syntax highlighting of Markdown code blocks, '
290+
'Dartdoc requires code blocks to specify the language used after the '
291+
'initial declaration. As an example, to specify Dart you would open '
292+
'the Markdown code block with ```dart or ~~~dart.',
291293
defaultWarningMode: PackageWarningMode.ignore,
294+
isDeprecated: true,
292295
);
293296

294297
/// The name which can be used at the command line to enable this warning.
@@ -305,6 +308,8 @@ enum PackageWarning implements Comparable<PackageWarning> {
305308

306309
final String _longHelp;
307310

311+
final bool _isDeprecated;
312+
308313
final PackageWarningMode _defaultWarningMode;
309314

310315
const PackageWarning(
@@ -314,11 +319,13 @@ enum PackageWarning implements Comparable<PackageWarning> {
314319
String longHelp = '',
315320
String warnablePrefix = 'from',
316321
String referredFromPrefix = 'referred to by',
322+
bool isDeprecated = false,
317323
PackageWarningMode defaultWarningMode = PackageWarningMode.warn,
318324
}) : _shortHelp = shortHelp,
319325
_longHelp = longHelp,
320326
_warnablePrefix = warnablePrefix,
321327
_referredFromPrefix = referredFromPrefix,
328+
_isDeprecated = isDeprecated,
322329
_defaultWarningMode = defaultWarningMode;
323330

324331
static PackageWarning? _byName(String name) =>
@@ -402,6 +409,7 @@ class PackageWarningOptions {
402409
for (var warningName in errorsForDir) {
403410
var packageWarning = PackageWarning._byName(warningName);
404411
if (packageWarning != null) {
412+
newOptions.writeErrorOnDeprecation(packageWarning);
405413
newOptions.error(packageWarning);
406414
}
407415
}
@@ -410,6 +418,7 @@ class PackageWarningOptions {
410418
for (var warningName in warningsForDir) {
411419
var packageWarning = PackageWarning._byName(warningName);
412420
if (packageWarning != null) {
421+
newOptions.writeErrorOnDeprecation(packageWarning);
413422
newOptions.warn(packageWarning);
414423
}
415424
}
@@ -455,14 +464,20 @@ class PackageWarningOptions {
455464
return newOptions;
456465
}
457466

467+
void error(PackageWarning kind) =>
468+
warningModes[kind] = PackageWarningMode.error;
469+
458470
void ignore(PackageWarning kind) =>
459471
warningModes[kind] = PackageWarningMode.ignore;
460472

461473
void warn(PackageWarning kind) =>
462474
warningModes[kind] = PackageWarningMode.warn;
463475

464-
void error(PackageWarning kind) =>
465-
warningModes[kind] = PackageWarningMode.error;
476+
void writeErrorOnDeprecation(PackageWarning warning) {
477+
if (warning._isDeprecated) {
478+
stderr.writeln("The warning '${warning._flagName}' is deprecated.");
479+
}
480+
}
466481

467482
PackageWarningMode getMode(PackageWarning kind) => warningModes[kind]!;
468483
}

0 commit comments

Comments
 (0)