Skip to content

Language record

Dart

Dart is indexed with the Dart 3 shapes included: a mixin is its own symbol distinct from a class, an extension type carries its representation field as a real property, and a named constructor call is recognised as a construction.

.dart · 1 registry id · 13 of 14 relationship types

The registry row this page is generated from

Read at render time from the same family row the register reads, so nothing in this block can disagree with it.

Extensions
.dart
Registry names
dart
Recorded symbols
classes · enums · methods · constructors

Relationship types this analyzer constructs

13 of 14 constructed, read from this analyzer's source and re-derived by the languages gate. Each row below is one of the engine's types, in the engine's own order.

Relationship typeConstructed
callsconstructed by this analyzer
extendsconstructed by this analyzer
implementsconstructed by this analyzer
usesconstructed by this analyzer
importsconstructed by this analyzer
exportsconstructed by this analyzer
containsconstructed by this analyzer
referencesconstructed by this analyzer
overridesconstructed by this analyzer
instantiatesconstructed by this analyzer
decoratesruled absent
rendersconstructed by this analyzer
mixes_inconstructed by this analyzer
part_ofconstructed by this analyzer

13 constructed, 1 not constructed. The absent type is recorded as ruled absent: the written reason and the corpus measurement behind it are in this family's completeness record. The register explains what each label means.

What this analyzer does not resolve

  • A named constructor declared in another file stays a call to its leaf: construction is recognised only inside the translation unit that declares it.
  • An extension method records its target type as metadata rather than as an edge from the extension to that type, so the graph does not connect the two.
  • Box<String>('x') misparses as a relational expression in the pinned grammar. That is an upstream grammar ambiguity, so no edge is drawn and no text workaround is applied to paper over it.

Every line above was written against Dart’s own analyzer module and is named against a construct in it, so it can be checked against the source. Nothing here is inherited from a template, or from another language’s page.

Where you meet it in a repository

Recognised by extension — .dart. Everything below is about where those files actually sit in a working repository.

  • Flutter code separates widget, model and generated code, with part / part of tying a generated file back to the library it belongs to.
  • A mixin carries behaviour the class body never wrote, so reading the class alone understates what the type can do.
  • Build runners emit .g.dart and .freezed.dart files that are ordinary Dart to the analyzer and are often the bulk of a project's file count.

Questions this index answers

Phrased as retrievals, because that is what an index can honestly do: it holds the symbols and the edges between them, and hands them back with the evidence attached.

  1. Which mixins does this class apply?
  2. Which interfaces does this type implement?
  3. Where is this named constructor called from?
  4. Which extension methods exist for this type?

What the analyzer sees in code like this

A mixin, the class that applies it, and a factory constructor redirect
mixin Loggable on Shape {                     // bb records: mixin Loggable · extends Shape
  void log() {}
}

class Poly with Loggable implements Shape {   // bb records: class Poly · implements Shape
  final double sides;                        // bb records: property sides
  factory Poly.unit() = Poly;                // bb records: a factory redirect to Poly
}

Symbols are stored with the file they came from and the bytes they span, so a hit points at a line rather than at a guess. The annotations in the sample are commentary for the reader, not strings the index would store.

Languages that turn up in the same repository

Application & systems — the count beside each name is how many relationship types that family’s analyzer constructs.

The extensions, registry names, recorded symbols and relationship types above are the parser registry row for Dart, read while the page rendered — the same row the register reads, so the two surfaces cannot tell two stories. Every relationship type listed as constructed appears in src/ast/real-*, the analyzer modules bb ships. bb 0.1.0 answers from a local store over 50 languages (53 registry ids, three of them aliases). There is no benchmark on this page: every claim here is one you can go and read in the source.