eQuantic.UIeQuantic.UI
Docs
Playground
GitHub
START HERE
Getting Started
WRITE-ONCE
Write-Once Components
Declarative Surface
Photon Engine
Design System
Capabilities
Storage
Forms
Code Editor
Markdown
Mermaid
Email Rendering
ARCHITECTURE
Architecture Overview
Package Architecture
Components
Styling
Localization
Analytics & GTM
COMPILATION
Compiler
Compile-Time Evaluation
Supported C# Features
External Type Resolution
Build Flow
Diagnostics
RUNTIME
Runtime (TypeScript)
Performance
SERVER
Server Integration
Assets
BunPackage
Security
ECOSYSTEM
Image
Charts
Icons
Lottie
DEVELOPMENT
Visual Editor
Debug
Roadmap
PT-BR
Analytics-pt-BR
Architecture-pt-BR
Assets-pt-BR
BuildFlow-pt-BR
BunPackage-pt-BR
Capabilities-pt-BR
Charts-pt-BR
CodeEditor-pt-BR
Compiler-pt-BR
CompileTimeEvaluation-pt-BR
Components-pt-BR
Debug-pt-BR
DeclarativeSurface-pt-BR
DesignSystem-pt-BR
Diagnostics-pt-BR
EmailRealizer-pt-BR
ExternalTypeResolution-pt-BR
Forms-pt-BR
GettingStarted-pt-BR
Home-pt-BR
Icons-pt-BR
Image-pt-BR
Localization-pt-BR
Lottie-pt-BR
Markdown-pt-BR
Mermaid-pt-BR
PackageArchitecture-pt-BR
Performance-pt-BR
Photon-pt-BR
Roadmap-pt-BR
Runtime-pt-BR
Security-pt-BR
ServerIntegration-pt-BR
Storage-pt-BR
Styling-pt-BR
SupportedFeatures-pt-BR
VisualEditor-pt-BR
WriteOnceComponents-pt-BR
ACTIONS & INPUTS
Button
IconButton
TextInput
Select
Checkbox
Switch
RadioGroup
SegmentedControl
Slider
Stepper
SearchField
SURFACES & DISPLAY
Card
Badge
Chip
Avatar
Banner
ProgressBar
EmptyState
Divider
NAVIGATION
Tabs
AppBar
BottomNavigation
Breadcrumb
Pagination
PageIndicator
Menu
Drawer
OVERLAYS
Dialog
BottomSheet
Toast
Popover
Tooltip
LISTS & DATA
List
ListView
Table
Accordion
CodeBlock
TOUCH INTERACTION
PullToRefresh
SwipeableRow
Docspt-BR
Diagnósticos
Edit this page
7 min read
🌐 Esta página em: English · Português
Todo erro e aviso de build que o eqc pode imprimir, com o que significa e o que fazer. Os códigos são estáveis: são por eles que você busca, e são eles que uma supressão nomeia.
Esta página vem da mesma referência que o repositório confere: docs/DIAGNOSTICS.md, mantida contra o compilador por DiagnosticsDocumentedTests. Um código que o compilador levanta e não tem linha aqui quebra a build, assim como uma linha que nomeia um código que não existe mais — e assim também um código que ganha um novo ponto de emissão, o que não é regra de estilo: o EQ2101 já foi dois erros sem relação (um template resx divergente e System.IO num componente cliente), cada um fixado pelo seu próprio teste verde, porque os dois nunca se encontravam numa mesma compilação.
Os diagnósticos saem no formato canônico do MSBuild, então a IDE e o dotnet build linkam ambos:
1
Pages/Counter.cs(14,9): error EQ2002: C# 'goto' cannot be transpiled to JavaScript …
EQ0xxx — o host de build
O próprio processo eqc, antes ou em volta de uma compilação.
Código
Significado
O que fazer
EQ0000
Um erro de compilação chegou sem código próprio.
Leia a mensagem — o que falta é o código, não o diagnóstico.
EQ0001
O eqc quebrou.
É bug do compilador. A mensagem traz a exceção; reporte com o fonte que a provocou.
EQ0002
A lista de referências do MSBuild está vazia, então o modelo semântico viria de uma compilação incompleta e argumentos nomeados poderiam sair na ordem errada.
Reconstrua (dotnet build). Se persistir, o alvo CompileEQuanticUI rodou sem FindReferenceAssembliesForReferences.
EQ1xxx — a tradução ainda não existe
Uma lacuna do compilador, não do seu código. O construto é C# legal e poderia ser traduzido; hoje nada o faz. São os códigos que encolhem conforme o compilador cresce.
Código
Significado
O que fazer
EQ1001
Um tipo de expressão C# sem estratégia de transpilação.
Reescreva numa forma transpilável, ou adicione uma estratégia de conversão para o construto.
EQ1002
Um tipo de statement C# sem estratégia.
Idem.
EQ1003
Um C# (nem expressão nem statement) sem estratégia.
Idem.
EQ1004
Uma estratégia casou com o construto, mas esta forma exata não tem emissão — a tradução sairia silenciosamente errada, então ela para.
Reescreva a forma, ou adicione o caso que falta à estratégia.
EQ1005
Dois tipos dividem o mesmo nome de arquivo do twin — o mesmo nome duas vezes, ou dois nomes que diferem só em maiúsculas (um arquivo só no Windows e no macOS). Os twins seriam UM arquivo e o segundo sobrescreveria o primeiro.
Renomeie um dos tipos.
EQ1006
(aviso) Um tipo está declarado em mais de um lugar e o eqc emite um módulo por declaração, então o twin fica só com os membros da primeira.
Junte numa declaração só, ou mantenha juntos os membros que um componente usa. Inofensivo quando as outras metades são server-only, e é por isso que não para a build.
EQ2001–EQ2009 — o construto não atravessa
Não é lacuna: não há equivalente no browser, ou a tradução teria de ser um palpite. Estes não encolhem com trabalho no compilador — são o formato do alvo.
Código
Significado
O que fazer
EQ2001
Um construto C# sem equivalente em runtime no browser (intrínsecos de typed reference: __makeref, __reftype, __refvalue, stackalloc, ponteiros).
Reestruture sem ele.
EQ2002
goto.
Reestruture com laços e condicionais, ou um break/continue rotulado (esses TRADUZEM).
EQ2003
new T() sobre parâmetro de tipo — argumentos genéricos são apagados em runtime no JavaScript, então o tipo concreto é desconhecido.
Passe uma fábrica (Func<T>) ou o valor já construído.
EQ2004
Um membro sem tradução para JavaScript: um método de extensão cuja classe declarante não faz parte desta compilação, ou uma chamada que o transpilador não mapeia (Stopwatch.StartNew, Roslyn…) dentro de uma classe que ele espelha.
Use um membro de instância ou traga o fonte declarante; adicione uma estratégia; mova a chamada para trás de um [ServerAction]; ou, quando a classe inteira só roda no servidor, marque a CLASSE com [ServerOnly] e nenhum módulo é emitido para ela (próxima release).
EQ2005
Um iterador infinito. Iteradores são MATERIALIZADOS num array, então o laço rodaria para sempre em vez de render preguiçosamente.
Dê um fim ao laço (um limite, um yield break), ou consuma o que precisa dentro do método.
EQ2006
O membro não vincula no modelo semântico, então qualquer tradução seria palpite.
Ou o código não compila, ou faltam referências / fontes gerados ao eqc. Nunca é adivinhado — veja Compilador.
EQ2007
Um argumento with(…) de collection expression além da dica de capacidade — um array ou Set de JS não recebe comparador no construtor.
Remova o argumento, ou construa a coleção explicitamente.
EQ2008
Query syntax com join, let, um segundo from ou into — a tradução em C# passa por identificadores transparentes gerados pelo compilador. Também as formas cercadas de inicializador.
Reescreva em method syntax, onde todo operador é suportado.
EQ2009
Um componente declarado mais de uma vez num arquivo (declarações parciais). O eqc emite um módulo por declaração e não sabe fundi-las.
Junte os membros numa declaração só.
EQ2100–EQ2101 — templates resx
O contrato de localização, conferido na máquina de build em vez de quando um visitante chega.
Código
Significado
O que fazer
EQ2100
Sobre esta chamada: o template precisa ser um composite format válido cujos especificadores estejam dentro do subconjunto suportado, e a chamada precisa passar todos os buracos declarados.
Corrija a contagem de argumentos, ou tire o especificador fora do subconjunto (alinhamento como {0,10} está fora do v1).
EQ2101
Sobre as traduções: o resx de cada cultura é conferido contra o neutro, que é o contrato de aridade.
Corrija o template da cultura — um {n} a mais ou a menos quebra a build, não a página.
EQ2102–EQ2107, EQ2112 — a fronteira cliente/servidor
Um componente cliente buscou uma API que só existe num servidor. A ponte é [ServerAction].
Código
Significado
EQ2102
Acesso direto a banco (Microsoft.EntityFrameworkCore, System.Data).
EQ2103
Rede (System.Net.Http, System.Net.Sockets).
EQ2104
Threading e locking do SO (Thread, Monitor, Mutex, Semaphore — não Task).
EQ2105
Criação de processos (System.Diagnostics.Process).
EQ2106
Interop nativo / P-Invoke (System.Runtime.InteropServices).
EQ2107
Geração de IL em runtime (System.Reflection.Emit).
EQ2112
Acesso ao sistema de arquivos (System.IO).
O EQ2112 fica separado da família de propósito: System.IO era reportado como EQ2101 até esse código se revelar pertencente à checagem de resx acima, que a wiki já publicava. Não é um deslize de numeração para arrumar de volta.
EQ2108–EQ2111 — um significado por alvo, ou nenhum
O construto traduz, mas seria LIDO de forma diferente no servidor e no browser. Em vez de escolher por você, o eqc pergunta.
Código
Significado
O que fazer
EQ2108
Um CultureInfo que não é InvariantCulture nem CurrentCulture — só esses dois atravessam.
Formate com especificador explícito (ToString("N2") segue a cultura da app nos dois alvos), ou converta com a cultura invariante.
EQ2109
ToString(CultureInfo.CurrentCulture) sem especificador — o formato geral está fora do subconjunto de Intl testado.
Nomeie o formato: ToString("N2"), ToString("F1").
EQ2110
Um número fracionário convertido sem cultura nenhuma: o C# segue a cultura da request (vírgula, em pt) e o JavaScript é sempre invariante.
Diga qual você quer.
EQ2111
GetService sem argumento de tipo para atravessar — o registro é chaveado pelo NOME da interface, e aqui não há nada para chavear.
Chame a sobrecarga genérica.
EQ2113
O ConfigureAwait é descartado — só existe um contexto onde retomar — e descartá-lo jogaria fora um argumento NÃO-CONSTANTE sem avaliá-lo.
Passe uma constante, ou avalie a expressão numa variável local antes.
EQ3001–EQ3003 — o gerador de app Photon
Código
Significado
EQ3001
Uma app Photon sem programa.
EQ3002
Uma app Photon com mais de um programa.
EQ3003
A razão de uma capacidade precisa ser constante.
EQ3101–EQ3105 — os source generators
A superfície de factories gerada e os modelos de formulário.
Código
Significado
EQ3101
Um componente elege mais de um construtor de factory ([UiFactory]).
EQ3102
Dois componentes dividem o mesmo nome.
EQ3103
Uma propriedade de form model tem tipo que nenhuma caixa de texto comporta.
EQ3104
Um atributo de validação sem regra em que virar.
EQ3105
Um [Compare] nomeia uma propriedade que este formulário não tem.