Skip to content

Dartdoc crashes with macros #3653

Closed
@jakemac53

Description

@jakemac53

Repro instructions:

Check out this repo/branch https://github.com/jakemac53/macros_example/tree/dartdoc-failure

Using a custom built recent SDK:

  • Run dart pub upgrade. You may want to delete the pubspec_overrides.yaml file first, or change the paths in it to point at your own local SDK.
  • Run dart --enable-experiment=macros doc .

You will observe two issues:

  • It won't exit properly, cc @scheglov should be able to comment on how to shut down the analysis context
  • It will crash, with an exception like the following:
Bad state: The target must be a declaration, not an augmentation.
#0      InterfaceElementExtension.augmentedOfDeclaration (package:analyzer/src/dart/element/extensions.dart:142:7)
dart-lang/sdk#1      ClassHierarchy._getHierarchy (package:analyzer/src/dart/element/class_hierarchy.dart:38:31)
dart-lang/sdk#2      ClassHierarchy.implementedInterfaces (package:analyzer/src/dart/element/class_hierarchy.dart:22:12)
dart-lang/sdk#3      InterfaceElementImpl.allSupertypes (package:analyzer/src/dart/element/element.dart:3456:43)
dart-lang/sdk#4      Method.overriddenElement (package:dartdoc/src/model/method.dart:116:26)
dart-lang/sdk#5      DocumentationComment.documentationFrom.<anonymous closure> (package:dartdoc/src/model/documentation_comment.dart:58:46)
dart-lang/sdk#6      DocumentationComment.documentationFrom (package:dartdoc/src/model/documentation_comment.dart:65:8)
dart-lang/sdk#7      PackageGraph._precacheLocalDocs (package:dartdoc/src/model/package_graph.dart:178:31)
dart-lang/sdk#8      PackageGraph.initializePackageGraph (package:dartdoc/src/model/package_graph.dart:132:23)
dart-lang/sdk#9      PubPackageBuilder.buildPackageGraph (package:dartdoc/src/model/package_builder.dart:90:20)
<asynchronous suspension>
dart-lang/sdk#10     Dartdoc.generateDocsBase (package:dartdoc/src/dartdoc.dart:189:24)
<asynchronous suspension>
dart-lang/sdk#11     Dartdoc.generateDocs (package:dartdoc/src/dartdoc.dart:233:24)
<asynchronous suspension>
dart-lang/sdk#12     Dartdoc.executeGuarded.<anonymous closure> (package:dartdoc/src/dartdoc.dart:265:9)
<asynchronous suspension>

Note that I was running this to see if I could see the generated toJson/fromJson members in the docs.

cc @srawlins

Metadata

Metadata

Assignees

Labels

P1A high priority bug; for example, a single project is unusable or has many test failurestype-bugIncorrect behavior (everything from a crash to more subtle misbehavior)

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions