Dartdoc: 2 verspätete Felder des gleichen Typs führen zu Fehler

Erstellt am 24. Juli 2020  ·  17Kommentare  ·  Quelle: dart-lang/dartdoc

Mit 2 späten Feldern des gleichen Typs wie dem folgenden Code:

class A {
  late double a;
  late double b;
}

dartdoc --enable-experiment=non-nullable gibt Fehler aus:

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.

Mit nur einem späten Feld tritt kein Problem auf.

P1 bug

Alle 17 Kommentare

FWIW dieses Problem blockiert die Flattermigration auf Nullsicherheit.

Wo ist das grimmige Emoji... Was für ein komischer Fehler. Ich schaue mir das heute an.

dartdoc sieht Ihre Quelle nicht als für die Nullsicherheitsfunktion aktiviert an. Es gibt 17 Gründe dafür, haha. Kannst du folgendes überprüfen:

  1. Ist für das Paket die Nullsicherheit über SDK-Einschränkungen aktiviert? Ich denke, dies könnte 2.9 _oder_ 2.10 beinhalten, abhängig von der Version von Dart, die Sie verwenden.
  2. Ist für das Paket über analysis_options die Nullsicherheit aktiviert?
analyzer:
  enable-experiment:
    - non-nullable
  1. Führen Sie dartdoc mit dem null-safety Experiment aus? Wenn Sie es über pub aufrufen, ist es wahrscheinlich etwa pub global run dartdoc --enable-experiment=null-safety .

Ja, ich habe ein einfaches Paket mit

//------ 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;
}

Und ich führe dartdoc --enable-experiment=non-nullable (derselbe Fehler mit dartdoc --enable-experiment=null-safety ).

Sie können den Fehler auf meiner Flatter-PR sehen https://cirrus-ci.com/task/4975447580606464?command=main#L137

@srawlins hast du das Problem reproduzieren können?

FWIW dieses Problem blockiert die Flattermigration auf Nullsicherheit

Blockiert das die Migration? Einen Aspekt davon blockieren? Haben Sie kurzfristig einen Workaround?

Ich konnte dies nicht reproduzieren, wenn ich mich über pubspec für die Nullsicherheit entschieden habe:

environment:
  sdk: '>=2.9.0-18.0 <2.9.0'

und Analyseoptionen:

analyzer:
  enable-experiment:
    - non-nullable

und verwenden Sie Dartdoc am Kopf, indem Sie dart am Kopf ausführen:

~/code/dart-sdk/sdk/xcodebuild/ReleaseX64/dart-sdk/bin/dart
    --enable-experiment=non-nullable
    ../dart-dartdoc/bin/dartdoc.dart
    --enable-experiment=non-nullable

Ich bin dabei, dartdoc zu veröffentlichen, da es schon eine Weile her ist. Ich werde auch auf die aktuelle neueste Version überprüfen.

Blockiert das die Migration? Einen Aspekt davon blockieren?

Ja, weil docs-linux Job immer fehlschlägt. (Siehe Flattern/Flattern #62157)

Haben Sie kurzfristig einen Workaround?

Alle late entfernen ist nicht wirklich ein Workaround, da ! und ? überall hinzugefügt werden müssen :-(

Der fehlgeschlagene Job erwähnt dartdoc version: 0.32.1 . Könnten Sie überprüfen, ob diese Version das Problem auf Ihrer Seite auslöst? Wenn Sie das Problem sehen, kann dies bedeuten, dass es irgendwann behoben wurde und die nächste Version das Problem löst.

Erwischt; Ich hatte auf einige Flaggen gehofft, die wir an Dartdoc weitergeben könnten (oder Flaggen, die wir weglassen konnten), die uns in der Zwischenzeit weitermachen ließen.

@srawlins - Ich denke, hier wird eine Korrektur wichtig sein, damit die nnbd-Migration im Allgemeinen fortschreitet.

Ja, es sieht so aus, als ob ich dies auf 0.32.1 reproduzieren kann, indem ich Dart 2.10.0-dev.something verwende. Es gibt eine unveröffentlichte 0.32.2, die funktionieren könnte. Das werde ich auch versuchen.

Ich kann mit pub global run auf dem v0.32.2-Git-Tag und auf dem Master reproduzieren. Ich arbeite daran, herauszufinden, warum pub der Schuldige ist.

Vergiss das. Ich hatte ein verirrtes // @dart=2.9 in meiner Testdatei (die jetzt _zu niedrig_ ist, um Nullsicherheit anzuzeigen).

Ich kann den Fehler mit pub run dartdoc auf dartdoc 0.32.1, git branch v0.32.2 oder bei head nicht reproduzieren.

FWIW, ich sehe --enable-experiment=non-nullable im Dartdoc-Aufruf auf dem verlinkten Linux-Bot nicht.

Ich sehe --enable-experiment=non-nullable weder in Ihrem Cirrus-Link noch im neuesten Cirrus-Link in Ihrem PR.

Guter Fang! Es sollte das Problem beheben.

(Aber lokal weiß ich wirklich nicht, was ich getan habe, um dieses Problem zu sehen)

Lass uns wissen, ob das funktioniert. Ich plane, dartdoc morgen früh zu veröffentlichen, nachdem es intern überprüft wurde.

Das Hinzufügen von --enable-experiment=non-nullable das Problem behoben. Danke für Ihre Hilfe.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen