diff --git a/eleventy.config.ts b/eleventy.config.ts
index 9f0430dd67..ee9f7a6ef1 100644
--- a/eleventy.config.ts
+++ b/eleventy.config.ts
@@ -79,7 +79,7 @@ export default function (eleventyConfig: UserConfig) {
filter: /^(?!_).+/,
});
eleventyConfig.addPassthroughCopy(
- 'src/content/guides/language/specifications',
+ 'src/content/resources/language/spec/versions',
);
if (shouldOptimize) {
diff --git a/firebase.json b/firebase.json
index 65c457ffb3..3f14cfff74 100644
--- a/firebase.json
+++ b/firebase.json
@@ -36,7 +36,7 @@
{ "source": "/+isolates", "destination": "/language/concurrency", "type": 301 },
{ "source": "/+lexicalscope", "destination": "/language/functions#lexical-scope", "type": 301 },
{ "source": "/+pub", "destination": "/tools/pub", "type": 301 },
- { "source": "/2.0", "destination": "/guides/language/evolution#dart-20", "type": 301 },
+ { "source": "/2.0", "destination": "/resources/language/evolution#dart-2-0", "type": 301 },
{ "source": "/\\)", "destination": "/", "type": 301 },
{ "source": "/angular{,/**}", "destination": "https://github.com/angulardart", "type": 301 },
{ "source": "/api", "destination": "https://api.dart.dev", "type": 301 },
@@ -44,9 +44,9 @@
{ "source": "/articles/api-naming-guide{,/**}", "destination": "/effective-dart/design", "type": 301 },
{ "source": "/articles/archive", "destination": "https://medium.com/dartlang", "type": 301 },
{ "source": "/articles/archive/converters-and-codecs", "destination": "/libraries/convert/converters-and-codecs", "type": 301 },
- { "source": "/articles/archive/dart-2", "destination": "/guides/language/evolution#dart-20", "type": 301 },
+ { "source": "/articles/archive/dart-2", "destination": "/resources/language/evolution#dart-2-0", "type": 301 },
{ "source": "/articles/archive/event-loop", "destination": "https://medium.com/dartlang/dart-asynchronous-programming-isolates-and-event-loops-bffc3e296a6a", "type": 301 },
- { "source": "/articles/archive/numeric-computation", "destination": "/guides/language/numbers", "type": 301 },
+ { "source": "/articles/archive/numeric-computation", "destination": "/resources/language/number-representation", "type": 301 },
{ "source": "/articles/archive/zones", "destination": "/libraries/async/zones", "type": 301 },
{ "source": "/articles/await-async", "destination": "/libraries/async/async-await", "type": 301 },
{ "source": "/articles/broadcast-streams", "destination": "https://medium.com/dartlang/dart-asynchronous-programming-streams-dab952023ed7", "type": 301 },
@@ -55,7 +55,7 @@
{ "source": "/articles/dart-unit-tests{,/**}", "destination": "https://pub.dev/packages/test#writing-tests", "type": 301 },
{ "source": "/articles/dart-vm/io", "destination": "/articles/libraries/dart-io", "type": 301 },
{ "source": "/articles/dart-vm/native-extensions", "destination": "/server/c-interop-native-extensions", "type": 301 },
- { "source": "/articles/dart-vm/numeric-computation", "destination": "/guides/language/numbers", "type": 301 },
+ { "source": "/articles/dart-vm/numeric-computation", "destination": "/resources/language/number-representation", "type": 301 },
{ "source": "/articles/dart-vm/snapshots", "destination": "/tools/dart-compile", "type": 301 },
{ "source": "/articles/design-decisions/why-dart-types", "destination": "/resources/faq#types", "type": 301 },
{ "source": "/articles/doc-comment-guidelines", "destination": "/effective-dart/documentation", "type": 301 },
@@ -76,11 +76,11 @@
{ "source": "/articles/libraries/dart-io", "destination": "/libraries/dart-io", "type": 301 },
{ "source": "/articles/libraries/zones", "destination": "/libraries/async/zones", "type": 301 },
{ "source": "/articles/libraries*{,/**}", "destination": "/libraries", "type": 301 },
- { "source": "/articles/m*{,/**}", "destination": "/guides/language/evolution", "type": 301 },
+ { "source": "/articles/m*{,/**}", "destination": "/resources/language/evolution", "type": 301 },
{ "source": "/articles/mixins", "destination": "/language/mixins", "type": 301 },
{ "source": "/articles/mocking-with-dart", "destination": "https://pub.dev/packages/mockito", "type": 301 },
{ "source": "/articles/native-extensions-for-standalone-dart-vm", "destination": "/server/c-interop-native-extensions", "type": 301 },
- { "source": "/articles/numeric-computation", "destination": "/guides/language/numbers", "type": 301 },
+ { "source": "/articles/numeric-computation", "destination": "/resources/language/number-representation", "type": 301 },
{ "source": "/articles/optional-types", "destination": "/resources/faq#types", "type": 301 },
{ "source": "/articles/serialization", "destination": "/guides/json", "type": 301 },
{ "source": "/articles/server/native-extensions", "destination": "/server/c-interop-native-extensions", "type": 301 },
@@ -107,8 +107,8 @@
{ "source": "/code-of-conduct", "destination": "/community/code-of-conduct", "type": 301 },
{ "source": "/concurrency", "destination": "/language/concurrency", "type": 301 },
{ "source": "/dart", "destination": "/overview", "type": 301 },
- { "source": "/dart-2", "destination": "/guides/language/evolution#dart-20", "type": 301 },
- { "source": "/dart-2.0", "destination": "/guides/language/evolution#dart-20", "type": 301 },
+ { "source": "/dart-2", "destination": "/resources/language/evolution#dart-2-0", "type": 301 },
+ { "source": "/dart-2.0", "destination": "/resources/language/evolution#dart-2-0", "type": 301 },
{ "source": "/dart-3", "destination": "/resources/dart-3-migration", "type": 301 },
{ "source": "/dart-by-example", "destination": "/samples", "type": 301 },
{ "source": "/dart-team-packages", "destination": "/resources/dart-team-packages", "type": 301 },
@@ -139,7 +139,7 @@
{ "source": "/docs/serverguide", "destination": "/server", "type": 301 },
{ "source": "/docs/spec/EnumsTC52draft.pdf", "destination": "/language/enum", "type": 301 },
{ "source": "/docs/spec/deferred-loading", "destination": "/language/libraries#lazily-loading-a-library", "type": 301 },
- { "source": "/docs/spec{,/**}", "destination": "/guides/language/spec", "type": 301 },
+ { "source": "/docs/spec{,/**}", "destination": "/resources/language/spec", "type": 301 },
{ "source": "/docs/technical-overview{,/**}", "destination": "/overview", "type": 301 },
{ "source": "/docs/tutorials/add-elements", "destination": "/library/dart-html", "type": 301 },
{ "source": "/docs/tutorials/cmdline", "destination": "/tutorials/server/cmdline", "type": 301 },
@@ -222,12 +222,16 @@
{ "source": "/guides/language/effective-dart", "destination": "/effective-dart", "type": 301 },
{ "source": "/guides/language/effective-dart/:page*", "destination": "/effective-dart/:page*", "type": 301 },
{ "source": "/guides/language/extension-methods", "destination": "/language/extension-methods", "type": 301 },
+ { "source": "/guides/language/evolution", "destination": "/resources/language/evolution", "type": 301 },
{ "source": "/guides/language/formatting", "destination": "/tools/dart-format", "type": 301 },
{ "source": "/guides/language/language-tour", "destination": "/deprecated/language-tour", "type": 301 },
{ "source": "/guides/language/library-tour", "destination": "/libraries", "type": 301 },
+ { "source": "/guides/language/numbers", "destination": "/resources/language/number-representation", "type": 301 },
{ "source": "/guides/language/sound-dart", "destination": "/language/type-system", "type": 301 },
{ "source": "/guides/language/sound-faq", "destination": "/language/type-system", "type": 301 },
- { "source": "/guides/language/specifications/DartLangSpec-v2.2.pdf", "destination": "https://github.com/dart-lang/site-www/blob/a7f170389e210adc2aef810cc9a6fdbfa78059a5/src/guides/language/specifications/DartLangSpec-v2.2.pdf", "type": 301 },
+ { "source": "/guides/language/spec", "destination": "/resources/language/spec", "type": 301 },
+ { "source": "/guides/language/specifications", "destination": "/resources/language/spec", "type": 301 },
+ { "source": "/guides/language/specifications/:page*", "destination": "/resources/language/spec/versions/:page*", "type": 301 },
{ "source": "/guides/language/type-system", "destination": "/language/type-system", "type": 301 },
{ "source": "/guides/libraries", "destination": "/libraries", "type": 301 },
{ "source": "/guides/libraries/create-library-packages", "destination": "/tools/pub/create-packages", "type": 301 },
@@ -347,6 +351,9 @@
{ "source": "/resources/dart-tips*{,/**}", "destination": "/effective-dart", "type": 301 },
{ "source": "/resources/dartpad-best-practices", "destination": "https://doi.org/10.1145/3397537.3397558", "type": 301 },
{ "source": "/resources/dartpad-tutorials.pdf", "destination": "https://doi.org/10.1145/3397537.3397558", "type": 301 },
+ { "source": "/resources/language/spec/versions", "destination": "/resources/language/spec", "type": 301 },
+ { "source": "/resources/language/spec/versions/DartLangSpecDraft.pdf", "destination": "https://spec.dart.dev/DartLangSpecDraft.pdf", "type": 301 },
+ { "source": "/resources/language/spec/versions/DartLangSpec-v2.2.pdf", "destination": "https://github.com/dart-lang/site-www/blob/a7f170389e210adc2aef810cc9a6fdbfa78059a5/src/guides/language/specifications/DartLangSpec-v2.2.pdf", "type": 301 },
{ "source": "/samples", "destination": "/language", "type": 301 },
{ "source": "/samples/spirodraw{,/**}", "destination": "/language", "type": 301 },
{ "source": "/samples/todomvc{,/**}", "destination": "/language", "type": 301 },
diff --git a/src/_data/linter_rules.json b/src/_data/linter_rules.json
index 1477e81ab6..670d382ff6 100644
--- a/src/_data/linter_rules.json
+++ b/src/_data/linter_rules.json
@@ -2825,7 +2825,7 @@
"incompatible": [],
"sets": [],
"fixStatus": "hasFix",
- "details": "Only use a `break` in a non-empty switch case statement if you need to break\nbefore the end of the case body. Dart does not support fallthrough execution\nfor non-empty cases, so `break`s at the end of non-empty switch case statements\nare unnecessary.\n\n**BAD:**\n```dart\nswitch (1) {\n case 1:\n print(\"one\");\n break;\n case 2:\n print(\"two\");\n break;\n}\n```\n\n**GOOD:**\n```dart\nswitch (1) {\n case 1:\n print(\"one\");\n case 2:\n print(\"two\");\n}\n```\n\n```dart\nswitch (1) {\n case 1:\n case 2:\n print(\"one or two\");\n}\n```\n\n```dart\nswitch (1) {\n case 1:\n break;\n case 2:\n print(\"just two\");\n}\n```\n\nNOTE: This lint only reports unnecessary breaks in libraries with a\n[language version](https://dart.dev/guides/language/evolution#language-versioning)\nof 3.0 or greater. Explicit breaks are still required in Dart 2.19 and below.",
+ "details": "Only use a `break` in a non-empty switch case statement if you need to break\nbefore the end of the case body. Dart does not support fallthrough execution\nfor non-empty cases, so `break`s at the end of non-empty switch case statements\nare unnecessary.\n\n**BAD:**\n```dart\nswitch (1) {\n case 1:\n print(\"one\");\n break;\n case 2:\n print(\"two\");\n break;\n}\n```\n\n**GOOD:**\n```dart\nswitch (1) {\n case 1:\n print(\"one\");\n case 2:\n print(\"two\");\n}\n```\n\n```dart\nswitch (1) {\n case 1:\n case 2:\n print(\"one or two\");\n}\n```\n\n```dart\nswitch (1) {\n case 1:\n break;\n case 2:\n print(\"just two\");\n}\n```\n\nNOTE: This lint only reports unnecessary breaks in libraries with a\n[language version](https://dart.dev/resources/language/evolution#language-versioning)\nof 3.0 or greater. Explicit breaks are still required in Dart 2.19 and below.",
"sinceDartSdk": "3.0"
},
{
diff --git a/src/_data/side-nav.yml b/src/_data/side-nav.yml
index 860b9183e0..b065bf02f5 100644
--- a/src/_data/side-nav.yml
+++ b/src/_data/side-nav.yml
@@ -195,7 +195,7 @@
- title: JSON
permalink: /guides/json
- title: Number representation
- permalink: /guides/language/numbers
+ permalink: /resources/language/number-representation
- title: Google APIs
permalink: /resources/google-apis
- title: Multi-platform apps
@@ -348,9 +348,9 @@
- title: Breaking changes
permalink: /resources/breaking-changes
- title: Language evolution
- permalink: /guides/language/evolution
+ permalink: /resources/language/evolution
- title: Language specification
- permalink: /guides/language/spec
+ permalink: /resources/language/spec
- title: Dart 3 migration guide
permalink: /resources/dart-3-migration
- title: Coming from ...
diff --git a/src/content/effective-dart/design.md b/src/content/effective-dart/design.md
index 72d4ddaafd..8eebcc50b0 100644
--- a/src/content/effective-dart/design.md
+++ b/src/content/effective-dart/design.md
@@ -658,8 +658,8 @@ comment.
{% render 'linter-rule-mention.md', rules:'prefer_mixin' %}
-Dart previously (language version [2.12](/guides/language/evolution#dart-2-12)
-to [2.19](/guides/language/evolution#dart-2-19)) allowed any class that
+Dart previously (language version [2.12](/resources/language/evolution#dart-2-12)
+to [2.19](/resources/language/evolution#dart-2-19)) allowed any class that
met certain restrictions (no non-default constructor, no superclass, etc.)
to be mixed into other classes.
This was confusing because the author of the class
diff --git a/src/content/guides/language/index.md b/src/content/guides/language/index.md
index 1c88e8b307..a1c1d2f6aa 100644
--- a/src/content/guides/language/index.md
+++ b/src/content/guides/language/index.md
@@ -33,5 +33,5 @@ These two resources are popular with both beginning Dart developers and experts.
Learn about and practice writing asynchronous code, using DartPad.
* [Streams](/libraries/async/using-streams)
A beginner's guide to handling sequences of asynchronous events.
-* [Specification](/guides/language/spec)
+* [Specification](/resources/language/spec)
A definitive, highly technical description of the Dart language.
diff --git a/src/content/language/branches.md b/src/content/language/branches.md
index cd972c941f..722f5b223f 100644
--- a/src/content/language/branches.md
+++ b/src/content/language/branches.md
@@ -292,7 +292,7 @@ When the guard clause evaluates to false,
execution proceeds to the next case rather
than exiting the entire switch.
-[language version]: /guides/language/evolution#language-versioning
+[language version]: /resources/language/evolution#language-versioning
[loops]: /language/loops
[exceptions]: /language/error-handling
[conditional expressions]: /language/operators#conditional-expressions
diff --git a/src/content/language/built-in-types.md b/src/content/language/built-in-types.md
index 8e4f4f2830..d3068e161e 100644
--- a/src/content/language/built-in-types.md
+++ b/src/content/language/built-in-types.md
@@ -427,7 +427,7 @@ Symbol literals are compile-time constants.
[`num`]: {{site.dart-api}}/dart-core/num-class.html
[`dart:math`]: {{site.dart-api}}/dart-math/dart-math-library.html
[bitwise and shift operator]: /language/operators#bitwise-and-shift-operators
-[dart-numbers]: /guides/language/numbers
+[dart-numbers]: /resources/language/number-representation
[runes]: {{site.dart-api}}/dart-core/Runes-class.html
[characters package]: {{site.pub-pkg}}/characters
[grapheme clusters]: https://unicode.org/reports/tr29/#Grapheme_Cluster_Boundaries
@@ -435,4 +435,4 @@ Symbol literals are compile-time constants.
[characters API]: {{site.pub-api}}/characters
[characters example]: {{site.pub-pkg}}/characters/example
[`Symbol`]: {{site.dart-api}}/dart-core/Symbol-class.html
-[language version]: /guides/language/evolution#language-versioning
\ No newline at end of file
+[language version]: /resources/language/evolution#language-versioning
\ No newline at end of file
diff --git a/src/content/language/class-modifiers.md b/src/content/language/class-modifiers.md
index cf75874839..c051e16462 100644
--- a/src/content/language/class-modifiers.md
+++ b/src/content/language/class-modifiers.md
@@ -327,7 +327,7 @@ check out the [Class modifiers reference][].
[Class modifiers reference]: /language/modifier-reference
-[language version]: /guides/language/evolution#language-versioning
+[language version]: /resources/language/evolution#language-versioning
[class, mixin, or mixin class]: /language/mixins#class-mixin-or-mixin-class
[mixin]: /language/mixins
[fragile base class problem]: https://en.wikipedia.org/wiki/Fragile_base_class
diff --git a/src/content/language/constructors.md b/src/content/language/constructors.md
index de0d5e4bd3..26558a3633 100644
--- a/src/content/language/constructors.md
+++ b/src/content/language/constructors.md
@@ -598,7 +598,7 @@ class Vector3d extends Vector2d {
}
```
-[language version]: /guides/language/evolution#language-versioning
+[language version]: /resources/language/evolution#language-versioning
[using constructors]: /language/classes#using-constructors
[late-final-ivar]: /effective-dart/design#avoid-public-late-final-fields-without-initializers
[static method]: /language/classes#static-methods
diff --git a/src/content/language/enums.md b/src/content/language/enums.md
index 9bfbada44f..6930ec15d6 100644
--- a/src/content/language/enums.md
+++ b/src/content/language/enums.md
@@ -175,6 +175,6 @@ print(Vehicle.car.carbonFootprint);
[mixins]: /language/mixins
[generative constructors]: /language/constructors#constant-constructors
[Factory constructors]: /language/constructors#factory-constructors
-[language version]: /guides/language/evolution#language-versioning
+[language version]: /resources/language/evolution#language-versioning
[static variable]: /language/classes#class-variables-and-methods
[switch statements]: /language/branches#switch
diff --git a/src/content/language/extend.md b/src/content/language/extend.md
index 18bd2eafd3..58e30a8959 100644
--- a/src/content/language/extend.md
+++ b/src/content/language/extend.md
@@ -123,4 +123,4 @@ For more information, see the informal
[parameterized types]: /language/generics#restricting-the-parameterized-type
[operators]: /language/methods#operators
[generic method]: /language/generics#using-generic-methods
-[Dart language specification]: /guides/language/spec
+[Dart language specification]: /resources/language/spec
diff --git a/src/content/language/index.md b/src/content/language/index.md
index bf6f998bfa..b81cd120f7 100644
--- a/src/content/language/index.md
+++ b/src/content/language/index.md
@@ -555,14 +555,14 @@ and the [Dart API reference]({{site.dart-api}}).
This site's code follows the conventions in the
[Dart style guide](/effective-dart/style).
-[Dart language specification]: /guides/language/spec
+[Dart language specification]: /resources/language/spec
[Comments]: /language/comments
[built-in types]: /language/built-in-types
[Strings]: /language/built-in-types#strings
[The main() function]: /language/functions#the-main-function
[ns]: /null-safety
[`Object`]: {{site.dart-api}}/dart-core/Object-class.html
-[language version]: /guides/language/evolution#language-versioning
+[language version]: /resources/language/evolution#language-versioning
[ObjectVsDynamic]: /effective-dart/design#avoid-using-dynamic-unless-you-want-to-disable-static-checking
[Libraries and imports]: /language/libraries
[conditional expression]: /language/operators#conditional-expressions
diff --git a/src/content/language/mixins.md b/src/content/language/mixins.md
index 6c6308c95c..e9cf526f4a 100644
--- a/src/content/language/mixins.md
+++ b/src/content/language/mixins.md
@@ -212,6 +212,6 @@ Any restrictions that apply to classes or mixins also apply to mixin classes:
- Mixins can't have `extends` or `with` clauses, so neither can a `mixin class`.
- Classes can't have an `on` clause, so neither can a `mixin class`.
-[language version]: /guides/language/evolution#language-versioning
+[language version]: /resources/language/evolution#language-versioning
[class]: /language/classes
[class modifiers]: /language/class-modifiers
diff --git a/src/content/language/operators.md b/src/content/language/operators.md
index 87f6659f74..c21dda735a 100644
--- a/src/content/language/operators.md
+++ b/src/content/language/operators.md
@@ -356,7 +356,7 @@ The `>>>` operator (known as _triple-shift_ or _unsigned shift_)
requires a [language version][] of at least 2.14.
:::
-[Bitwise operations platform differences]: /guides/language/numbers#bitwise-operations
+[Bitwise operations platform differences]: /resources/language/number-representation#bitwise-operations
## Conditional expressions
@@ -541,10 +541,10 @@ For more information about the `.`, `?.`, and `..` operators, see
[operators as class members]: /language/methods#operators
-[Dart language specification]: /guides/language/spec
+[Dart language specification]: /resources/language/spec
[identical()]: {{site.dart-api}}/dart-core/identical.html
[Operators]: /language/methods#operators
[library prefixes]: /language/libraries#specifying-a-library-prefix
[if-else]: /language/branches#if
-[language version]: /guides/language/evolution#language-versioning
+[language version]: /resources/language/evolution#language-versioning
[Classes]: /language/classes
diff --git a/src/content/language/patterns.md b/src/content/language/patterns.md
index 5a69755846..3fc8aed8b7 100644
--- a/src/content/language/patterns.md
+++ b/src/content/language/patterns.md
@@ -420,7 +420,7 @@ This case pattern simultaneously validates that:
- The new local variables to hold the values are `name` and `age`.
-[language version]: /guides/language/evolution#language-versioning
+[language version]: /resources/language/evolution#language-versioning
[types]: /language/pattern-types
[collection-type]: /language/collections
[wildcard pattern]: /language/pattern-types#wildcard
diff --git a/src/content/language/records.md b/src/content/language/records.md
index a5a17a2119..9cc44ac96e 100644
--- a/src/content/language/records.md
+++ b/src/content/language/records.md
@@ -224,7 +224,7 @@ parallelization of futures of different types, which you can read about in the
[`dart:async` documentation][].
:::
-[language version]: /guides/language/evolution#language-versioning
+[language version]: /resources/language/evolution#language-versioning
[collection types]: /language/collections
[pattern]: /language/patterns#destructuring-multiple-returns
[`dart:async` documentation]: /libraries/dart-async#handling-errors-for-multiple-futures
diff --git a/src/content/language/type-system.md b/src/content/language/type-system.md
index 2d68ea2ec7..db4f609970 100644
--- a/src/content/language/type-system.md
+++ b/src/content/language/type-system.md
@@ -500,5 +500,5 @@ The following resources have further information on sound Dart:
[analysis]: /tools/analysis
-[language version]: /guides/language/evolution#language-versioning
+[language version]: /resources/language/evolution#language-versioning
[null safety]: /null-safety
diff --git a/src/content/language/typedefs.md b/src/content/language/typedefs.md
index 2297ad51c1..01fb2f4e99 100644
--- a/src/content/language/typedefs.md
+++ b/src/content/language/typedefs.md
@@ -52,5 +52,5 @@ void main() {
}
```
-[language version]: /guides/language/evolution#language-versioning
+[language version]: /resources/language/evolution#language-versioning
[inline function types]: /effective-dart/design#prefer-inline-function-types-over-typedefs
diff --git a/src/content/null-safety/index.md b/src/content/null-safety/index.md
index 631b150a45..2d33e23574 100644
--- a/src/content/null-safety/index.md
+++ b/src/content/null-safety/index.md
@@ -149,7 +149,7 @@ environment:
sdk: '>=2.12.0 <3.0.0'
```
-[language version]: /guides/language/evolution#language-versioning
+[language version]: /resources/language/evolution#language-versioning
## Migrating existing code {:#migrate}
diff --git a/src/content/null-safety/migration-guide.md b/src/content/null-safety/migration-guide.md
index 5674cbe0d5..79a3b1f57c 100644
--- a/src/content/null-safety/migration-guide.md
+++ b/src/content/null-safety/migration-guide.md
@@ -346,7 +346,7 @@ For more information about incremental migration, see
Note that only fully migrated apps and packages
are compatible with Dart 3.
-[version comment]: /guides/language/evolution#per-library-language-version-selection
+[version comment]: /resources/language/evolution#per-library-language-version-selection
#### Applying changes
diff --git a/src/content/null-safety/unsound-null-safety.md b/src/content/null-safety/unsound-null-safety.md
index 5c87c94616..57778b6433 100644
--- a/src/content/null-safety/unsound-null-safety.md
+++ b/src/content/null-safety/unsound-null-safety.md
@@ -26,7 +26,7 @@ bug fixes and other improvements.
However, mixed-version programs don't get all the advantages
that null safety can bring.
-[language versions]: /guides/language/evolution#language-versioning
+[language versions]: /resources/language/evolution#language-versioning
This page describes the differences between sound and unsound null safety,
with the goal of helping you decide when to migrate to null safety.
@@ -208,4 +208,4 @@ It's important to opt your tests back _in_ to null safety
when you've finished the incremental migration of your libraries.
-[language version comment]: /guides/language/evolution#per-library-language-version-selection
+[language version comment]: /resources/language/evolution#per-library-language-version-selection
diff --git a/src/content/resources/breaking-changes.md b/src/content/resources/breaking-changes.md
index 858f3e5e5a..11396e6582 100644
--- a/src/content/resources/breaking-changes.md
+++ b/src/content/resources/breaking-changes.md
@@ -47,7 +47,7 @@ To be notified about future breaking changes, join the [Dart announce][] group.
[breaking change policy]: {{site.repo.dart.sdk}}/blob/main/docs/process/breaking-changes.md
[changelog]: {{site.repo.dart.sdk}}/blob/main/CHANGELOG.md
[sdk]: /get-dart
-[language version]: /guides/language/evolution#language-versioning
+[language version]: /resources/language/evolution#language-versioning
[Dart announce]: {{site.announce}}
{% comment %}
diff --git a/src/content/resources/coming-from/swift-to-dart.md b/src/content/resources/coming-from/swift-to-dart.md
index e560df6f05..39a2154bb9 100644
--- a/src/content/resources/coming-from/swift-to-dart.md
+++ b/src/content/resources/coming-from/swift-to-dart.md
@@ -339,7 +339,7 @@ the web and native platforms. The [Numbers in Dart][]
page details these differences and shows how to
write code so the differences don't matter.
-[Numbers in Dart]: /guides/language/numbers
+[Numbers in Dart]: /resources/language/number-representation
### Strings
@@ -1245,8 +1245,8 @@ see [Bitwise operations][] in the
[Numbers in Dart][] page.
:::
-[Bitwise operations]: /guides/language/numbers#bitwise-operations
-[Numbers in Dart]: /guides/language/numbers
+[Bitwise operations]: /resources/language/number-representation#bitwise-operations
+[Numbers in Dart]: /resources/language/number-representation
The bitwise operators are mostly identical
in both languages.
diff --git a/src/content/resources/dart-3-migration.md b/src/content/resources/dart-3-migration.md
index 165837e631..459ead9821 100644
--- a/src/content/resources/dart-3-migration.md
+++ b/src/content/resources/dart-3-migration.md
@@ -24,7 +24,7 @@ The potentially breaking changes listed below fall into one of two categories:
* **Versioned changes**: These changes only apply when the package or app's
language version is set to >= Dart 3.0.
- The [language version](/guides/language/evolution#language-version-numbers)
+ The [language version](/resources/language/evolution#language-version-numbers)
is derived from the `sdk` lower-constraint in the
[`pubspec.yaml` file](/tools/pub/packages#creating-a-pubspec).
An SDK constraint like this does *not* apply the Dart 3 versioned changes:
@@ -144,7 +144,7 @@ $ dart run bin/my_app.dart
^^^^^^^^^^^^
```
-[language version comments]: /guides/language/evolution#per-library-language-version-selection
+[language version comments]: /resources/language/evolution#per-library-language-version-selection
#### Migration
diff --git a/src/content/resources/faq.md b/src/content/resources/faq.md
index 2384854649..7e72ff31eb 100644
--- a/src/content/resources/faq.md
+++ b/src/content/resources/faq.md
@@ -32,8 +32,8 @@ The latest in-progress version covers to Dart 2.13-dev.
{:.table .table-striped}
-To learn more about the specification,
-review the [Dart language specification](/guides/language/spec) page.
+To learn more about the specification, review
+the [Dart language specification](/resources/language/spec) page.
### Q. How are you taking input on changes to Dart?
@@ -50,7 +50,7 @@ and welcomes distributed committers.
[2nd-ed]: {{ecma-pdf}}/ECMA-408_2nd_edition_december_2014.pdf
[3rd-ed]: {{ecma-pdf}}/ECMA-408_3rd_edition_june_2015.pdf
[4th-ed]: {{ecma-pdf}}/ECMA-408_4th_edition_december_2015.pdf
-[5th-ed]: /guides/language/specifications/DartLangSpec-v2.10.pdf
+[5th-ed]: /resources/language/spec/versions/DartLangSpec-v2.10.pdf
[6th-ed]: https://spec.dart.dev/DartLangSpecDraft.pdf
---
diff --git a/src/content/guides/language/evolution.md b/src/content/resources/language/evolution.md
similarity index 99%
rename from src/content/guides/language/evolution.md
rename to src/content/resources/language/evolution.md
index b67a255043..54b8ce3754 100644
--- a/src/content/guides/language/evolution.md
+++ b/src/content/resources/language/evolution.md
@@ -621,7 +621,7 @@ check out the [language versioning specification][].
[extension methods]: /language/extension-methods
[Extension types]: /language/extension-types
[language funnel]: {{site.repo.dart.lang}}/projects/1
-[language specification]: /guides/language/spec
+[language specification]: /resources/language/spec
[language documentation]: /language
[language versioning specification]: {{site.repo.dart.lang}}/blob/main/accepted/2.8/language-versioning/feature-specification.md#dart-language-versioning
[null safety]: /null-safety
diff --git a/src/content/guides/language/numbers.md b/src/content/resources/language/number-representation.md
similarity index 99%
rename from src/content/guides/language/numbers.md
rename to src/content/resources/language/number-representation.md
index e3c801ad0a..83753058f1 100644
--- a/src/content/guides/language/numbers.md
+++ b/src/content/resources/language/number-representation.md
@@ -1,6 +1,8 @@
---
title: Numbers in Dart
-description: Learn how Dart numbers are slightly different on the web, when that might matter, and how you might adjust your code.
+description: >-
+ Learn how Dart numbers are slightly different on the web,
+ when that might matter, and how you might adjust your code.
---
Dart apps often target multiple platforms.
diff --git a/src/content/guides/language/spec.md b/src/content/resources/language/spec/index.md
similarity index 95%
rename from src/content/guides/language/spec.md
rename to src/content/resources/language/spec/index.md
index 160a6faa08..2ebe573d3f 100644
--- a/src/content/guides/language/spec.md
+++ b/src/content/resources/language/spec/index.md
@@ -40,7 +40,7 @@ The Dart 2 language specification is available in PDF format:
* [Formal specification (Dart 2.10)][2-10 formal spec]
-[2-10 formal spec]: /guides/language/specifications/DartLangSpec-v2.10.pdf
+[2-10 formal spec]: /resources/language/spec/versions/DartLangSpec-v2.10.pdf
For information on Dart versions 2.12 and later,
which have support for [null safety](/null-safety),
diff --git a/src/content/guides/language/specifications/DartLangSpec-v2.10.pdf b/src/content/resources/language/spec/versions/DartLangSpec-v2.10.pdf
similarity index 100%
rename from src/content/guides/language/specifications/DartLangSpec-v2.10.pdf
rename to src/content/resources/language/spec/versions/DartLangSpec-v2.10.pdf
diff --git a/src/content/resources/whats-new.md b/src/content/resources/whats-new.md
index 56204ae5c4..420e998090 100644
--- a/src/content/resources/whats-new.md
+++ b/src/content/resources/whats-new.md
@@ -386,8 +386,8 @@ we made the following changes:
[class-modifier-reference]: /language/modifier-reference
[sound null safety]: /null-safety
[Dart 3 migration guide]: /resources/dart-3-migration
-[language evolution]: /guides/language/evolution
-[language versioning]: /guides/language/evolution#language-versioning
+[language evolution]: /resources/language/evolution
+[language versioning]: /resources/language/evolution#language-versioning
[compilation environment declarations]: /guides/environment-declarations
[Java interop]: /interop/java-interop
[unnamed extensions]: /language/extension-methods#unnamed-extensions
@@ -899,7 +899,7 @@ we made the following changes to this site:
[get Dart]: /get-dart
[HTTP server tutorial]: /tutorials/server/httpserver
[`lints`]: {{site.pub-pkg}}/lints
-[Numbers in Dart]: /guides/language/numbers
+[Numbers in Dart]: /resources/language/number-representation
[streams tutorial]: /libraries/async/using-streams
[typedef section]: /language/typedefs
[Using Google APIs]: /resources/google-apis
@@ -1047,14 +1047,14 @@ we made the following changes to this site:
[diagnostics]: /tools/diagnostic-messages
[dynamic]: /effective-dart/design#avoid-using-dynamic-unless-you-want-to-disable-static-checking
[Effective Dart]: /effective-dart
-[evolution]: /guides/language/evolution
+[evolution]: /resources/language/evolution
[experiments]: /tools/experiment-flags#using-experiment-flags-with-ides
[ns-enable]: /null-safety#enable-null-safety
[Understanding null safety]: /null-safety/understanding-null-safety
[sound null safety]: /null-safety
[diagnostics]: /tools/diagnostic-messages
[changelog-docs]: /tools/pub/package-layout#changelog
-[spec]: /guides/language/spec
+[spec]: /resources/language/spec
### Articles added to the Dart blog {:.no_toc}
diff --git a/src/content/tools/analysis.md b/src/content/tools/analysis.md
index ef6d5b2f35..eaa85a801a 100644
--- a/src/content/tools/analysis.md
+++ b/src/content/tools/analysis.md
@@ -61,7 +61,7 @@ to perform static analysis.
You can customize static analysis to look for a variety of potential
problems, including errors and warnings specified in the
-[Dart language spec](/guides/language/spec).
+[Dart language spec](/resources/language/spec).
You can also configure linter rules,
to ensure that your code complies with the
[Dart Style Guide](/effective-dart/style)
@@ -597,7 +597,7 @@ Use the following resources to learn more about static analysis in Dart:
[change the severity of rules]: #changing-the-severity-of-rules
[diagnostics]: /tools/diagnostic-messages
[invalid_assignment]: /tools/diagnostic-messages#invalid_assignment
-[language version]: /guides/language/evolution#language-versioning
+[language version]: /resources/language/evolution#language-versioning
[linter rules]: /tools/linter-rules
[type-system]: /language/type-system
[dead_code]: /tools/diagnostic-messages#dead_code
diff --git a/src/content/tools/dart-fix.md b/src/content/tools/dart-fix.md
index f1af99e76d..34f808efff 100644
--- a/src/content/tools/dart-fix.md
+++ b/src/content/tools/dart-fix.md
@@ -114,7 +114,7 @@ To learn more about customizing analysis results and behavior,
see [Customizing static analysis](/tools/analysis).
[`dart analyze`]: /tools/dart-analyze
-[language version]: /guides/language/evolution#language-versioning
+[language version]: /resources/language/evolution#language-versioning
## VS Code support
diff --git a/src/content/tools/diagnostic-messages.md b/src/content/tools/diagnostic-messages.md
index fe79b30b88..f959a26fa6 100644
--- a/src/content/tools/diagnostic-messages.md
+++ b/src/content/tools/diagnostic-messages.md
@@ -10470,7 +10470,7 @@ directive._
The analyzer produces this diagnostic when a comment that appears to be an
attempt to specify a language version override doesn't conform to the
requirements for such a comment. For more information, see
-[Per-library language version selection](https://dart.dev/guides/language/evolution#per-library-language-version-selection).
+[Per-library language version selection](https://dart.dev/resources/language/evolution#per-library-language-version-selection).
#### Example
diff --git a/src/content/tools/non-promotion-reasons.md b/src/content/tools/non-promotion-reasons.md
index a7e51fb30a..235c357dd7 100644
--- a/src/content/tools/non-promotion-reasons.md
+++ b/src/content/tools/non-promotion-reasons.md
@@ -1210,4 +1210,4 @@ void f(int? i, int? j) {
}
```
-[language version]: /guides/language/evolution#language-versioning
+[language version]: /resources/language/evolution#language-versioning
diff --git a/src/content/tools/pub/dependencies.md b/src/content/tools/pub/dependencies.md
index 09f344a45f..e6c7812b78 100644
--- a/src/content/tools/pub/dependencies.md
+++ b/src/content/tools/pub/dependencies.md
@@ -120,7 +120,7 @@ dependencies:
```
:::
-[SDK version]: /guides/language/evolution#language-versioning
+[SDK version]: /resources/language/evolution#language-versioning
### Git packages
diff --git a/src/content/tools/pub/pubspec.md b/src/content/tools/pub/pubspec.md
index 61e446b1e5..b456fe3cf5 100644
--- a/src/content/tools/pub/pubspec.md
+++ b/src/content/tools/pub/pubspec.md
@@ -505,7 +505,7 @@ the version when the feature was introduced.
For details, check out [Language versioning][].
:::
-[Language versioning]: /guides/language/evolution#language-versioning
+[Language versioning]: /resources/language/evolution#language-versioning
For example, the following constraint says that this package
works with any Dart SDK that's version 3.0.0 or higher: