Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

"Null check operator used on a null value" running "dart doc ." in latest beta #3823

Closed
DanTup opened this issue Jul 31, 2024 · 6 comments · Fixed by #3825
Closed

"Null check operator used on a null value" running "dart doc ." in latest beta #3823

DanTup opened this issue Jul 31, 2024 · 6 comments · Fixed by #3825
Assignees
Labels
P2 A bug or feature request we're likely to work on type-bug Incorrect behavior (everything from a crash to more subtle misbehavior)

Comments

@DanTup
Copy link
Contributor

DanTup commented Jul 31, 2024

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)

@dart-github-bot
Copy link

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.

@dart-github-bot dart-github-bot added the type-bug Incorrect behavior (everything from a crash to more subtle misbehavior) label Jul 31, 2024
@bwilkerson bwilkerson transferred this issue from dart-lang/sdk Jul 31, 2024
@DanTup
Copy link
Contributor Author

DanTup commented Jul 31, 2024

The ! causing the exception is this one here:

LibraryElement() => packageGraph.findButDoNotCreateLibraryFor(e)!,

@srawlins
Copy link
Member

Hi @DanTup, which beta branch? Beta branch of the Dart SDK? I'll start trying to repro locally.

@srawlins
Copy link
Member

I can reproduce with Dart 3.5.0-323.2.beta.

@srawlins
Copy link
Member

The issue disappears if you remove or comment out the lines in dartdoc_options.yaml.

@srawlins
Copy link
Member

srawlins commented Aug 1, 2024

The culprit commit is 12d271a.

@srawlins srawlins added the P2 A bug or feature request we're likely to work on label Aug 1, 2024
@srawlins srawlins self-assigned this Aug 1, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
P2 A bug or feature request we're likely to work on type-bug Incorrect behavior (everything from a crash to more subtle misbehavior)
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants