Get rid of a backlog of potentially suboptimal coding practices in dartdoc (#2830)
* switch to lints/core.yaml
* recommended
* presubmit cleanup
* oops, recommended on presubmit too
diff --git a/analysis_options.yaml b/analysis_options.yaml
index 2613185..14a16b1 100644
--- a/analysis_options.yaml
+++ b/analysis_options.yaml
@@ -1,6 +1,6 @@
# Change analysis_options.yaml and analysis_options_presubmit.yaml
# together.
-include: package:pedantic/analysis_options.1.11.0.yaml
+include: package:lints/recommended.yaml
analyzer:
errors:
@@ -19,45 +19,19 @@
- 'testing/test_package_export_error/**'
linter:
rules:
- - always_declare_return_types
- - avoid_dynamic_calls
- - avoid_single_cascade_in_expression_statements
- - avoid_unused_constructor_parameters
- - annotate_overrides
- - avoid_init_to_null
- - directives_ordering
- - no_adjacent_strings_in_list
- - package_api_docs
- - prefer_final_fields
- - prefer_initializing_formals
- - prefer_void_to_null
- - slash_for_doc_comments
- - type_annotate_public_apis
- # - unnecessary_brace_in_string_interps
+ always_declare_return_types: true
+ annotate_overrides: true
+ avoid_dynamic_calls: true
+ avoid_single_cascade_in_expression_statements: true
+ avoid_unused_constructor_parameters: true
+ avoid_init_to_null: true
+ directives_ordering: true
+ no_adjacent_strings_in_list: true
+ package_api_docs: true
+ prefer_final_fields: true
+ prefer_initializing_formals: true
+ prefer_void_to_null: true
+ slash_for_doc_comments: true
+ type_annotate_public_apis: true
# Work in progress canonical score lints
- - avoid_empty_else
- - avoid_relative_lib_imports
- - avoid_shadowing_type_parameters
- - await_only_futures
- - camel_case_extensions
- - camel_case_types
- - curly_braces_in_flow_control_structures
- - empty_catches
- - file_names
- - hash_and_equals
- - iterable_contains_unrelated_type
- - list_remove_unrelated_type
- - no_duplicate_case_values
- # - non_constant_identifier_names
- - package_prefixed_library_names
- - prefer_generic_function_type_aliases
- - prefer_is_empty
- - prefer_is_not_empty
- - prefer_iterable_whereType
- - prefer_typing_uninitialized_variables
- - provide_deprecation_message
- - unawaited_futures
- - unnecessary_overrides
- - unrelated_type_equality_checks
- - valid_regexps
- - void_checks
+ unawaited_futures: true
diff --git a/analysis_options_presubmit.yaml b/analysis_options_presubmit.yaml
index 6802b09..697b4fc 100644
--- a/analysis_options_presubmit.yaml
+++ b/analysis_options_presubmit.yaml
@@ -1,6 +1,6 @@
# Change analysis_options.yaml and analysis_options_presubmit.yaml
# together.
-include: package:pedantic/analysis_options.1.11.0.yaml
+include: package:lints/recommended.yaml
analyzer:
errors:
@@ -22,45 +22,19 @@
- 'testing/test_package_export_error/**'
linter:
rules:
- - always_declare_return_types
- - avoid_dynamic_calls
- - avoid_single_cascade_in_expression_statements
- - avoid_unused_constructor_parameters
- - annotate_overrides
- - avoid_init_to_null
- - directives_ordering
- - no_adjacent_strings_in_list
- - package_api_docs
- - prefer_final_fields
- - prefer_initializing_formals
- - prefer_void_to_null
- - slash_for_doc_comments
- - type_annotate_public_apis
- # - unnecessary_brace_in_string_interps
+ always_declare_return_types: true
+ annotate_overrides: true
+ avoid_dynamic_calls: true
+ avoid_single_cascade_in_expression_statements: true
+ avoid_unused_constructor_parameters: true
+ avoid_init_to_null: true
+ directives_ordering: true
+ no_adjacent_strings_in_list: true
+ package_api_docs: true
+ prefer_final_fields: true
+ prefer_initializing_formals: true
+ prefer_void_to_null: true
+ slash_for_doc_comments: true
+ type_annotate_public_apis: true
# Work in progress canonical score lints
- - avoid_empty_else
- - avoid_relative_lib_imports
- - avoid_shadowing_type_parameters
- - await_only_futures
- - camel_case_extensions
- - camel_case_types
- - curly_braces_in_flow_control_structures
- - empty_catches
- - file_names
- - hash_and_equals
- - iterable_contains_unrelated_type
- - list_remove_unrelated_type
- - no_duplicate_case_values
- # - non_constant_identifier_names
- - package_prefixed_library_names
- - prefer_generic_function_type_aliases
- - prefer_is_empty
- - prefer_is_not_empty
- - prefer_iterable_whereType
- - prefer_typing_uninitialized_variables
- - provide_deprecation_message
- - unawaited_futures
- - unnecessary_overrides
- - unrelated_type_equality_checks
- - valid_regexps
- - void_checks
+ unawaited_futures: true
diff --git a/lib/dartdoc.dart b/lib/dartdoc.dart
index 6d74a3f..f9ae1ec 100644
--- a/lib/dartdoc.dart
+++ b/lib/dartdoc.dart
@@ -370,7 +370,7 @@
var indexPath = path.joinAll([origin, 'index.html']);
var file = config.resourceProvider.getFile(fullPath);
if (!file.exists) {
- return null;
+ return;
}
var decoder = JsonDecoder();
List<Object> jsonData = decoder.convert(file.readAsStringSync());
@@ -415,7 +415,7 @@
// Remove so that we properly count that the file doesn't exist for
// the orphan check.
visited.remove(fullPath);
- return null;
+ return;
}
visited.add(fullPath);
var stringLinks = stringLinksAndHref.item1;
diff --git a/lib/src/comment_references/parser.dart b/lib/src/comment_references/parser.dart
index ce40bf3..c3e5766 100644
--- a/lib/src/comment_references/parser.dart
+++ b/lib/src/comment_references/parser.dart
@@ -132,12 +132,11 @@
if (typeVariablesResult.type == _TypeVariablesResultType.endOfFile) {
break;
} else if (typeVariablesResult.type ==
- _TypeVariablesResultType.notTypeVariables) {
- // Do nothing, _index has not moved.
- ;
- } else if (typeVariablesResult.type ==
_TypeVariablesResultType.parsedTypeVariables) {
children.add(typeVariablesResult.node);
+ } else {
+ assert(typeVariablesResult.type ==
+ _TypeVariablesResultType.notTypeVariables);
}
}
if (_atEnd || _thisChar != $dot) {
diff --git a/lib/src/dartdoc_options.dart b/lib/src/dartdoc_options.dart
index 674da23..8d6325d 100644
--- a/lib/src/dartdoc_options.dart
+++ b/lib/src/dartdoc_options.dart
@@ -556,7 +556,9 @@
/// Apply the function [visit] to [this] and all children.
void traverse(void Function(DartdocOption option) visit) {
visit(this);
- _children.values.forEach((d) => d.traverse(visit));
+ for (var value in _children.values) {
+ value.traverse(visit);
+ }
}
}
@@ -731,7 +733,7 @@
/// [DartdocOptionSet] always has the null value.
@override
- void valueAt(Folder dir) => null;
+ void valueAt(Folder dir) {}
/// Since we have no value, [_onMissing] does nothing.
@override
@@ -742,7 +744,9 @@
/// configuration object.
@override
void traverse(void Function(DartdocOption option) visitor) {
- _children.values.forEach((d) => d.traverse(visitor));
+ for (var value in _children.values) {
+ value.traverse(visitor);
+ }
}
}
@@ -1033,7 +1037,9 @@
}
}
}
- canonicalPaths.forEach((p) => _yamlAtCanonicalPathCache[p] = yamlData);
+ for (var canonicalPath in canonicalPaths) {
+ _yamlAtCanonicalPathCache[canonicalPath] = yamlData;
+ }
return yamlData;
}
}
@@ -1137,7 +1143,7 @@
/// 'something-bar-over-the-hill' (with default skip).
/// This allows argument names to reflect nested structure.
static String _keysToArgName(Iterable<String> keys, [int skip = 1]) {
- var argName = "${keys.skip(skip).join('-')}";
+ var argName = keys.skip(skip).join('-');
argName = argName.replaceAll('_', '-');
// Do not consume the lowercase character after the uppercase one, to handle
// two character words.
diff --git a/lib/src/experiment_options.dart b/lib/src/experiment_options.dart
index 47b8eb4..9b992a8 100644
--- a/lib/src/experiment_options.dart
+++ b/lib/src/experiment_options.dart
@@ -9,6 +9,7 @@
library dartdoc.experiment_options;
import 'package:analyzer/file_system/file_system.dart';
+// ignore: implementation_imports
import 'package:analyzer/src/dart/analysis/experiments.dart';
import 'package:dartdoc/src/dartdoc_options.dart';
diff --git a/lib/src/generator/empty_generator.dart b/lib/src/generator/empty_generator.dart
index bd2dbb2..42e94de 100644
--- a/lib/src/generator/empty_generator.dart
+++ b/lib/src/generator/empty_generator.dart
@@ -11,10 +11,10 @@
/// it were.
class EmptyGenerator extends Generator {
@override
- Future<void> generate(PackageGraph _packageGraph, FileWriter writer) {
- logProgress(_packageGraph.defaultPackage.documentationAsHtml);
- for (var package in {_packageGraph.defaultPackage}
- ..addAll(_packageGraph.localPackages)) {
+ Future<void> generate(PackageGraph packageGraph, FileWriter writer) {
+ logProgress(packageGraph.defaultPackage.documentationAsHtml);
+ for (var package in {packageGraph.defaultPackage}
+ ..addAll(packageGraph.localPackages)) {
for (var category in filterNonDocumented(package.categories)) {
logProgress(category.documentationAsHtml);
}
diff --git a/lib/src/generator/html_generator.dart b/lib/src/generator/html_generator.dart
index bf73bcc..32a0db6 100644
--- a/lib/src/generator/html_generator.dart
+++ b/lib/src/generator/html_generator.dart
@@ -59,7 +59,7 @@
}
Future<void> _copyResources(FileWriter writer) async {
- for (var resourcePath in resources.resource_names) {
+ for (var resourcePath in resources.resourceNames) {
if (!resourcePath.startsWith(_dartdocResourcePrefix)) {
throw StateError('Resource paths must start with '
'$_dartdocResourcePrefix, encountered $resourcePath');
diff --git a/lib/src/generator/html_resources.g.dart b/lib/src/generator/html_resources.g.dart
index 56845ce..0815ede 100644
--- a/lib/src/generator/html_resources.g.dart
+++ b/lib/src/generator/html_resources.g.dart
@@ -1,6 +1,6 @@
-// WARNING: This file is auto-generated. Do not taunt.
+// WARNING: This file is auto-generated. Do not edit.
-const List<String> resource_names = [
+const List<String> resourceNames = [
'package:dartdoc/resources/favicon.png',
'package:dartdoc/resources/github.css',
'package:dartdoc/resources/highlight.pack.js',
diff --git a/lib/src/generator/templates.aot_renderers_for_html.dart b/lib/src/generator/templates.aot_renderers_for_html.dart
index 1dcabf6..00a30c0 100644
--- a/lib/src/generator/templates.aot_renderers_for_html.dart
+++ b/lib/src/generator/templates.aot_renderers_for_html.dart
@@ -7,6 +7,7 @@
// the variable is not used; generally when the section is checking if a
// non-bool, non-Iterable field is non-null.
// ignore_for_file: unused_local_variable
+// ignore_for_file: non_constant_identifier_names, unnecessary_string_escapes
import 'dart:convert' as _i19;
diff --git a/lib/src/generator/templates.aot_renderers_for_md.dart b/lib/src/generator/templates.aot_renderers_for_md.dart
index df7b635..15dbf0b 100644
--- a/lib/src/generator/templates.aot_renderers_for_md.dart
+++ b/lib/src/generator/templates.aot_renderers_for_md.dart
@@ -7,6 +7,7 @@
// the variable is not used; generally when the section is checking if a
// non-bool, non-Iterable field is non-null.
// ignore_for_file: unused_local_variable
+// ignore_for_file: non_constant_identifier_names, unnecessary_string_escapes
import 'dart:convert' as _i19;
diff --git a/lib/src/generator/templates.runtime_renderers.dart b/lib/src/generator/templates.runtime_renderers.dart
index 0de46dc..0aaf845 100644
--- a/lib/src/generator/templates.runtime_renderers.dart
+++ b/lib/src/generator/templates.runtime_renderers.dart
@@ -4,6 +4,7 @@
// files in the tool/mustachio/ directory.
// ignore_for_file: camel_case_types, deprecated_member_use_from_same_package
+// ignore_for_file: non_constant_identifier_names, unnecessary_string_escapes
// ignore_for_file: unused_import
import 'package:dartdoc/src/element_type.dart';
import 'package:dartdoc/src/generator/template_data.dart';
diff --git a/lib/src/io_utils.dart b/lib/src/io_utils.dart
index 418937e..1a66311 100644
--- a/lib/src/io_utils.dart
+++ b/lib/src/io_utils.dart
@@ -12,8 +12,10 @@
import 'package:analyzer/file_system/file_system.dart';
import 'package:analyzer/file_system/physical_file_system.dart';
-import 'package:analyzer/src/generated/sdk.dart';
-import 'package:analyzer/src/test_utilities/mock_sdk.dart';
+// ignore: implementation_imports
+import 'package:analyzer/src/generated/sdk.dart' show SdkLibrary;
+// ignore: implementation_imports
+import 'package:analyzer/src/test_utilities/mock_sdk.dart' show MockSdkLibrary;
import 'package:path/path.dart' as path show Context;
Encoding utf8AllowMalformed = Utf8Codec(allowMalformed: true);
diff --git a/lib/src/logging.dart b/lib/src/logging.dart
index b56a8d3..3e40510 100644
--- a/lib/src/logging.dart
+++ b/lib/src/logging.dart
@@ -117,7 +117,7 @@
// the backspace to occur for stderr as well.
stderr.write('${ansi.backspace} ${ansi.backspace}');
}
- stderr.writeln('$message');
+ stderr.writeln(message);
}
writingProgress = false;
});
diff --git a/lib/src/markdown_processor.dart b/lib/src/markdown_processor.dart
index 5fd12cf..6eef207 100644
--- a/lib/src/markdown_processor.dart
+++ b/lib/src/markdown_processor.dart
@@ -284,9 +284,9 @@
PackageWarningMode.ignore) {
for (var position in findFreeHangingGenericsPositions(text)) {
var priorContext =
- '${text.substring(max(position - maxPriorContext, 0), position)}';
+ text.substring(max(position - maxPriorContext, 0), position);
var postContext =
- '${text.substring(position, min(position + maxPostContext, text.length))}';
+ text.substring(position, min(position + maxPostContext, text.length));
priorContext = priorContext.replaceAll(allBeforeFirstNewline, '');
postContext = postContext.replaceAll(allAfterLastNewline, '');
var errorMessage = '$priorContext$postContext';
diff --git a/lib/src/model/accessor.dart b/lib/src/model/accessor.dart
index 9bab382..71007a8 100644
--- a/lib/src/model/accessor.dart
+++ b/lib/src/model/accessor.dart
@@ -4,6 +4,7 @@
import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/source/line_info.dart';
+// ignore: implementation_imports
import 'package:analyzer/src/dart/element/member.dart' show ExecutableMember;
import 'package:dartdoc/src/element_type.dart';
import 'package:dartdoc/src/model/comment_referable.dart';
diff --git a/lib/src/model/comment_referable.dart b/lib/src/model/comment_referable.dart
index f406b77..d28e482 100644
--- a/lib/src/model/comment_referable.dart
+++ b/lib/src/model/comment_referable.dart
@@ -70,10 +70,11 @@
extension CommentReferableEntryBuilder on Map<String, CommentReferable> {
/// Like [Map.putIfAbsent] except works on an iterable of entries.
void addEntriesIfAbsent(
- Iterable<MapEntry<String, CommentReferable>> entries) =>
- entries.forEach((e) {
- if (!containsKey(e.key)) this[e.key] = e.value;
- });
+ Iterable<MapEntry<String, CommentReferable>> entries) {
+ for (var entry in entries) {
+ if (!containsKey(entry.key)) this[entry.key] = entry.value;
+ }
+ }
}
/// Support comment reference lookups on a Nameable object.
diff --git a/lib/src/model/documentation_comment.dart b/lib/src/model/documentation_comment.dart
index a1ba9c9..32e14b9 100644
--- a/lib/src/model/documentation_comment.dart
+++ b/lib/src/model/documentation_comment.dart
@@ -393,7 +393,7 @@
/// Matches YouTube IDs from supported YouTube URLs.
static final _validYouTubeUrlPattern =
- RegExp('https://www\.youtube\.com/watch\\?v=([^&]+)\$');
+ RegExp(r'https://www\.youtube\.com/watch\?v=([^&]+)$');
/// An argument parser used in [_injectYouTube] to parse a `{@youtube}`
/// directive.
@@ -736,14 +736,14 @@
firstOfPair.add(results[i]);
}
}
- firstOfPair.forEach((element) {
+ for (var element in firstOfPair) {
final result = element.group(2).trim();
if (result.isEmpty) {
warn(PackageWarning.missingCodeBlockLanguage,
message:
'A fenced code block in Markdown should have a language specified');
}
- });
+ }
}
/// Returns the documentation for this literal element unless
diff --git a/lib/src/model/field.dart b/lib/src/model/field.dart
index 61da13f..2c50fb3 100644
--- a/lib/src/model/field.dart
+++ b/lib/src/model/field.dart
@@ -3,7 +3,6 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analyzer/dart/element/element.dart';
-import 'package:analyzer/src/dart/element/element.dart';
import 'package:dartdoc/src/model/feature.dart';
import 'package:dartdoc/src/model/model.dart';
import 'package:dartdoc/src/render/source_code_renderer.dart';
@@ -82,8 +81,7 @@
/// Returns true if the FieldElement is covariant, or if the first parameter
/// for the setter is covariant.
@override
- bool get isCovariant =>
- setter?.isCovariant == true || (field as FieldElementImpl).isCovariant;
+ bool get isCovariant => setter?.isCovariant == true || field.isCovariant;
@override
bool get isFinal {
diff --git a/lib/src/model/getter_setter_combo.dart b/lib/src/model/getter_setter_combo.dart
index c9a425f..36a1254 100644
--- a/lib/src/model/getter_setter_combo.dart
+++ b/lib/src/model/getter_setter_combo.dart
@@ -8,7 +8,9 @@
show Expression, InstanceCreationExpression;
import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/source/line_info.dart';
-import 'package:analyzer/src/dart/element/element.dart';
+// ignore: implementation_imports
+import 'package:analyzer/src/dart/element/element.dart'
+ show ConstVariableElement;
import 'package:dartdoc/src/element_type.dart';
import 'package:dartdoc/src/model/annotation.dart';
import 'package:dartdoc/src/model/comment_referable.dart';
@@ -68,7 +70,7 @@
// TODO(jcollins-g): this logic really should be integrated into Constructor,
// but that's not trivial because of linkedName's usage.
if (targetClass.name == target.name) {
- return original.replaceAll(constructorName, '${target.linkedName}');
+ return original.replaceAll(constructorName, target.linkedName);
}
return original.replaceAll('${targetClass.name}.${target.name}',
'${targetClass.linkedName}.${target.linkedName}');
@@ -147,10 +149,10 @@
} else {
var buffer = StringBuffer();
if (hasPublicGetter && getter.oneLineDoc.isNotEmpty) {
- buffer.write('${getter.oneLineDoc}');
+ buffer.write(getter.oneLineDoc);
}
if (hasPublicSetter && setter.oneLineDoc.isNotEmpty) {
- buffer.write('${getterSetterBothAvailable ? "" : setter.oneLineDoc}');
+ buffer.write(getterSetterBothAvailable ? "" : setter.oneLineDoc);
}
_oneLineDoc = buffer.toString();
}
diff --git a/lib/src/model/library.dart b/lib/src/model/library.dart
index a1edfe8..acd5c27 100644
--- a/lib/src/model/library.dart
+++ b/lib/src/model/library.dart
@@ -4,14 +4,17 @@
import 'dart:collection';
-import 'package:analyzer/dart/ast/ast.dart' hide CommentReference;
+import 'package:analyzer/dart/ast/ast.dart' show CompilationUnit;
import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/dart/element/scope.dart';
import 'package:analyzer/dart/element/type_system.dart';
import 'package:analyzer/dart/element/visitor.dart';
import 'package:analyzer/source/line_info.dart';
-import 'package:analyzer/src/dart/element/inheritance_manager3.dart';
-import 'package:analyzer/src/generated/sdk.dart';
+// ignore: implementation_imports
+import 'package:analyzer/src/dart/element/inheritance_manager3.dart'
+ show InheritanceManager3;
+// ignore: implementation_imports
+import 'package:analyzer/src/generated/sdk.dart' show SdkLibrary;
import 'package:dartdoc/src/io_utils.dart';
import 'package:dartdoc/src/model/comment_referable.dart';
import 'package:dartdoc/src/model/model.dart';
@@ -31,26 +34,22 @@
void visitElement(Element element) {
libraryProcessor(element);
super.visitElement(element);
- return null;
}
@override
void visitExportElement(ExportElement element) {
// [ExportElement]s are not always hashable; skip them.
- return null;
}
@override
void visitImportElement(ImportElement element) {
// [ImportElement]s are not always hashable; skip them.
- return null;
}
@override
void visitParameterElement(ParameterElement element) {
// [ParameterElement]s without names do not provide sufficiently distinct
// hashes / comparison, so just skip them all. (dart-lang/sdk#30146)
- return null;
}
}
@@ -595,11 +594,11 @@
}),
]);
_modelElementsMap = HashMap<Element, Set<ModelElement>>();
- results.forEach((modelElement) {
+ for (var modelElement in results) {
_modelElementsMap
.putIfAbsent(modelElement.element, () => {})
.add(modelElement);
- });
+ }
_modelElementsMap.putIfAbsent(element, () => {}).add(this);
}
return _modelElementsMap;
diff --git a/lib/src/model/method.dart b/lib/src/model/method.dart
index 3bc0c20..b095d6f 100644
--- a/lib/src/model/method.dart
+++ b/lib/src/model/method.dart
@@ -4,6 +4,7 @@
import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/source/line_info.dart';
+// ignore: implementation_imports
import 'package:analyzer/src/dart/element/member.dart' show ExecutableMember;
import 'package:dartdoc/src/element_type.dart';
import 'package:dartdoc/src/model/comment_referable.dart';
diff --git a/lib/src/model/model_element.dart b/lib/src/model/model_element.dart
index e95b02f..b17a4d1 100644
--- a/lib/src/model/model_element.dart
+++ b/lib/src/model/model_element.dart
@@ -10,7 +10,7 @@
import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/dart/element/type.dart' show FunctionType;
import 'package:analyzer/source/line_info.dart';
-import 'package:analyzer/src/dart/element/element.dart';
+// ignore: implementation_imports
import 'package:analyzer/src/dart/element/member.dart'
show ExecutableMember, Member;
import 'package:collection/collection.dart';
@@ -229,7 +229,7 @@
assert(library != null ||
e is ParameterElement ||
e is TypeParameterElement ||
- e is GenericFunctionTypeElementImpl ||
+ e is GenericFunctionTypeElement ||
e.kind == ElementKind.DYNAMIC ||
e.kind == ElementKind.NEVER);
diff --git a/lib/src/model/operator.dart b/lib/src/model/operator.dart
index 1a7b6ed..dc6da78 100644
--- a/lib/src/model/operator.dart
+++ b/lib/src/model/operator.dart
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analyzer/dart/element/element.dart';
+// ignore: implementation_imports
import 'package:analyzer/src/dart/element/member.dart' show Member;
import 'package:dartdoc/src/comment_references/parser.dart';
import 'package:dartdoc/src/model/model.dart';
diff --git a/lib/src/model/package.dart b/lib/src/model/package.dart
index efe5bcc..f9c41b1 100644
--- a/lib/src/model/package.dart
+++ b/lib/src/model/package.dart
@@ -26,7 +26,7 @@
// Unlikely to be mistaken for an identifier, html tag, or something else that
// might reasonably exist normally.
@internal
-const String htmlBasePlaceholder = '\%\%__HTMLBASE_dartdoc_internal__\%\%';
+const String htmlBasePlaceholder = r'%%__HTMLBASE_dartdoc_internal__%%';
/// A [LibraryContainer] that contains [Library] objects related to a particular
/// package.
diff --git a/lib/src/model/package_builder.dart b/lib/src/model/package_builder.dart
index dd2d7da..33f74aa 100644
--- a/lib/src/model/package_builder.dart
+++ b/lib/src/model/package_builder.dart
@@ -8,12 +8,20 @@
import 'package:analyzer/dart/analysis/results.dart';
import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/file_system/file_system.dart';
-import 'package:analyzer/src/context/builder.dart';
-import 'package:analyzer/src/dart/analysis/analysis_context_collection.dart';
-import 'package:analyzer/src/dart/sdk/sdk.dart';
-import 'package:analyzer/src/generated/engine.dart';
-import 'package:analyzer/src/generated/java_io.dart';
-import 'package:analyzer/src/generated/sdk.dart';
+// ignore: implementation_imports
+import 'package:analyzer/src/context/builder.dart' show EmbedderYamlLocator;
+// ignore: implementation_imports
+import 'package:analyzer/src/dart/analysis/analysis_context_collection.dart'
+ show AnalysisContextCollectionImpl;
+// ignore: implementation_imports
+import 'package:analyzer/src/dart/sdk/sdk.dart'
+ show EmbedderSdk, FolderBasedDartSdk;
+// ignore: implementation_imports
+import 'package:analyzer/src/generated/engine.dart' show AnalysisOptionsImpl;
+// ignore: implementation_imports
+import 'package:analyzer/src/generated/java_io.dart' show JavaFile;
+// ignore: implementation_imports
+import 'package:analyzer/src/generated/sdk.dart' show DartSdk;
import 'package:dartdoc/src/dartdoc_options.dart';
import 'package:dartdoc/src/logging.dart';
import 'package:dartdoc/src/model/model.dart' hide Package;
diff --git a/lib/src/model/package_graph.dart b/lib/src/model/package_graph.dart
index 6c16ae3..ab2f5cc 100644
--- a/lib/src/model/package_graph.dart
+++ b/lib/src/model/package_graph.dart
@@ -7,9 +7,10 @@
import 'package:analyzer/dart/ast/ast.dart' hide CommentReference;
import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/file_system/file_system.dart';
-import 'package:analyzer/src/generated/sdk.dart';
-import 'package:analyzer/src/generated/source.dart';
-import 'package:analyzer/src/generated/source_io.dart';
+// ignore: implementation_imports
+import 'package:analyzer/src/generated/sdk.dart' show DartSdk, SdkLibrary;
+// ignore: implementation_imports
+import 'package:analyzer/src/generated/source_io.dart' show Source;
import 'package:dartdoc/src/dartdoc_options.dart';
import 'package:dartdoc/src/failure.dart';
import 'package:dartdoc/src/logging.dart';
@@ -941,9 +942,9 @@
assert(allLibrariesAdded);
if (_allLocalModelElements == null) {
_allLocalModelElements = [];
- localLibraries.forEach((library) {
+ for (var library in localLibraries) {
_allLocalModelElements.addAll(library.allModelElements);
- });
+ }
}
return _allLocalModelElements;
}
diff --git a/lib/src/model/parameter.dart b/lib/src/model/parameter.dart
index 6b8d990..f42273d 100644
--- a/lib/src/model/parameter.dart
+++ b/lib/src/model/parameter.dart
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analyzer/dart/element/element.dart';
+// ignore: implementation_imports
import 'package:analyzer/src/dart/element/member.dart' show ParameterMember;
import 'package:dartdoc/src/element_type.dart';
import 'package:dartdoc/src/model/comment_referable.dart';
@@ -61,8 +62,8 @@
int get hashCode => element == null ? 0 : element.hashCode;
@override
- bool operator ==(Object object) =>
- object is Parameter && (element.type == object.element.type);
+ bool operator ==(Object other) =>
+ other is Parameter && (element.type == other.element.type);
bool get isCovariant => element.isCovariant;
diff --git a/lib/src/model/prefix.dart b/lib/src/model/prefix.dart
index 09ccd01..9b5fbf2 100644
--- a/lib/src/model/prefix.dart
+++ b/lib/src/model/prefix.dart
@@ -4,7 +4,6 @@
import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/dart/element/scope.dart';
-import 'package:analyzer/src/dart/element/element.dart';
import 'package:dartdoc/src/model/comment_referable.dart';
import '../../dartdoc.dart';
@@ -37,7 +36,7 @@
Scope get scope => element.scope;
@override
- PrefixElementImpl get element => super.element;
+ PrefixElement get element => super.element;
@override
ModelElement get enclosingElement => library;
@@ -47,8 +46,7 @@
throw UnimplementedError('prefixes have no generated files in dartdoc');
@override
- String get href =>
- canonicalModelElement == null ? null : canonicalModelElement.href;
+ String get href => canonicalModelElement?.href;
@override
String get kind => 'prefix';
diff --git a/lib/src/model_utils.dart b/lib/src/model_utils.dart
index 05de7de..b11c758 100644
--- a/lib/src/model_utils.dart
+++ b/lib/src/model_utils.dart
@@ -10,7 +10,8 @@
import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/file_system/file_system.dart';
-import 'package:analyzer/src/dart/ast/utilities.dart';
+// ignore: implementation_imports
+import 'package:analyzer/src/dart/ast/utilities.dart' show NodeLocator2;
import 'package:dartdoc/src/failure.dart';
import 'package:dartdoc/src/model/model.dart';
import 'package:glob/glob.dart';
@@ -115,7 +116,7 @@
return _fileContents[location];
}
-final RegExp slashes = RegExp('[\/]');
+final RegExp slashes = RegExp(r'[\/]');
bool hasPrivateName(Element e) {
if (e.name == null) return false;
diff --git a/lib/src/package_meta.dart b/lib/src/package_meta.dart
index 0bf497a..f085c6a 100644
--- a/lib/src/package_meta.dart
+++ b/lib/src/package_meta.dart
@@ -10,7 +10,8 @@
import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/file_system/file_system.dart';
import 'package:analyzer/file_system/physical_file_system.dart';
-import 'package:analyzer/src/generated/sdk.dart';
+// ignore: implementation_imports
+import 'package:analyzer/src/generated/sdk.dart' show DartSdk;
import 'package:dartdoc/src/dartdoc_options.dart';
import 'package:dartdoc/src/failure.dart';
import 'package:meta/meta.dart';
diff --git a/lib/src/render/element_type_renderer.dart b/lib/src/render/element_type_renderer.dart
index 3da78c6..cba7493 100644
--- a/lib/src/render/element_type_renderer.dart
+++ b/lib/src/render/element_type_renderer.dart
@@ -29,8 +29,9 @@
@override
String renderLinkedName(FunctionTypeElementType elementType) {
var buf = StringBuffer();
- buf.write('${elementType.returnType.linkedName} ');
- buf.write('${elementType.nameWithGenerics}');
+ buf.write(elementType.returnType.linkedName);
+ buf.write(' ');
+ buf.write(elementType.nameWithGenerics);
buf.write('<span class="signature">(');
buf.write(
ParameterRendererHtml().renderLinkedParams(elementType.parameters));
@@ -203,8 +204,9 @@
@override
String renderLinkedName(FunctionTypeElementType elementType) {
var buf = StringBuffer();
- buf.write('${elementType.returnType.linkedName} ');
- buf.write('${elementType.nameWithGenerics}');
+ buf.write(elementType.returnType.linkedName);
+ buf.write(' ');
+ buf.write(elementType.nameWithGenerics);
buf.write('(');
buf.write(ParameterRendererMd().renderLinkedParams(elementType.parameters));
buf.write(')');
diff --git a/lib/src/render/language_feature_renderer.dart b/lib/src/render/language_feature_renderer.dart
index 5117d71..ee31a73 100644
--- a/lib/src/render/language_feature_renderer.dart
+++ b/lib/src/render/language_feature_renderer.dart
@@ -56,8 +56,8 @@
String renderLanguageFeatureLabel(LanguageFeature feature) {
final featureUrl = feature.featureUrl;
if (featureUrl != null) {
- return '*[\<${feature.name}\>]($featureUrl)*';
+ return r'*[<' + feature.name + r'>](' + featureUrl + ')*';
}
- return '*\<${feature.name}\>*';
+ return r'*<' + feature.name + r'>*';
}
}
diff --git a/lib/src/render/parameter_renderer.dart b/lib/src/render/parameter_renderer.dart
index b1e551e..9e1d2ba 100644
--- a/lib/src/render/parameter_renderer.dart
+++ b/lib/src/render/parameter_renderer.dart
@@ -14,7 +14,7 @@
const ParameterRendererHtmlList();
@override
- String listItem(String listItem) => '<li>$listItem</li>\n';
+ String listItem(String item) => '<li>$item</li>\n';
@override
// TODO(jcollins-g): consider comma separated lists and more advanced css.
String orderedList(String listItems) =>
@@ -26,7 +26,7 @@
const ParameterRendererHtml();
@override
- String listItem(String listItem) => listItem;
+ String listItem(String item) => item;
@override
String orderedList(String listItems) => listItems;
@override
@@ -41,8 +41,8 @@
}
@override
- String parameter(String parameter, String htmlId) =>
- '<span class="parameter" id="$htmlId">$parameter</span>';
+ String parameter(String parameter, String id) =>
+ '<span class="parameter" id="$id">$parameter</span>';
@override
String parameterName(String parameterName) =>
'<span class="parameter-name">$parameterName</span>';
diff --git a/lib/src/special_elements.dart b/lib/src/special_elements.dart
index 73842d6..1a75f31 100644
--- a/lib/src/special_elements.dart
+++ b/lib/src/special_elements.dart
@@ -10,7 +10,8 @@
library dartdoc.special_elements;
import 'package:analyzer/dart/element/element.dart';
-import 'package:analyzer/src/generated/sdk.dart';
+// ignore: implementation_imports
+import 'package:analyzer/src/generated/sdk.dart' show DartSdk;
import 'package:dartdoc/src/model/model.dart';
/// Which of the [SpecialClasses] to get.
@@ -110,9 +111,10 @@
/// Throw an [AssertionError] if not all required specials are found.
void assertSpecials() {
- _specialClassDefinitions.values.forEach((_SpecialClassDefinition d) {
- if (d.required) assert(_specialClass.containsKey(d.specialClass));
- });
+ for (var classDefinition
+ in _specialClassDefinitions.values.where((d) => d.required)) {
+ assert(_specialClass.containsKey(classDefinition.specialClass));
+ }
}
Class operator [](SpecialClass specialClass) => _specialClass[specialClass];
diff --git a/lib/src/tool_definition.dart b/lib/src/tool_definition.dart
index 5be7571..564add0 100644
--- a/lib/src/tool_definition.dart
+++ b/lib/src/tool_definition.dart
@@ -249,7 +249,6 @@
if (snapshotCache != null && snapshotCache.exists) {
snapshotCache.delete();
}
- return null;
}
}
diff --git a/lib/src/tuple.dart b/lib/src/tuple.dart
index e4e1dfe..9f89ee2 100644
--- a/lib/src/tuple.dart
+++ b/lib/src/tuple.dart
@@ -22,8 +22,8 @@
String toString() => '[$item1, $item2]';
@override
- bool operator ==(Object o) =>
- o is Tuple2 && o.item1 == item1 && o.item2 == item2;
+ bool operator ==(Object other) =>
+ other is Tuple2 && other.item1 == item1 && other.item2 == item2;
@override
int get hashCode => quiver.hash2(item1.hashCode, item2.hashCode);
@@ -47,8 +47,11 @@
String toString() => '[$item1, $item2, $item3]';
@override
- bool operator ==(Object o) =>
- o is Tuple3 && o.item1 == item1 && o.item2 == item2 && o.item3 == item3;
+ bool operator ==(Object other) =>
+ other is Tuple3 &&
+ other.item1 == item1 &&
+ other.item2 == item2 &&
+ other.item3 == item3;
@override
int get hashCode =>
@@ -76,12 +79,12 @@
String toString() => '[$item1, $item2, $item3, $item4]';
@override
- bool operator ==(Object o) =>
- o is Tuple4 &&
- o.item1 == item1 &&
- o.item2 == item2 &&
- o.item3 == item3 &&
- o.item4 == item4;
+ bool operator ==(Object other) =>
+ other is Tuple4 &&
+ other.item1 == item1 &&
+ other.item2 == item2 &&
+ other.item3 == item3 &&
+ other.item4 == item4;
@override
int get hashCode => quiver.hash4(
diff --git a/lib/src/warnings.dart b/lib/src/warnings.dart
index e129b36..36d94fa 100644
--- a/lib/src/warnings.dart
+++ b/lib/src/warnings.dart
@@ -399,25 +399,25 @@
option.parent['ignoreWarningsInPackages'].valueAt(dir);
List<String> ignoreErrorsInPackages =
option.parent['ignoreErrorsInPackages'].valueAt(dir);
+ void ignoreWarning(PackageWarning kind) {
+ newOptions.ignore(kind);
+ }
+
if (allowWarningsInPackages != null &&
!allowWarningsInPackages.contains(packageMeta.name)) {
- PackageWarning.values
- .forEach((PackageWarning kind) => newOptions.ignore(kind));
+ PackageWarning.values.forEach(ignoreWarning);
}
if (allowErrorsInPackages != null &&
!allowErrorsInPackages.contains(packageMeta.name)) {
- PackageWarning.values
- .forEach((PackageWarning kind) => newOptions.ignore(kind));
+ PackageWarning.values.forEach(ignoreWarning);
}
if (ignoreWarningsInPackages != null &&
ignoreWarningsInPackages.contains(packageMeta.name)) {
- PackageWarning.values
- .forEach((PackageWarning kind) => newOptions.ignore(kind));
+ PackageWarning.values.forEach(ignoreWarning);
}
if (ignoreErrorsInPackages != null &&
ignoreErrorsInPackages.contains(packageMeta.name)) {
- PackageWarning.values
- .forEach((PackageWarning kind) => newOptions.ignore(kind));
+ PackageWarning.values.forEach(ignoreWarning);
}
return newOptions;
}
diff --git a/test/comment_referable/comment_referable_test.dart b/test/comment_referable/comment_referable_test.dart
index 17ce8bc..71dd7a3 100644
--- a/test/comment_referable/comment_referable_test.dart
+++ b/test/comment_referable/comment_referable_test.dart
@@ -17,7 +17,7 @@
ModelObjectBuilder get modelBuilder =>
throw UnimplementedError('not needed for this test');
- List<Base> children;
+ List<Base> get children;
Base parent;
@@ -99,10 +99,11 @@
final String name;
@override
final List<GenericChild> children;
+ final Top _parent;
@override
- final Top parent;
+ Top get parent => _parent;
- TopChild(this.name, this.children, this.parent);
+ TopChild(this.name, this.children, this._parent);
@override
Map<String, CommentReferable> get referenceChildren =>
@@ -117,10 +118,11 @@
final String name;
@override
final List<GenericChild> children;
+ final Base _parent;
@override
- final Base parent;
+ Base get parent => _parent;
- GenericChild(this.name, this.children, this.parent);
+ GenericChild(this.name, this.children, this._parent);
@override
Map<String, CommentReferable> get referenceChildren =>
diff --git a/test/end2end/dartdoc_integration_test.dart b/test/end2end/dartdoc_integration_test.dart
index fa4e39d..b4c106d 100644
--- a/test/end2end/dartdoc_integration_test.dart
+++ b/test/end2end/dartdoc_integration_test.dart
@@ -234,7 +234,7 @@
var outFile = File(path.join(tempDir.path, 'index.html'));
var footerRegex =
- RegExp('<footer>(.*\s*?\n?)+?</footer>', multiLine: true);
+ RegExp(r'<footer>(.*\s*?\n?)+?</footer>', multiLine: true);
// get footer, check for version number
var m = footerRegex.firstMatch(outFile.readAsStringSync());
var version = RegExp(r'(\d+\.)?(\d+\.)?(\*|\d+)');
diff --git a/test/end2end/dartdoc_test.dart b/test/end2end/dartdoc_test.dart
index f64eec2..27a4427 100644
--- a/test/end2end/dartdoc_test.dart
+++ b/test/end2end/dartdoc_test.dart
@@ -1,6 +1,7 @@
// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
+// ignore_for_file: non_constant_identifier_names
library dartdoc.dartdoc_test;
@@ -235,7 +236,7 @@
expect(
useSomethingInAnotherPackage.modelType.linkedName,
matches(
- '<a href=\"https://pub.dev/documentation/meta/[^\"]*/meta/Required-class.html\">Required</a>'));
+ r'<a href="https://pub.dev/documentation/meta/[^"]*/meta/Required-class.html">Required</a>'));
var stringLink = RegExp(
'https://api.dart.dev/(dev|stable|edge|be|beta)/${Platform.version.split(' ').first}/dart-core/String-class.html">String</a>');
expect(useSomethingInTheSdk.modelType.linkedName, contains(stringLink));
diff --git a/test/end2end/model_special_cases_test.dart b/test/end2end/model_special_cases_test.dart
index 58f9822..244c126 100644
--- a/test/end2end/model_special_cases_test.dart
+++ b/test/end2end/model_special_cases_test.dart
@@ -1,6 +1,7 @@
// Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
+// ignore_for_file: non_constant_identifier_names
/// This test library handles checks against the model for configurations
/// that require different PackageGraph configurations. Since those
@@ -299,8 +300,9 @@
.firstWhere((m) => m.name == 'injectSimpleHtml');
injectHtmlFromTool = htmlInjection.instanceMethods
.firstWhere((m) => m.name == 'injectHtmlFromTool');
- injectionPackageGraph.allLocalModelElements
- .forEach((m) => m.documentation);
+ for (var modelElement in injectionPackageGraph.allLocalModelElements) {
+ modelElement.documentation;
+ }
});
test('can inject HTML', () {
diff --git a/test/end2end/model_test.dart b/test/end2end/model_test.dart
index 871cba9..4e9cac2 100644
--- a/test/end2end/model_test.dart
+++ b/test/end2end/model_test.dart
@@ -2,6 +2,8 @@
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
+// ignore_for_file: non_constant_identifier_names
+
library dartdoc.model_test;
import 'dart:io';
@@ -457,7 +459,7 @@
expect(
complexNullableMembers.nameWithGenerics,
equals(
- 'ComplexNullableMembers<<wbr><span class=\"type-parameter\">T extends String?</span>>'));
+ 'ComplexNullableMembers<<wbr><span class="type-parameter">T extends String?</span>>'));
expect(
aComplexType.modelType.linkedName,
equals(
@@ -483,7 +485,7 @@
expect(
nullableField.modelType.linkedName,
equals(
- 'Iterable<span class=\"signature\"><<wbr><span class=\"type-parameter\">BigInt</span>></span>?'));
+ 'Iterable<span class="signature"><<wbr><span class="type-parameter">BigInt</span>></span>?'));
expect(
methodWithNullables.linkedParams,
equals(
@@ -622,7 +624,9 @@
.firstWhere((m) => m.name == 'invokeToolParentDoc');
invokeToolParentDocOriginal = ImplementingClassForTool.instanceMethods
.firstWhere((m) => m.name == 'invokeToolParentDoc');
- packageGraph.allLocalModelElements.forEach((m) => m.documentation);
+ for (var modelElement in packageGraph.allLocalModelElements) {
+ modelElement.documentation;
+ }
});
test(
@@ -4173,7 +4177,6 @@
expect(location.columnNumber, greaterThanOrEqualTo(0));
}
- ;
var simpleProperty =
fakeLibrary.properties.firstWhere((p) => p.name == 'simpleProperty');
expectValidLocation(simpleProperty.getter.characterLocation);
@@ -4265,12 +4268,11 @@
test(
'Verify that combos with a generic typedef modelType can render correctly',
() {
- // TODO(jcollins-g): After analyzer 2.0.0, this can be `isEmpty`.
- expect(genericTypedefCombo.modelType.typeArguments, isNotNull);
+ expect(genericTypedefCombo.modelType.typeArguments, isEmpty);
expect(
genericTypedefCombo.modelType.linkedName,
equals(
- '<a href=\"%%__HTMLBASE_dartdoc_internal__%%fake/NewGenericTypedef.html\">NewGenericTypedef</a>'));
+ '<a href="%%__HTMLBASE_dartdoc_internal__%%fake/NewGenericTypedef.html">NewGenericTypedef</a>'));
});
test('Verify that final and late show up (or not) appropriately', () {
@@ -5105,8 +5107,8 @@
test('Traditional accessors are not terminated with semicolon', () {
expect(implicitGetterExplicitSetter.setter.sourceCode.trim(),
- endsWith('\{\}'));
- expect(explicitGetterSetter.setter.sourceCode.trim(), endsWith('\{\}'));
+ endsWith('{}'));
+ expect(explicitGetterSetter.setter.sourceCode.trim(), endsWith('{}'));
});
test('Whole declaration is visible when declaration spans many lines', () {
diff --git a/test/html_generator_test.dart b/test/html_generator_test.dart
index 2c1d3ac..00c16d3 100644
--- a/test/html_generator_test.dart
+++ b/test/html_generator_test.dart
@@ -125,7 +125,7 @@
.getFolder(pathContext.join(outputPath, 'static-assets'));
expect(output, doesExist);
- for (var resource in resource_names.map((r) =>
+ for (var resource in resourceNames.map((r) =>
pathContext.relative(Uri.parse(r).path, from: 'dartdoc/resources'))) {
expect(resourceProvider.getFile(pathContext.join(output.path, resource)),
doesExist);
diff --git a/test/mustachio/foo.aot_renderers_for_html.dart b/test/mustachio/foo.aot_renderers_for_html.dart
index d754023..2aadd5e 100644
--- a/test/mustachio/foo.aot_renderers_for_html.dart
+++ b/test/mustachio/foo.aot_renderers_for_html.dart
@@ -7,6 +7,7 @@
// the variable is not used; generally when the section is checking if a
// non-bool, non-Iterable field is non-null.
// ignore_for_file: unused_local_variable
+// ignore_for_file: non_constant_identifier_names, unnecessary_string_escapes
import 'dart:convert' as _i2;
diff --git a/test/mustachio/foo.aot_renderers_for_md.dart b/test/mustachio/foo.aot_renderers_for_md.dart
index e2e7c00..97e4807 100644
--- a/test/mustachio/foo.aot_renderers_for_md.dart
+++ b/test/mustachio/foo.aot_renderers_for_md.dart
@@ -7,6 +7,7 @@
// the variable is not used; generally when the section is checking if a
// non-bool, non-Iterable field is non-null.
// ignore_for_file: unused_local_variable
+// ignore_for_file: non_constant_identifier_names, unnecessary_string_escapes
import 'dart:convert' as _i2;
diff --git a/test/mustachio/foo.dart b/test/mustachio/foo.dart
index 08d0461..5f4a03a 100644
--- a/test/mustachio/foo.dart
+++ b/test/mustachio/foo.dart
@@ -15,6 +15,7 @@
bool b1;
List<int> l1;
@override
+ // ignore: overridden_fields
Baz baz;
Property1 p1;
int length;
diff --git a/test/mustachio/foo.runtime_renderers.dart b/test/mustachio/foo.runtime_renderers.dart
index 6dcfdc9..d2f4a71 100644
--- a/test/mustachio/foo.runtime_renderers.dart
+++ b/test/mustachio/foo.runtime_renderers.dart
@@ -4,6 +4,7 @@
// files in the tool/mustachio/ directory.
// ignore_for_file: camel_case_types, deprecated_member_use_from_same_package
+// ignore_for_file: non_constant_identifier_names, unnecessary_string_escapes
// ignore_for_file: unused_import
import 'package:dartdoc/src/element_type.dart';
import 'package:dartdoc/src/generator/template_data.dart';
diff --git a/test/source_linker_test.dart b/test/source_linker_test.dart
index 7c68a8d..3ec9665 100644
--- a/test/source_linker_test.dart
+++ b/test/source_linker_test.dart
@@ -11,7 +11,7 @@
void main() {
group('Source link computations', () {
test('Basic usage', () {
- var sourceLinkerHref = () => SourceLinker(
+ String sourceLinkerHref() => SourceLinker(
excludes: [],
lineNumber: 14,
root: 'path',
@@ -24,7 +24,7 @@
});
test('Throw when missing a revision if one is in the template', () {
- var sourceLinkerHref = () => SourceLinker(
+ String sourceLinkerHref() => SourceLinker(
excludes: [],
lineNumber: 20,
root: 'path',
@@ -35,7 +35,7 @@
});
test('Allow a missing revision as long as it is not in the template', () {
- var sourceLinkerHref = () => SourceLinker(
+ String sourceLinkerHref() => SourceLinker(
excludes: [],
lineNumber: 71,
root: 'path',
@@ -47,7 +47,7 @@
});
test('Throw if only revision specified', () {
- var sourceLinkerHref = () => SourceLinker(
+ String sourceLinkerHref() => SourceLinker(
excludes: [],
lineNumber: 20,
revision: '12345',
@@ -56,7 +56,7 @@
});
test('Hide a path inside an exclude', () {
- var sourceLinkerHref = () => SourceLinker(
+ String sourceLinkerHref() => SourceLinker(
excludes: ['path/under/exclusion'],
lineNumber: 14,
root: 'path',
@@ -68,7 +68,7 @@
});
test('Check that paths outside exclusions work', () {
- var sourceLinkerHref = () => SourceLinker(
+ String sourceLinkerHref() => SourceLinker(
excludes: ['path/under/exclusion'],
lineNumber: 14,
root: 'path',
diff --git a/tool/builder.dart b/tool/builder.dart
index d77d109..c9d1aad 100644
--- a/tool/builder.dart
+++ b/tool/builder.dart
@@ -9,9 +9,9 @@
import 'package:path/path.dart' as path;
String _resourcesFile(Iterable<String> packagePaths) => '''
-// WARNING: This file is auto-generated. Do not taunt.
+// WARNING: This file is auto-generated. Do not edit.
-const List<String> resource_names = [
+const List<String> resourceNames = [
${packagePaths.map((p) => " '$p'").join(',\n')}
];
''';
diff --git a/tool/grind.dart b/tool/grind.dart
index bb0bce9..7b0d062 100644
--- a/tool/grind.dart
+++ b/tool/grind.dart
@@ -305,7 +305,7 @@
if (filesToFix.isNotEmpty) {
fail(
'dart format found files needing reformatting. Use this command to reformat:\n'
- 'dart format ${filesToFix.map((f) => "\'$f\'").join(' ')}');
+ 'dart format ${filesToFix.map((f) => "'$f'").join(' ')}');
}
} else {
log('Skipping dartfmt check, requires latest dev version of SDK');
@@ -320,11 +320,11 @@
tryPublish,
smokeTest,
)
-void presubmit() => null;
+void presubmit() {}
@Task('Run long tests, self-test dartdoc, and run the publish test')
@Depends(presubmit, longTest, testDartdoc)
-void buildbot() => null;
+void buildbot() {}
@Task('Generate docs for the Dart SDK')
Future<void> buildSdkDocs() async {
@@ -397,12 +397,16 @@
if (onlyOriginal.isNotEmpty) {
printBuffer.writeln(
'*** $title : ${onlyOriginal.length} warnings from $branch, missing in ${current.branch}:');
- onlyOriginal.forEach((key) => printBuffer.writeln(_fromKey(key)));
+ for (var key in onlyOriginal) {
+ printBuffer.writeln(_fromKey(key));
+ }
}
if (onlyCurrent.isNotEmpty) {
printBuffer.writeln(
'*** $title : ${onlyCurrent.length} new warnings in ${current.branch}, missing in $branch');
- onlyCurrent.forEach((key) => printBuffer.writeln(current._fromKey(key)));
+ for (var key in onlyCurrent) {
+ printBuffer.writeln(current._fromKey(key));
+ }
}
if (quantityChangedOuts.isNotEmpty) {
printBuffer.writeln('*** $title : Identical warning quantity changed');
@@ -557,7 +561,7 @@
'--enable-asserts',
path.join('bin', 'dartdoc.dart'),
'--output',
- '$sdkDocsPath',
+ sdkDocsPath,
'--sdk-docs',
'--json',
'--show-progress',
@@ -654,7 +658,7 @@
'--port',
'8002',
'--path',
- '${testPackageDocsDir.absolute.path}',
+ testPackageDocsDir.absolute.path,
]);
}
@@ -684,7 +688,7 @@
'--port',
'8000',
'--path',
- '${sdkDocsDir.path}',
+ sdkDocsDir.path,
]);
}
@@ -831,7 +835,7 @@
'--link-to-remote',
'--show-progress',
'--enable-experiment',
- '${languageExperiments.join(",")}',
+ languageExperiments.join(","),
...extraDartdocParameters,
],
workingDirectory: languageTestPackageDir.absolute.path);
@@ -1138,7 +1142,9 @@
@Task('Clean up pub data from test directories')
Future<void> clean() async {
var toDelete = nonRootPubData;
- toDelete.forEach((e) => e.deleteSync(recursive: true));
+ for (var e in toDelete) {
+ e.deleteSync(recursive: true);
+ }
}
Iterable<FileSystemEntity> get nonRootPubData {
diff --git a/tool/mustachio/codegen_aot_compiler.dart b/tool/mustachio/codegen_aot_compiler.dart
index 2bd4b84..6528a5a 100644
--- a/tool/mustachio/codegen_aot_compiler.dart
+++ b/tool/mustachio/codegen_aot_compiler.dart
@@ -67,6 +67,7 @@
// the variable is not used; generally when the section is checking if a
// non-bool, non-Iterable field is non-null.
// ignore_for_file: unused_local_variable
+// ignore_for_file: non_constant_identifier_names, unnecessary_string_escapes
${library.accept(DartEmitter.scoped(orderDirectives: true))}
''');
diff --git a/tool/mustachio/codegen_runtime_renderer.dart b/tool/mustachio/codegen_runtime_renderer.dart
index 445bdd8..fde38c1 100644
--- a/tool/mustachio/codegen_runtime_renderer.dart
+++ b/tool/mustachio/codegen_runtime_renderer.dart
@@ -80,6 +80,7 @@
// files in the tool/mustachio/ directory.
// ignore_for_file: camel_case_types, deprecated_member_use_from_same_package
+// ignore_for_file: non_constant_identifier_names, unnecessary_string_escapes
// ignore_for_file: unused_import
import 'package:dartdoc/src/element_type.dart';
import 'package:dartdoc/src/generator/template_data.dart';
diff --git a/tool/subprocess_launcher.dart b/tool/subprocess_launcher.dart
index 3385f9d..177e07d 100644
--- a/tool/subprocess_launcher.dart
+++ b/tool/subprocess_launcher.dart
@@ -220,7 +220,7 @@
}).join(' '));
stderr.write(' ');
}
- stderr.write('$executable');
+ stderr.write(executable);
if (arguments.isNotEmpty) {
for (var arg in arguments) {
if (arg.contains(_quotables)) {