Это то, как разбирается заводной. Поскольку точки с запятой в конце операторов являются необязательными, символы новой строки иногда имеют значение.
getAAA () анализируется как два оператора, например:
static String getAAA() {
return "";
+"${aaa}";
}
Хотя унарный оператор +
не имеет смысла со строковым аргументом, groovy не может его уловить из-за его динамической природы. В строке может быть мета-метод postive()
, который сделает его действительным.
EDIT:
Чтобы лучше понять, что происходит, запустите groovyConsole
и загрузите свой скрипт. Выберите «Проверить AST» в меню «Сценарий». Вы увидите что-то вроде этого: