次のコードのような同じタイプの2つの後期フィールドがある場合:
class A {
late double a;
late double b;
}
dartdoc --enable-experiment=non-nullable
エラーを出力します:
Generating docs for library a from package:hello_world/a.dart...
error: failed to write file at: a/A/double.html, for symbol a.A.double: (file:///home/a14n/hello_world/lib/a.dart:2:8)
Dartdoc generates a path and filename to write to for each symbol.
a.A.double conflicts with another symbol in the generated path, and
therefore can not be written out. Changing the name, library name, or
class name (if appropriate) of one of the conflicting items can resolve
the conflict. Alternatively, use the <strong i="10">@nodoc</strong> tag in one symbol's
documentation comments to hide it.
後期フィールドが1つしかない場合、問題は発生しません。
FWIWこの問題は、nullsafetyへのフラッター移行をブロックしています。
クリンジーフェイスの絵文字はどこにありますか...なんて奇妙なバグでしょう。 今日はこれを見ていきます。
dartdocは、ソースがnull-safety機能にオプトインされているとは見なしません。 これには17の理由があります、ハハ。 以下を確認できますか?
analyzer:
enable-experiment:
- non-nullable
null-safety
実験でdartdocを実行していますか? パブから呼び出す場合は、おそらくpub global run dartdoc --enable-experiment=null-safety
ようなものです。はい私は簡単なパッケージを持っています
//------ analysis_options.yaml
analyzer:
enable-experiment:
- non-nullable
//------ pubspec.yaml
name: hello_world
environment:
sdk: ">=2.9.0-14.0.dev <3.0.0"
//------ lib/a.dart
class A {
late double a;
late double b;
}
そして、 dartdoc --enable-experiment=non-nullable
を実行します( dartdoc --enable-experiment=null-safety
と同じエラー)。
あなたは私のフラッターPRで失敗を見ることができますhttps://cirrus-ci.com/task/4975447580606464?command=main#L137
@srawlinsは問題を再現できましたか?
FWIWこの問題はnullsafetyへのフラッター移行をブロックしています
これは移行をブロックしていますか? それのいくつかの側面をブロックしますか? 短期的に回避策はありますか?
pubspecを介してnullセーフティにオプトインした場合、これを再現できませんでした。
environment:
sdk: '>=2.9.0-18.0 <2.9.0'
およびanalysis_options:
analyzer:
enable-experiment:
- non-nullable
頭でdartdocを使用し、頭でdart
します。
~/code/dart-sdk/sdk/xcodebuild/ReleaseX64/dart-sdk/bin/dart
--enable-experiment=non-nullable
../dart-dartdoc/bin/dartdoc.dart
--enable-experiment=non-nullable
久しぶりにdartdocをリリース中です。 また、現在の最新リリースも確認します。
これは移行をブロックしていますか? それのいくつかの側面をブロックしますか?
はい。 docs-linux
ジョブは常に失敗しているためです。 (flutter / flutter#62157を参照)
短期的に回避策はありますか?
late
すべて削除することは、実際には回避策ではありません。どこにでも!
と?
を追加する必要があるからです:-(
失敗したジョブはdartdoc version: 0.32.1
言及します。 このバージョンがあなたの側で問題を引き起こしていることを確認できますか? 問題が発生した場合は、ある時点で修正されており、次のリリースで問題が解決する可能性があります。
ガッチャ; dartdocに渡すことができるいくつかのフラグ(または省略できるフラグ)を期待していたので、その間に続行できます。
@ srawlins -nnbdの移行を一般的に進行させるには、ここでの修正が重要になると思います。
はい、Dart 2.10.0-dev.somethingを使用して、0.32.1でこれを再現できるようです。 動作する可能性のある未リリースの0.32.2があります。 私もやってみます。
v0.32.2 gitタグとマスターで pub global run
を使用して再現できます。pub
が原因である理由を調べています。
それをスクラッチします。 テストファイルに// @dart=2.9
迷いがありました(これは現在、Nullの安全性を示すには_低すぎます_)。
dartdoc 0.32.1、gitブランチv0.32.2、またはヘッドでpub run dartdoc
を使用してエラーを再現することはできません。
FWIW、リンクされたLinuxボットのdartdoc呼び出しに--enable-experiment=non-nullable
れません。
あなたのサーラスリンクにも、PRの最新のサーラスリンクにも--enable-experiment=non-nullable
れません。
いいキャッチ! 問題が修正されるはずです。
(しかし、ローカルでは、この問題を確認するために何をしたのか本当にわかりません)
それがうまくいくかどうか教えてください。 社内で精査した後、明日の朝にdartdocを公開する予定です。
--enable-experiment=non-nullable
追加すると、問題が修正されました。 ご協力いただきありがとうございます。