Dartdoc: 同じタイプの2つの遅いフィールドはエラーにつながります

作成日 2020年07月24日  ·  17コメント  ·  ソース: dart-lang/dartdoc

次のコードのような同じタイプの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つしかない場合、問題は発生しません。

P1 bug

全てのコメント17件

FWIWこの問題は、nullsafetyへのフラッター移行をブロックしています。

クリンジーフェイスの絵文字はどこにありますか...なんて奇妙なバグでしょう。 今日はこれを見ていきます。

dartdocは、ソースがnull-safety機能にオプトインされているとは見なしません。 これには17の理由があります、ハハ。 以下を確認できますか?

  1. パッケージはSDK制約を介してnull-safetyにオプトインされていますか? 使用しているDartのバージョンによっては、これには2.9 _or_2.10が含まれる可能性があると思います。
  2. パッケージはanalysis_optionsを介してnull-safetyにオプトインされていますか?
analyzer:
  enable-experiment:
    - non-nullable
  1. 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追加すると、問題が修正されました。 ご協力いただきありがとうございます。

このページは役に立ちましたか?
0 / 5 - 0 評価