Dartdoc: 2 campos tardíos del mismo tipo dan lugar a error

Creado en 24 jul. 2020  ·  17Comentarios  ·  Fuente: dart-lang/dartdoc

Con 2 campos tardíos del mismo tipo como el siguiente código:

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

Error de salida de 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.

Con solo un campo tardío, no aparece ningún problema.

P1 bug

Todos 17 comentarios

FWIW, este problema está bloqueando la migración de flutter a nullsafety.

¿Dónde está el emoji con cara de vergüenza ... Qué error tan extraño. Veré esto hoy.

dartdoc no considera que su fuente esté habilitada para la función de seguridad nula. Hay como 17 razones por las que esto podría ser, jaja. ¿Puede comprobar lo siguiente?

  1. ¿El paquete está optado por seguridad nula a través de restricciones de SDK? Creo que esto podría involucrar 2.9 _o_ 2.10 dependiendo de la versión de Dart que esté utilizando.
  2. ¿El paquete ha optado por seguridad nula a través de analysis_options?
analyzer:
  enable-experiment:
    - non-nullable
  1. ¿Está ejecutando dartdoc con el experimento null-safety ? Si lo está invocando a través de pub, probablemente sea algo así como pub global run dartdoc --enable-experiment=null-safety .

sí, tengo un paquete simple con

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

Y ejecuto dartdoc --enable-experiment=non-nullable (el mismo error con dartdoc --enable-experiment=null-safety ).

Puede ver la falla en mi flutter PR https://cirrus-ci.com/task/4975447580606464?command=main#L137

@srawlins, ¿ha podido reproducir el problema?

FWIW, este problema está bloqueando la migración de flutter a nullsafety

¿Esto está bloqueando la migración? ¿Bloqueando algún aspecto de la misma? ¿Tiene una solución a corto plazo?

No he podido reproducir esto al optar por la seguridad nula a través de pubspec:

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

y opciones_análisis:

analyzer:
  enable-experiment:
    - non-nullable

y usando dartdoc en la cabecera, ejecutando dart en la cabecera:

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

Estoy en el proceso de lanzar dartdoc, ya que ha pasado un tiempo. También comprobaré la versión actual más reciente.

¿Esto está bloqueando la migración? ¿Bloqueando algún aspecto de la misma?

Sí, porque el trabajo de docs-linux siempre está fallando. (Ver aleteo / aleteo # 62157)

¿Tiene una solución a corto plazo?

Eliminar todo late no es realmente una solución porque deberá agregar ! y ? todas partes :-(

El trabajo fallido menciona dartdoc version: 0.32.1 . ¿Podrías comprobar que esta versión desencadena el problema de tu lado? Si ve el problema, podría significar que se ha solucionado en algún momento y la próxima versión resolverá el problema.

Entendido; Esperaba que algunas banderas pudiéramos pasar a dartdoc (o banderas que pudiéramos omitir) que nos permitieran continuar mientras tanto.

@srawlins : creo que una solución aquí será importante para permitir que la migración de nnbd progrese en general.

Sí, parece que puedo reproducir esto en 0.32.1, usando Dart 2.10.0-dev.something. Hay un 0.32.2 inédito que podría funcionar. Lo intentaré también.

Puedo reproducir usando pub global run en la etiqueta git v0.32.2 y en master. Estoy trabajando para ver por qué pub es el culpable.

Rasca eso. Tenía un // @dart=2.9 perdido en mi archivo de prueba (que ahora es _demasiado bajo_ para indicar seguridad nula).

No puedo reproducir el error con pub run dartdoc en dartdoc 0.32.1, ni git branch v0.32.2, ni en head.

FWIW, no veo --enable-experiment=non-nullable en la invocación de dartdoc en el bot linux vinculado.

No veo --enable-experiment=non-nullable en su enlace cirrus, ni en el último enlace cirrus en su PR.

¡Buena atrapada! Debería solucionar el problema.

(Pero a nivel local, realmente no sé qué hice para ver este problema)

Háganos saber si funciona. Planeo publicar dartdoc mañana por la mañana, después de que sea examinado internamente.

Agregar --enable-experiment=non-nullable solucionó el problema. Gracias por tu ayuda.

¿Fue útil esta página
0 / 5 - 0 calificaciones