TLPP (TOTVS Language Plus Plus)¶
Status: parcial — afirmações verificadas, com lacunas declaradas.
[n · F]remete à fontenda lista de fontes; a letra marca a procedência: F fato em fonte oficial TOTVS/TDN · S fonte secundária (blog, fórum) · unverified sem fonte que sustente.
Escopo desta seção¶
O que a linguagem é, o que ela acrescenta em relação ao AdvPL, a versão mínima de cada recurso e o tratamento de erro moderno. A matriz oficial TLPP × AdvPL é a peça central: ela diz o que é exclusivo de TLPP e o que as duas linguagens compartilham.
Extensão, includes e o que a linguagem é¶
- TLPP é a evolução do AdvPL; a extensão dos fontes é
.tlpp, os includes passam a usar.the arquivos.chcontinuam aceitos.[13, 3 · F] - Para usar TLPP basta incluir
tlpp-core.th; os includes vivem dentro dotlpp.rpoe só existem a partir da versão 01.02.02 do RPO.[25 · F] - Em
.tlpp, funçãoSTATICsó é acessível por funções ou métodos do mesmo fonte.[13 · F]
Matriz oficial TLPP × AdvPL¶
- A TDN publica uma matriz comparativa. São exclusivos de TLPP, marcados como proibidos em AdvPL: identificadores com nomes longos, namespace, annotation e reflection, tipagem de variáveis/funções/parâmetros, try-catch, parâmetros nomeados, json inline, classes com propriedades públicas/privadas/protegidas, métodos de objeto e métodos estáticos de classe, sobrecarga de operadores, interfaces abstratas e
StaticCall.[2 · F] - A mesma matriz lista o que as duas linguagens compartilham: escopo de variáveis local/private/public/static; escopo de funções function/static function/main function/user function; estruturas de controle if/else/while/for/case; blocos de código; macro-execução; acesso a base de dados; execução de jobs e processamento em threads; e error block.[2 · F]
- O blog oficial da TOTVS resume a mesma lista em prosa: nomes longos, namespaces, parâmetros nomeados, tipagem forte, orientação a objetos e tratamento de erros com try/catch.[33 · S]
Versão mínima por recurso¶
| Recurso | Versão mínima declarada | Fonte |
|---|---|---|
| Namespace | «O recurso de namespace foi liberado na versão 17.3.0.0 para a linguagem TLPP» | [41] |
| JSON inline | «Abrangência Versão 17.3.0.7 e superiores» | [14] |
| Parâmetros nomeados | «A partir da versão 20.3.2.0 do Application Server» | [43] |
| Motor de documentação REST (OpenAPI) | «a partir do tlppCore 01.04.02 + AppServer 20.3.1.10» | [5] |
MVC em fonte .tlpp |
«a partir do release 12.1.2410 o MVC já é suportado em TLPP» | [46] |
Includes do tlppCore (tlpp-core.th) |
«a partir da versão 01.02.02 do RPO (tlpp.rpo)» | [25] |
- Nomes iniciados por
tlpp.são reservados ao tlppCore; qualquer uso fora desse domínio é bloqueado em tempo de compilação.[41 · F] - Sintaxe do JSON inline com acesso por índice:
local varJson := {"teste": {"var1":"oioi"}} as json, seguido devarJson['teste']['var1'].[14 · F]
Try / Catch / Finally¶
- Em TLPP, uma exceção — implícita ou explícita — desvia imediatamente para o
CATCH; diferente doBEGIN SEQUENCE, que só desvia comBREAK.[4 · F] - A captura ocorre pela classe
ErrorClass(), que contém em seus parâmetros o conteúdo do erro informado.[4 · F] - Sintaxe completa:
TRY ... [THROW ...] CATCH ... FINALLY ... ENDTRY; oTHROWexige instância deErrorClassou de classe que herde dela.[4 · F] FINALLYexecuta com ou sem exceção lançada.[4 · F]
Lacunas declaradas¶
Lacuna: parâmetros variadic — nenhuma das duas lanes obteve fonte oficial que documente declaração, sintaxe ou limitações. Não afirmar nada sobre variadic neste wiki até nova coleta.
Lacuna: sobrecarga de operadores e interfaces abstratas aparecem na matriz[2] mas sem página própria coletada.
Fontes¶
[2] · [3] · [4] · [5] · [13] · [14] · [25] · [33] · [41] · [43] · [46] — ver lista completa.