-
Notifications
You must be signed in to change notification settings - Fork 105
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Директивы компиляции и аннотации в MethodSymbol #1198
Директивы компиляции и аннотации в MethodSymbol #1198
Conversation
# Conflicts: # src/main/java/com/github/_1c_syntax/bsl/languageserver/context/computer/MethodSymbolComputer.java # src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingSynchronousCallsDiagnostic.java # src/test/java/com/github/_1c_syntax/bsl/languageserver/context/computer/MethodSymbolComputerTest.java
@artbear приведи плиз к общему виду тесты в MethodSymbolComputerTest. Не используй: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Нужно привести тесты к общему виду.
...ain/java/com/github/_1c_syntax/bsl/languageserver/context/computer/MethodSymbolComputer.java
Outdated
Show resolved
Hide resolved
...java/com/github/_1c_syntax/bsl/languageserver/context/computer/MethodSymbolComputerTest.java
Outdated
Show resolved
Hide resolved
...java/com/github/_1c_syntax/bsl/languageserver/context/computer/MethodSymbolComputerTest.java
Outdated
Show resolved
Hide resolved
...java/com/github/_1c_syntax/bsl/languageserver/context/computer/MethodSymbolComputerTest.java
Outdated
Show resolved
Hide resolved
...ain/java/com/github/_1c_syntax/bsl/languageserver/context/computer/MethodSymbolComputer.java
Outdated
Show resolved
Hide resolved
.map(annotation -> annotation.getStop().getType()) | ||
.map(Annotation::of) | ||
.map(optionalAnnotation -> optionalAnnotation.orElse(null)) | ||
.filter(Objects::nonNull) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
лучше проверить на isPresent/isEmpty. тогда предыдущий шаг не нужен
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
сделано
import java.util.Optional; | ||
import java.util.stream.Stream; | ||
|
||
public enum Annotation { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
для аннотаций было бы еще полезно добавить информацию об имени аннотации (важно для custom) и списке ее параметров. т.е. превратить Annotation в AnnotationKind (как ты изначально предлагал в апи), и добавить дополнительный класс (возможно даже символ) Annotation.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
сделано.
- добавлена информация об имени аннотации и списке параметров
- выделены отдельные классы Annotation, AnnotationKind и AnnotationParameterDefinition
import java.util.Optional; | ||
import java.util.stream.Stream; | ||
|
||
public enum CompilerDirective { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
CompilerDirectiveKind
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
переименовал
...java/com/github/_1c_syntax/bsl/languageserver/context/computer/MethodSymbolComputerTest.java
Outdated
Show resolved
Hide resolved
//&НаСервереБезКонтекста | ||
//&НаКлиентеНаСервереБезКонтекста | ||
//аналогично | ||
//т.е. порядок этих 2х директив не важен, все равно используется &НаКлиентеНаСервереБезКонтекста. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
а ты проверял поведение на трех и более директивах?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@nixel2007 на 3х директивах проверял, падает с ошибками, совместимы только те, что в комментариях.
или ты про 3 и более, когда одинаковые директивы есть?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
про разные - да, понял. а вот про одинаковые - хорошо бы проверить.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Проверил одинаковые директивы.
-
Если полный дубль, например, пару &НаКлиенте и &НаКлиентеНаСервере продублировать 2 или более раз, ошибок не выдается.
-
если вставить любую другую директиву (один или более раз), то выдается синтакс-ошибка, как я показал в комментариях
-
для пар &НаСервереБезКонтекста и &МояНаСервереБезКонтекста поведение аналогично
т.е. все остается также и текущая реализация работает.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
тест для проверки также сделал
…-symbol-1115 # Conflicts: # src/test/java/com/github/_1c_syntax/bsl/languageserver/context/computer/MethodSymbolComputerTest.java
исправил замечания
рефакторинг классов
все тесты привел к общему виду. |
Спасибо! |
УРА, и этот долгострой приняли. теперь можно наконец-то делать правило, ради которого этот ПР создавался ) |
Описание
директивы компиляции и аннотации методов в MethodSymbol
Связанные задачи
Closes:#1115
Чеклист
Общие
gradlew precommit
)Дополнительно