-
Notifications
You must be signed in to change notification settings - Fork 121
Новые Антлр и парсер. Отказ от BSLParserRuleContext #3610
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
Conversation
WalkthroughGeneralize code from BSL-specific Changes
Sequence Diagram(s)sequenceDiagram
participant Caller as Project code / callers
participant TreesAPI as ANTLR Trees
Note over Caller,TreesAPI `#DFF2E1`: Many helpers now delegate to ANTLR Trees
Caller->>TreesAPI: Trees.findAllRuleNodes(parseTree, ruleIndices...)
TreesAPI-->>Caller: Collection<ParserRuleContext>
Caller->>TreesAPI: Trees.getAncestor(node, ruleIndex)
TreesAPI-->>Caller: ParserRuleContext
Caller->>TreesAPI: Trees.getTokens(tree)
TreesAPI-->>Caller: List<Token>
Estimated code review effort🎯 4 (Complex) | ⏱️ ~60 minutes Areas to focus review on:
Possibly related PRs
Suggested reviewers
Poem
Pre-merge checks and finishing touches❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✨ Finishing touches
🧪 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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 2
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (3)
src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingHardcodeSecretInformationDiagnostic.java (1)
225-230: Verifyctx.getRuleContext()call after migration to generic ParserRuleContext.Line 226 has the same issue as line 200: it calls
ctx.getRuleContext()on aParserRuleContextobject. This method likely doesn't exist in the standard ANTLR4ParserRuleContext.- ParserRuleContext assignment = Trees.getAncestorByRuleIndex(ctx.getRuleContext(), type); + ParserRuleContext assignment = Trees.getAncestorByRuleIndex(ctx, type);src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/RefOveruseDiagnostic.java (1)
115-133: Возможный NPE при использованииTrees.getRootParent(..., EXCLUDED_COLUMNS_ROOT)без проверки наnullВ фильтре:
.filter(parserRuleContext -> Trees.getRootParent(parserRuleContext, EXCLUDED_COLUMNS_ROOT) .getRuleIndex() == SDBLParser.RULE_query)
Trees.getRootParentпомечен как@Nullableи по доке может вернутьnull, если предок с одним из заданных типов не найден. В этом случае вызовgetRuleIndex()приведёт к NPE. Это особенно вероятно на некорректном/обрезанном SDBL-коде, где дерево не полностью соответствует грамматике — диагностика при этом просто упадёт.Имеет смысл сделать фильтр устойчивым, например:
.filter(parserRuleContext -> { var root = Trees.getRootParent(parserRuleContext, EXCLUDED_COLUMNS_ROOT); return root != null && root.getRuleIndex() == SDBLParser.RULE_query; })Так сохранится текущая логика, но диагностика станет толерантной к повреждённым деревьям или будущим изменениям грамматики.
src/main/java/com/github/_1c_syntax/bsl/languageserver/utils/Trees.java (1)
292-315: Add defensive type guard and document custom ANTLR dependencyThe review comment raises valid concerns:
Line 294:
tree.getTokens()is not a standard ANTLRParserRuleContextmethod. The codebase contains only a staticTrees.getTokens(ParseTree)utility. This confirms the method depends on a custom extendedParserRuleContextimplementation.Line 314: The cast
(ParserRuleContext) childlacks aninstanceofguard. SinceTrees.getChildren()returns a genericList<Tree>, and onlyTerminalNodeinstances are checked withinstanceof, non-TerminalNodechildren could theoretically be otherTreeimplementations, causing an uncheckedClassCastException.Recommendations confirmed:
- Add
instanceof ParserRuleContextcheck before casting at line 314 to prevent runtime exceptions- Add Javadoc stating that this method requires the project's custom
ParserRuleContextwithgetTokens()implementationThese are defensive coding improvements that guard against future ANTLR modifications or unexpected tree structures.
🧹 Nitpick comments (5)
src/main/java/com/github/_1c_syntax/bsl/languageserver/context/computer/CyclomaticComplexityComputer.java (1)
237-252: Переход cBSLParserRuleContextнаParserRuleContextвflattenExpressionкорректен; можно чуть упростить кодЛогика не меняется: обрабатываются только те дочерние узлы, которые реально являются
MemberContextилиOperationContext, так что отказ отBSLParserRuleContextздесь безопасен и соответствует целям PR.Как необязательный микро‑рефактор можно избавиться от промежуточного
ParserRuleContext parserRuleи самого импорта, матчаясь сразу по нужным типам:- for (Tree tree : children) { - if (!(tree instanceof ParserRuleContext parserRule)) { - continue; - } - - if (parserRule instanceof BSLParser.MemberContext memberContext) { + for (Tree tree : children) { + if (tree instanceof BSLParser.MemberContext memberContext) { flattenMember(result, memberContext); - } else if (parserRule instanceof BSLParser.OperationContext operationContext) { + } else if (tree instanceof BSLParser.OperationContext operationContext) { flattenOperation(result, operationContext); } }Это не обязательно, но немного упрощает чтение.
src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UnreachableCodeDiagnostic.java (1)
143-143: Use lowercase variable name to avoid shadowing the class.The lambda parameter
ParserRuleContextshadows the imported class name, reducing readability.Apply this diff to use conventional lowercase naming:
- .sorted(Comparator.comparingInt(ParserRuleContext -> ParserRuleContext.getStart().getLine())) + .sorted(Comparator.comparingInt(ctx -> ctx.getStart().getLine()))src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/ParseErrorDiagnostic.java (1)
32-76: ParserRuleContext migration here looks correct; optional safety tweak possibleThe new import on line 32 and the casts/usages on lines 60, 74–75 are consistent with moving off
BSLParserRuleContextand relying on plainParserRuleContext. You only use members provided byParserRuleContext(getStart,exception), so behavior should stay the same with the updated parser.The cast in
visitErrorNodekeeps the previous assumption thatnode.getParent()is always a rule context, so the risk profile (CCE if that ever changes) is unchanged relative to the oldBSLParserRuleContextcast.Optionally, you could make the stream in
enterFilea bit more defensive by filtering directly oninstanceof ParserRuleContextinstead of!(parseTree instanceof TerminalNodeImpl)before casting, but with a standard ANTLR tree this is equivalent and not required.Please re‑run the test suite that covers parsing/diagnostics after the ANTLR & parser bump to ensure no unexpected
ClassCastExceptionappears around these casts.src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/NestedStatementsDiagnostic.java (1)
34-35: ParserRuleContext migration here looks correct; consider tightening types to drop casts
- The switch of
enterNode,exitNode, andaddRelatedInformationDiagnostictoParserRuleContextaligns with the ANTLR API and is type‑safe given all callers passBSLParser.*StatementContextinstances. Thectx == lastCtxcheck and stack operations still behave as before, so the nesting logic remains correct.- Since
nestedParentsis only ever populated viaenterNode(ctx)andctxis now aParserRuleContext, the elements innestedParentsare effectively alwaysParserRuleContext. You can simplify the code and gain static type‑safety by changing the fields and stream types, which also removes the explicit cast at Line 152:- private ParseTree lastCtx; - private final Deque<ParseTree> nestedParents = new ArrayDeque<>(); + private ParserRuleContext lastCtx; + private final Deque<ParserRuleContext> nestedParents = new ArrayDeque<>(); @@ - private void enterNode(ParserRuleContext ctx) { - lastCtx = ctx; - nestedParents.push(ctx); - } + private void enterNode(ParserRuleContext ctx) { + lastCtx = ctx; + nestedParents.push(ctx); + } @@ - private void exitNode(ParserRuleContext ctx) { + private void exitNode(ParserRuleContext ctx) { @@ - nestedParents.stream() + nestedParents.stream() .filter(node -> node != ctx) .map(expressionContext -> RelatedInformation.create( documentContext.getUri(), - Ranges.create(((ParserRuleContext) expressionContext).getStart()), + Ranges.create(expressionContext.getStart()), relatedMessage ) )(After this,
ParseTreeimport becomes unnecessary and can be dropped by your usual cleanup.)
- One thing to double‑check outside this diff: if
Ranges.create(Token)behaves differently from any previousRanges.create(BSLParserRuleContext)overload, please confirm that usingctx.getStart()for both the primary and related locations is the intended highlighting behaviour for this diagnostic.Also applies to: 124-159
src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/DuplicatedInsertionIntoCollectionDiagnostic.java (1)
85-91: Переход наParserRuleContextдля breakers и модификаторов в целом корректен, есть небольшой читабельный нюансЧто изменилось:
blockBreakersтеперьList<ParserRuleContext>, инициализируется черезList.copyOf(Trees.findAllRuleNodes(codeBlock, BREAKERS_INDEXES))— ленивость и семантика сохранены, плюс список стал немодифицируемым.hasBreakersBetweenCallsиhasBreakerIntoCodeBlockработают сParserRuleContext, используяgetRuleIndex()иRanges.create(...)так же, как раньше с BSL‑контекстом.- В
usedIdentifiers/getFullIdentifierмаппинг заменён наParserRuleContext::getText, что естественно для потомковParserRuleContext.Единственный момент: в лямбде
.filter(ParserRuleContext -> Ranges.containsRange(border, Ranges.create(ParserRuleContext)))имя параметра
ParserRuleContextс заглавной буквы визуально путается с типом. Лучше переименовать в что‑то вродеbreakerContext:.filter(breakerContext -> Ranges.containsRange(border, Ranges.create(breakerContext)))Это не влияет на поведение, но делает код понятнее.
Also applies to: 262-269, 324-329, 373-377
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (68)
build.gradle.kts(1 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/aop/measures/DocumentContextLazyDataMeasurer.java(0 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/BasicBlockVertex.java(1 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/CfgBuildingParseTreeVisitor.java(2 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/CfgVertex.java(1 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/ConditionalVertex.java(2 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/ForLoopVertex.java(2 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/ForeachLoopVertex.java(2 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/PreprocessorConditionVertex.java(2 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/StatementsBlockWriter.java(3 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/TryExceptVertex.java(2 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/WhileLoopVertex.java(2 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/codeactions/ExtractStructureConstructorSupplier.java(2 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/context/computer/CognitiveComplexityComputer.java(3 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/context/computer/CyclomaticComplexityComputer.java(2 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/context/computer/MethodSymbolComputer.java(2 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/context/computer/VariableSymbolComputer.java(3 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/context/symbol/SymbolTree.java(3 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/context/symbol/description/DescriptionReader.java(2 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/AbstractFindMethodDiagnostic.java(2 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/AllFunctionPathMustHaveReturnDiagnostic.java(5 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/BeginTransactionBeforeTryCatchDiagnostic.java(2 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CodeOutOfRegionDiagnostic.java(3 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CognitiveComplexityDiagnostic.java(2 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CommitTransactionOutsideTryCatchDiagnostic.java(2 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CreateQueryInCycleDiagnostic.java(2 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CyclomaticComplexityDiagnostic.java(2 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/DataExchangeLoadingDiagnostic.java(1 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/DeprecatedAttributes8312Diagnostic.java(2 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/DiagnosticStorage.java(6 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/DuplicateStringLiteralDiagnostic.java(4 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/DuplicatedInsertionIntoCollectionDiagnostic.java(6 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/FieldsFromJoinsWithoutIsNullDiagnostic.java(6 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/FunctionOutParameterDiagnostic.java(2 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/FunctionReturnsSamePrimitiveDiagnostic.java(2 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/IncorrectUseLikeInQueryDiagnostic.java(2 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/IncorrectUseOfStrTemplateDiagnostic.java(3 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/IsInRoleMethodDiagnostic.java(2 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/MagicDateDiagnostic.java(4 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/MagicNumberDiagnostic.java(3 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/MissedRequiredParameterDiagnostic.java(2 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/MissingCommonModuleMethodDiagnostic.java(2 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/MissingTemporaryFileDeletionDiagnostic.java(3 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/NestedFunctionInParametersDiagnostic.java(2 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/NestedStatementsDiagnostic.java(3 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/NestedTernaryOperatorDiagnostic.java(2 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/ParseErrorDiagnostic.java(3 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/RefOveruseDiagnostic.java(1 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/ServerCallsInFormEventsDiagnostic.java(1 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/TypoDiagnostic.java(0 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UnreachableCodeDiagnostic.java(7 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UnsafeSafeModeMethodCallDiagnostic.java(3 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsageWriteLogEventDiagnostic.java(6 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingCancelParameterDiagnostic.java(2 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingExternalCodeToolsDiagnostic.java(2 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingHardcodeNetworkAddressDiagnostic.java(2 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingHardcodeSecretInformationDiagnostic.java(2 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingObjectNotAvailableUnixDiagnostic.java(2 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingThisFormDiagnostic.java(2 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/folding/QueryCommentFoldingRangeSupplier.java(1 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/folding/QueryPackageFoldingRangeSupplier.java(1 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/infrastructure/CacheConfiguration.java(1 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/inlayhints/SourceDefinedMethodCallInlayHintSupplier.java(2 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/providers/SelectionRangeProvider.java(6 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/references/AnnotationReferenceFinder.java(5 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/references/ReferenceIndexFiller.java(13 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/utils/MultilingualStringAnalyser.java(3 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/utils/Trees.java(15 hunks)
💤 Files with no reviewable changes (2)
- src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/TypoDiagnostic.java
- src/main/java/com/github/_1c_syntax/bsl/languageserver/aop/measures/DocumentContextLazyDataMeasurer.java
🧰 Additional context used
🧠 Learnings (9)
📓 Common learnings
Learnt from: theshadowco
Repo: 1c-syntax/bsl-language-server PR: 3555
File: src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/RewriteMethodParameterDiagnostic.java:163-166
Timestamp: 2025-10-27T08:05:10.072Z
Learning: В проекте bsl-language-server используется собственная версия ANTLR4, в которой интерфейс TerminalNode переопределяет метод getParent() с возвращаемым типом RuleNode вместо ParseTree (как в стандартной версии ANTLR4).
📚 Learning: 2025-10-27T08:05:10.072Z
Learnt from: theshadowco
Repo: 1c-syntax/bsl-language-server PR: 3555
File: src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/RewriteMethodParameterDiagnostic.java:163-166
Timestamp: 2025-10-27T08:05:10.072Z
Learning: В проекте bsl-language-server используется собственная версия ANTLR4, в которой интерфейс TerminalNode переопределяет метод getParent() с возвращаемым типом RuleNode вместо ParseTree (как в стандартной версии ANTLR4).
Applied to files:
src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/RefOveruseDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/MissingCommonModuleMethodDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/ParseErrorDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/context/computer/CyclomaticComplexityComputer.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/AbstractFindMethodDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UnsafeSafeModeMethodCallDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/BasicBlockVertex.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/context/computer/MethodSymbolComputer.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/context/computer/CognitiveComplexityComputer.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/BeginTransactionBeforeTryCatchDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CodeOutOfRegionDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/FunctionReturnsSamePrimitiveDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/CfgBuildingParseTreeVisitor.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/references/AnnotationReferenceFinder.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/IsInRoleMethodDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/ForLoopVertex.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/IncorrectUseLikeInQueryDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/codeactions/ExtractStructureConstructorSupplier.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/NestedStatementsDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/TryExceptVertex.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/ConditionalVertex.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/DeprecatedAttributes8312Diagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/AllFunctionPathMustHaveReturnDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/StatementsBlockWriter.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/folding/QueryCommentFoldingRangeSupplier.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingExternalCodeToolsDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingCancelParameterDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/MagicDateDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CommitTransactionOutsideTryCatchDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/PreprocessorConditionVertex.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/DuplicatedInsertionIntoCollectionDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/providers/SelectionRangeProvider.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/context/symbol/SymbolTree.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingObjectNotAvailableUnixDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/NestedTernaryOperatorDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingThisFormDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UnreachableCodeDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/IncorrectUseOfStrTemplateDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingHardcodeSecretInformationDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/WhileLoopVertex.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/inlayhints/SourceDefinedMethodCallInlayHintSupplier.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/folding/QueryPackageFoldingRangeSupplier.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/MagicNumberDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/MissedRequiredParameterDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CognitiveComplexityDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/DiagnosticStorage.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CyclomaticComplexityDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/MissingTemporaryFileDeletionDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/FunctionOutParameterDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/ForeachLoopVertex.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/FieldsFromJoinsWithoutIsNullDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/context/computer/VariableSymbolComputer.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/utils/Trees.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/DuplicateStringLiteralDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/references/ReferenceIndexFiller.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingHardcodeNetworkAddressDiagnostic.java
📚 Learning: 2025-04-18T22:46:43.245Z
Learnt from: nixel2007
Repo: 1c-syntax/bsl-language-server PR: 3449
File: src/main/java/com/github/_1c_syntax/bsl/languageserver/utils/expressiontree/ExpressionTreeBuildingVisitor.java:192-203
Timestamp: 2025-04-18T22:46:43.245Z
Learning: В проекте bsl-language-server класс BSLParser.ExpressionContext наследуется от BSLParserRuleContext, а не напрямую от ParserRuleContext. При работе с ним нужно учитывать специфичные методы BSLParserRuleContext.
Applied to files:
src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/RefOveruseDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/MissingCommonModuleMethodDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/ParseErrorDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/context/computer/CyclomaticComplexityComputer.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/AbstractFindMethodDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UnsafeSafeModeMethodCallDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/context/symbol/description/DescriptionReader.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/context/computer/MethodSymbolComputer.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/context/computer/CognitiveComplexityComputer.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/BeginTransactionBeforeTryCatchDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CodeOutOfRegionDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CreateQueryInCycleDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/FunctionReturnsSamePrimitiveDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/CfgBuildingParseTreeVisitor.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/references/AnnotationReferenceFinder.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/IsInRoleMethodDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/ForLoopVertex.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/IncorrectUseLikeInQueryDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/utils/MultilingualStringAnalyser.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/codeactions/ExtractStructureConstructorSupplier.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/NestedStatementsDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/TryExceptVertex.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/ConditionalVertex.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/DeprecatedAttributes8312Diagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/AllFunctionPathMustHaveReturnDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/StatementsBlockWriter.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/folding/QueryCommentFoldingRangeSupplier.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingExternalCodeToolsDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingCancelParameterDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/MagicDateDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CommitTransactionOutsideTryCatchDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/PreprocessorConditionVertex.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/DuplicatedInsertionIntoCollectionDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/providers/SelectionRangeProvider.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/context/symbol/SymbolTree.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingObjectNotAvailableUnixDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/NestedTernaryOperatorDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingThisFormDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UnreachableCodeDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/IncorrectUseOfStrTemplateDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingHardcodeSecretInformationDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/WhileLoopVertex.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/inlayhints/SourceDefinedMethodCallInlayHintSupplier.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/folding/QueryPackageFoldingRangeSupplier.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/MagicNumberDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/MissedRequiredParameterDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CognitiveComplexityDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/DiagnosticStorage.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CyclomaticComplexityDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/MissingTemporaryFileDeletionDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/FunctionOutParameterDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/ForeachLoopVertex.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/FieldsFromJoinsWithoutIsNullDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/context/computer/VariableSymbolComputer.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/NestedFunctionInParametersDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/utils/Trees.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/DuplicateStringLiteralDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/references/ReferenceIndexFiller.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingHardcodeNetworkAddressDiagnostic.java
📚 Learning: 2025-01-19T20:47:40.061Z
Learnt from: nixel2007
Repo: 1c-syntax/bsl-language-server PR: 3388
File: src/main/java/com/github/_1c_syntax/bsl/languageserver/configuration/codelens/TestRunnerAdapterOptions.java:46-46
Timestamp: 2025-01-19T20:47:40.061Z
Learning: Configuration classes in the BSL Language Server project use mutable collections (HashMap, ArrayList) and Data annotation from Lombok, allowing for modification of configuration properties after initialization.
Applied to files:
src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/RefOveruseDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/infrastructure/CacheConfiguration.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CreateQueryInCycleDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/ForLoopVertex.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/TryExceptVertex.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/StatementsBlockWriter.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/ForeachLoopVertex.java
📚 Learning: 2025-02-10T17:13:41.452Z
Learnt from: theshadowco
Repo: 1c-syntax/bsl-language-server PR: 3408
File: src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/ProtectedModuleDiagnostic.java:54-58
Timestamp: 2025-02-10T17:13:41.452Z
Learning: In ProtectedModuleDiagnostic.java, the usage of `Range` field as a diagnostic target is accepted as is, despite being marked as a temporary solution in the comments.
Applied to files:
src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CodeOutOfRegionDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/FunctionReturnsSamePrimitiveDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsageWriteLogEventDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/ServerCallsInFormEventsDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UnreachableCodeDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/DiagnosticStorage.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/MissingTemporaryFileDeletionDiagnostic.java
📚 Learning: 2024-12-27T17:03:11.817Z
Learnt from: nixel2007
Repo: 1c-syntax/bsl-language-server PR: 3364
File: src/main/java/com/github/_1c_syntax/bsl/languageserver/references/AnnotationReferenceFinder.java:125-127
Timestamp: 2024-12-27T17:03:11.817Z
Learning: В методе `findAnnotation` класса `AnnotationReferenceFinder` уже проверяется, что у аннотации ровно один параметр, поэтому в `getAnnotationName` не требуется отдельная проверка на пустой список.
Applied to files:
src/main/java/com/github/_1c_syntax/bsl/languageserver/references/AnnotationReferenceFinder.java
📚 Learning: 2024-07-04T19:35:26.747Z
Learnt from: nixel2007
Repo: 1c-syntax/bsl-language-server PR: 3308
File: src/test/resources/diagnostics/DoubleNegativesDiagnostic.bsl:20-21
Timestamp: 2024-07-04T19:35:26.747Z
Learning: The file `DoubleNegativesDiagnostic.bsl` is a test resource intended to demonstrate the functionality of the DoubleNegatives diagnostic.
Applied to files:
src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/IsInRoleMethodDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/IncorrectUseLikeInQueryDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/MagicDateDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/NestedTernaryOperatorDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/IncorrectUseOfStrTemplateDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/MagicNumberDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/MissingTemporaryFileDeletionDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/NestedFunctionInParametersDiagnostic.java
📚 Learning: 2025-02-10T17:12:56.150Z
Learnt from: nixel2007
Repo: 1c-syntax/bsl-language-server PR: 3408
File: src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/ProtectedModuleDiagnostic.java:63-66
Timestamp: 2025-02-10T17:12:56.150Z
Learning: In BSL Language Server, `documentContext.getServerContext().getConfiguration()` is guaranteed to return a non-null value, making null checks unnecessary.
Applied to files:
src/main/java/com/github/_1c_syntax/bsl/languageserver/folding/QueryCommentFoldingRangeSupplier.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/folding/QueryPackageFoldingRangeSupplier.java
📚 Learning: 2025-04-18T22:42:30.042Z
Learnt from: nixel2007
Repo: 1c-syntax/bsl-language-server PR: 3449
File: src/main/java/com/github/_1c_syntax/bsl/languageserver/utils/expressiontree/ExpressionTreeBuildingVisitor.java:88-97
Timestamp: 2025-04-18T22:42:30.042Z
Learning: В реализации ANTLR, если метод `getChildCount()` возвращает значение больше 0, то поле `children` гарантированно не равно null.
Applied to files:
src/main/java/com/github/_1c_syntax/bsl/languageserver/utils/Trees.java
🧬 Code graph analysis (2)
src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/ConditionalVertex.java (1)
src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/PreprocessorConditionVertex.java (1)
EqualsAndHashCode(30-46)
src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/PreprocessorConditionVertex.java (1)
src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/ConditionalVertex.java (1)
EqualsAndHashCode(30-66)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (20)
- GitHub Check: build (17, macOS-latest)
- GitHub Check: build (25, windows-latest)
- GitHub Check: build (21, macOS-latest)
- GitHub Check: build (21, windows-latest)
- GitHub Check: build (17, ubuntu-latest)
- GitHub Check: build (21, ubuntu-latest)
- GitHub Check: build (17, windows-latest)
- GitHub Check: Benchmark
- GitHub Check: Analyse
- GitHub Check: build
- GitHub Check: build (25, ubuntu-latest)
- GitHub Check: build (25, macOS-latest)
- GitHub Check: build (25, windows-latest)
- GitHub Check: build (21, windows-latest)
- GitHub Check: build (21, macOS-latest)
- GitHub Check: build (17, windows-latest)
- GitHub Check: build (17, macOS-latest)
- GitHub Check: build (17, ubuntu-latest)
- GitHub Check: build (21, ubuntu-latest)
- GitHub Check: build
...thub/_1c_syntax/bsl/languageserver/diagnostics/UsingHardcodeSecretInformationDiagnostic.java
Show resolved
Hide resolved
.../java/com/github/_1c_syntax/bsl/languageserver/folding/QueryPackageFoldingRangeSupplier.java
Show resolved
Hide resolved
...ava/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingCancelParameterDiagnostic.java
Outdated
Show resolved
Hide resolved
5f8af39 to
630e45f
Compare
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.
Actionable comments posted: 0
🧹 Nitpick comments (1)
src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingHardcodeNetworkAddressDiagnostic.java (1)
148-165: Generalizing helper methods toParserRuleContextlooks correct and slightly saferBoth
itVersionReturnandskipStatementnow operate onParserRuleContext, which is compatible withBSLParser.StringContextand other BSL contexts (they inherit fromBSLParserRuleContext→ParserRuleContext). The added null‑handling inskipStatement(return falsewhen no ancestor is found) avoids potential NPEs without changing semantics for existing positive matches. Overall this reduces coupling to the BSL‑specific base context and matches the ANTLR‑orientedTrees.getAncestorByRuleIndexutilities.Optional: you might consider renaming
ctxtocontextfor readability, and/or extracting the ancestor lookup + matcher logic into a shared helper if similar patterns appear in other diagnostics. Please confirm via existing tests that exclusion behavior for version‑related returns (e.g., functions returning version strings) remains unchanged. Based on learnings.
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (68)
build.gradle.kts(1 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/aop/measures/DocumentContextLazyDataMeasurer.java(0 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/BasicBlockVertex.java(1 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/CfgBuildingParseTreeVisitor.java(2 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/CfgVertex.java(1 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/ConditionalVertex.java(2 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/ForLoopVertex.java(2 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/ForeachLoopVertex.java(2 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/PreprocessorConditionVertex.java(2 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/StatementsBlockWriter.java(3 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/TryExceptVertex.java(2 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/WhileLoopVertex.java(2 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/codeactions/ExtractStructureConstructorSupplier.java(2 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/context/computer/CognitiveComplexityComputer.java(4 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/context/computer/CyclomaticComplexityComputer.java(2 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/context/computer/MethodSymbolComputer.java(2 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/context/computer/VariableSymbolComputer.java(3 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/context/symbol/SymbolTree.java(3 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/context/symbol/description/DescriptionReader.java(2 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/AbstractFindMethodDiagnostic.java(2 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/AllFunctionPathMustHaveReturnDiagnostic.java(5 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/BeginTransactionBeforeTryCatchDiagnostic.java(2 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CodeOutOfRegionDiagnostic.java(3 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CognitiveComplexityDiagnostic.java(2 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CommitTransactionOutsideTryCatchDiagnostic.java(2 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CreateQueryInCycleDiagnostic.java(2 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CyclomaticComplexityDiagnostic.java(2 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/DataExchangeLoadingDiagnostic.java(1 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/DeprecatedAttributes8312Diagnostic.java(2 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/DiagnosticStorage.java(6 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/DuplicateStringLiteralDiagnostic.java(4 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/DuplicatedInsertionIntoCollectionDiagnostic.java(6 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/FieldsFromJoinsWithoutIsNullDiagnostic.java(6 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/FunctionOutParameterDiagnostic.java(2 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/FunctionReturnsSamePrimitiveDiagnostic.java(2 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/IncorrectUseLikeInQueryDiagnostic.java(2 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/IncorrectUseOfStrTemplateDiagnostic.java(3 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/IsInRoleMethodDiagnostic.java(2 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/MagicDateDiagnostic.java(4 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/MagicNumberDiagnostic.java(3 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/MissedRequiredParameterDiagnostic.java(2 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/MissingCommonModuleMethodDiagnostic.java(2 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/MissingTemporaryFileDeletionDiagnostic.java(2 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/NestedFunctionInParametersDiagnostic.java(2 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/NestedStatementsDiagnostic.java(4 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/NestedTernaryOperatorDiagnostic.java(2 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/ParseErrorDiagnostic.java(3 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/RefOveruseDiagnostic.java(1 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/ServerCallsInFormEventsDiagnostic.java(1 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/TypoDiagnostic.java(0 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UnreachableCodeDiagnostic.java(7 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UnsafeSafeModeMethodCallDiagnostic.java(3 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsageWriteLogEventDiagnostic.java(6 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingCancelParameterDiagnostic.java(1 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingExternalCodeToolsDiagnostic.java(2 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingHardcodeNetworkAddressDiagnostic.java(2 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingHardcodeSecretInformationDiagnostic.java(2 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingObjectNotAvailableUnixDiagnostic.java(2 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingThisFormDiagnostic.java(2 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/folding/QueryCommentFoldingRangeSupplier.java(1 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/folding/QueryPackageFoldingRangeSupplier.java(1 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/infrastructure/CacheConfiguration.java(1 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/inlayhints/SourceDefinedMethodCallInlayHintSupplier.java(2 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/providers/SelectionRangeProvider.java(6 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/references/AnnotationReferenceFinder.java(5 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/references/ReferenceIndexFiller.java(13 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/utils/MultilingualStringAnalyser.java(3 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/utils/Trees.java(15 hunks)
💤 Files with no reviewable changes (2)
- src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/TypoDiagnostic.java
- src/main/java/com/github/_1c_syntax/bsl/languageserver/aop/measures/DocumentContextLazyDataMeasurer.java
🚧 Files skipped from review as they are similar to previous changes (31)
- src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/WhileLoopVertex.java
- src/main/java/com/github/_1c_syntax/bsl/languageserver/utils/MultilingualStringAnalyser.java
- src/main/java/com/github/_1c_syntax/bsl/languageserver/context/computer/CyclomaticComplexityComputer.java
- src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/DeprecatedAttributes8312Diagnostic.java
- src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/DataExchangeLoadingDiagnostic.java
- src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CreateQueryInCycleDiagnostic.java
- src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/IncorrectUseLikeInQueryDiagnostic.java
- src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/CfgVertex.java
- src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/StatementsBlockWriter.java
- src/main/java/com/github/_1c_syntax/bsl/languageserver/infrastructure/CacheConfiguration.java
- src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/DuplicatedInsertionIntoCollectionDiagnostic.java
- src/main/java/com/github/_1c_syntax/bsl/languageserver/folding/QueryCommentFoldingRangeSupplier.java
- src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/TryExceptVertex.java
- src/main/java/com/github/_1c_syntax/bsl/languageserver/context/symbol/SymbolTree.java
- src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsageWriteLogEventDiagnostic.java
- src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/FieldsFromJoinsWithoutIsNullDiagnostic.java
- src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CodeOutOfRegionDiagnostic.java
- src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/CfgBuildingParseTreeVisitor.java
- src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/IsInRoleMethodDiagnostic.java
- src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/RefOveruseDiagnostic.java
- src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/ForLoopVertex.java
- src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/FunctionOutParameterDiagnostic.java
- src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingExternalCodeToolsDiagnostic.java
- src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CommitTransactionOutsideTryCatchDiagnostic.java
- build.gradle.kts
- src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/MissingCommonModuleMethodDiagnostic.java
- src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/NestedTernaryOperatorDiagnostic.java
- src/main/java/com/github/_1c_syntax/bsl/languageserver/inlayhints/SourceDefinedMethodCallInlayHintSupplier.java
- src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/ForeachLoopVertex.java
- src/main/java/com/github/_1c_syntax/bsl/languageserver/context/computer/MethodSymbolComputer.java
- src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/MissedRequiredParameterDiagnostic.java
🧰 Additional context used
🧠 Learnings (8)
📓 Common learnings
Learnt from: nixel2007
Repo: 1c-syntax/bsl-language-server PR: 3449
File: src/main/java/com/github/_1c_syntax/bsl/languageserver/utils/expressiontree/ExpressionTreeBuildingVisitor.java:192-203
Timestamp: 2025-04-18T22:46:43.245Z
Learning: В проекте bsl-language-server класс BSLParser.ExpressionContext наследуется от BSLParserRuleContext, а не напрямую от ParserRuleContext. При работе с ним нужно учитывать специфичные методы BSLParserRuleContext.
📚 Learning: 2025-11-19T09:02:03.154Z
Learnt from: theshadowco
Repo: 1c-syntax/bsl-language-server PR: 3610
File: src/main/java/com/github/_1c_syntax/bsl/languageserver/folding/QueryPackageFoldingRangeSupplier.java:26-26
Timestamp: 2025-11-19T09:02:03.154Z
Learning: В проекте bsl-language-server используется кастомная версия ANTLR4 от 1c-syntax (io.github.1c-syntax:antlr4), которая включает базовый класс org.antlr.v4.runtime.Tokenizer с методами getAst() и getTokens(). SDBLTokenizer и BSLTokenizer наследуются от этого базового класса.
Applied to files:
src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/MagicDateDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/references/AnnotationReferenceFinder.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/IncorrectUseOfStrTemplateDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/ParseErrorDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/ConditionalVertex.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/providers/SelectionRangeProvider.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CognitiveComplexityDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UnsafeSafeModeMethodCallDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/PreprocessorConditionVertex.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/AbstractFindMethodDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/FunctionReturnsSamePrimitiveDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/DuplicateStringLiteralDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingCancelParameterDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/MissingTemporaryFileDeletionDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/BeginTransactionBeforeTryCatchDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingThisFormDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingObjectNotAvailableUnixDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/AllFunctionPathMustHaveReturnDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingHardcodeNetworkAddressDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/NestedStatementsDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/MagicNumberDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UnreachableCodeDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/context/computer/VariableSymbolComputer.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/folding/QueryPackageFoldingRangeSupplier.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/codeactions/ExtractStructureConstructorSupplier.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/DiagnosticStorage.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingHardcodeSecretInformationDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/references/ReferenceIndexFiller.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/NestedFunctionInParametersDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/context/computer/CognitiveComplexityComputer.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CyclomaticComplexityDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/utils/Trees.java
📚 Learning: 2025-04-18T22:46:43.245Z
Learnt from: nixel2007
Repo: 1c-syntax/bsl-language-server PR: 3449
File: src/main/java/com/github/_1c_syntax/bsl/languageserver/utils/expressiontree/ExpressionTreeBuildingVisitor.java:192-203
Timestamp: 2025-04-18T22:46:43.245Z
Learning: В проекте bsl-language-server класс BSLParser.ExpressionContext наследуется от BSLParserRuleContext, а не напрямую от ParserRuleContext. При работе с ним нужно учитывать специфичные методы BSLParserRuleContext.
Applied to files:
src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/MagicDateDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/references/AnnotationReferenceFinder.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/IncorrectUseOfStrTemplateDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/ParseErrorDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/ConditionalVertex.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/providers/SelectionRangeProvider.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CognitiveComplexityDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UnsafeSafeModeMethodCallDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/PreprocessorConditionVertex.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/AbstractFindMethodDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/FunctionReturnsSamePrimitiveDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/DuplicateStringLiteralDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingCancelParameterDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/MissingTemporaryFileDeletionDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/context/symbol/description/DescriptionReader.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/BeginTransactionBeforeTryCatchDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingThisFormDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingObjectNotAvailableUnixDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/AllFunctionPathMustHaveReturnDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingHardcodeNetworkAddressDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/NestedStatementsDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/MagicNumberDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UnreachableCodeDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/context/computer/VariableSymbolComputer.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/folding/QueryPackageFoldingRangeSupplier.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/codeactions/ExtractStructureConstructorSupplier.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/DiagnosticStorage.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingHardcodeSecretInformationDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/references/ReferenceIndexFiller.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/NestedFunctionInParametersDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/context/computer/CognitiveComplexityComputer.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CyclomaticComplexityDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/utils/Trees.java
📚 Learning: 2024-07-04T19:35:26.747Z
Learnt from: nixel2007
Repo: 1c-syntax/bsl-language-server PR: 3308
File: src/test/resources/diagnostics/DoubleNegativesDiagnostic.bsl:20-21
Timestamp: 2024-07-04T19:35:26.747Z
Learning: The file `DoubleNegativesDiagnostic.bsl` is a test resource intended to demonstrate the functionality of the DoubleNegatives diagnostic.
Applied to files:
src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/MagicDateDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/IncorrectUseOfStrTemplateDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/MissingTemporaryFileDeletionDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/MagicNumberDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/NestedFunctionInParametersDiagnostic.java
📚 Learning: 2024-12-27T17:03:11.817Z
Learnt from: nixel2007
Repo: 1c-syntax/bsl-language-server PR: 3364
File: src/main/java/com/github/_1c_syntax/bsl/languageserver/references/AnnotationReferenceFinder.java:125-127
Timestamp: 2024-12-27T17:03:11.817Z
Learning: В методе `findAnnotation` класса `AnnotationReferenceFinder` уже проверяется, что у аннотации ровно один параметр, поэтому в `getAnnotationName` не требуется отдельная проверка на пустой список.
Applied to files:
src/main/java/com/github/_1c_syntax/bsl/languageserver/references/AnnotationReferenceFinder.java
📚 Learning: 2025-02-10T17:13:41.452Z
Learnt from: theshadowco
Repo: 1c-syntax/bsl-language-server PR: 3408
File: src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/ProtectedModuleDiagnostic.java:54-58
Timestamp: 2025-02-10T17:13:41.452Z
Learning: In ProtectedModuleDiagnostic.java, the usage of `Range` field as a diagnostic target is accepted as is, despite being marked as a temporary solution in the comments.
Applied to files:
src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/FunctionReturnsSamePrimitiveDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/DiagnosticStorage.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingHardcodeSecretInformationDiagnostic.javasrc/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/ServerCallsInFormEventsDiagnostic.java
📚 Learning: 2025-02-10T17:12:56.150Z
Learnt from: nixel2007
Repo: 1c-syntax/bsl-language-server PR: 3408
File: src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/ProtectedModuleDiagnostic.java:63-66
Timestamp: 2025-02-10T17:12:56.150Z
Learning: In BSL Language Server, `documentContext.getServerContext().getConfiguration()` is guaranteed to return a non-null value, making null checks unnecessary.
Applied to files:
src/main/java/com/github/_1c_syntax/bsl/languageserver/folding/QueryPackageFoldingRangeSupplier.java
📚 Learning: 2025-04-18T22:42:30.042Z
Learnt from: nixel2007
Repo: 1c-syntax/bsl-language-server PR: 3449
File: src/main/java/com/github/_1c_syntax/bsl/languageserver/utils/expressiontree/ExpressionTreeBuildingVisitor.java:88-97
Timestamp: 2025-04-18T22:42:30.042Z
Learning: В реализации ANTLR, если метод `getChildCount()` возвращает значение больше 0, то поле `children` гарантированно не равно null.
Applied to files:
src/main/java/com/github/_1c_syntax/bsl/languageserver/utils/Trees.java
🧬 Code graph analysis (2)
src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/ConditionalVertex.java (1)
src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/PreprocessorConditionVertex.java (1)
EqualsAndHashCode(30-46)
src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/PreprocessorConditionVertex.java (1)
src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/ConditionalVertex.java (1)
EqualsAndHashCode(30-66)
🔇 Additional comments (68)
src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CyclomaticComplexityDiagnostic.java (2)
34-34: LGTM! Clean migration to standard ANTLR type.The import change from
BSLParserRuleContexttoorg.antlr.v4.runtime.ParserRuleContextaligns with the PR objective of removing dependency on BSL-specific context classes. This generalization is appropriate and maintains compatibility.
121-121: LGTM! Safe type generalization.The method signature change from
BSLParserRuleContexttoParserRuleContextis safe and appropriate. The method only usesgetStart()which is available inParserRuleContext, and all call sites (lines 108, 116) pass compatible context types.src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/FunctionReturnsSamePrimitiveDiagnostic.java (2)
35-35: LGTM: Migration to standard ANTLR type.The import change correctly replaces the custom
BSLParserRuleContextwith ANTLR's standardParserRuleContext, aligning with the PR's objective to generalize the codebase to standard ANTLR types.
140-146: LGTM: Correct parameter type generalization.The method signature change from
BSLParserRuleContexttoParserRuleContextis correct and maintains all existing functionality. The method logic remains unchanged and properly handles the more general type, consistent with the PR's migration to standard ANTLR types.src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/NestedFunctionInParametersDiagnostic.java (2)
114-114: LGTM! Type generalization is appropriate.The parameter type change from
BSLParserRuleContexttoParserRuleContextis correct. The method only uses standardParserRuleContextAPIs (getStart(),getStop(),getLine()), and all callers pass contexts that extendParserRuleContext.Note: The retrieved learning about
BSLParser.ExpressionContextinheriting fromBSLParserRuleContextis now outdated due to this migration. Based on learnings.
135-137: LGTM! Consistent with the type migration.The parameter type change from
BSLParserRuleContexttoParserRuleContextaligns with the broader migration and is consistent with thefindNestedCallmethod signature change at line 114.src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/ServerCallsInFormEventsDiagnostic.java (1)
24-31: LGTM! Import reorganization with no functional impact.The import reordering aligns with the broader codebase refactor. The diagnostic logic remains unchanged and continues to work correctly with the updated parser types.
src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/MagicDateDiagnostic.java (3)
31-31: LGTM: Import generalization aligns with PR objectives.The import change from
BSLParserRuleContextto standard ANTLR'sParserRuleContextis consistent with the PR's goal of removing the BSL-specific context dependency.
166-172: LGTM: Method signature correctly generalized.The parameter type change from
Class<? extends BSLParserRuleContext>toClass<? extends ParserRuleContext>is a proper generalization that maintains type safety while aligning with the PR's refactoring goals.
152-198: LGTM: All parent traversal calls correctly updated.All method reference calls to
ParserRuleContext::getParent(lines 154, 156, 169, 180, 182, 184, 185, 189, 191, 193, 195) are functionally equivalent to the previousBSLParserRuleContext::getParentcalls. The refactoring maintains identical behavior while using standard ANTLR types.src/main/java/com/github/_1c_syntax/bsl/languageserver/folding/QueryPackageFoldingRangeSupplier.java (1)
26-45: Import switch toorg.antlr.v4.runtime.Tokenizerlooks correct and consistentThe new import aligns with the project’s custom ANTLR fork where
TokenizerexposesgetAst(), and theTokenizer::getAst → QueryPackageContext::queriespipeline matches the existing pattern used for comments (viaTokenizer::getTokens). Behavior of folding ranges does not change; only the dependency type is clarified. Based on learnings.src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/DuplicateStringLiteralDiagnostic.java (2)
32-32: LGTM! Clean migration to ParserRuleContext.The type generalization from
BSLParserRuleContexttoParserRuleContextis correctly applied across the import and all affected method signatures. Since these methods only use thegetText()method (available onParserRuleContext), the migration is safe and behavior-preserving.Also applies to: 145-145, 165-165, 179-179
147-147: LGTM! Stream pipeline correctly updated.The cast and generic type changes in the stream pipeline are consistent with the overall migration. The type flow from
Trees.findAllRuleNodes()through the cast to thegroupingBycollector is properly maintained withParserRuleContext.Also applies to: 150-150
src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UnreachableCodeDiagnostic.java (5)
34-34: LGTM! Import aligns with generalization objective.The addition of
ParserRuleContextimport is consistent with the PR's objective to migrate away from BSL-specific context types to standard ANTLR types.
143-143: LGTM! Sorting logic works correctly with generalized type.The sorting by line number using
getStart().getLine()is compatible withParserRuleContextand maintains the same functionality.
199-199: LGTM! Method signature generalization is correct.The parameter type change from
BSLParserRuleContexttoParserRuleContextis appropriate, as the method only uses standard ANTLR methods available inParserRuleContext.
224-239: LGTM! Variable type generalizations are consistent.The changes to use
ParserRuleContextfor the statements list andendCurrentBlockNodevariable are correct and maintain compatibility withTrees.getChildren()and subsequent operations.
253-280: LGTM! Method refactoring maintains functionality.The
getEndCurrentBlockNodemethod signature and implementation have been correctly updated to useParserRuleContextthroughout. All method calls (getStart(),getLine(),getCharPositionInLine()) are standard ANTLR methods and work correctly with the generalized type.src/main/java/com/github/_1c_syntax/bsl/languageserver/providers/SelectionRangeProvider.java (2)
130-143: LGTM! Type generalization is consistent and correct.The refactoring from
BSLParserRuleContexttoParserRuleContextis well-executed across all helper methods. All method calls rely on base ANTLR APIs that are available inParserRuleContext, and the instanceof checks continue to work correctly since runtime types remain BSL-specific.Also applies to: 158-170, 202-202
181-196: Verify the synthetic ParserRuleContext through tests.The synthetic
ParserRuleContextfor grouping nearby statements looks correct—it only uses base ANTLR methods. However, since this changes the concrete type fromBSLParserRuleContext, ensure that existing tests cover this code path and validate that selection ranges work as expected for consecutive statements.src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingThisFormDiagnostic.java (1)
36-36: LGTM! Clean refactoring from BSLParserRuleContext to ParserRuleContext.The type generalization is correct and aligns with the PR objective to remove BSL-specific context classes in favor of standard ANTLR types. The methods
needCheckandgetParamsonly use standard ParserRuleContext APIs (getRuleContextandgetRuleContexts), so the refactoring is safe and preserves the existing logic.Also applies to: 87-87, 92-92
src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingHardcodeNetworkAddressDiagnostic.java (1)
32-32: Switch toParserRuleContextimport is consistent with the refactorReplacing the previous BSL‑specific context import with
org.antlr.v4.runtime.ParserRuleContextaligns this diagnostic with the project‑wide move away fromBSLParserRuleContextand keeps usage compatible withBSLParser.*Contextsubclasses.If not already done, please run the full Gradle build/tests on this branch to confirm there are no lingering references to
BSLParserRuleContextin diagnostics. Based on learnings.src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UnsafeSafeModeMethodCallDiagnostic.java (2)
33-33: LGTM: Import updated to standard ANTLR class.The import change from BSLParserRuleContext to the standard ANTLR ParserRuleContext aligns with the PR objective of removing BSL-specific context usage.
90-92: LGTM: Type generalization to standard ANTLR ParserRuleContext.The refactoring from BSLParserRuleContext to ParserRuleContext is correctly implemented across variable declarations, method parameters, and casts. All methods used (
getParent(),getRuleIndex(),getChildCount(),children) are standard ANTLR ParserRuleContext APIs, ensuring compatibility without behavioral changes.Also applies to: 103-104, 108-108, 116-116
src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/NestedStatementsDiagnostic.java (4)
34-34: LGTM! Type generalization improves code clarity.The switch from
ParseTree/BSLParserRuleContextto standard ANTLRParserRuleContextaligns with the PR objectives and simplifies the diagnostic by using the base ANTLR type instead of a BSL-specific extension.Also applies to: 65-66
123-126: LGTM! Method signature generalization is consistent.The parameter type changes from
BSLParserRuleContexttoParserRuleContextfor the private helper methods are consistent with the field type changes and maintain compatibility with all the BSLParser context types passed from the listener methods.Also applies to: 128-134, 136-158
151-151: Excellent! Unnecessary cast removed.The cast to
BSLParserRuleContextis no longer needed sincegetStart()is available directly onParserRuleContext. This simplifies the code and removes the coupling to the BSL-specific type.
34-34: Verify test coverage confirms correct behavior.The refactoring from
BSLParserRuleContexttoParserRuleContextis well-executed and aligns with the PR's architectural goals. To ensure the diagnostic continues to function correctly with nested statements detection and related information reporting, please confirm that existing tests pass.Based on learnings (noting that this PR explicitly moves away from the BSL-specific context mentioned in the learning).
Also applies to: 65-66, 123-158
src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/MagicNumberDiagnostic.java (3)
31-31: LGTM: Import updated to standard ANTLR class.The import change from
BSLParserRuleContexttoParserRuleContextaligns with the PR objective to use standard ANTLR types instead of custom BSL-specific classes.
78-86: LGTM: Method successfully generalized to standard ANTLR types.The method signature and body changes correctly generalize from
BSLParserRuleContexttoParserRuleContext. The logic remains sound:
getParent()is available onParserRuleContext- Type safety is maintained through filtering for
BSLParser.ExpressionContext.classat line 84- Call sites remain compatible with the new signature
118-123: LGTM: Consistent type generalization.The parameter type change from
BSLParserRuleContexttoParserRuleContextis consistent with the broader refactoring. The call site at line 102 and the delegate call togetExpressionat line 119 are both compatible with this change.Note: The retrieved learning stating that
BSLParser.ExpressionContextinherits fromBSLParserRuleContextis now outdated by this PR, which removesBSLParserRuleContextfrom the class hierarchy in favor of standard ANTLRParserRuleContext.Based on learnings
src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/AbstractFindMethodDiagnostic.java (1)
27-27: LGTM – Type generalization aligns with PR objectives.The method signature change from
BSLParserRuleContexttoParserRuleContextcorrectly generalizes the type while maintaining compatibility with the instanceof checks for specific parser contexts.Also applies to: 84-84
src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingCancelParameterDiagnostic.java (1)
68-76: LGTM – Unnecessary casts correctly removed.The removal of
.map(BSLParserRuleContext.class::cast)operations addresses the previous review feedback and aligns with the PR's migration toParserRuleContext.src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/AllFunctionPathMustHaveReturnDiagnostic.java (1)
42-42: LGTM – Consistent type generalization across all helper methods.All return types correctly updated from
Optional<BSLParserRuleContext>toOptional<ParserRuleContext>, maintaining consistency throughout the diagnostic implementation.Also applies to: 130-183
src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/ParseErrorDiagnostic.java (1)
32-32: LGTM – Error handling logic preserves correctness with generalized types.Type updates to
ParserRuleContextin both error node handling and stream processing are consistent and correct.Also applies to: 60-60, 73-75
src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CognitiveComplexityDiagnostic.java (1)
34-34: LGTM – Private helper method correctly generalized.The parameter type change for
checkFileCodeBlockmaintains compatibility with caller contexts while adopting the generalizedParserRuleContexttype.Also applies to: 128-128
src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/BeginTransactionBeforeTryCatchDiagnostic.java (1)
31-31: LGTM – Field type generalization maintains diagnostic state correctly.The
nodeBeginTransactionfield type change toParserRuleContextis consistent with the broader refactor and maintains correct behavior in the transaction detection logic.Also applies to: 51-51
src/main/java/com/github/_1c_syntax/bsl/languageserver/codeactions/ExtractStructureConstructorSupplier.java (1)
34-35: Generalizing toParserRuleContext::getParentlooks correctImporting
ParserRuleContextand switching the parent step in themaybeDoCallchain to.map(ParserRuleContext::getParent)preserves the original behavior while aligning with the move away fromBSLParserRuleContext. The optional chain still safely handles missing parents (null →Optional.empty()), and the subsequent cast toBSLParser.NewExpressionContextremains valid assuming the grammar keepsTypeNameContextdirectly underNewExpressionContext, which matches the existing intent of this code.Also applies to: 73-81
src/main/java/com/github/_1c_syntax/bsl/languageserver/references/AnnotationReferenceFinder.java (7)
39-39: LGTM: Import of standard ANTLR ParserRuleContext.This import addition is correct and necessary for generalizing from the BSL-specific
BSLParserRuleContextto the standard ANTLR base class.
115-117: LGTM: Safe generalization of instanceof check.Changing from
BSLParserRuleContexttoParserRuleContextis safe here because all BSL parser contexts extend the standard ANTLR base class, and subsequent operations cast to specific BSL context types.
137-149: LGTM: Method references updated to use ParserRuleContext.The
.map(ParserRuleContext::getParent)calls correctly use the standard ANTLR method, maintaining the same traversal logic while generalizing the type.
166-177: LGTM: Consistent method reference updates.The changes to
ParserRuleContext::getParentat lines 166 and 173 maintain the existing traversal logic while using the generalized type.
191-198: LGTM: Type generalization for annotation parameter handling.The changes to use
ParserRuleContextfor the variable type (line 194), method reference (line 191), and cast (line 196) are consistent and correct. ThegetText()method is available on the standard ANTLR base class.
201-203: LGTM: Parse tree traversal updated consistently.The method references at lines 201-202 correctly use
ParserRuleContext::getParentto traverse up the parse tree, with helpful comments documenting the expected context types.
39-216: Verify that tests pass after ANTLR and parser updates.The refactoring from
BSLParserRuleContextto the standard ANTLRParserRuleContextlooks correct and consistent throughout the file. All method calls use standard ANTLR APIs. However, please ensure that unit tests and integration tests pass to confirm no behavioral changes were introduced.Note: The retrieved learning from nixel2007 about
BSLParserRuleContextas a base class is now outdated, as this PR removes that dependency. Based on learnings.src/main/java/com/github/_1c_syntax/bsl/languageserver/context/symbol/description/DescriptionReader.java (1)
27-27: LGTM! Clean type generalization.The migration from
BSLParserRuleContexttoParserRuleContextis correctly applied. The method body uses only standardParserRuleContextmethods (getChildCount,getChild,getText), and the specificinstanceofcheck on line 231 forBSLMethodDescriptionParser.StartPartContextis still appropriate.Also applies to: 226-237
src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/IncorrectUseOfStrTemplateDiagnostic.java (1)
32-32: LGTM! Consistent type generalization.The changes correctly generalize from
BSLParserRuleContexttoParserRuleContext:
- Import updated appropriately
- Method reference on line 135 correctly uses
ParserRuleContext::getTextgetPreviousNodesignature and cast updated consistentlyNo behavioral changes; logic preserved.
Also applies to: 135-135, 193-207
src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/PreprocessorConditionVertex.java (1)
26-26: LGTM! Type generalization correctly applied.The change from
BSLParserRuleContexttoParserRuleContextis consistent with the broader refactoring across CFG vertex classes. Field type andgetAst()return type properly updated.Also applies to: 32-45
src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/BasicBlockVertex.java (1)
25-25: LGTM! Comprehensive type generalization.All public API methods correctly updated to use
ParserRuleContext:
- Field type for statements list
- Accessor
statements()return type- Mutator
addStatement()parameter typegetAst()return typeBehavioral consistency maintained.
Also applies to: 33-50
src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/ConditionalVertex.java (1)
26-26: LGTM! Type generalization with proper downcasting.The field and return type correctly generalized to
ParserRuleContext. ThegetExpression()method appropriately downcasts to specific BSL context types when needed, which is safe since the constructors guarantee the actual runtime types.Also applies to: 32-55
src/main/java/com/github/_1c_syntax/bsl/languageserver/context/computer/CognitiveComplexityComputer.java (2)
36-36: LGTM! Type generalization applied.The
ignoredContextsfield correctly updated to useParserRuleContextinstead ofBSLParserRuleContext, consistent with the broader refactoring.Also applies to: 87-87
312-328: LGTM! Improved logic with direct instanceof checks.The refactored
flattenExpressionmethod now uses directinstanceofchecks with pattern matching (lines 320, 322) instead of the previous rule-based filtering. This is cleaner and more maintainable while preserving the same logic flow.src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/DiagnosticStorage.java (1)
27-27: LGTM! Consistent API generalization.All diagnostic storage methods correctly updated to accept
ParserRuleContextinstead ofBSLParserRuleContext:
- Protected
addDiagnosticoverloads updated- Public
addDiagnosticoverloads updated- The
addDiagnostic(ParseTree)method correctly uses pattern matching for instanceof checkException handling and range creation logic preserved.
Also applies to: 67-86, 140-175, 218-226
src/main/java/com/github/_1c_syntax/bsl/languageserver/context/computer/VariableSymbolComputer.java (3)
35-35: LGTM! Import supports type generalization.The addition of
ParserRuleContextimport aligns with the PR objective to migrate from BSL-specific context types to standard ANTLR types.
218-228: Type generalization verified—no issues found.The
Ranges.create()method acceptsParserRuleContext(as shown in the Ranges utility class), so the generalization fromBSLParserRuleContexttoParserRuleContextis safe and correct. The code change maintains type compatibility and follows good ANTLR API practices by using the parent type.
266-284: Type generalization is correct and safe.The parameter type change from
BSLParserRuleContexttoParserRuleContextis appropriate and compatible. The method only uses standard ANTLR API methods (getStart(),getStop()), both available onParserRuleContext. The call toTrees.getPreviousTokenFromDefaultChannel()at line 271-272 passesctx.getStart().getTokenIndex()which returns anintand matches the method signature at line 167 ofTrees.java.src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingObjectNotAvailableUnixDiagnostic.java (1)
32-32: ParserRuleContext generalization in helper looks correctThe switch to
ParserRuleContext(import and helper signature/body) is consistent with the ANTLR-wide refactor:visitNewExpressionstill passes aBSLParser.NewExpressionContext, which is aParserRuleContext, andTrees.getAncestorByRuleIndexalso operates onParserRuleContext. The recursive search with the existing null-guard remains safe and behaviorally equivalent.No further changes needed here.
Also applies to: 78-89
src/main/java/com/github/_1c_syntax/bsl/languageserver/references/ReferenceIndexFiller.java (2)
41-41: LGTM! Type generalization aligns with PR objectives.The addition of
ParserRuleContextimport and the update of both visitor class hierarchies fromBSLParserBaseVisitor<BSLParserRuleContext>toBSLParserBaseVisitor<ParserRuleContext>correctly implements the refactoring away from the BSL-specific context type to ANTLR's standard type.Based on learnings
Also applies to: 93-93, 263-263
99-108: Refactoring verified and approved.All visitor method return types have been successfully updated from
BSLParserRuleContexttoParserRuleContext. Verification confirms:
- bsl-parser 0.27.0-rc.1 correctly generates
BSLParser.*Contextclasses inheriting fromParserRuleContext- No legacy
BSLParserRuleContextreferences remain in the codebase- Utility method
Trees.nodeContainsErrors()is compatible with the new type- All method calls and type usage are consistent throughout
The refactoring is clean, complete, and ready to merge.
src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingHardcodeSecretInformationDiagnostic.java (2)
196-209: LGTM! Type generalization correctly applied.The method signature change from
BSLParserRuleContexttoParserRuleContextaligns with the PR objectives. The direct usage ofctxwithTrees.getAncestorByRuleIndexis correct, and the cast toBSLParser.AssignmentContextat line 204 is safe since the ancestor lookup usesBSLParser.RULE_assignment.
225-230: LGTM! Consistent refactoring applied.The method correctly generalizes the parameter type to
ParserRuleContextand usesctxdirectly withTrees.getAncestorByRuleIndex, consistent with the broader migration away fromBSLParserRuleContext.src/main/java/com/github/_1c_syntax/bsl/languageserver/utils/Trees.java (5)
63-98: LGTM! Clean delegation to ANTLR Trees utilities.The refactoring to delegate
getTokens,findAllRuleNodes,getChildren, and related methods toorg.antlr.v4.runtime.tree.Treesis well-structured and eliminates custom traversal logic in favor of standard ANTLR utilities.
195-221: LGTM! getRootParent variants correctly generalized.All
getRootParentmethod overloads now returnParserRuleContextinstead ofBSLParserRuleContextand delegate toorg.antlr.v4.runtime.tree.Trees.getAncestor. The type generalization is consistent with the PR objectives.
226-283: LGTM! Collection methods correctly refactored.Methods
getChildren,getFirstChild,findAllRuleNodes,findAllTopLevelDescendantNodes, andnodeContainshave been updated to returnParserRuleContext-based types and delegate to ANTLR's Trees utilities. The refactoring maintains the public API while leveraging standard ANTLR implementations.
292-322: LGTM! Terminal node finder correctly updated.The
findTerminalNodeContainsPositionmethod parameter has been widened fromBSLParserRuleContexttoParserRuleContext, with the recursive call at line 314 correctly casting toParserRuleContext. The logic remains sound.
127-129: I need to verify the ANTLR library version and confirm theTrees.getAncestormethod signature from the library documentation.I need to check the project's build configuration and ANTLR version to verify the method signature.
Based on the script output, I can confirm the verification:
The generic method signature
<T extends ParserRuleContext> T getAncestorByRuleIndex(ParserRuleContext element, int type)correctly delegates toorg.antlr.v4.runtime.tree.Trees.getAncestor(element, type). The method is being used successfully throughout the codebase (as shown in the output with multiple usage examples), and the code compiles without errors. The generic return type properly allows callers to receive the correctly cast type, with the delegation pattern working as intended.No issues found.
src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/MissingTemporaryFileDeletionDiagnostic.java (2)
114-145: LGTM! Simplified filter logic.The removal of explicit
BSLParserRuleContext.castusage at line 120 simplifies the stream filter. The code now relies on the stream type inference, which works correctly sincefindAllRuleNodesreturnsParserRuleContextnodes.
170-184: LGTM! Type inference works correctly.Line 172 leverages the generic return type from
Trees.getAncestorByRuleIndexto directly inferBSLParser.AssignmentContext, eliminating the need for explicit casting. This is cleaner and consistent with the refactoring pattern.
|



Описание
Новые Антлр и парсер. Отказ от BSLParserRuleContext
Связанные задачи
Closes
Чеклист
Общие
gradlew precommit)Для диагностик
Дополнительно
Summary by CodeRabbit