"Null check operator used on a null value" running "dart doc ." in latest beta
DanTup opened this issue · 6 comments
One of the integration tests for Dart-Code is failing on the beta branch because dart doc
is throwing:
PS C:\Dev\Dart-Code\Dart-Code\src\test\test_projects\hello_world> dart doc .
Documenting hello_world...
Discovering libraries...
Linking elements...
Precaching local docs for 17046 elements...
Initialized dartdoc with 1 library
Generating docs for library everything.dart from package:hello_world/everything.dart...
warning: everything has no library level documentation comments
from everything: (file:///c:/dev/dart-code/dart-code/src/test/test_projects/hello_world/lib/everything.dart:1:9)
dartdoc 8.0.10-dev (/C:/Dev/Dart-Code/Dart-Code/src/test/test_projects/hello_world/dartdev) failed: Null check operator used on a null value
#0 ModelElement._constructFromElementDeclaration (package:dartdoc/src/model/model_element.dart:277:71)
dart-lang/sdk#1 new ModelElement.for_ (package:dartdoc/src/model/model_element.dart:230:40)
dart-lang/sdk#2 new ModelElement.forElement (package:dartdoc/src/model/model_element.dart:106:25)
dart-lang/sdk#3 Nameable.getModelForElement (package:dartdoc/src/model/nameable.dart:66:20)
dart-lang/sdk#4 ModelElement.definingLibrary (package:dartdoc/src/model/model_element.dart:455:7)
dart-lang/sdk#5 ModelElement.canonicalLibrary.<anonymous closure> (package:dartdoc/src/model/model_element.dart:469:52)
dart-lang/sdk#6 ModelElement.canonicalLibrary (package:dartdoc/src/model/model_element.dart:487:4)
dart-lang/sdk#7 ModelElement.canonicalLibrary (package:dartdoc/src/model/model_element.dart)
dart-lang/sdk#8 PackageGraph.findCanonicalModelElementFor (package:dartdoc/src/model/package_graph.dart:772:28)
dart-lang/sdk#9 ModelElement.canonicalModelElement.<anonymous closure> (package:dartdoc/src/model/model_element.dart:442:25)
dart-lang/sdk#10 ModelElement.canonicalModelElement (package:dartdoc/src/model/model_element.dart:444:4)
dart-lang/sdk#11 ModelElement.canonicalModelElement (package:dartdoc/src/model/model_element.dart)
dart-lang/sdk#12 ModelElement.href (package:dartdoc/src/model/model_element.dart:630:20)
dart-lang/sdk#13 ModelElement.linkedName.<anonymous closure> (package:dartdoc/src/model/model_element.dart:690:23)
dart-lang/sdk#14 ModelElement.linkedName (package:dartdoc/src/model/model_element.dart:700:4)
dart-lang/sdk#15 ModelElement.linkedName (package:dartdoc/src/model/model_element.dart)
dart-lang/sdk#16 ParameterizedElementTypeRendererHtml.renderLinkedName (package:dartdoc/src/render/element_type_renderer.dart:102:34)
dart-lang/sdk#17 Rendered.linkedName (package:dartdoc/src/element_type.dart:397:44)
dart-lang/sdk#18 Rendered.linkedName (package:dartdoc/src/element_type.dart)
dart-lang/sdk#19 __deduplicated_lib_templates__instance_fields_html_partial_property_0 (package:dartdoc/src/generator/templates.aot_renderers_for_html.dart:4515:35)
dart-lang/sdk#20 _deduplicated_lib_templates__instance_fields_html (package:dartdoc/src/generator/templates.aot_renderers_for_html.dart:4487:11)
dart-lang/sdk#21 _renderClass_partial_instance_fields_10 (package:dartdoc/src/generator/templates.aot_renderers_for_html.dart:2610:5)
dart-lang/sdk#22 renderClass (package:dartdoc/src/generator/templates.aot_renderers_for_html.dart:369:16)
dart-lang/sdk#23 HtmlAotTemplates.renderClass (package:dartdoc/src/generator/templates.dart:143:30)
dart-lang/sdk#24 GeneratorBackend.generateClass (package:dartdoc/src/generator/generator_backend.dart:131:29)
dart-lang/sdk#25 HtmlGeneratorBackend.generateClass (package:dartdoc/src/generator/html_generator.dart:40:11)
dart-lang/sdk#26 GeneratorFrontEnd._generateDocs (package:dartdoc/src/generator/generator_frontend.dart:162:29)
dart-lang/sdk#27 GeneratorFrontEnd.generate (package:dartdoc/src/generator/generator_frontend.dart:37:25)
<asynchronous suspension>
dart-lang/sdk#28 Dartdoc.generateDocsBase (package:dartdoc/src/dartdoc.dart:203:5)
<asynchronous suspension>
dart-lang/sdk#29 Dartdoc.generateDocs (package:dartdoc/src/dartdoc.dart:241:24)
<asynchronous suspension>
dart-lang/sdk#30 Dartdoc.executeGuarded.<anonymous closure> (package:dartdoc/src/dartdoc.dart:273:9)
<asynchronous suspension>
The project looks like:
pubspec.yaml
name: hello_world
publish_to: none
environment:
sdk: '>=2.12.0 <4.0.0'
dependencies:
http:
dartdoc_options.yaml
dartdoc:
include:
- everything
lib/everything.dart
library everything;
import 'package:http/http.dart' as http;
/// A
class MyTestClass {
http.Client? myTestHttpClient;
}
Remove the myTestHttpClient
field seems to prevent the issue.
(@srawlins I'm not certain if this is best raised here or in dartdoc, but if this is the wrong place and you have powers, could you move it there? this seems like a beta-only regression)
Summary: dart doc
fails with a "Null check operator used on a null value" error when documenting a class with a nullable field. This issue appears to be specific to the Dart beta branch and is not present in stable releases.
The !
causing the exception is this one here:
dartdoc/lib/src/model/model_element.dart
Line 278 in 5230f8f
Hi @DanTup, which beta branch? Beta branch of the Dart SDK? I'll start trying to repro locally.
I can reproduce with Dart 3.5.0-323.2.beta
.
The issue disappears if you remove or comment out the lines in dartdoc_options.yaml
.