diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 2c74f54f01..29a802f9ee 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -82,8 +82,8 @@ jobs:
- name: Check internal site links are functional
run: dart run dart_site check-links
- firebase-check:
- name: Check firebase declaration
+ firebase-validate:
+ name: Validate Firebase configuration
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11
diff --git a/firebase.json b/firebase.json
index 37ddac11be..2f412c10d4 100644
--- a/firebase.json
+++ b/firebase.json
@@ -95,7 +95,7 @@
{ "source": "/dart-vm", "destination": "/server", "type": 301 },
{ "source": "/dart-vm/:page*", "destination": "/server/:page*", "type": 301 },
{ "source": "/dart2js-reflection", "destination": "https://github.com/dart-lang/sdk/issues/21654", "type": 301 },
- { "source": "/dartium{,/**}", "destination": "/tools#ides-and-editors", "type": 301 },
+ { "source": "/dartium{,/**}", "destination": "/tools#editors", "type": 301 },
{ "source": "/devices", "destination": "/overview#platform", "type": 301 },
{ "source": "/dev{,/**}", "destination": "https://api.dart.dev/dev", "type": 301 },
{ "source": "/diagnostics", "destination": "/tools/diagnostic-messages", "type": 301 },
@@ -106,7 +106,7 @@
{ "source": "/docs/dart-up-and-running/**/ch03?(.html)", "destination": "/libraries", "type": 301 },
{ "source": "/docs/dart-up-and-running/contents/ch04-tools-dart2js?(.html)", "destination": "/tools/dart-compile#js", "type": 301 },
{ "source": "/docs/dart-up-and-running/contents/ch04-tools-dart_analyzer?(.html)", "destination": "/tools/dart-analyze", "type": 301 },
- { "source": "/docs/dart-up-and-running/contents/ch04-tools-dartium?(.html)", "destination": "/tools#ides-and-editors", "type": 301 },
+ { "source": "/docs/dart-up-and-running/contents/ch04-tools-dartium?(.html)", "destination": "/tools#editors", "type": 301 },
{ "source": "/docs/dart-up-and-running{,/**}", "destination": "/resources/books", "type": 301 },
{ "source": "/docs/editor", "destination": "/tools", "type": 301 },
{ "source": "/docs/editor/getting-started?(.html)", "destination": "/overview", "type": 301 },
@@ -134,8 +134,8 @@
{ "source": "/docs/tutorials{,/**}", "destination": "/tutorials", "type": 301 },
{ "source": "/docs{,/**}", "destination": "/guides", "type": 301 },
{ "source": "/downloads{,.html,/**}", "destination": "/get-dart", "type": 301 },
- { "source": "/eclipse{,/**}", "destination": "/tools#ides-and-editors", "type": 301 },
- { "source": "/editor{,/**}", "destination": "/tools#ides-and-editors", "type": 301 },
+ { "source": "/eclipse{,/**}", "destination": "/tools#editors", "type": 301 },
+ { "source": "/editor{,/**}", "destination": "/tools#editors", "type": 301 },
{ "source": "/events/2015{,/**}", "destination": "https://www.youtube.com/watch?list=PLOU2XLYxmsIIQorIS8gagUiMau9S84vZV&v=FiXiI2Atexc", "type": 301 },
{ "source": "/events/2016{,/**}", "destination": "https://events.dartlang.org/2016/summit", "type": 301 },
{ "source": "/events{,/**}", "destination": "https://events.dartlang.org", "type": 301 },
@@ -264,13 +264,13 @@
{ "source": "/tools/dartdocgen{,/**}", "destination": "/tools/dart-doc", "type": 301 },
{ "source": "/tools/dartfix", "destination": "/tools/dart-fix", "type": 301 },
{ "source": "/tools/dartfmt", "destination": "/tools/dart-format", "type": 301 },
- { "source": "/tools/dartium?(.html)", "destination": "/tools#ides-and-editors", "type": 301 },
+ { "source": "/tools/dartium?(.html)", "destination": "/tools#editors", "type": 301 },
{ "source": "/tools/dartpad/dartpad-best-practices", "destination": "https://doi.org/10.1145/3397537.3397558", "type": 301 },
{ "source": "/tools/debian?(.html)", "destination": "/get-dart", "type": 301 },
{ "source": "/tools/docgen{,/**}", "destination": "/tools/dart-doc", "type": 301 },
{ "source": "/tools/download-archive{,/**}", "destination": "/get-dart/archive", "type": 301 },
{ "source": "/tools/download-editor?(.html)", "destination": "/tools", "type": 301 },
- { "source": "/tools/eclipse-plugin", "destination": "/tools#ides-and-editors", "type": 301 },
+ { "source": "/tools/eclipse-plugin", "destination": "/tools#editors", "type": 301 },
{ "source": "/tools/editor{,/**}", "destination": "/tools", "type": 301 },
{ "source": "/tools/faq?(.html)", "destination": "/resources/faq", "type": 301 },
{ "source": "/tools/observatory{,/**}", "destination": "/tools/dart-devtools", "type": 301 },
@@ -286,7 +286,7 @@
{ "source": "/tools/pub/installing?(.html)", "destination": "/tools/pub/environment-variables", "type": 301 },
{ "source": "/tools/pub/transformers{,/**}", "destination": "https://github.com/dart-lang/build", "type": 301 },
{ "source": "/tools/sdk/archive?(.html|.)", "destination": "/get-dart/archive", "type": 301 },
- { "source": "/tools/webstorm?(.html)", "destination": "/tools#ides-and-editors", "type": 301 },
+ { "source": "/tools/webstorm?(.html)", "destination": "/tools#editors", "type": 301 },
{ "source": "/tos@(|.htm|.html)", "destination": "/terms", "type": 301 },
{ "source": "/tutorials/dart-vm", "destination": "/tutorials/server", "type": 301 },
{ "source": "/tutorials/dart-vm/:page*", "destination": "/tutorials/server/:page*", "type": 301 },
diff --git a/src/codelabs/null-safety.md b/src/codelabs/null-safety.md
index f7532c3b61..cb2965973b 100644
--- a/src/codelabs/null-safety.md
+++ b/src/codelabs/null-safety.md
@@ -142,7 +142,7 @@ You can also use null-aware operators to handle nullable values.
Sometimes the flow of the program tells you that the value of an
expression cannot be `null`.
To force Dart to treat that expression as non-nullable,
-add the [non-null assertion operator](#the-non-null-assertion-operator-) (`!`).
+add the [non-null assertion operator](#the-non-null-assertion-operator) (`!`).
If the value does equal `null`, using this operator throws an exception.
To handle potential `null` values, use the conditional property access
diff --git a/src/guides/whats-new.md b/src/guides/whats-new.md
index ed000b8e9d..bd9f1d922e 100644
--- a/src/guides/whats-new.md
+++ b/src/guides/whats-new.md
@@ -63,7 +63,7 @@ we made the following changes to this site:
[Breaking changes]: /resources/breaking-changes
[lints]: /tools/linter-rules
[diagnostics]: /tools/diagnostic-messages
-[`pub upgrade`]: /tools/pub/cmd/pub-upgrade#--tighten
+[`pub upgrade`]: /tools/pub/cmd/pub-upgrade#tighten
[Language overview]: /language
[guard clauses and patterns]: /language/patterns#switch-statements-and-expressions
[Constructors]: /language/constructors
@@ -382,7 +382,7 @@ we made the following changes to this site:
[Debugging Dart web apps]: /web/debugging
[Dart SDK archive]: /get-dart/archive
[Library tour]: /libraries/dart-core#weak-references-and-finalizers
-[`dart fix`]: /tools/dart-fix#customizing-dart-fix
+[`dart fix`]: /tools/dart-fix#customize
## May 11, 2022: 2.17 release
@@ -881,7 +881,7 @@ we made the following changes to this site:
[Understanding null safety]: /null-safety/understanding-null-safety
[sound null safety]: /null-safety
[diagnostics]: /tools/diagnostic-messages
-[changelog-docs]: /tools/pub/package-layout#changelogmd
+[changelog-docs]: /tools/pub/package-layout#changelog
[spec]: /guides/language/spec
### Articles added to the Dart blog {:.no_toc}
diff --git a/src/language/isolates.md b/src/language/isolates.md
index 6246d64cf6..f85fb9569a 100644
--- a/src/language/isolates.md
+++ b/src/language/isolates.md
@@ -725,7 +725,7 @@ class Worker {
Next, add the code to `_startRemoteIsolate` that is responsible for initializing
the ports on the worker
-isolate. [Recall](#step-3-spawn-a-worker-isolate-with-isolatespawn) that this
+isolate. [Recall](#step-3-spawn-a-worker-isolate-with-isolate-spawn) that this
method was passed to `Isolate.spawn` in the `Worker.spawn` method, and it will
be passed the main isolate’s `SendPort` as an argument.
diff --git a/src/resources/breaking-changes.md b/src/resources/breaking-changes.md
index 5e785f25bb..0aecdc7483 100644
--- a/src/resources/breaking-changes.md
+++ b/src/resources/breaking-changes.md
@@ -272,7 +272,7 @@ on all the changes in this section.
[mixin class]: https://dart.dev/language/mixins#class-mixin-or-mixin-class
[label]: https://dart.dev/language/branches#switch
[50902]: https://github.com/dart-lang/sdk/issues/50902
-[collection]: /resources/dart-3-migration#dartcollection
+[collection]: /resources/dart-3-migration#dart-collection
[49529]: https://github.com/dart-lang/sdk/issues/49529
[`DeferredLibrary`]: https://api.dart.dev/stable/2.18.4/dart-async/DeferredLibrary-class.html
[`deferred as`]: https://dart.dev/guides/language/language-tour#deferred-loading
diff --git a/src/tools/dart-fix.md b/src/tools/dart-fix.md
index 28be9ff2cf..45e17958e1 100644
--- a/src/tools/dart-fix.md
+++ b/src/tools/dart-fix.md
@@ -1,7 +1,6 @@
---
title: dart fix
description: Command-line tool for applying analysis fixes and migrating API usages.
-toc: false
---
The `dart fix` command
@@ -28,7 +27,8 @@ check out this [deep dive][] on **Decoding Flutter**:
[deep dive]: {{yt.watch}}/OBIuSrg_Quo
-## Usage
+
+## Apply fixes
To preview proposed changes, use the `--dry-run` flag:
@@ -42,7 +42,8 @@ To apply the proposed changes, use the `--apply` flag:
$ dart fix --apply
```
-## Customization
+
+## Customize behavior {:#customize}
The `dart fix` command only applies fixes
when there is a "problem" identified by a diagnostic.
@@ -120,7 +121,7 @@ see [Customizing static analysis](/tools/analysis).
[`dart analyze`]: /tools/dart-analyze
[language version]: /guides/language/evolution#language-versioning
-## VS Code
+## VS Code support
When you open a project in VS Code,
the Dart plugin scans the project for issues that `dart fix` can repair.
diff --git a/src/tools/index.md b/src/tools/index.md
index 53e1e610ce..6ee3a571c4 100644
--- a/src/tools/index.md
+++ b/src/tools/index.md
@@ -43,6 +43,7 @@ It supports Dart's core libraries,
except for VM libraries such as `dart:io`.
+
### IDEs and editors {:#editors}
Dart plugins exist for these commonly used IDEs.
diff --git a/src/tools/pub/package-layout.md b/src/tools/pub/package-layout.md
index fee5df1618..ec6b1b376e 100644
--- a/src/tools/pub/package-layout.md
+++ b/src/tools/pub/package-layout.md
@@ -122,7 +122,8 @@ This is the perfect place to introduce people to your code.
For guidance on how to write a great README, see
[Writing package pages](/guides/libraries/writing-package-pages).
-## CHANGELOG.md
+
+## CHANGELOG.md {:#changelog}
```plaintext
enchilada/
diff --git a/src/tutorials/server/get-started.md b/src/tutorials/server/get-started.md
index 1c39665162..21573a9a4c 100644
--- a/src/tutorials/server/get-started.md
+++ b/src/tutorials/server/get-started.md
@@ -152,7 +152,7 @@ Check out these resources:
* Tools and libraries
* [Dart SDK](/tools/sdk)
* [Dart tools](/tools)
- * [IDEs](/tools#ides-and-editors)
+ * [IDEs](/tools#editors)
* Other examples of natively compiled apps
* [native_app](https://github.com/dart-lang/samples/tree/main/native_app)
@@ -162,5 +162,5 @@ If you get stuck, find help at [Community and support.](/community)
[DartPad documentation]: /tools/dartpad
[Dart language tour]: /language
[Dart core library documentation]: /libraries
-[ide]: /tools#ides-and-editors
+[ide]: /tools#editors
diff --git a/src/web/get-started.md b/src/web/get-started.md
index 315237b8b4..ddcda97f1a 100644
--- a/src/web/get-started.md
+++ b/src/web/get-started.md
@@ -29,7 +29,7 @@ Although using an IDE is optional, we highly recommend using one.
For a list of available IDEs, see the
[overview of editors & debuggers][].
-[overview of editors & debuggers]: /tools#ides-and-editors
+[overview of editors & debuggers]: /tools#editors
## 3. Create a web app {:#create}