Ao migrarmos dos groovy 1.7.8 (do grails 1.3.7) e 1.8.4 (projetos auxiliares) para o groovy 2.0.8 algumas mudanças de comportamentos foram detectadas:
-
Nome de variável
Antes era permitido nomes de variáveis começando com letra maiúscula, tipo "Nome". Hoje não é mais permitido.
O problema é apresentado apenas em execução, ao não encontrar a variável que se está tentando acessar, lançando
No such property: Nome for class: Classe
-
Tipos primitivos (boolean, long, int)
Antes era permitido utilizar não só os valores normais do tipo, mas também o valor null.
Hoje não é mais permitido para tipos primitivos, apenas para os objetos correspondentes, Boolean, Long e Integer.
O problema é apresentado apenas em execução, ao lançar
GroovyCastException: Cannot cast object 'null' with class 'null' to class 'long'. Try 'java.lang.Long' instead
Como consequência, métodos que utilizam tipo primitivo "metodo(long valor)" se forem chamados com "metodo(null)" lançam
No signature of method: Classe.metodo() is applicable for argument types: (null) values: [null]
sendo necessário atualizar métodos que precisam deste comportamento para "metodo(Long valor)