Pular para conteúdo

TLPP (TOTVS Language Plus Plus)

Status: parcial — afirmações verificadas, com lacunas declaradas. [n · F] remete à fonte n da 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 .th e arquivos .ch continuam aceitos.[13, 3 · F]
  • Para usar TLPP basta incluir tlpp-core.th; os includes vivem dentro do tlpp.rpo e só existem a partir da versão 01.02.02 do RPO.[25 · F]
  • Em .tlpp, função STATIC só é 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 de varJson['teste']['var1'].[14 · F]

Try / Catch / Finally

  • Em TLPP, uma exceção — implícita ou explícita — desvia imediatamente para o CATCH; diferente do BEGIN SEQUENCE, que só desvia com BREAK.[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; o THROW exige instância de ErrorClass ou de classe que herde dela.[4 · F]
  • FINALLY executa 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.