Skip to content

fix(core): resolve generic route compilation error on FPC 3.2.2#495

Merged
viniciussanchez merged 1 commit into
HashLoad:masterfrom
regyssilveira:fix/fpc-generics-compilation
Jul 4, 2026
Merged

fix(core): resolve generic route compilation error on FPC 3.2.2#495
viniciussanchez merged 1 commit into
HashLoad:masterfrom
regyssilveira:fix/fpc-generics-compilation

Conversation

@regyssilveira

Copy link
Copy Markdown
Contributor

Descrição

Este Pull Request resolve um erro de compilação no Free Pascal (FPC 3.2.2) que foi introduzido nas alterações recentes da API fluida de roteamento de grupos (issue #357).

🐛 Problema / Causa Raiz

Nas últimas alterações, o método Route em IHorseCoreGroup<T> foi modificado para retornar IHorseCoreRoute<IHorseCoreGroup<T>>.
O compilador do Free Pascal (FPC) apresenta incompatibilidade com a especialização de interfaces genéricas aninhadas quando o parâmetro genérico é uma interface ainda não especializada no próprio escopo, gerando o seguinte erro durante o build:
Horse.Core.Route.Contract.pas(18,77) Error: Generics cannot be used as parameters when specializing generics

🛠️ Solução Aplicada

Para restaurar a compatibilidade de compilação com FPC sem perder as melhorias de fluidez de roteamento no Delphi, isolamos o comportamento da classe genérica aninhada utilizando diretivas de compilação condicional:

  1. Assinaturas Condicionais de Retorno:
    • Sob a diretiva FPC, o método Route tanto em IHorseCoreGroup<T> quanto em THorseCoreGroup<T> retorna IHorseCoreRoute<T> (mantendo a compatibilidade retroativa estável).
    • Sob a diretiva Delphi, o método continua retornando IHorseCoreRoute<IHorseCoreGroup<T>> para manter o comportamento fluído premium.
  2. Isolamento de Classe: A nova classe THorseCoreGroupRoute<T> e suas implementações foram encapsuladas em blocos {$IFNDEF FPC}, evitando que o compilador do FPC tente processá-la e quebre a build.

🧪 Testes Realizados

  • Compilação com sucesso do container Docker de benchmark FPC (utilizando debian:bookworm-slim e FPC 3.2.2).
  • Compilação e execução corretas em Delphi no Linux 64-bit.

@viniciussanchez viniciussanchez merged commit 7081376 into HashLoad:master Jul 4, 2026
@regyssilveira regyssilveira deleted the fix/fpc-generics-compilation branch July 4, 2026 20:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants