Когда вы добавляете блок кода static mapping
в класс домена grails, подсветка содержимого и подсветка синтаксиса больше не работают для этого класса домена. Это не только влияет на файл класса домена .groovy, но и на остальную часть рабочей области.Набор инструментов Groovy Grails: блок кода статического отображения блокирует подсветку синтаксиса и поддержку содержимого
Шаги для воспроизведения:
- создать новый проект с двумя доменными классами
Test1
иTest2
, находящихся в том же пакете. - Добавьте следующий код:
Test1.groovy
package org.test
class Test1 {
Test2 someOtherObject
String someProperty
def doSomethingWithSomeProperty(){
someOtherObject.someMethod.replaceAll(/hello/, '$1 friend')
someProperty
}
}
Test1.groovy
package org.test
class Test2 {
String getSomeMethod(){
return 'hello'
}
}
Все должно работать нормально до сих пор. В Test1
someProperty и someMethod выделены синим цветом, так как оба они либо являются свойствами, либо неявно называются методом get.
Теперь, если добавить static mapping
блок кода в к Test2
, подсветка синтаксиса в someMethod
вызова в Test1
будет переходить от синего до черного курсивом. Кроме того, поддержка содержимого больше не работает; replaceAll подчеркивается, потому что someMethod
фактически не распознается.
Это уже ограничивает удобство использования, но если вы добавите еще один код static mapping
в код Test1
, метод Test
даже не будет распознан. Как только вы удаляете блок, все снова работает отлично.
Я назначил приоритет основным, потому что это значительно замедляет все рабочие процессы, хотя это может показаться тривиальным с первого взгляда. Опечатки происходят чаще, если у вас нет вспомогательной информации, рассказывающей об этом. Если это не серьезная ошибка, просто установите ее на меньшую.
Я уже подал заявку issue for that, но если кто-нибудь знает обходное решение, сообщите мне.
EDIT: К сожалению, я забыл добавить версию и операционной среды информация:
ОС: Windows 7 x64
IDE: Ггц 3.5.1
Grails: 2.4.x
РЕДАКТИРОВАТЬ 2: Не воспроизводится гранулами 1.3.7.
, если он просто не будет работать, если вы добавите ** пустой ** 'статический mapping', то просто не делайте этого. вы также можете показать нам точный код, который нарушает ваш идеал. – cfrick
Ну, конечно, статический блок сопоставления не пуст в моем случае использования. Но он уже разбивается на пустой блок, что означает, что не имеет значения, используется ли затронутая переменная/метод внутри. Вы пытались воспроизвести эту проблему? – nst1nctz
Я обновил свой вопрос, чтобы сделать его более понятным. Конечно, речь идет не только о пустом блоке. – nst1nctz