Dartdoc: 2 campos atrasados ​​do mesmo tipo levam a erro

Criado em 24 jul. 2020  ·  17Comentários  ·  Fonte: dart-lang/dartdoc

Com 2 campos atrasados ​​do mesmo tipo, como o seguinte código:

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

dartdoc --enable-experiment=non-nullable erro de saída:

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.

Com apenas um campo atrasado, nenhum problema aparece.

P1 bug

Todos 17 comentários

FWIW, esse problema está bloqueando a migração de flutter para nullsafety.

Onde está o emoji de cara estranha ... Que inseto estranho. Vou olhar para isso hoje.

O dartdoc não vê sua fonte como optada pelo recurso de segurança nula. Existem 17 razões para isso, haha. Você pode verificar o seguinte:

  1. O pacote optou por segurança nula por meio de restrições do SDK? Acho que isso pode envolver 2,9 _ou_ 2,10, dependendo da versão do Dart que você está usando.
  2. O pacote optou por segurança nula por meio de analysis_options?
analyzer:
  enable-experiment:
    - non-nullable
  1. Você está executando o dartdoc com o experimento null-safety ? Se você está invocando-o através do pub, provavelmente é algo como pub global run dartdoc --enable-experiment=null-safety .

sim eu tenho um pacote simples com

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

E eu corro dartdoc --enable-experiment=non-nullable (mesmo erro com dartdoc --enable-experiment=null-safety ).

Você pode ver a falha em meu flutter PR https://cirrus-ci.com/task/4975447580606464?command=main#L137

@srawlins , você conseguiu reproduzir o problema?

FWIW, este problema está bloqueando a migração de flutter para nullsafety

Isso está bloqueando a migração? Bloqueando algum aspecto disso? Você tem uma solução alternativa a curto prazo?

Não consegui reproduzir isso ao optar por segurança nula via pubspec:

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

and analysis_options:

analyzer:
  enable-experiment:
    - non-nullable

e usando dartdoc na cabeça, executando dart na cabeça:

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

Estou no processo de lançar o dartdoc, já faz um tempo. Também verificarei a versão mais recente atual.

Isso está bloqueando a migração? Bloqueando algum aspecto disso?

Sim porque docs-linux job está sempre falhando. (Veja vibração / vibração # 62157)

Você tem uma solução alternativa a curto prazo?

Remover todos os late não é realmente uma solução alternativa, pois será necessário adicionar ! e ? todos os lugares :-(

O trabalho com falha menciona dartdoc version: 0.32.1 . Você poderia verificar se esta versão aciona o problema do seu lado? Se você vir o problema, pode significar que ele foi corrigido em algum momento e que a próxima versão resolverá o problema.

Peguei vocês; Eu esperava por algumas bandeiras que pudéssemos passar para o dartdoc (ou que pudéssemos omitir) que nos permitiriam prosseguir enquanto isso.

@srawlins - Acho que uma correção aqui será importante para permitir o progresso geral da migração do nnbd.

Sim, parece que posso reproduzir isso no 0.32.1, usando o Dart 2.10.0-dev.something. Existe um 0.32.2 não lançado que pode funcionar. Vou tentar isso também.

Posso reproduzir usando pub global run na tag v0.32.2 git e no master. Estou tentando descobrir por que pub é o culpado.

Risca isso. Eu tinha um extraviado // @dart=2.9 em meu arquivo de teste (que agora está _muito baixo_ para indicar segurança nula).

Não consigo reproduzir o erro com pub run dartdoc no dartdoc 0.32.1, nem no git branch v0.32.2, nem no head.

FWIW, não vejo --enable-experiment=non-nullable na invocação do dartdoc no bot linux vinculado.

Não vejo --enable-experiment=non-nullable em seu link cirrus, nem no último link cirrus em seu PR.

Boa pegada! Deve resolver o problema.

(Mas localmente eu realmente não sei o que fiz para ver esse problema)

Deixe-nos saber se isso funciona. Pretendo publicar o dartdoc amanhã de manhã, depois que for examinado internamente.

Adicionar --enable-experiment=non-nullable corrigiu o problema. Obrigado pela ajuda.

Esta página foi útil?
0 / 5 - 0 avaliações