Dartdoc: 2 champs tardifs du même type entraînent une erreur

Créé le 24 juil. 2020  ·  17Commentaires  ·  Source: dart-lang/dartdoc

Avec 2 champs en retard du même type comme le code suivant :

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

dartdoc --enable-experiment=non-nullable génère une erreur :

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.

Avec un seul champ en retard, aucun problème n'apparaît.

P1 bug

Tous les 17 commentaires

FWIW, ce problème bloque la migration de flutter vers nullsafety.

Où est l'emoji grimaçant... Quel drôle d'insecte. Je vais regarder ça aujourd'hui.

dartdoc ne considère pas votre source comme étant activée pour la fonction de sécurité nulle. Il y a comme 17 raisons pour lesquelles cela pourrait être, haha. Pouvez-vous vérifier les éléments suivants :

  1. Le package a-t-il opté pour la sécurité nulle via les contraintes du SDK ? Je pense que cela pourrait impliquer 2.9 _ou_ 2.10 selon la version de Dart que vous utilisez.
  2. Le package a-t-il opté pour la sécurité nulle via analysis_options ?
analyzer:
  enable-experiment:
    - non-nullable
  1. Exécutez-vous dartdoc avec l'expérience null-safety ? Si vous l'invoquez via pub, c'est probablement quelque chose comme pub global run dartdoc --enable-experiment=null-safety .

oui j'ai un package simple avec

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

Et je lance dartdoc --enable-experiment=non-nullable (même erreur avec dartdoc --enable-experiment=null-safety ).

Vous pouvez voir l'échec sur mon flutter PR https://cirrus-ci.com/task/4975447580606464?command=main#L137

@srawlins avez-vous pu reproduire le problème ?

FWIW ce problème bloque la migration de flutter vers nullsafety

Cela bloque-t-il la migration ? Bloquer certains de ses aspects ? Avez-vous une solution de contournement à court terme?

Je n'ai pas été en mesure de reproduire cela lors de l'activation de la sécurité nulle via pubspec :

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

et analyse_options :

analyzer:
  enable-experiment:
    - non-nullable

et en utilisant dartdoc en tête, en exécutant dart en tête :

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

Je suis en train de sortir dartdoc, depuis un moment. Je vais également vérifier la version la plus récente.

Cela bloque-t-il la migration ? Bloquer certains de ses aspects ?

Oui, car le travail docs-linux échoue toujours. (Voir flutter/flutter#62157)

Avez-vous une solution de contournement à court terme?

Supprimer tous les late n'est pas vraiment une solution de contournement car il faudra ajouter ! et ? partout :-(

Le travail défaillant mentionne dartdoc version: 0.32.1 . Pourriez-vous vérifier que cette version déclenche le problème de votre côté ? Si vous voyez le problème, cela peut signifier qu'il a été corrigé à un moment donné et que la prochaine version résoudra le problème.

Je t'ai eu; J'espérais des drapeaux que nous pourrions passer à dartdoc (ou des drapeaux que nous pourrions omettre) qui nous permettraient de continuer en attendant.

@srawlins - Je pense qu'un correctif ici sera important pour permettre à la migration nnbd de progresser de manière générale.

Oui, il semble que je puisse reproduire cela sur 0.32.1, en utilisant Dart 2.10.0-dev.something. Il existe un 0.32.2 inédit qui pourrait fonctionner. Je vais essayer ça aussi.

Je peux reproduire en utilisant pub global run sur la balise git v0.32.2 et sur master. Je travaille sur la raison pub laquelle

Grattez ça. J'avais un // @dart=2.9 errant dans mon fichier de test (qui est maintenant _trop bas_ pour indiquer la sécurité Null).

Je ne peux pas reproduire l'erreur avec pub run dartdoc sur dartdoc 0.32.1, ni git branch v0.32.2, ni en tête.

FWIW, je ne vois pas --enable-experiment=non-nullable dans l'invocation dartdoc sur le bot Linux lié.

Je ne vois pas --enable-experiment=non-nullable dans votre lien cirrus, ni dans le dernier lien cirrus sur votre PR.

Bonne prise! Cela devrait régler le problème.

(Mais localement je ne sais vraiment pas ce que j'ai fait pour voir ce problème)

Faites-nous savoir si cela fonctionne. Je prévois de publier dartdoc demain matin, après qu'il ait été vérifié en interne.

L'ajout de --enable-experiment=non-nullable résolu le problème. Merci de votre aide.

Cette page vous a été utile?
0 / 5 - 0 notes