Skip to content

Reference links within extension methods are unimplemented #2033

@natebosch

Description

@natebosch

Given a library like:

extension Foo on String {
  /// Print this and [another].
  void doStuff(String another) {
    print(this + another);
  }
}

Running dart doc crashes. It doesn't happen if I remove [another]. When it tries to resolve the reference there is a type error.

dartdoc failed: type 'Extension' is not a subtype of type 'Class'
package:dartdoc/src/markdown_processor.dart 209:66            _getMatchingLinkElement
package:dartdoc/src/markdown_processor.dart 758:12            _linkDocReference
package:dartdoc/src/markdown_processor.dart 1006:22           Documentation._renderMarkdownToHtml._linkResolver
package:markdown/src/inline_parser.dart 720:14                LinkSyntax._resolveReferenceLink
package:markdown/src/inline_parser.dart 742:9                 LinkSyntax._tryAddReferenceLink
package:markdown/src/inline_parser.dart 692:12                LinkSyntax.onMatchEnd
package:markdown/src/inline_parser.dart 1216:16               TagState.close
package:markdown/src/inline_parser.dart 1155:7                TagState.tryMatch
package:markdown/src/inline_parser.dart 106:57                InlineParser.parse.<fn>
dart:_internal                                                ListIterable.any
package:markdown/src/inline_parser.dart 106:12                InlineParser.parse
package:dartdoc/src/markdown_processor.dart 903:53            MarkdownDocument._parseInlineContent
package:dartdoc/src/markdown_processor.dart 908:9             MarkdownDocument._parseInlineContent
package:dartdoc/src/markdown_processor.dart 928:5             MarkdownDocument.renderLinesToHtml
package:dartdoc/src/markdown_processor.dart 1016:21           Documentation._renderMarkdownToHtml
package:dartdoc/src/markdown_processor.dart 986:9             Documentation._renderHtmlForDartdoc
package:dartdoc/src/markdown_processor.dart 977:7             Documentation.asOneLiner
package:dartdoc/src/model.dart 3901:25                        ModelElement.computeOneLineDoc
package:dartdoc/src/model.dart 3907:21                        ModelElement.oneLineDoc
dart:mirrors                                                  _InstanceMirror.getField
package:mustache/src/renderer.dart 245:29                     Renderer._getNamedProperty
package:mustache/src/renderer.dart 212:16                     Renderer.resolveValue
package:mustache/src/renderer.dart 90:17                      Renderer.visitVariable
package:mustache/src/node.dart 45:43                          VariableNode.accept
package:mustache/src/renderer.dart 64:53                      Renderer.render.<fn>
dart:_internal                                                ListIterable.forEach
package:mustache/src/renderer.dart 64:36                      Renderer.render
package:mustache/src/renderer.dart 195:16                     Renderer.visitPartial
package:mustache/src/node.dart 81:43                          PartialNode.accept
package:mustache/src/node.dart 66:37                          SectionNode.visitChildren.<fn>
dart:core                                                     List.forEach
package:mustache/src/node.dart 66:14                          SectionNode.visitChildren
package:mustache/src/renderer.dart 184:10                     Renderer._renderWithValue
package:mustache/src/renderer.dart 126:28                     Renderer._renderSection.<fn>
dart:core                                                     Iterable.forEach
package:mustache/src/renderer.dart 126:13                     Renderer._renderSection
package:mustache/src/renderer.dart 115:7                      Renderer.visitSection
package:mustache/src/node.dart 63:43                          SectionNode.accept
package:mustache/src/node.dart 66:37                          SectionNode.visitChildren.<fn>
dart:core                                                     List.forEach
package:mustache/src/node.dart 66:14                          SectionNode.visitChildren
package:mustache/src/renderer.dart 184:10                     Renderer._renderWithValue
package:mustache/src/renderer.dart 130:7                      Renderer._renderSection
package:mustache/src/renderer.dart 115:7                      Renderer.visitSection
package:mustache/src/node.dart 63:43                          SectionNode.accept
package:mustache/src/node.dart 66:37                          SectionNode.visitChildren.<fn>
dart:core                                                     List.forEach
package:mustache/src/node.dart 66:14                          SectionNode.visitChildren
package:mustache/src/renderer.dart 184:10                     Renderer._renderWithValue
package:mustache/src/renderer.dart 144:7                      Renderer._renderSection
package:mustache/src/renderer.dart 115:7                      Renderer.visitSection
package:mustache/src/node.dart 63:43                          SectionNode.accept
package:mustache/src/renderer.dart 58:30                      Renderer.render.<fn>
dart:core                                                     List.forEach
package:mustache/src/renderer.dart 58:13                      Renderer.render
package:mustache/src/template.dart 40:14                      Template.render
package:mustache/src/template.dart 33:5                       Template.renderString
package:dartdoc/src/html/html_generator_instance.dart 414:31  HtmlGeneratorInstance._build
package:dartdoc/src/html/html_generator_instance.dart 312:5   HtmlGeneratorInstance.generateExtension
package:dartdoc/src/html/html_generator_instance.dart 175:11  HtmlGeneratorInstance._generateDocs
package:dartdoc/src/html/html_generator_instance.dart 37:7    HtmlGeneratorInstance.generate
dart:async                                                    _AsyncAwaitCompleter.start
package:dartdoc/src/html/html_generator_instance.dart 35:18   HtmlGeneratorInstance.generate
package:dartdoc/src/html/html_generator.dart 117:23           HtmlGenerator.generate
dart:async                                                    _AsyncAwaitCompleter.start
package:dartdoc/src/html/html_generator.dart 83:18            HtmlGenerator.generate
package:dartdoc/dartdoc.dart 107:25                           Dartdoc.generateDocsBase
dart:async                                                    _completeOnAsyncReturn
package:dartdoc/src/model.dart                                PackageBuilder.buildPackageGraph

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