Olá, Eduardo.
Amigo, a linguagem Groovy é muito dinâmica. Logo o compilador raramente marca algo como erro, pois é muito comum a injeção de atributos e métodos em tempo de execução. Dai esse sublinhado apenas alerta "ei, isso não existe mas talvez venha a existir em runtime".
Porém se mandar o STS (melhor usar o GGTS, hein!) use o invocador de comando Grails e execute o "compile" que as vezes ele aponta alguns erros.
Abraços.
Bom dia Yoshi.
Obrigado pela resposta, mas estes erros ele não aponta com o 'compile'. Uma pena.
*Estou usando o GGTS.
Abs.
Então, Eduardo.
Como te disse. O Groovy (e consequentemente a IDE) não marca isso como erro pois não é um erro a principio. Como a linguagem e principalmente o framework Grails são muito dinâmicos, muitos métodos e atributos são injetados em tempo de execução.
Se essas coisas fossem marcadas como erro de compilação, seria uma linguagem altamente verbosa como o Java. Sei que isso as vezes atrapalha, mas é um preço a se pagar. Com o tempo acostuma e vê-se que isso não é um problema que desmereça a característica dinâmica do Groovy/Grails.
Mas com a evolução constante das IDEs, quem sabe numa nova versão passe a constar não um erro, mas um aviso mais explícito do tipo "método/atributo não encontrado e pode causar erro em Runtime".
Boa noite Yoshi.
Era exatamente o que pensei sobre a IDE, estou buscando alguma forma de pelo menos ele me mostrar um warning, sei lá. Pois se ele marca esta opção, ele certamente varre a Domain em busca o atributo, quem sabe programo um plugin, sei lá.
A minha aplicação está ficando robusta, e uma mudança destas acaba ficando difícil de encontrar as devidas chamadas do atributo. Complicado. Mas como disse, um preço a ser pago pelo dinamismo da linguagem, mas, ainda assim, é algo muito chato de lidar.
Abs e boa noite.
Fala Eduardo,
Temos que aproveitar que a ferramenta é aberta para contribuirmos com sua evolução e ajudar a todos que precisam dela.
Não sei se tem como habilitar de alguma forma o que você quer, mas seria interessante postar uma issue para a evolução do código no https://issuetracker.springsource.com/browse/STS#selectedTab=com.atlassian.jira.plugin.system.project%3Asummary-panel ou até para os mais experientes fazer um fork no projeto e dar um pull dessa alteração.
Por fim, hoje eu trabalho com o IntelliJ e esta tem se mostrado a mais poderosa em minha opinião. Quando me deparo no caso descrito por você a IDE sublinha o atributo ou método que não existe na classe com a seguinte descrição "Cannot find declaration to go to".
Espero ter ajudado.
Eduardo, verifica se as melhorias implementadas na versão 2.0 do Groovy pode te ajudar.
Dá uma olhada na sessão Static type checking do seguinte artigo para ver se te ajuda.
http://www.infoq.com/articles/new-groovy-20