Вариант языка проекта считается в одном месте - #4365
Conversation
`DocumentContext.getScriptVariantLanguage()` уже отвечает на вопрос «на каком языке писать в код пользователя» и используется для этого сворачиванием областей, автодополнением и quick fix'ом `EventHandlerInvalidSignature`. Рядом жили две копии того же расчёта: `GenerateStandardRegionsSupplier.getRegionsLanguage` и `EventHandlerOutsideEventRegionDiagnostic.scriptVariantOf`. Обе удалены. Побочно закрыта дыра: у копий не было отступного пути на `ScriptVariant.UNKNOWN`, который есть у канонического метода, — в неопознанной конфигурации области назывались по-русски независимо от языка проекта. Из диагностики вместе с расчётом ушла зависимость от `LanguageServerConfiguration`. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
📝 WalkthroughWalkthroughThe changes replace configuration-based script-variant selection with document-derived language selection for standard regions and event-handler diagnostics. Region lookup now accepts ChangesDocument-derived region language
Estimated code review effort: 2 (Simple) | ~10 minutes Possibly related PRs
Suggested reviewers: 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
🧹 Nitpick comments (1)
src/main/java/com/github/_1c_syntax/bsl/languageserver/codeactions/GenerateStandardRegionsSupplier.java (1)
83-86: 🎯 Functional Correctness | 🔵 Trivial | ⚡ Quick winAdd regression coverage for both language consumers.
Test a project language that differs from the server UI language and test
ScriptVariant.UNKNOWN. Assert generated region names and#Region/#EndRegiondirectives. Also assert thatEventHandlerOutsideEventRegionDiagnosticmessages and quick fixes use the same language.The supplied
GenerateStandardRegionsSupplierTestasserts only the action title. It does not protect this changed output.As per coding guidelines, always run tests before submitting changes and maintain or improve test coverage using appropriate test frameworks.
Based on the supplied test context, the visible assertion covers only the code-action title.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@src/main/java/com/github/_1c_syntax/bsl/languageserver/codeactions/GenerateStandardRegionsSupplier.java` around lines 83 - 86, Add regression tests in GenerateStandardRegionsSupplierTest for a project language differing from the server UI language and for ScriptVariant.UNKNOWN. Assert generated region names and `#Region/`#EndRegion directives, and verify EventHandlerOutsideEventRegionDiagnostic messages and quick fixes use that same language, not just the action title; run the relevant tests before submission.Source: Coding guidelines
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Nitpick comments:
In
`@src/main/java/com/github/_1c_syntax/bsl/languageserver/codeactions/GenerateStandardRegionsSupplier.java`:
- Around line 83-86: Add regression tests in GenerateStandardRegionsSupplierTest
for a project language differing from the server UI language and for
ScriptVariant.UNKNOWN. Assert generated region names and `#Region/`#EndRegion
directives, and verify EventHandlerOutsideEventRegionDiagnostic messages and
quick fixes use that same language, not just the action title; run the relevant
tests before submission.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro Plus
Run ID: fa09135b-cd4d-43e5-b107-677ec30d1c35
📒 Files selected for processing (3)
src/main/java/com/github/_1c_syntax/bsl/languageserver/codeactions/GenerateStandardRegionsSupplier.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/EventHandlerOutsideEventRegionDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/EventHandlerTargetRegion.java
|



По замечанию ревьюера в #4347: «кажется, этот расчёт уже где-то есть». Есть — и даже дважды.
DocumentContext.getScriptVariantLanguage()отвечает ровно на этот вопрос: на каком языке писать в код пользователя. Им уже пользуются сворачивание областей (RegionFoldingRangeSupplier— буквально словоОбласть/Region),CodeBlockFoldingRangeSupplier, автодополнение и quick fixEventHandlerInvalidSignatureDiagnostic.Рядом с ним жили две копии того же правила:
GenerateStandardRegionsSupplier.getRegionsLanguageEventHandlerOutsideEventRegionDiagnostic.scriptVariantOfОбе удалены, оба места зовут канонический метод.
Побочно закрытая дыра
У копий не было отступного пути на
ScriptVariant.UNKNOWN, который есть уgetScriptVariantLanguage().MultiName.get(ScriptVariant)трактует всё, кромеENGLISH, как русский, поэтому в конфигурации с неопознанным вариантом языка области назывались по-русски независимо от языка проекта. Теперь там язык интерфейса сервера — как и задумано.Мелочи
ScriptVariantостался нуженGenerateStandardRegionsSupplier: его требует APIRegions. На месте вызова это одна строка-переходникScriptVariant.valueByName(...getLanguageCode())— приведение типа, а не расчёт правила.Из диагностики вместе с расчётом ушла зависимость от
LanguageServerConfiguration: она была нужна только ради него.Итог: −46 строк, +17.
🤖 Generated with Claude Code
Summary by CodeRabbit