diff --git a/build.gradle.kts b/build.gradle.kts index a5ac7dea483..0cf3cb29c35 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -82,17 +82,15 @@ dependencies { api("org.eclipse.lsp4j", "org.eclipse.lsp4j.websocket.jakarta", "0.24.0") // 1c-syntax - api("io.github.1c-syntax", "bsl-parser", "0.26.2") { + api("io.github.1c-syntax", "bsl-parser", "0.27.0-rc.1") { exclude("com.ibm.icu", "*") exclude("org.antlr", "ST4") - exclude("org.abego.treelayout", "org.abego.treelayout.core") exclude("org.antlr", "antlr-runtime") } api("io.github.1c-syntax", "utils", "0.6.4") api("io.github.1c-syntax", "mdclasses", "0.16.1-rc.1") api("io.github.1c-syntax", "bsl-common-library", "0.9.0") api("io.github.1c-syntax", "supportconf", "0.15.0") - api("io.github.1c-syntax", "bsl-parser-core", "0.3.1") // JLanguageTool implementation("org.languagetool", "languagetool-core", languageToolVersion){ diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/aop/measures/DocumentContextLazyDataMeasurer.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/aop/measures/DocumentContextLazyDataMeasurer.java index 519391f3c7c..87ac9978230 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/aop/measures/DocumentContextLazyDataMeasurer.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/aop/measures/DocumentContextLazyDataMeasurer.java @@ -21,7 +21,6 @@ */ package com.github._1c_syntax.bsl.languageserver.aop.measures; -import com.github._1c_syntax.bsl.languageserver.context.DocumentContext; import com.github._1c_syntax.bsl.languageserver.context.events.DocumentContextContentChangedEvent; import com.github._1c_syntax.bsl.parser.SDBLTokenizer; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/BasicBlockVertex.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/BasicBlockVertex.java index 406d020364e..05916b78c6d 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/BasicBlockVertex.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/BasicBlockVertex.java @@ -21,7 +21,8 @@ */ package com.github._1c_syntax.bsl.languageserver.cfg; -import com.github._1c_syntax.bsl.parser.BSLParserRuleContext; + +import org.antlr.v4.runtime.ParserRuleContext; import java.util.ArrayList; import java.util.List; @@ -29,18 +30,18 @@ public class BasicBlockVertex extends CfgVertex { - private final List statements = new ArrayList<>(); + private final List statements = new ArrayList<>(); - public List statements() { + public List statements() { return statements; } - public void addStatement(BSLParserRuleContext statement) { + public void addStatement(ParserRuleContext statement) { statements.add(statement); } @Override - public Optional getAst() { + public Optional getAst() { if(statements.isEmpty()) { return super.getAst(); } diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/CfgBuildingParseTreeVisitor.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/CfgBuildingParseTreeVisitor.java index e4f4e2110c7..cd68aab3d9f 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/CfgBuildingParseTreeVisitor.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/CfgBuildingParseTreeVisitor.java @@ -24,7 +24,7 @@ import com.github._1c_syntax.bsl.languageserver.utils.Trees; import com.github._1c_syntax.bsl.parser.BSLParser; import com.github._1c_syntax.bsl.parser.BSLParserBaseVisitor; -import com.github._1c_syntax.bsl.parser.BSLParserRuleContext; +import org.antlr.v4.runtime.ParserRuleContext; import org.antlr.v4.runtime.tree.ParseTree; import java.util.ArrayList; @@ -528,7 +528,7 @@ public ParseTree visitPreproc_endif(BSLParser.Preproc_endifContext ctx) { return ctx; } - private static boolean isStatementLevelPreproc(BSLParserRuleContext ctx) { + private static boolean isStatementLevelPreproc(ParserRuleContext ctx) { return ctx.getParent().getParent().getRuleIndex() == BSLParser.RULE_statement; } diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/CfgVertex.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/CfgVertex.java index fa7820a813b..18a71f3b16b 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/CfgVertex.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/CfgVertex.java @@ -21,7 +21,7 @@ */ package com.github._1c_syntax.bsl.languageserver.cfg; -import com.github._1c_syntax.bsl.parser.BSLParserRuleContext; +import org.antlr.v4.runtime.ParserRuleContext; import java.util.Optional; @@ -29,7 +29,7 @@ public abstract class CfgVertex { private boolean isConnected; - public Optional getAst() { + public Optional getAst() { return Optional.empty(); } diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/ConditionalVertex.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/ConditionalVertex.java index a412ea679bb..27251fefe4a 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/ConditionalVertex.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/ConditionalVertex.java @@ -22,14 +22,14 @@ package com.github._1c_syntax.bsl.languageserver.cfg; import com.github._1c_syntax.bsl.parser.BSLParser; -import com.github._1c_syntax.bsl.parser.BSLParserRuleContext; import lombok.EqualsAndHashCode; +import org.antlr.v4.runtime.ParserRuleContext; import java.util.Optional; @EqualsAndHashCode(callSuper = true) public class ConditionalVertex extends BranchingVertex { - private final BSLParserRuleContext ast; + private final ParserRuleContext ast; public ConditionalVertex(BSLParser.IfBranchContext ctx) { ast = ctx; @@ -50,7 +50,7 @@ public BSLParser.ExpressionContext getExpression() { } @Override - public Optional getAst() { + public Optional getAst() { return Optional.of(ast); } diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/ForLoopVertex.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/ForLoopVertex.java index 4de8c2d30e9..0bcbc957d07 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/ForLoopVertex.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/ForLoopVertex.java @@ -22,9 +22,9 @@ package com.github._1c_syntax.bsl.languageserver.cfg; import com.github._1c_syntax.bsl.parser.BSLParser; -import com.github._1c_syntax.bsl.parser.BSLParserRuleContext; import lombok.Data; import lombok.EqualsAndHashCode; +import org.antlr.v4.runtime.ParserRuleContext; import java.util.Optional; @@ -34,7 +34,7 @@ public class ForLoopVertex extends LoopVertex { private final BSLParser.ForStatementContext loopHeader; @Override - public Optional getAst() { + public Optional getAst() { return Optional.of(loopHeader); } } diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/ForeachLoopVertex.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/ForeachLoopVertex.java index 24935f6935a..74fb65d581f 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/ForeachLoopVertex.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/ForeachLoopVertex.java @@ -22,9 +22,9 @@ package com.github._1c_syntax.bsl.languageserver.cfg; import com.github._1c_syntax.bsl.parser.BSLParser; -import com.github._1c_syntax.bsl.parser.BSLParserRuleContext; import lombok.Data; import lombok.EqualsAndHashCode; +import org.antlr.v4.runtime.ParserRuleContext; import java.util.Optional; @@ -34,7 +34,7 @@ public class ForeachLoopVertex extends LoopVertex { private final BSLParser.ForEachStatementContext loopHeader; @Override - public Optional getAst() { + public Optional getAst() { return Optional.of(loopHeader); } } diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/PreprocessorConditionVertex.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/PreprocessorConditionVertex.java index 57d5a2a6575..9ae157d7995 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/PreprocessorConditionVertex.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/PreprocessorConditionVertex.java @@ -22,14 +22,14 @@ package com.github._1c_syntax.bsl.languageserver.cfg; import com.github._1c_syntax.bsl.parser.BSLParser; -import com.github._1c_syntax.bsl.parser.BSLParserRuleContext; import lombok.EqualsAndHashCode; +import org.antlr.v4.runtime.ParserRuleContext; import java.util.Optional; @EqualsAndHashCode(callSuper = true) public class PreprocessorConditionVertex extends BranchingVertex { - private final BSLParserRuleContext astNode; + private final ParserRuleContext astNode; PreprocessorConditionVertex(BSLParser.Preproc_ifContext ifClause) { astNode = ifClause; @@ -40,7 +40,7 @@ public class PreprocessorConditionVertex extends BranchingVertex { } @Override - public Optional getAst() { + public Optional getAst() { return Optional.of(astNode); } } diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/StatementsBlockWriter.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/StatementsBlockWriter.java index 9a3e3271852..3b09559eb35 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/StatementsBlockWriter.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/StatementsBlockWriter.java @@ -21,8 +21,8 @@ */ package com.github._1c_syntax.bsl.languageserver.cfg; -import com.github._1c_syntax.bsl.parser.BSLParserRuleContext; import lombok.Getter; +import org.antlr.v4.runtime.ParserRuleContext; import java.util.ArrayDeque; import java.util.Deque; @@ -57,7 +57,7 @@ public StatementsBlockRecord(JumpInformationRecord jumpInfo) { subgraphEnd = statements; } - public void add(BSLParserRuleContext statement) { + public void add(ParserRuleContext statement) { statements.addStatement(statement); } @@ -136,7 +136,7 @@ public StatementsBlockRecord getCurrentBlock() { return blocks.peek(); } - public void addStatement(BSLParserRuleContext statement) { + public void addStatement(ParserRuleContext statement) { getCurrentBlock().add(statement); } diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/TryExceptVertex.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/TryExceptVertex.java index a96476f6f52..d23d5a081ec 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/TryExceptVertex.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/TryExceptVertex.java @@ -22,9 +22,9 @@ package com.github._1c_syntax.bsl.languageserver.cfg; import com.github._1c_syntax.bsl.parser.BSLParser; -import com.github._1c_syntax.bsl.parser.BSLParserRuleContext; import lombok.Data; import lombok.EqualsAndHashCode; +import org.antlr.v4.runtime.ParserRuleContext; import java.util.Optional; @@ -34,7 +34,7 @@ public class TryExceptVertex extends BranchingVertex { private final BSLParser.TryStatementContext tryStatement; @Override - public Optional getAst() { + public Optional getAst() { return Optional.of(tryStatement); } } diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/WhileLoopVertex.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/WhileLoopVertex.java index bfaf7dc7afc..e80e26f203e 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/WhileLoopVertex.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/cfg/WhileLoopVertex.java @@ -22,9 +22,9 @@ package com.github._1c_syntax.bsl.languageserver.cfg; import com.github._1c_syntax.bsl.parser.BSLParser; -import com.github._1c_syntax.bsl.parser.BSLParserRuleContext; import lombok.EqualsAndHashCode; import lombok.RequiredArgsConstructor; +import org.antlr.v4.runtime.ParserRuleContext; import java.util.Optional; @@ -38,7 +38,7 @@ public BSLParser.ExpressionContext getExpression() { } @Override - public Optional getAst() { + public Optional getAst() { return Optional.of(ast); } } diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/codeactions/ExtractStructureConstructorSupplier.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/codeactions/ExtractStructureConstructorSupplier.java index d7742c12781..a1b63d1cff4 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/codeactions/ExtractStructureConstructorSupplier.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/codeactions/ExtractStructureConstructorSupplier.java @@ -30,8 +30,8 @@ import com.github._1c_syntax.bsl.languageserver.utils.Trees; import com.github._1c_syntax.bsl.parser.BSLLexer; import com.github._1c_syntax.bsl.parser.BSLParser; -import com.github._1c_syntax.bsl.parser.BSLParserRuleContext; import lombok.RequiredArgsConstructor; +import org.antlr.v4.runtime.ParserRuleContext; import org.antlr.v4.runtime.tree.TerminalNode; import org.eclipse.lsp4j.CodeAction; import org.eclipse.lsp4j.CodeActionKind; @@ -75,7 +75,7 @@ public List getCodeActions(CodeActionParams params, DocumentContext .filter(BSLParser.TypeNameContext.class::isInstance) .map(BSLParser.TypeNameContext.class::cast) .filter(DiagnosticHelper::isStructureType) - .map(BSLParserRuleContext::getParent) + .map(ParserRuleContext::getParent) .map(BSLParser.NewExpressionContext.class::cast) .map(BSLParser.NewExpressionContext::doCall); diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/context/computer/CognitiveComplexityComputer.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/context/computer/CognitiveComplexityComputer.java index 95c7824d5e1..293cdaf08f0 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/context/computer/CognitiveComplexityComputer.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/context/computer/CognitiveComplexityComputer.java @@ -27,13 +27,13 @@ import com.github._1c_syntax.bsl.languageserver.utils.Trees; import com.github._1c_syntax.bsl.parser.BSLParser; import com.github._1c_syntax.bsl.parser.BSLParserBaseListener; -import com.github._1c_syntax.bsl.parser.BSLParserRuleContext; import com.github._1c_syntax.utils.StringInterner; import jakarta.annotation.PostConstruct; import lombok.AccessLevel; import lombok.RequiredArgsConstructor; import lombok.Setter; import org.antlr.v4.runtime.CommonToken; +import org.antlr.v4.runtime.ParserRuleContext; import org.antlr.v4.runtime.Token; import org.antlr.v4.runtime.tree.ParseTreeWalker; import org.antlr.v4.runtime.tree.Tree; @@ -54,6 +54,7 @@ // Based on Cognitive Complexity white-paper, version 1.4. // See https://www.sonarsource.com/docs/CognitiveComplexity.pdf for details. + /** * Вычислитель когнитивной сложности кода. *

@@ -83,7 +84,7 @@ public class CognitiveComplexityComputer private MethodSymbol currentMethod; private int complexity; private int nestedLevel; - private Set ignoredContexts; + private Set ignoredContexts; @PostConstruct public void init() { @@ -316,13 +317,9 @@ private List flattenExpression(BSLParser.ExpressionContext ctx) { final List children = Trees.getChildren(ctx); for (Tree tree : children) { - if (!(tree instanceof BSLParserRuleContext parserRule)) { - continue; - } - - if (parserRule instanceof BSLParser.MemberContext memberContext) { + 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); } } diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/context/computer/CyclomaticComplexityComputer.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/context/computer/CyclomaticComplexityComputer.java index 53df01fdebc..73aca82cbf3 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/context/computer/CyclomaticComplexityComputer.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/context/computer/CyclomaticComplexityComputer.java @@ -27,7 +27,6 @@ import com.github._1c_syntax.bsl.languageserver.utils.Trees; import com.github._1c_syntax.bsl.parser.BSLParser; import com.github._1c_syntax.bsl.parser.BSLParserBaseListener; -import com.github._1c_syntax.bsl.parser.BSLParserRuleContext; import com.github._1c_syntax.utils.StringInterner; import jakarta.annotation.PostConstruct; import lombok.AccessLevel; @@ -51,6 +50,7 @@ import static org.springframework.beans.factory.config.BeanDefinition.SCOPE_PROTOTYPE; // idea from https://pdepend.org/documentation/software-metrics/cyclomatic-complexity.html + /** * Вычислитель цикломатической сложности кода. *

@@ -240,13 +240,9 @@ private static List flattenExpression(BSLParser.ExpressionContext ctx) { final List children = Trees.getChildren(ctx); for (Tree tree : children) { - if (!(tree instanceof BSLParserRuleContext parserRule)) { - continue; - } - - if (parserRule instanceof BSLParser.MemberContext memberContext) { + 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); } } diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/context/computer/MethodSymbolComputer.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/context/computer/MethodSymbolComputer.java index 36a0e9663d3..a58f565c99b 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/context/computer/MethodSymbolComputer.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/context/computer/MethodSymbolComputer.java @@ -35,8 +35,8 @@ import com.github._1c_syntax.bsl.languageserver.utils.Trees; import com.github._1c_syntax.bsl.parser.BSLParser; import com.github._1c_syntax.bsl.parser.BSLParserBaseVisitor; -import com.github._1c_syntax.bsl.parser.BSLParserRuleContext; import edu.umd.cs.findbugs.annotations.Nullable; +import org.antlr.v4.runtime.ParserRuleContext; import org.antlr.v4.runtime.Token; import org.antlr.v4.runtime.tree.ErrorNode; import org.antlr.v4.runtime.tree.ParseTree; @@ -358,10 +358,10 @@ private static List getAnnotationParameter( private static AnnotationParameterDefinition getAnnotationParam(BSLParser.AnnotationParamContext o) { var name = Optional.ofNullable(o.annotationParamName()) - .map(BSLParserRuleContext::getText) + .map(ParserRuleContext::getText) .orElse(""); var value = Optional.ofNullable(o.constValue()) - .map(BSLParserRuleContext::getText) + .map(ParserRuleContext::getText) .map(MethodSymbolComputer::excludeTrailingQuotes) .orElse(""); var optional = o.constValue() != null; diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/context/computer/VariableSymbolComputer.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/context/computer/VariableSymbolComputer.java index 22f04b0a19e..da8a589b66a 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/context/computer/VariableSymbolComputer.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/context/computer/VariableSymbolComputer.java @@ -32,7 +32,7 @@ import com.github._1c_syntax.bsl.languageserver.utils.Trees; import com.github._1c_syntax.bsl.parser.BSLParser; import com.github._1c_syntax.bsl.parser.BSLParserBaseVisitor; -import com.github._1c_syntax.bsl.parser.BSLParserRuleContext; +import org.antlr.v4.runtime.ParserRuleContext; import org.antlr.v4.runtime.Token; import org.antlr.v4.runtime.tree.ParseTree; import org.antlr.v4.runtime.tree.TerminalNode; @@ -215,7 +215,7 @@ private SourceDefinedSymbol getVariableScope(BSLParser.SubVarDeclarationContext } private SourceDefinedSymbol getVariableScope(BSLParser.SubContext ctx) { - BSLParserRuleContext subNameNode; + ParserRuleContext subNameNode; if (Trees.nodeContainsErrors(ctx)) { return module; } else if (ctx.function() != null) { @@ -263,7 +263,7 @@ private Optional createDescription(BSLParser.ForStatementCo ); } - private Optional createDescription(BSLParserRuleContext ctx) { + private Optional createDescription(ParserRuleContext ctx) { List tokens = documentContext.getTokens(); List comments = new ArrayList<>(); diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/context/symbol/SymbolTree.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/context/symbol/SymbolTree.java index 3e53018cbec..2b8da59b4f4 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/context/symbol/SymbolTree.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/context/symbol/SymbolTree.java @@ -24,9 +24,9 @@ import com.github._1c_syntax.bsl.languageserver.utils.Ranges; import com.github._1c_syntax.bsl.languageserver.utils.Trees; import com.github._1c_syntax.bsl.parser.BSLParser; -import com.github._1c_syntax.bsl.parser.BSLParserRuleContext; import lombok.Getter; import lombok.Value; +import org.antlr.v4.runtime.ParserRuleContext; import org.eclipse.lsp4j.Range; import java.util.ArrayList; @@ -124,8 +124,8 @@ public List getRegionsFlat() { * @param ctx узел дерева разбора документа. * @return найденный символ метода. */ - public Optional getMethodSymbol(BSLParserRuleContext ctx) { - BSLParserRuleContext subNameNode; + public Optional getMethodSymbol(ParserRuleContext ctx) { + ParserRuleContext subNameNode; if (Trees.nodeContainsErrors(ctx)) { subNameNode = ctx; } else if (ctx instanceof BSLParser.SubContext) { @@ -163,9 +163,9 @@ public Optional getMethodSymbol(String methodName) { * @param ctx узел дерева разбора документа. * @return найденный символ переменной. */ - public Optional getVariableSymbol(BSLParserRuleContext ctx) { + public Optional getVariableSymbol(ParserRuleContext ctx) { - BSLParserRuleContext varNameNode; + ParserRuleContext varNameNode; if (Trees.nodeContainsErrors(ctx)) { varNameNode = ctx; diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/context/symbol/description/DescriptionReader.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/context/symbol/description/DescriptionReader.java index c3497c1efc9..39fd2b7dd31 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/context/symbol/description/DescriptionReader.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/context/symbol/description/DescriptionReader.java @@ -22,9 +22,9 @@ package com.github._1c_syntax.bsl.languageserver.context.symbol.description; import com.github._1c_syntax.bsl.parser.BSLMethodDescriptionParser; -import com.github._1c_syntax.bsl.parser.BSLParserRuleContext; import edu.umd.cs.findbugs.annotations.Nullable; import lombok.experimental.UtilityClass; +import org.antlr.v4.runtime.ParserRuleContext; import java.util.ArrayList; import java.util.Collections; @@ -223,7 +223,7 @@ public static String readLink(BSLMethodDescriptionParser.MethodDescriptionContex return ""; } - private String getDescriptionString(BSLParserRuleContext ctx) { + private String getDescriptionString(ParserRuleContext ctx) { var strings = new StringJoiner(""); for (int i = 0; i < ctx.getChildCount(); i++) { var child = ctx.getChild(i); diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/AbstractFindMethodDiagnostic.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/AbstractFindMethodDiagnostic.java index 36a45cb0941..9c3208a29f6 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/AbstractFindMethodDiagnostic.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/AbstractFindMethodDiagnostic.java @@ -22,9 +22,9 @@ package com.github._1c_syntax.bsl.languageserver.diagnostics; import com.github._1c_syntax.bsl.parser.BSLParser; -import com.github._1c_syntax.bsl.parser.BSLParserRuleContext; import lombok.Getter; import lombok.Setter; +import org.antlr.v4.runtime.ParserRuleContext; import org.antlr.v4.runtime.tree.ParseTree; import java.util.regex.Pattern; @@ -81,7 +81,7 @@ protected boolean checkMethodCall(BSLParser.MethodCallContext ctx) { * первым параметром которого всегда будет имя метода. * В противном случае возвращается обычное сообщение без параметров. */ - protected String getMessage(BSLParserRuleContext ctx) { + protected String getMessage(ParserRuleContext ctx) { if (ctx instanceof BSLParser.GlobalMethodCallContext globalMethodCallContext) { return info.getMessage(globalMethodCallContext.methodName().getText()); diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/AllFunctionPathMustHaveReturnDiagnostic.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/AllFunctionPathMustHaveReturnDiagnostic.java index 0bc8b8ceeed..554c222dab1 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/AllFunctionPathMustHaveReturnDiagnostic.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/AllFunctionPathMustHaveReturnDiagnostic.java @@ -39,7 +39,7 @@ import com.github._1c_syntax.bsl.languageserver.utils.Trees; import com.github._1c_syntax.bsl.parser.BSLLexer; import com.github._1c_syntax.bsl.parser.BSLParser; -import com.github._1c_syntax.bsl.parser.BSLParserRuleContext; +import org.antlr.v4.runtime.ParserRuleContext; import org.antlr.v4.runtime.tree.ParseTree; import org.eclipse.lsp4j.DiagnosticRelatedInformation; @@ -127,7 +127,7 @@ private void checkAllPathsHaveReturns(BSLParser.FunctionContext ctx) { } - private Optional nonExplicitReturnNode(CfgVertex v, ControlFlowGraph graph) { + private Optional nonExplicitReturnNode(CfgVertex v, ControlFlowGraph graph) { if (v instanceof BasicBlockVertex basicBlock) { return checkBasicBlockExitingNode(basicBlock); } else if (v instanceof LoopVertex loop) { @@ -139,7 +139,7 @@ private Optional nonExplicitReturnNode(CfgVertex v, Contro return v.getAst(); } - private Optional checkElseIfClauseExitingNode(ConditionalVertex v, ControlFlowGraph graph) { + private Optional checkElseIfClauseExitingNode(ConditionalVertex v, ControlFlowGraph graph) { // check if this vertex connected to exit by FALSE branch var edgeOrNot = graph.getAllEdges(v, graph.getExitPoint()).stream() .filter(edge -> edge.getType() == CfgEdgeType.FALSE_BRANCH) @@ -157,7 +157,7 @@ private Optional checkElseIfClauseExitingNode(ConditionalV return Optional.empty(); } - private static Optional checkBasicBlockExitingNode(BasicBlockVertex block) { + private static Optional checkBasicBlockExitingNode(BasicBlockVertex block) { if (!block.statements().isEmpty()) { var lastStatement = block.statements().get(block.statements().size() - 1); @@ -169,7 +169,7 @@ private static Optional checkBasicBlockExitingNode(BasicBl return Optional.empty(); } - private Optional checkLoopExitingNode(LoopVertex v) { + private Optional checkLoopExitingNode(LoopVertex v) { if (v instanceof WhileLoopVertex whileLoop && isEndlessLoop(whileLoop)) { return Optional.empty(); } diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/BeginTransactionBeforeTryCatchDiagnostic.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/BeginTransactionBeforeTryCatchDiagnostic.java index 9451fcef22e..334869298cb 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/BeginTransactionBeforeTryCatchDiagnostic.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/BeginTransactionBeforeTryCatchDiagnostic.java @@ -27,8 +27,8 @@ import com.github._1c_syntax.bsl.languageserver.diagnostics.metadata.DiagnosticType; import com.github._1c_syntax.bsl.languageserver.utils.Trees; import com.github._1c_syntax.bsl.parser.BSLParser; -import com.github._1c_syntax.bsl.parser.BSLParserRuleContext; import com.github._1c_syntax.utils.CaseInsensitivePattern; +import org.antlr.v4.runtime.ParserRuleContext; import org.antlr.v4.runtime.tree.ParseTree; import java.util.Optional; @@ -48,7 +48,7 @@ public class BeginTransactionBeforeTryCatchDiagnostic extends AbstractVisitorDia "^НачатьТранзакцию$|^BeginTransaction$" ); - private BSLParserRuleContext nodeBeginTransaction; + private ParserRuleContext nodeBeginTransaction; private BSLParser.StatementContext nodeEndFile; public BeginTransactionBeforeTryCatchDiagnostic() { diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CodeOutOfRegionDiagnostic.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CodeOutOfRegionDiagnostic.java index 7634a715dd4..a77176ae35a 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CodeOutOfRegionDiagnostic.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CodeOutOfRegionDiagnostic.java @@ -34,8 +34,8 @@ import com.github._1c_syntax.bsl.languageserver.utils.RelatedInformation; import com.github._1c_syntax.bsl.languageserver.utils.Trees; import com.github._1c_syntax.bsl.parser.BSLParser; -import com.github._1c_syntax.bsl.parser.BSLParserRuleContext; import com.github._1c_syntax.bsl.types.ModuleType; +import org.antlr.v4.runtime.ParserRuleContext; import org.antlr.v4.runtime.tree.ParseTree; import org.antlr.v4.runtime.tree.TerminalNode; import org.antlr.v4.runtime.tree.Tree; @@ -147,7 +147,7 @@ public ParseTree visitModuleVar(BSLParser.ModuleVarContext ctx) { && !(node instanceof TerminalNode)) .findFirst() .ifPresent((Tree node) -> { - var ctxRange = Ranges.create((BSLParserRuleContext) node); + var ctxRange = Ranges.create((ParserRuleContext) node); if (regionsRanges.stream().noneMatch(regionRange -> Ranges.containsRange(regionRange, ctxRange))) { diagnosticStorage.addDiagnostic(ctx); @@ -179,7 +179,7 @@ public ParseTree visitFileCodeBlockBeforeSub(BSLParser.FileCodeBlockBeforeSubCon return ctx; } - private void addDiagnosticForFileCodeBlock(BSLParserRuleContext ctx) { + private void addDiagnosticForFileCodeBlock(ParserRuleContext ctx) { Trees.findAllRuleNodes(ctx, BSLParser.RULE_statement) .stream() .filter(node -> node.getParent().getParent() == ctx) diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CognitiveComplexityDiagnostic.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CognitiveComplexityDiagnostic.java index 525eb676e48..4866db740cf 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CognitiveComplexityDiagnostic.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CognitiveComplexityDiagnostic.java @@ -31,7 +31,7 @@ import com.github._1c_syntax.bsl.languageserver.utils.Ranges; import com.github._1c_syntax.bsl.languageserver.utils.RelatedInformation; import com.github._1c_syntax.bsl.parser.BSLParser; -import com.github._1c_syntax.bsl.parser.BSLParserRuleContext; +import org.antlr.v4.runtime.ParserRuleContext; import org.antlr.v4.runtime.tree.ParseTree; import org.eclipse.lsp4j.DiagnosticRelatedInformation; @@ -125,7 +125,7 @@ public ParseTree visitFileCodeBlock(BSLParser.FileCodeBlockContext ctx) { return ctx; } - private void checkFileCodeBlock(BSLParserRuleContext ctx) { + private void checkFileCodeBlock(ParserRuleContext ctx) { if (!checkModuleBody) { return; } diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CommitTransactionOutsideTryCatchDiagnostic.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CommitTransactionOutsideTryCatchDiagnostic.java index 458b235cd02..4283e151233 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CommitTransactionOutsideTryCatchDiagnostic.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CommitTransactionOutsideTryCatchDiagnostic.java @@ -27,8 +27,8 @@ import com.github._1c_syntax.bsl.languageserver.diagnostics.metadata.DiagnosticType; import com.github._1c_syntax.bsl.languageserver.utils.Trees; import com.github._1c_syntax.bsl.parser.BSLParser; -import com.github._1c_syntax.bsl.parser.BSLParserRuleContext; import com.github._1c_syntax.utils.CaseInsensitivePattern; +import org.antlr.v4.runtime.ParserRuleContext; import org.antlr.v4.runtime.tree.ParseTree; import java.util.regex.Pattern; @@ -48,7 +48,7 @@ public class CommitTransactionOutsideTryCatchDiagnostic extends AbstractVisitorD "ЗафиксироватьТранзакцию|CommitTransaction" ); - private BSLParserRuleContext nodeEndTransaction; + private ParserRuleContext nodeEndTransaction; private BSLParser.StatementContext nodeEndFile; public CommitTransactionOutsideTryCatchDiagnostic() { diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CreateQueryInCycleDiagnostic.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CreateQueryInCycleDiagnostic.java index f045510e4f7..6b803639709 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CreateQueryInCycleDiagnostic.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CreateQueryInCycleDiagnostic.java @@ -28,7 +28,6 @@ import com.github._1c_syntax.bsl.languageserver.utils.bsl.Constructors; import com.github._1c_syntax.bsl.parser.BSLParser; import com.github._1c_syntax.bsl.parser.BSLParser.AssignmentContext; -import com.github._1c_syntax.bsl.parser.BSLParserRuleContext; import com.github._1c_syntax.utils.CaseInsensitivePattern; import edu.umd.cs.findbugs.annotations.Nullable; import lombok.Getter; @@ -233,8 +232,8 @@ public ParseTree visitAccessCall(BSLParser.AccessCallContext ctx) { } String variableName = null; - BSLParserRuleContext errorContext = null; - BSLParserRuleContext parent = ctx.getParent(); + ParserRuleContext errorContext = null; + ParserRuleContext parent = ctx.getParent(); if (parent instanceof BSLParser.CallStatementContext callStatementContext) { errorContext = parent; variableName = getVariableNameFromCallStatementContext(callStatementContext); @@ -243,7 +242,7 @@ public ParseTree visitAccessCall(BSLParser.AccessCallContext ctx) { variableName = getVariableNameFromModifierContext(callModifier); } Optional variableDefinition = currentScope.getVariableByName(variableName); - BSLParserRuleContext finalErrorContext = errorContext; + ParserRuleContext finalErrorContext = errorContext; if (finalErrorContext != null) { variableDefinition.ifPresent((VariableDefinition definition) -> { diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CyclomaticComplexityDiagnostic.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CyclomaticComplexityDiagnostic.java index 43e66148824..36df3a1b96e 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CyclomaticComplexityDiagnostic.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CyclomaticComplexityDiagnostic.java @@ -31,7 +31,7 @@ import com.github._1c_syntax.bsl.languageserver.utils.Ranges; import com.github._1c_syntax.bsl.languageserver.utils.RelatedInformation; import com.github._1c_syntax.bsl.parser.BSLParser; -import com.github._1c_syntax.bsl.parser.BSLParserRuleContext; +import org.antlr.v4.runtime.ParserRuleContext; import org.antlr.v4.runtime.tree.ParseTree; import org.eclipse.lsp4j.DiagnosticRelatedInformation; @@ -118,7 +118,7 @@ public ParseTree visitFileCodeBlock(BSLParser.FileCodeBlockContext ctx) { return ctx; } - private void checkFileCodeBlock(BSLParserRuleContext ctx) { + private void checkFileCodeBlock(ParserRuleContext ctx) { if (!checkModuleBody) { return; } diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/DataExchangeLoadingDiagnostic.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/DataExchangeLoadingDiagnostic.java index ba94092c82c..9d2d70aa33a 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/DataExchangeLoadingDiagnostic.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/DataExchangeLoadingDiagnostic.java @@ -117,7 +117,7 @@ && foundReturnStatement(context)) private Optional methodSymbol(BSLParser.ProcDeclarationContext ctx) { return Optional.of(documentContext.getSymbolTree()) - .flatMap(symbolTree -> symbolTree.getMethodSymbol((BSLParser.SubContext) getSubContext(ctx))); + .flatMap(symbolTree -> symbolTree.getMethodSymbol(getSubContext(ctx))); } private boolean foundReturnStatement(BSLParser.IfBranchContext ifBranch) { diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/DeprecatedAttributes8312Diagnostic.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/DeprecatedAttributes8312Diagnostic.java index 8bb67b78760..e421190fcdf 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/DeprecatedAttributes8312Diagnostic.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/DeprecatedAttributes8312Diagnostic.java @@ -29,8 +29,8 @@ import com.github._1c_syntax.bsl.languageserver.diagnostics.metadata.DiagnosticType; import com.github._1c_syntax.bsl.languageserver.utils.Trees; import com.github._1c_syntax.bsl.parser.BSLParser; -import com.github._1c_syntax.bsl.parser.BSLParserRuleContext; import com.github._1c_syntax.utils.CaseInsensitivePattern; +import org.antlr.v4.runtime.ParserRuleContext; import org.antlr.v4.runtime.tree.ParseTree; import java.util.HashMap; @@ -286,7 +286,7 @@ public ParseTree visitComplexIdentifier(BSLParser.ComplexIdentifierContext ctx) return super.visitComplexIdentifier(ctx); } - private void checkDeprecatedAttributes(BSLParserRuleContext ctx, + private void checkDeprecatedAttributes(ParserRuleContext ctx, Pattern objectNamePattern, Pattern deprecatedAttributesPattern) { diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/DiagnosticStorage.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/DiagnosticStorage.java index 595605fca5f..a6ea80f39ad 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/DiagnosticStorage.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/DiagnosticStorage.java @@ -23,8 +23,8 @@ import com.github._1c_syntax.bsl.languageserver.context.symbol.SourceDefinedSymbol; import com.github._1c_syntax.bsl.languageserver.utils.Ranges; -import com.github._1c_syntax.bsl.parser.BSLParserRuleContext; import edu.umd.cs.findbugs.annotations.Nullable; +import org.antlr.v4.runtime.ParserRuleContext; import org.antlr.v4.runtime.Token; import org.antlr.v4.runtime.tree.ParseTree; import org.antlr.v4.runtime.tree.TerminalNode; @@ -64,7 +64,7 @@ public void clearDiagnostics() { diagnosticList.clear(); } - protected void addDiagnostic(BSLParserRuleContext node) { + protected void addDiagnostic(ParserRuleContext node) { if (node.exception != null) { return; } @@ -74,7 +74,7 @@ protected void addDiagnostic(BSLParserRuleContext node) { ); } - protected void addDiagnostic(BSLParserRuleContext node, String diagnosticMessage) { + protected void addDiagnostic(ParserRuleContext node, String diagnosticMessage) { if (node.exception != null) { return; } @@ -137,7 +137,7 @@ protected void addDiagnostic(TerminalNode startTerminalNode, TerminalNode stopTe addDiagnostic(startTerminalNode.getSymbol(), stopTerminalNode.getSymbol()); } - protected void addDiagnostic(BSLParserRuleContext node, List relatedInformation) { + protected void addDiagnostic(ParserRuleContext node, List relatedInformation) { if (node.exception != null) { return; } @@ -158,7 +158,7 @@ public void addDiagnostic(Token token, List relate } public void addDiagnostic( - BSLParserRuleContext node, + ParserRuleContext node, String diagnosticMessage, List relatedInformation ) { @@ -216,7 +216,7 @@ public void addDiagnostic( } public void addDiagnostic(ParseTree tree) { - if (tree instanceof BSLParserRuleContext parserRuleContext) { + if (tree instanceof ParserRuleContext parserRuleContext) { addDiagnostic(parserRuleContext); } else if (tree instanceof TerminalNode terminalNode) { addDiagnostic(terminalNode); diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/DuplicateStringLiteralDiagnostic.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/DuplicateStringLiteralDiagnostic.java index efe87febbad..29439965585 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/DuplicateStringLiteralDiagnostic.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/DuplicateStringLiteralDiagnostic.java @@ -29,7 +29,7 @@ import com.github._1c_syntax.bsl.languageserver.utils.Ranges; import com.github._1c_syntax.bsl.languageserver.utils.RelatedInformation; import com.github._1c_syntax.bsl.parser.BSLParser; -import com.github._1c_syntax.bsl.parser.BSLParserRuleContext; +import org.antlr.v4.runtime.ParserRuleContext; import org.antlr.v4.runtime.tree.ParseTree; import org.antlr.v4.runtime.tree.Trees; import org.eclipse.lsp4j.DiagnosticRelatedInformation; @@ -142,12 +142,12 @@ public ParseTree visitFileCodeBlockBeforeSub(BSLParser.FileCodeBlockBeforeSubCon * * @param ctx Узел блока для анализа */ - private void checkStringLiterals(BSLParserRuleContext ctx) { + private void checkStringLiterals(ParserRuleContext ctx) { Trees.findAllRuleNodes(ctx, BSLParser.RULE_string).stream() - .map(BSLParserRuleContext.class::cast) + .map(ParserRuleContext.class::cast) .filter(this::checkLiteral) .collect(Collectors.groupingBy(this::getLiteralText)) - .forEach((String name, List literals) -> { + .forEach((String name, List literals) -> { if (literals.size() > allowedNumberCopies) { List relatedInformation = literals.stream() .map(literal -> RelatedInformation.create( @@ -162,7 +162,7 @@ private void checkStringLiterals(BSLParserRuleContext ctx) { }); } - private String getLiteralText(BSLParserRuleContext literal) { + private String getLiteralText(ParserRuleContext literal) { if (caseSensitive) { return literal.getText(); } else { @@ -176,7 +176,7 @@ private String getLiteralText(BSLParserRuleContext literal) { * @param literal Строковый литерал * @return Необходимо анализировать */ - private boolean checkLiteral(BSLParserRuleContext literal) { + private boolean checkLiteral(ParserRuleContext literal) { return literal.getText().length() >= minTextLength; } } diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/DuplicatedInsertionIntoCollectionDiagnostic.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/DuplicatedInsertionIntoCollectionDiagnostic.java index 02a87f5231f..93bbbe350fb 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/DuplicatedInsertionIntoCollectionDiagnostic.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/DuplicatedInsertionIntoCollectionDiagnostic.java @@ -32,9 +32,9 @@ import com.github._1c_syntax.bsl.parser.BSLParser; import com.github._1c_syntax.bsl.parser.BSLParser.AssignmentContext; import com.github._1c_syntax.bsl.parser.BSLParser.CallParamContext; -import com.github._1c_syntax.bsl.parser.BSLParserRuleContext; import com.github._1c_syntax.utils.CaseInsensitivePattern; import edu.umd.cs.findbugs.annotations.Nullable; +import org.antlr.v4.runtime.ParserRuleContext; import org.antlr.v4.runtime.tree.ParseTree; import org.antlr.v4.runtime.tree.TerminalNode; import org.apache.commons.collections4.map.CaseInsensitiveMap; @@ -86,7 +86,7 @@ public class DuplicatedInsertionIntoCollectionDiagnostic extends AbstractVisitor private BSLParser.CodeBlockContext codeBlock; private Range blockRange; private List blockAssignments; - private List blockBreakers; + private List blockBreakers; private List blockCallParams; private List firstParamInnerIdentifiers; @@ -261,11 +261,11 @@ private static boolean startWithIgnoreCase(String identifier, String textWithDot private boolean hasBreakersBetweenCalls(Range border) { return getBreakers().stream() - .filter(bslParserRuleContext -> Ranges.containsRange(border, Ranges.create(bslParserRuleContext))) + .filter(ruleContext -> Ranges.containsRange(border, Ranges.create(ruleContext))) .anyMatch(this::hasBreakerIntoCodeBlock); } - private boolean hasBreakerIntoCodeBlock(BSLParserRuleContext breakerContext) { + private boolean hasBreakerIntoCodeBlock(ParserRuleContext breakerContext) { if (breakerContext.getRuleIndex() == BSLParser.RULE_returnStatement) { return true; } @@ -295,7 +295,7 @@ private boolean usedIdentifiers(List memberCo .map(BSLParser.MemberContext::complexIdentifier) .filter(Objects::nonNull) .filter(complexIdentifierContext -> complexIdentifierContext.IDENTIFIER() != null) - .map(BSLParserRuleContext::getText) + .map(ParserRuleContext::getText) .anyMatch(identifier -> usedIdentifiers(identifier, groupingData)); } @@ -321,11 +321,9 @@ private List getAssignments() { return blockAssignments; } - private List getBreakers() { + private List getBreakers() { if (blockBreakers == null) { - blockBreakers = Trees.findAllRuleNodes(codeBlock, BREAKERS_INDEXES).stream() - .map(BSLParserRuleContext.class::cast) - .toList(); + blockBreakers = List.copyOf(Trees.findAllRuleNodes(codeBlock, BREAKERS_INDEXES)); } return blockBreakers; } @@ -374,7 +372,7 @@ private void clearCodeBlockFields() { private static String getFullIdentifier(String firstIdentifier, List modifiers) { return modifiers.stream() - .map(BSLParserRuleContext::getText) + .map(ParserRuleContext::getText) .reduce(firstIdentifier, (x, y) -> x.concat(".").concat(y)) .replace("..", "."); } diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/FieldsFromJoinsWithoutIsNullDiagnostic.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/FieldsFromJoinsWithoutIsNullDiagnostic.java index 1f0e6e38935..534e18c47b4 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/FieldsFromJoinsWithoutIsNullDiagnostic.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/FieldsFromJoinsWithoutIsNullDiagnostic.java @@ -28,9 +28,9 @@ import com.github._1c_syntax.bsl.languageserver.utils.Ranges; import com.github._1c_syntax.bsl.languageserver.utils.RelatedInformation; import com.github._1c_syntax.bsl.languageserver.utils.Trees; -import com.github._1c_syntax.bsl.parser.BSLParserRuleContext; import com.github._1c_syntax.bsl.parser.SDBLParser; import edu.umd.cs.findbugs.annotations.Nullable; +import org.antlr.v4.runtime.ParserRuleContext; import org.antlr.v4.runtime.tree.ParseTree; import org.antlr.v4.runtime.tree.TerminalNode; import org.eclipse.lsp4j.DiagnosticRelatedInformation; @@ -81,7 +81,7 @@ public class FieldsFromJoinsWithoutIsNullDiagnostic extends AbstractSDBLVisitorD public static final int NOT_WITH_PARENS_EXPR_MEMBERS_COUNT = 4; public static final int NOT_IS_NULL_EXPR_MEMBER_COUNT = 2; - private final List nodesForIssues = new ArrayList<>(); + private final List nodesForIssues = new ArrayList<>(); @Override public ParseTree visitJoinPart(SDBLParser.JoinPartContext joinPartCtx) { @@ -104,7 +104,7 @@ private static Stream joinedTables(SDBLParser.JoinPartContext joinPartCt .map(SDBLParser.DataSourceContext::alias) .filter(Objects::nonNull) .map(SDBLParser.AliasContext::identifier) - .map(BSLParserRuleContext::getText); + .map(ParserRuleContext::getText); } private static List joinedDataSourceContext(SDBLParser.JoinPartContext joinPartCtx) { @@ -171,7 +171,7 @@ private void checkSelect(String tableName, SDBLParser.SelectedFieldsContext colu checkStatements(tableName, columns, SELECT_STATEMENTS, EXCLUDED_TOP_RULE_FOR_SELECT, true); } - private void checkStatements(String tableName, BSLParserRuleContext expression, Collection statements, + private void checkStatements(String tableName, ParserRuleContext expression, Collection statements, Integer rootForStatement, boolean checkIsNullOperator) { Trees.findAllRuleNodes(expression, SDBLParser.RULE_column).stream() @@ -193,7 +193,7 @@ private static boolean checkColumn(String tableName, SDBLParser.ColumnContext co .isPresent(); } - private static boolean haveIsNullInsideExprForColumn(BSLParserRuleContext ctx, Collection statements, + private static boolean haveIsNullInsideExprForColumn(ParserRuleContext ctx, Collection statements, Integer rootForStatement, boolean checkIsNullOperator) { var selectStatement = Trees.getRootParent(ctx, statements); if (selectStatement == null || selectStatement.getChildCount() == 0 @@ -207,14 +207,14 @@ private static boolean haveIsNullInsideExprForColumn(BSLParserRuleContext ctx, C || haveIsNullInsideExprForColumn(selectStatement, statements, rootForStatement, checkIsNullOperator); } - private static boolean haveIsNullOperator(BSLParserRuleContext ctx) { + private static boolean haveIsNullOperator(ParserRuleContext ctx) { return Optional.of(ctx) .filter(SDBLParser.IsNullPredicateContext.class::isInstance) .map(SDBLParser.IsNullPredicateContext.class::cast) .isPresent(); } - private static boolean haveIsNullFunction(BSLParserRuleContext ctx) { + private static boolean haveIsNullFunction(ParserRuleContext ctx) { return Optional.of(ctx) .filter(SDBLParser.BuiltInFunctionsContext.class::isInstance) .map(SDBLParser.BuiltInFunctionsContext.class::cast) diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/FunctionOutParameterDiagnostic.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/FunctionOutParameterDiagnostic.java index c659a64838e..7f13008aa4a 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/FunctionOutParameterDiagnostic.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/FunctionOutParameterDiagnostic.java @@ -29,7 +29,7 @@ import com.github._1c_syntax.bsl.languageserver.diagnostics.metadata.DiagnosticType; import com.github._1c_syntax.bsl.languageserver.utils.Trees; import com.github._1c_syntax.bsl.parser.BSLParser; -import com.github._1c_syntax.bsl.parser.BSLParserRuleContext; +import org.antlr.v4.runtime.ParserRuleContext; import org.antlr.v4.runtime.tree.ParseTree; import org.apache.commons.collections4.map.CaseInsensitiveMap; @@ -70,7 +70,7 @@ public ParseTree visitFunction(BSLParser.FunctionContext ctx) { .collect( Collectors.toMap( ParseTree::getText, - BSLParserRuleContext.class::cast, + ParserRuleContext.class::cast, (existing, replacement) -> existing, CaseInsensitiveMap::new) ); diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/FunctionReturnsSamePrimitiveDiagnostic.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/FunctionReturnsSamePrimitiveDiagnostic.java index b50c1899539..1d4f355f65b 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/FunctionReturnsSamePrimitiveDiagnostic.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/FunctionReturnsSamePrimitiveDiagnostic.java @@ -31,8 +31,8 @@ import com.github._1c_syntax.bsl.languageserver.utils.RelatedInformation; import com.github._1c_syntax.bsl.languageserver.utils.Trees; import com.github._1c_syntax.bsl.parser.BSLParser; -import com.github._1c_syntax.bsl.parser.BSLParserRuleContext; import com.github._1c_syntax.utils.CaseInsensitivePattern; +import org.antlr.v4.runtime.ParserRuleContext; import org.antlr.v4.runtime.tree.ParseTree; import org.eclipse.lsp4j.Range; @@ -137,7 +137,7 @@ private String getExpressionText(BSLParser.ExpressionContext expression) { return expression.getText().toUpperCase(Locale.ENGLISH); } - private Range getSubNameRange(BSLParserRuleContext ctx) { + private Range getSubNameRange(ParserRuleContext ctx) { return Optional.ofNullable(Trees.getAncestorByRuleIndex(ctx, BSLParser.RULE_sub)) .map(BSLParser.SubContext.class::cast) .flatMap(context -> documentContext.getSymbolTree().getMethodSymbol(context)) diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/IncorrectUseLikeInQueryDiagnostic.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/IncorrectUseLikeInQueryDiagnostic.java index 0ae300b88f5..b735ff3339e 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/IncorrectUseLikeInQueryDiagnostic.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/IncorrectUseLikeInQueryDiagnostic.java @@ -27,9 +27,9 @@ import com.github._1c_syntax.bsl.languageserver.diagnostics.metadata.DiagnosticTag; import com.github._1c_syntax.bsl.languageserver.diagnostics.metadata.DiagnosticType; import com.github._1c_syntax.bsl.languageserver.utils.Trees; -import com.github._1c_syntax.bsl.parser.BSLParserRuleContext; import com.github._1c_syntax.bsl.parser.SDBLParser; import edu.umd.cs.findbugs.annotations.Nullable; +import org.antlr.v4.runtime.ParserRuleContext; import org.antlr.v4.runtime.tree.ParseTree; import org.antlr.v4.runtime.tree.TerminalNode; @@ -54,7 +54,7 @@ public ParseTree visitLikePredicate(SDBLParser.LikePredicateContext ctx) { return super.visitLikePredicate(ctx); } - private void checkRightStatement(BSLParserRuleContext ctx, + private void checkRightStatement(ParserRuleContext ctx, @Nullable TerminalNode like, List expressions) { diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/IncorrectUseOfStrTemplateDiagnostic.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/IncorrectUseOfStrTemplateDiagnostic.java index cabca3f7589..584e6ac29ae 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/IncorrectUseOfStrTemplateDiagnostic.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/IncorrectUseOfStrTemplateDiagnostic.java @@ -27,9 +27,9 @@ import com.github._1c_syntax.bsl.languageserver.diagnostics.metadata.DiagnosticType; import com.github._1c_syntax.bsl.languageserver.utils.Trees; import com.github._1c_syntax.bsl.parser.BSLParser; -import com.github._1c_syntax.bsl.parser.BSLParserRuleContext; import com.github._1c_syntax.utils.CaseInsensitivePattern; import edu.umd.cs.findbugs.annotations.Nullable; +import org.antlr.v4.runtime.ParserRuleContext; import java.util.HashSet; import java.util.Objects; @@ -132,7 +132,7 @@ private static Optional getStringFromExpression(Optional s.length() > LENGTH_OF_EMPTY_STRING_FROM_AST); } @@ -190,13 +190,13 @@ private static Optional calcAssignedValueForIdentif } @Nullable - private static BSLParserRuleContext getPreviousNode(BSLParserRuleContext node, int ruleStatement) { + private static ParserRuleContext getPreviousNode(ParserRuleContext node, int ruleStatement) { final var children = node.getParent().children; final var pos = children.indexOf(node); if (pos > 0) { for (int i = pos - 1; i >= 0; i--) { - final var prev = (BSLParserRuleContext) children.get(i); + final var prev = (ParserRuleContext) children.get(i); if (prev.getRuleIndex() == ruleStatement) { return prev; } diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/IsInRoleMethodDiagnostic.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/IsInRoleMethodDiagnostic.java index dc146d99e81..29658a597e0 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/IsInRoleMethodDiagnostic.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/IsInRoleMethodDiagnostic.java @@ -28,9 +28,9 @@ import com.github._1c_syntax.bsl.languageserver.diagnostics.metadata.DiagnosticType; import com.github._1c_syntax.bsl.languageserver.utils.Trees; import com.github._1c_syntax.bsl.parser.BSLParser; -import com.github._1c_syntax.bsl.parser.BSLParserRuleContext; import com.github._1c_syntax.utils.CaseInsensitivePattern; import edu.umd.cs.findbugs.annotations.Nullable; +import org.antlr.v4.runtime.ParserRuleContext; import org.antlr.v4.runtime.tree.ParseTree; import java.util.HashSet; @@ -124,7 +124,7 @@ private void handlePrivilegedModeGlobalMethod(BSLParser.GlobalMethodCallContext } } - private static void addAssignedNameVar(BSLParserRuleContext assignmentNode, Set nameVars) { + private static void addAssignedNameVar(ParserRuleContext assignmentNode, Set nameVars) { var childNode = Trees.getFirstChild(assignmentNode, BSLParser.RULE_lValue); childNode.ifPresent(node -> nameVars.add(node.getText())); } @@ -132,7 +132,7 @@ private static void addAssignedNameVar(BSLParserRuleContext assignmentNode, Set< @Override public ParseTree visitAssignment(BSLParser.AssignmentContext ctx) { var childNode = Trees.getFirstChild(ctx, BSLParser.RULE_lValue); - childNode.ifPresent((BSLParserRuleContext node) -> + childNode.ifPresent((ParserRuleContext node) -> { isInRoleVars.remove(node.getText()); privilegedModeNameVars.remove(node.getText()); @@ -140,12 +140,12 @@ public ParseTree visitAssignment(BSLParser.AssignmentContext ctx) { return super.visitAssignment(ctx); } - private boolean checkStatement(BSLParserRuleContext ctx) { + private boolean checkStatement(ParserRuleContext ctx) { var parentExpression = Trees.getRootParent(ctx, BSLParser.RULE_expression); return checkStatement(ctx, parentExpression); } - private boolean checkStatement(BSLParserRuleContext ctx, @Nullable BSLParserRuleContext parentExpression) { + private boolean checkStatement(ParserRuleContext ctx, @Nullable ParserRuleContext parentExpression) { if (parentExpression == null) { return false; diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/MagicDateDiagnostic.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/MagicDateDiagnostic.java index 24f4760e2b5..76623177125 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/MagicDateDiagnostic.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/MagicDateDiagnostic.java @@ -27,8 +27,8 @@ import com.github._1c_syntax.bsl.languageserver.diagnostics.metadata.DiagnosticTag; import com.github._1c_syntax.bsl.languageserver.diagnostics.metadata.DiagnosticType; import com.github._1c_syntax.bsl.parser.BSLParser; -import com.github._1c_syntax.bsl.parser.BSLParserRuleContext; import com.github._1c_syntax.utils.CaseInsensitivePattern; +import org.antlr.v4.runtime.ParserRuleContext; import org.antlr.v4.runtime.tree.ParseTree; import java.util.Arrays; @@ -151,9 +151,9 @@ private boolean isExcluded(String text) { private static Optional getExpression(Optional constValue) { return constValue - .map(BSLParserRuleContext::getParent) + .map(ParserRuleContext::getParent) .filter(context -> context.getChildCount() == 1) - .map(BSLParserRuleContext::getParent) + .map(ParserRuleContext::getParent) .filter(context -> context.getChildCount() == 1) .filter(BSLParser.ExpressionContext.class::isInstance) .map(BSLParser.ExpressionContext.class::cast); @@ -164,9 +164,9 @@ private static boolean insideSimpleDateAssignment(Optional expression, - Class assignmentContextClass) { + Class assignmentContextClass) { return expression - .map(BSLParserRuleContext::getParent) + .map(ParserRuleContext::getParent) .filter(assignmentContextClass::isInstance) .isPresent(); } @@ -177,22 +177,22 @@ private static boolean insideReturnSimpleDate(Optional expression) { return expression - .map(BSLParserRuleContext::getParent) // callParam + .map(ParserRuleContext::getParent) // callParam .filter(context -> context.getChildCount() == 1) - .map(BSLParserRuleContext::getParent) // callParamList + .map(ParserRuleContext::getParent) // callParamList .filter(context -> context.getChildCount() == 1) - .map(BSLParserRuleContext::getParent) // doCall - .map(BSLParserRuleContext::getParent) // globalCall - метод Дата(ХХХ) + .map(ParserRuleContext::getParent) // doCall + .map(ParserRuleContext::getParent) // globalCall - метод Дата(ХХХ) .filter(BSLParser.GlobalMethodCallContext.class::isInstance) .map(BSLParser.GlobalMethodCallContext.class::cast) .filter(context -> methodPattern.matcher(context.methodName().getText()).matches()) - .map(BSLParserRuleContext::getParent) // complexId + .map(ParserRuleContext::getParent) // complexId .filter(context -> context.getChildCount() == 1) - .map(BSLParserRuleContext::getParent) // member + .map(ParserRuleContext::getParent) // member .filter(context -> context.getChildCount() == 1) - .map(BSLParserRuleContext::getParent) // expression + .map(ParserRuleContext::getParent) // expression .filter(context -> context.getChildCount() == 1) - .map(BSLParserRuleContext::getParent) + .map(ParserRuleContext::getParent) .filter(BSLParser.AssignmentContext.class::isInstance) .isPresent(); } diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/MagicNumberDiagnostic.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/MagicNumberDiagnostic.java index 169863fd48d..80db5d17e58 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/MagicNumberDiagnostic.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/MagicNumberDiagnostic.java @@ -28,7 +28,7 @@ import com.github._1c_syntax.bsl.languageserver.diagnostics.metadata.DiagnosticType; import com.github._1c_syntax.bsl.languageserver.utils.DiagnosticHelper; import com.github._1c_syntax.bsl.parser.BSLParser; -import com.github._1c_syntax.bsl.parser.BSLParserRuleContext; +import org.antlr.v4.runtime.ParserRuleContext; import org.antlr.v4.runtime.tree.ParseTree; import java.util.ArrayList; @@ -75,12 +75,12 @@ public void configure(Map configuration) { } } - private static Optional getExpression(BSLParserRuleContext ctx) { + private static Optional getExpression(ParserRuleContext ctx) { return Optional.of(ctx) .filter(context -> context.getChildCount() == 1) - .map(BSLParserRuleContext::getParent) + .map(ParserRuleContext::getParent) .filter(context -> context.getChildCount() == 1) - .map(BSLParserRuleContext::getParent) + .map(ParserRuleContext::getParent) .filter(BSLParser.ExpressionContext.class::isInstance) .map(BSLParser.ExpressionContext.class::cast); } @@ -115,7 +115,7 @@ private boolean isAllowed(String s) { return true; } - private boolean isWrongExpression(BSLParserRuleContext numericContextParent) { + private boolean isWrongExpression(ParserRuleContext numericContextParent) { return getExpression(numericContextParent) .filter((BSLParser.ExpressionContext expression) -> (!isNumericExpression(expression) || mayBeNumberAccess(expression) || insideCallParam(expression))) diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/MissedRequiredParameterDiagnostic.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/MissedRequiredParameterDiagnostic.java index 38f7da974b8..922c24e0eae 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/MissedRequiredParameterDiagnostic.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/MissedRequiredParameterDiagnostic.java @@ -29,8 +29,8 @@ import com.github._1c_syntax.bsl.languageserver.references.ReferenceIndex; import com.github._1c_syntax.bsl.languageserver.utils.Ranges; import com.github._1c_syntax.bsl.parser.BSLParser; -import com.github._1c_syntax.bsl.parser.BSLParserRuleContext; import lombok.RequiredArgsConstructor; +import org.antlr.v4.runtime.ParserRuleContext; import org.antlr.v4.runtime.Token; import org.antlr.v4.runtime.tree.ParseTree; import org.eclipse.lsp4j.Range; @@ -83,7 +83,7 @@ public ParseTree visitMethodCall(BSLParser.MethodCallContext ctx) { return super.visitMethodCall(ctx); } - private void appendMethodCall(Token methodName, BSLParser.DoCallContext doCallContext, BSLParserRuleContext node) { + private void appendMethodCall(Token methodName, BSLParser.DoCallContext doCallContext, ParserRuleContext node) { var parameters = doCallContext.callParamList().callParam(); var methodCall = new MethodCall(); methodCall.parameters = new Boolean[parameters.size()]; diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/MissingCommonModuleMethodDiagnostic.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/MissingCommonModuleMethodDiagnostic.java index 4dcac0a5a82..d7c34f23edb 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/MissingCommonModuleMethodDiagnostic.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/MissingCommonModuleMethodDiagnostic.java @@ -30,10 +30,10 @@ import com.github._1c_syntax.bsl.languageserver.references.model.OccurrenceType; import com.github._1c_syntax.bsl.languageserver.references.model.SymbolOccurrence; import com.github._1c_syntax.bsl.languageserver.utils.Trees; -import com.github._1c_syntax.bsl.parser.BSLParserRuleContext; import com.github._1c_syntax.bsl.types.ConfigurationSource; import com.github._1c_syntax.bsl.types.ModuleType; import lombok.RequiredArgsConstructor; +import org.antlr.v4.runtime.ParserRuleContext; import org.antlr.v4.runtime.tree.ParseTree; import org.eclipse.lsp4j.Range; import org.eclipse.lsp4j.SymbolKind; @@ -54,7 +54,7 @@ public class MissingCommonModuleMethodDiagnostic extends AbstractDiagnostic { public static final String PRIVATE_METHOD_MESSAGE = "privateMethod"; private final LocationRepository locationRepository; - private static String getMethodNameByLocation(BSLParserRuleContext node, Range range) { + private static String getMethodNameByLocation(ParserRuleContext node, Range range) { return Trees.findTerminalNodeContainsPosition(node, range.getStart()) .map(ParseTree::getText) .orElseThrow(); diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/MissingTemporaryFileDeletionDiagnostic.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/MissingTemporaryFileDeletionDiagnostic.java index 9855bf300b3..91f372b5267 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/MissingTemporaryFileDeletionDiagnostic.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/MissingTemporaryFileDeletionDiagnostic.java @@ -28,7 +28,6 @@ import com.github._1c_syntax.bsl.languageserver.diagnostics.metadata.DiagnosticType; import com.github._1c_syntax.bsl.languageserver.utils.Trees; import com.github._1c_syntax.bsl.parser.BSLParser; -import com.github._1c_syntax.bsl.parser.BSLParserRuleContext; import com.github._1c_syntax.utils.CaseInsensitivePattern; import org.antlr.v4.runtime.tree.ParseTree; @@ -118,8 +117,7 @@ private boolean foundDeleteFile(BSLParser.CodeBlockContext codeBlockContext, Str var listCallStatements = Trees .findAllRuleNodes(codeBlockContext, BSLParser.RULE_globalMethodCall, BSLParser.RULE_accessCall) .stream() - .map(BSLParserRuleContext.class::cast) - .filter((BSLParserRuleContext node) -> node.getStart().getLine() > filterLine) + .filter(node -> node.getStart().getLine() > filterLine) .toList(); for (var node : listCallStatements) { @@ -171,8 +169,7 @@ private static boolean foundVariableInCallParams(BSLParser.DoCallContext doCallC private static String getVariableName(BSLParser.GlobalMethodCallContext ctx) { - BSLParser.AssignmentContext assignment = (BSLParser.AssignmentContext) - Trees.getAncestorByRuleIndex(ctx, BSLParser.RULE_assignment); + BSLParser.AssignmentContext assignment = Trees.getAncestorByRuleIndex(ctx, BSLParser.RULE_assignment); if (assignment == null) { return null; diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/NestedFunctionInParametersDiagnostic.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/NestedFunctionInParametersDiagnostic.java index 87b0103697f..262981553de 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/NestedFunctionInParametersDiagnostic.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/NestedFunctionInParametersDiagnostic.java @@ -27,7 +27,6 @@ import com.github._1c_syntax.bsl.languageserver.diagnostics.metadata.DiagnosticTag; import com.github._1c_syntax.bsl.languageserver.diagnostics.metadata.DiagnosticType; import com.github._1c_syntax.bsl.parser.BSLParser; -import com.github._1c_syntax.bsl.parser.BSLParserRuleContext; import com.github._1c_syntax.utils.CaseInsensitivePattern; import edu.umd.cs.findbugs.annotations.Nullable; import org.antlr.v4.runtime.ParserRuleContext; @@ -112,7 +111,7 @@ public ParseTree visitNewExpression(BSLParser.NewExpressionContext ctx) { return super.visitNewExpression(ctx); } - private boolean findNestedCall(BSLParserRuleContext ctx, BSLParser.DoCallContext ctxDoCall) { + private boolean findNestedCall(ParserRuleContext ctx, BSLParser.DoCallContext ctxDoCall) { // однострочники пропускаем сразу if (ctx.getStart().getLine() == ctx.getStop().getLine()) { return false; @@ -133,7 +132,7 @@ private boolean multilineParam(BSLParser.DoCallContext ctxDoCall) { .anyMatch(callParamContext -> callParamContext.getStop().getLine() > callParamContext.getStart().getLine()); } - private void checkMethodCall(BSLParserRuleContext ctx, + private void checkMethodCall(ParserRuleContext ctx, BSLParser.DoCallContext ctxDoCall, BSLParser.MethodNameContext ctxMethodName) { if (findNestedCall(ctx, ctxDoCall)) { diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/NestedStatementsDiagnostic.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/NestedStatementsDiagnostic.java index 9e38828f753..3fc3ae07f08 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/NestedStatementsDiagnostic.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/NestedStatementsDiagnostic.java @@ -30,9 +30,8 @@ import com.github._1c_syntax.bsl.languageserver.utils.Ranges; import com.github._1c_syntax.bsl.languageserver.utils.RelatedInformation; import com.github._1c_syntax.bsl.parser.BSLParser; -import com.github._1c_syntax.bsl.parser.BSLParserRuleContext; import jakarta.annotation.PostConstruct; -import org.antlr.v4.runtime.tree.ParseTree; +import org.antlr.v4.runtime.ParserRuleContext; import org.eclipse.lsp4j.DiagnosticRelatedInformation; import java.util.ArrayDeque; @@ -63,8 +62,8 @@ public class NestedStatementsDiagnostic extends AbstractListenerDiagnostic { ) private int maxAllowedLevel = MAX_ALLOWED_LEVEL; - private ParseTree lastCtx; - private final Deque nestedParents = new ArrayDeque<>(); + private ParserRuleContext lastCtx; + private final Deque nestedParents = new ArrayDeque<>(); @PostConstruct public void init() { @@ -121,12 +120,12 @@ public void exitTryStatement(BSLParser.TryStatementContext ctx) { exitNode(ctx); } - private void enterNode(BSLParserRuleContext ctx) { + private void enterNode(ParserRuleContext ctx) { lastCtx = ctx; nestedParents.push(ctx); } - private void exitNode(BSLParserRuleContext ctx) { + private void exitNode(ParserRuleContext ctx) { if (ctx == lastCtx && nestedParents.size() > maxAllowedLevel) { addRelatedInformationDiagnostic(ctx); @@ -134,7 +133,7 @@ private void exitNode(BSLParserRuleContext ctx) { nestedParents.pop(); } - private void addRelatedInformationDiagnostic(BSLParserRuleContext ctx) { + private void addRelatedInformationDiagnostic(ParserRuleContext ctx) { List relatedInformation = new ArrayList<>(); relatedInformation.add( RelatedInformation.create( @@ -149,7 +148,7 @@ private void addRelatedInformationDiagnostic(BSLParserRuleContext ctx) { .map(expressionContext -> RelatedInformation.create( documentContext.getUri(), - Ranges.create(((BSLParserRuleContext) expressionContext).getStart()), + Ranges.create(expressionContext.getStart()), relatedMessage ) ) diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/NestedTernaryOperatorDiagnostic.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/NestedTernaryOperatorDiagnostic.java index 0c1579ffba9..90e70eb5739 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/NestedTernaryOperatorDiagnostic.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/NestedTernaryOperatorDiagnostic.java @@ -27,7 +27,7 @@ import com.github._1c_syntax.bsl.languageserver.diagnostics.metadata.DiagnosticType; import com.github._1c_syntax.bsl.languageserver.utils.Trees; import com.github._1c_syntax.bsl.parser.BSLParser; -import com.github._1c_syntax.bsl.parser.BSLParserRuleContext; +import org.antlr.v4.runtime.ParserRuleContext; import org.antlr.v4.runtime.tree.ParseTree; import java.util.Collection; @@ -62,12 +62,12 @@ public ParseTree visitTernaryOperator(BSLParser.TernaryOperatorContext ctx) { return super.visitTernaryOperator(ctx); } - private void findNestedTernaryOperator(BSLParserRuleContext ctx, int skip) { + private void findNestedTernaryOperator(ParserRuleContext ctx, int skip) { Collection nestedTernaryOperators = Trees.findAllRuleNodes(ctx, BSLParser.RULE_ternaryOperator); if (nestedTernaryOperators.size() > skip) { nestedTernaryOperators.stream() .skip(skip) - .forEach(parseTree -> diagnosticStorage.addDiagnostic((BSLParserRuleContext) parseTree)); + .forEach(parseTree -> diagnosticStorage.addDiagnostic((ParserRuleContext) parseTree)); } } diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/ParseErrorDiagnostic.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/ParseErrorDiagnostic.java index 4ddc1abacff..f2d0c208f87 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/ParseErrorDiagnostic.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/ParseErrorDiagnostic.java @@ -29,7 +29,7 @@ import com.github._1c_syntax.bsl.languageserver.utils.Trees; import com.github._1c_syntax.bsl.parser.BSLLexer; import com.github._1c_syntax.bsl.parser.BSLParser; -import com.github._1c_syntax.bsl.parser.BSLParserRuleContext; +import org.antlr.v4.runtime.ParserRuleContext; import org.antlr.v4.runtime.Token; import org.antlr.v4.runtime.misc.IntervalSet; import org.antlr.v4.runtime.tree.ErrorNode; @@ -57,7 +57,7 @@ public void visitErrorNode(ErrorNode node) { if (((ErrorNodeImpl) node).symbol.getTokenIndex() == -1) { diagnosticStorage.addDiagnostic( - ((BSLParserRuleContext) node.getParent()).getStart(), + ((ParserRuleContext) node.getParent()).getStart(), info.getMessage(node.getText()) ); } @@ -70,9 +70,9 @@ public void enterFile(BSLParser.FileContext ctx) { Trees.getDescendants(ast).stream() .filter(parseTree -> !(parseTree instanceof TerminalNodeImpl)) - .map(parseTree -> (BSLParserRuleContext) parseTree) + .map(parseTree -> (ParserRuleContext) parseTree) .filter(node -> node.exception != null) - .forEach((BSLParserRuleContext node) -> { + .forEach((ParserRuleContext node) -> { IntervalSet expectedTokens = node.exception.getExpectedTokens(); StringJoiner sj = new StringJoiner(", "); expectedTokens.getIntervals().stream() diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/RefOveruseDiagnostic.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/RefOveruseDiagnostic.java index 5c63c708c2c..3684a7ebdab 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/RefOveruseDiagnostic.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/RefOveruseDiagnostic.java @@ -30,7 +30,6 @@ import com.github._1c_syntax.bsl.languageserver.utils.Trees; import com.github._1c_syntax.bsl.mdo.TabularSection; import com.github._1c_syntax.bsl.mdo.TabularSectionOwner; -import com.github._1c_syntax.bsl.parser.BSLParserRuleContext; import com.github._1c_syntax.bsl.parser.SDBLParser; import com.github._1c_syntax.bsl.types.ConfigurationSource; import com.github._1c_syntax.bsl.types.MDOType; @@ -116,7 +115,7 @@ public ParseTree visitQuery(SDBLParser.QueryContext ctx) { private Stream checkQuery(SDBLParser.QueryContext ctx) { var columns = Trees.findAllTopLevelDescendantNodes(ctx, RULE_COLUMNS).stream() .filter(parserRuleContext -> parserRuleContext.getRuleIndex() == SDBLParser.RULE_column) - .filter(parserRuleContext -> Trees.getRootParent((BSLParserRuleContext) parserRuleContext, EXCLUDED_COLUMNS_ROOT) + .filter(parserRuleContext -> Trees.getRootParent(parserRuleContext, EXCLUDED_COLUMNS_ROOT) .getRuleIndex() == SDBLParser.RULE_query) .map(SDBLParser.ColumnContext.class::cast) .collect(Collectors.toList()); diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/ServerCallsInFormEventsDiagnostic.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/ServerCallsInFormEventsDiagnostic.java index 22552bd3857..40707458959 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/ServerCallsInFormEventsDiagnostic.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/ServerCallsInFormEventsDiagnostic.java @@ -21,15 +21,15 @@ */ package com.github._1c_syntax.bsl.languageserver.diagnostics; +import com.github._1c_syntax.bsl.languageserver.context.symbol.annotations.CompilerDirectiveKind; import com.github._1c_syntax.bsl.languageserver.diagnostics.metadata.DiagnosticMetadata; import com.github._1c_syntax.bsl.languageserver.diagnostics.metadata.DiagnosticScope; import com.github._1c_syntax.bsl.languageserver.diagnostics.metadata.DiagnosticSeverity; import com.github._1c_syntax.bsl.languageserver.diagnostics.metadata.DiagnosticTag; import com.github._1c_syntax.bsl.languageserver.diagnostics.metadata.DiagnosticType; -import com.github._1c_syntax.bsl.types.ModuleType; import com.github._1c_syntax.bsl.parser.BSLParser; +import com.github._1c_syntax.bsl.types.ModuleType; import com.github._1c_syntax.utils.CaseInsensitivePattern; -import com.github._1c_syntax.bsl.languageserver.context.symbol.annotations.CompilerDirectiveKind; import java.util.EnumSet; import java.util.regex.Pattern; diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/TypoDiagnostic.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/TypoDiagnostic.java index 052a30fdfe3..f8c7a44047b 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/TypoDiagnostic.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/TypoDiagnostic.java @@ -32,7 +32,6 @@ import com.github._1c_syntax.bsl.languageserver.diagnostics.typo.WordStatus; import com.github._1c_syntax.bsl.languageserver.utils.Trees; import com.github._1c_syntax.bsl.parser.BSLParser; -import com.github._1c_syntax.bsl.parser.BSLParserRuleContext; import com.github._1c_syntax.utils.CaseInsensitivePattern; import lombok.AccessLevel; import lombok.Getter; @@ -140,7 +139,6 @@ private Map> getTokensMap( Map> tokensMap = new HashMap<>(); Trees.findAllRuleNodes(documentContext.getAst(), rulesToFind).stream() - .map(BSLParserRuleContext.class::cast) .flatMap(ruleContext -> ruleContext.getTokens().stream()) .filter(token -> tokenTypes.contains(token.getType())) .filter(token -> !FORMAT_STRING_PATTERN.matcher(token.getText()).find()) diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UnreachableCodeDiagnostic.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UnreachableCodeDiagnostic.java index 4e8581ab54e..59b411fee61 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UnreachableCodeDiagnostic.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UnreachableCodeDiagnostic.java @@ -31,7 +31,7 @@ import com.github._1c_syntax.bsl.languageserver.utils.Trees; import com.github._1c_syntax.bsl.parser.BSLLexer; import com.github._1c_syntax.bsl.parser.BSLParser; -import com.github._1c_syntax.bsl.parser.BSLParserRuleContext; +import org.antlr.v4.runtime.ParserRuleContext; import org.antlr.v4.runtime.tree.ParseTree; import org.eclipse.lsp4j.Position; import org.eclipse.lsp4j.Range; @@ -140,7 +140,7 @@ private void appendUnreachableCode(BSLParser.CodeBlockContext ctx) { .filter(vertex -> vertex != graph.getEntryPoint() && vertex.getClass() != ExitVertex.class) .filter(vertex -> graph.inDegreeOf(vertex) == 0) .flatMap(vertex -> vertex.getAst().stream()) - .sorted(Comparator.comparingInt(bslParserRuleContext -> bslParserRuleContext.getStart().getLine())) + .sorted(Comparator.comparingInt(ruleContext -> ruleContext.getStart().getLine())) .map(Ranges::create) .toList(); @@ -196,7 +196,7 @@ public ParseTree visitBreakStatement(BSLParser.BreakStatementContext ctx) { return super.visitBreakStatement(ctx); } - private void findAndAddDiagnostic(BSLParserRuleContext ctx) { + private void findAndAddDiagnostic(ParserRuleContext ctx) { // если это вложенный в ранее обработанный блок, то исключим из проверки var pos = new Position(ctx.getStart().getLine(), ctx.getStart().getCharPositionInLine()); @@ -221,7 +221,7 @@ private void findAndAddDiagnostic(BSLParserRuleContext ctx) { return; } - List statements = Trees.getChildren(ppNodeParent, BSLParser.RULE_statement) + List statements = Trees.getChildren(ppNodeParent, BSLParser.RULE_statement) .stream() .filter(node -> node.getStart().getType() != BSLLexer.SEMICOLON @@ -236,7 +236,7 @@ private void findAndAddDiagnostic(BSLParserRuleContext ctx) { Collections.reverse(statements); // найдем последний блок - BSLParserRuleContext endCurrentBlockNode = getEndCurrentBlockNode(statements, pos); + ParserRuleContext endCurrentBlockNode = getEndCurrentBlockNode(statements, pos); // если последний стейт не текущий, значит он будет недостижим if (!ppNode.equals(endCurrentBlockNode)) { @@ -250,7 +250,7 @@ private void findAndAddDiagnostic(BSLParserRuleContext ctx) { } } - private BSLParserRuleContext getEndCurrentBlockNode(List statements, Position pos) { + private ParserRuleContext getEndCurrentBlockNode(List statements, Position pos) { // найдем блок препроцессора, в котором лежит наш стейт Range preprocRange = null; @@ -261,12 +261,12 @@ private BSLParserRuleContext getEndCurrentBlockNode(List s } // т.к. список реверснут, берем первый элемент - BSLParserRuleContext endCurrentBlockNode = statements.get(0); + ParserRuleContext endCurrentBlockNode = statements.get(0); if (preprocRange != null) { // пройдем по всем стейтам (с конца идем) и ищем первый, находящийся в том же блоке // препроцессора, что и стейт прерывания - for (BSLParserRuleContext statement : statements) { + for (ParserRuleContext statement : statements) { var posStatement = new Position( statement.getStart().getLine(), statement.getStart().getCharPositionInLine()); diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UnsafeSafeModeMethodCallDiagnostic.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UnsafeSafeModeMethodCallDiagnostic.java index c16475e1d6f..2f272a82569 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UnsafeSafeModeMethodCallDiagnostic.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UnsafeSafeModeMethodCallDiagnostic.java @@ -29,8 +29,8 @@ import com.github._1c_syntax.bsl.languageserver.diagnostics.metadata.DiagnosticType; import com.github._1c_syntax.bsl.languageserver.utils.Trees; import com.github._1c_syntax.bsl.parser.BSLParser; -import com.github._1c_syntax.bsl.parser.BSLParserRuleContext; import com.github._1c_syntax.utils.CaseInsensitivePattern; +import org.antlr.v4.runtime.ParserRuleContext; import java.util.Set; import java.util.regex.Pattern; @@ -87,9 +87,9 @@ private static boolean nonValidExpression(BSLParser.MemberContext currentRootMem return true; } - BSLParserRuleContext rootExpressionNode = currentRootMember.getParent(); + ParserRuleContext rootExpressionNode = currentRootMember.getParent(); - BSLParserRuleContext rootIfNode = Trees.getRootParent(rootExpressionNode, ROOT_LIST); + ParserRuleContext rootIfNode = Trees.getRootParent(rootExpressionNode, ROOT_LIST); if (rootIfNode == null || rootIfNode.getRuleIndex() == BSLParser.RULE_codeBlock) { return false; } @@ -100,12 +100,12 @@ private static boolean nonValidExpression(BSLParser.MemberContext currentRootMem return haveNeighboorBooleanOperator(currentRootMember, rootExpressionNode); } - private static boolean haveNeighboorBooleanOperator(BSLParserRuleContext currentRootMember, - BSLParserRuleContext rootExpressionNode) { + private static boolean haveNeighboorBooleanOperator(ParserRuleContext currentRootMember, + ParserRuleContext rootExpressionNode) { var haveNeighbourBoolOperation = false; int indexOfCurrentMemberNode = rootExpressionNode.children.indexOf(currentRootMember); if (indexOfCurrentMemberNode > 0) { - var prev = (BSLParserRuleContext) rootExpressionNode.children.get(indexOfCurrentMemberNode - 1); + var prev = (ParserRuleContext) rootExpressionNode.children.get(indexOfCurrentMemberNode - 1); if (Trees.nodeContains(prev, BSLParser.RULE_compareOperation)) { return false; } @@ -113,7 +113,7 @@ private static boolean haveNeighboorBooleanOperator(BSLParserRuleContext current } if (indexOfCurrentMemberNode < rootExpressionNode.getChildCount() - 1) { - var next = (BSLParserRuleContext) rootExpressionNode.children.get(indexOfCurrentMemberNode + 1); + var next = (ParserRuleContext) rootExpressionNode.children.get(indexOfCurrentMemberNode + 1); if (Trees.nodeContains(next, BSLParser.RULE_compareOperation)) { return false; } diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsageWriteLogEventDiagnostic.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsageWriteLogEventDiagnostic.java index ecdb74378c5..a6d6b1863fc 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsageWriteLogEventDiagnostic.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsageWriteLogEventDiagnostic.java @@ -27,9 +27,9 @@ import com.github._1c_syntax.bsl.languageserver.diagnostics.metadata.DiagnosticType; import com.github._1c_syntax.bsl.languageserver.utils.Trees; import com.github._1c_syntax.bsl.parser.BSLParser; -import com.github._1c_syntax.bsl.parser.BSLParserRuleContext; import com.github._1c_syntax.utils.CaseInsensitivePattern; import edu.umd.cs.findbugs.annotations.Nullable; +import org.antlr.v4.runtime.ParserRuleContext; import org.antlr.v4.runtime.tree.ParseTree; import java.util.Collection; @@ -37,7 +37,6 @@ import java.util.Objects; import java.util.Optional; import java.util.regex.Pattern; -import java.util.stream.Collectors; @DiagnosticMetadata( type = DiagnosticType.CODE_SMELL, @@ -207,11 +206,7 @@ private static boolean isValidCommentExpression( if (expression == null) { return true; } - final var methodCalls = Trees.findAllRuleNodes(expression, - List.of(BSLParser.RULE_globalMethodCall, BSLParser.RULE_methodCall)).stream() - .filter(BSLParserRuleContext.class::isInstance) - .map(BSLParserRuleContext.class::cast) - .collect(Collectors.toList()); + final var methodCalls = Trees.findAllRuleNodes(expression, List.of(BSLParser.RULE_globalMethodCall, BSLParser.RULE_methodCall)); if (!methodCalls.isEmpty()) { if (isErrorDescriptionCallCorrect(methodCalls)) { return true; @@ -224,7 +219,7 @@ private static boolean isValidCommentExpression( return isValidExpression(expression, codeBlock, checkPrevAssignment); } - private static boolean isErrorDescriptionCallCorrect(Collection calls) { + private static boolean isErrorDescriptionCallCorrect(Collection calls) { return calls.stream() .filter(context -> isAppropriateMethodName(context, PATTERN_DETAIL_ERROR_DESCRIPTION)) .filter(context -> context instanceof BSLParser.GlobalMethodCallContext @@ -233,7 +228,7 @@ private static boolean isErrorDescriptionCallCorrect(Collection context instanceof BSLParser.AccessCallContext) - .map(BSLParserRuleContext::getParent) + .map(ParserRuleContext::getParent) .filter(context -> context instanceof BSLParser.ModifierContext) - .map(BSLParserRuleContext::getParent) + .map(ParserRuleContext::getParent) .filter(context -> context instanceof BSLParser.ComplexIdentifierContext) .map(BSLParser.ComplexIdentifierContext.class::cast) .map(BSLParser.ComplexIdentifierContext::IDENTIFIER) @@ -254,19 +249,19 @@ private static boolean isErrorProcessingCall(BSLParser.MethodCallContext methodC .isPresent(); } - private static boolean hasFirstDescendantGlobalCallWithPatternError(BSLParserRuleContext globalCallCtx) { + private static boolean hasFirstDescendantGlobalCallWithPatternError(ParserRuleContext globalCallCtx) { return Trees.findAllRuleNodes(globalCallCtx, BSLParser.RULE_globalMethodCall).stream() .map(BSLParser.GlobalMethodCallContext.class::cast) .anyMatch(context -> isAppropriateMethodName(context, PATTERN_ERROR_INFO)); } - private static boolean hasSimpleErrorDescription(Collection globalCalls) { + private static boolean hasSimpleErrorDescription(Collection globalCalls) { return globalCalls.stream() .filter(context -> context instanceof BSLParser.GlobalMethodCallContext) .anyMatch(context -> isAppropriateMethodName(context, PATTERN_SIMPLE_ERROR_DESCRIPTION)); } - private static boolean hasBriefErrorDescription(Collection calls) { + private static boolean hasBriefErrorDescription(Collection calls) { return calls.stream() .filter(context -> isAppropriateMethodName(context, PATTERN_BRIEF_ERROR_DESCRIPTION)) .anyMatch(context -> context instanceof BSLParser.GlobalMethodCallContext @@ -316,7 +311,7 @@ private static Optional getAssignment( .filter(assignmentContext -> assignmentContext.lValue().getText().equalsIgnoreCase(varName)); } - private static boolean isInsideExceptBlock(BSLParserRuleContext context) { + private static boolean isInsideExceptBlock(ParserRuleContext context) { return Trees.getRootParent(context, BSLParser.RULE_exceptCodeBlock) != null; } diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingCancelParameterDiagnostic.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingCancelParameterDiagnostic.java index 38616f1cee8..5ef89f1ed0e 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingCancelParameterDiagnostic.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingCancelParameterDiagnostic.java @@ -28,7 +28,6 @@ import com.github._1c_syntax.bsl.languageserver.utils.Trees; import com.github._1c_syntax.bsl.parser.BSLLexer; import com.github._1c_syntax.bsl.parser.BSLParser; -import com.github._1c_syntax.bsl.parser.BSLParserRuleContext; import com.github._1c_syntax.utils.CaseInsensitivePattern; import org.antlr.v4.runtime.tree.ParseTree; @@ -69,13 +68,11 @@ public ParseTree visitSub(BSLParser.SubContext ctx) { Trees.findAllRuleNodes(ctx, BSLParser.RULE_assignment).stream() .filter( node -> cancelPattern.matcher(((BSLParser.AssignmentContext) node).lValue() - .getText()) + .getText()) .matches() ) - .map(BSLParserRuleContext.class::cast) .filter(ident -> !rightPartIsValid((BSLParser.AssignmentContext) ident)) .map(ParseTree::getParent) - .map(BSLParserRuleContext.class::cast) .forEach(diagnosticStorage::addDiagnostic); return ctx; diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingExternalCodeToolsDiagnostic.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingExternalCodeToolsDiagnostic.java index 5eeeb9d3b46..969770f5c8c 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingExternalCodeToolsDiagnostic.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingExternalCodeToolsDiagnostic.java @@ -27,8 +27,8 @@ import com.github._1c_syntax.bsl.languageserver.diagnostics.metadata.DiagnosticType; import com.github._1c_syntax.bsl.languageserver.utils.Trees; import com.github._1c_syntax.bsl.parser.BSLParser; -import com.github._1c_syntax.bsl.parser.BSLParserRuleContext; import com.github._1c_syntax.utils.CaseInsensitivePattern; +import org.antlr.v4.runtime.ParserRuleContext; import org.antlr.v4.runtime.tree.ParseTree; import org.antlr.v4.runtime.tree.TerminalNode; @@ -68,7 +68,7 @@ public ParseTree visitComplexIdentifier(BSLParser.ComplexIdentifierContext ctx) return super.visitComplexIdentifier(ctx); } - private void checkUseExternalCodeTools(BSLParserRuleContext ctx, TerminalNode identifier) { + private void checkUseExternalCodeTools(ParserRuleContext ctx, TerminalNode identifier) { if (identifier != null && externalCodeToolsName.matcher(identifier.getText()).matches() && Trees.findAllRuleNodes(ctx, BSLParser.RULE_methodCall) diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingHardcodeNetworkAddressDiagnostic.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingHardcodeNetworkAddressDiagnostic.java index 0658f845d00..a29b93c5711 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingHardcodeNetworkAddressDiagnostic.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingHardcodeNetworkAddressDiagnostic.java @@ -28,8 +28,8 @@ import com.github._1c_syntax.bsl.languageserver.diagnostics.metadata.DiagnosticType; import com.github._1c_syntax.bsl.languageserver.utils.Trees; import com.github._1c_syntax.bsl.parser.BSLParser; -import com.github._1c_syntax.bsl.parser.BSLParserRuleContext; import com.github._1c_syntax.utils.CaseInsensitivePattern; +import org.antlr.v4.runtime.ParserRuleContext; import org.antlr.v4.runtime.tree.ParseTree; import java.util.Map; @@ -145,18 +145,18 @@ private void processVisitString(BSLParser.StringContext ctx, String content) { } } - private boolean itVersionReturn(BSLParserRuleContext ctx) { + private boolean itVersionReturn(ParserRuleContext ctx) { - BSLParserRuleContext returnState = Trees.getAncestorByRuleIndex(ctx, BSLParser.RULE_returnStatement); + ParserRuleContext returnState = Trees.getAncestorByRuleIndex(ctx, BSLParser.RULE_returnStatement); if (returnState != null) { return skipStatement(returnState, BSLParser.RULE_function); } return false; } - private boolean skipStatement(BSLParserRuleContext ctx, int ruleStatement) { + private boolean skipStatement(ParserRuleContext ctx, int ruleStatement) { - BSLParserRuleContext parent = Trees.getAncestorByRuleIndex(ctx, ruleStatement); + ParserRuleContext parent = Trees.getAncestorByRuleIndex(ctx, ruleStatement); if (parent != null) { var matcher = searchWordsExclusion.matcher(parent.getText()); return matcher.find(); diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingHardcodeSecretInformationDiagnostic.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingHardcodeSecretInformationDiagnostic.java index 72672625eab..1e2fdf155ef 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingHardcodeSecretInformationDiagnostic.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingHardcodeSecretInformationDiagnostic.java @@ -29,7 +29,6 @@ import com.github._1c_syntax.bsl.languageserver.diagnostics.metadata.DiagnosticType; import com.github._1c_syntax.bsl.languageserver.utils.Trees; import com.github._1c_syntax.bsl.parser.BSLParser; -import com.github._1c_syntax.bsl.parser.BSLParserRuleContext; import com.github._1c_syntax.utils.CaseInsensitivePattern; import org.antlr.v4.runtime.ParserRuleContext; import org.antlr.v4.runtime.Token; @@ -194,17 +193,17 @@ private void processCheckNewExpression(BSLParser.NewExpressionContext ctx, } } - private void processCheckAssignmentKey(BSLParserRuleContext ctx, String accessText) { + private void processCheckAssignmentKey(ParserRuleContext ctx, String accessText) { var matcher = searchWords.matcher(getClearString(accessText)); if (matcher.find()) { - ParserRuleContext assignment = Trees.getAncestorByRuleIndex( - ctx.getRuleContext(), + var assignment = Trees.getAncestorByRuleIndex( + ctx, BSLParser.RULE_assignment ); if (assignment != null && ((BSLParser.AssignmentContext) assignment).expression().getChildCount() == 1 && isNotEmptyStringByToken(assignment.getStop())) { - diagnosticStorage.addDiagnostic((BSLParser.AssignmentContext) assignment, info.getMessage()); + diagnosticStorage.addDiagnostic(assignment, info.getMessage()); } } } @@ -223,8 +222,8 @@ private void processParameterList( } } - private void addDiagnosticByAssignment(BSLParserRuleContext ctx, int type) { - BSLParserRuleContext assignment = Trees.getAncestorByRuleIndex(ctx.getRuleContext(), type); + private void addDiagnosticByAssignment(ParserRuleContext ctx, int type) { + var assignment = Trees.getAncestorByRuleIndex(ctx, type); if (assignment != null) { diagnosticStorage.addDiagnostic(assignment, info.getMessage()); } diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingObjectNotAvailableUnixDiagnostic.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingObjectNotAvailableUnixDiagnostic.java index b003e94c39f..ebffa66a488 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingObjectNotAvailableUnixDiagnostic.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingObjectNotAvailableUnixDiagnostic.java @@ -28,8 +28,8 @@ import com.github._1c_syntax.bsl.languageserver.diagnostics.metadata.DiagnosticType; import com.github._1c_syntax.bsl.languageserver.utils.Trees; import com.github._1c_syntax.bsl.parser.BSLParser; -import com.github._1c_syntax.bsl.parser.BSLParserRuleContext; import com.github._1c_syntax.utils.CaseInsensitivePattern; +import org.antlr.v4.runtime.ParserRuleContext; import org.antlr.v4.runtime.tree.ParseTree; import java.util.regex.Pattern; @@ -75,8 +75,8 @@ public ParseTree visitNewExpression(BSLParser.NewExpressionContext ctx) { return super.visitNewExpression(ctx); } - private static boolean isFindIfBranchWithLinuxCondition(BSLParserRuleContext element) { - BSLParserRuleContext ancestor = Trees.getAncestorByRuleIndex(element, BSLParser.RULE_ifBranch); + private static boolean isFindIfBranchWithLinuxCondition(ParserRuleContext element) { + ParserRuleContext ancestor = Trees.getAncestorByRuleIndex(element, BSLParser.RULE_ifBranch); if (ancestor == null) { return false; } diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingThisFormDiagnostic.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingThisFormDiagnostic.java index d3fc3c80a0d..fc43bc885b6 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingThisFormDiagnostic.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingThisFormDiagnostic.java @@ -31,9 +31,9 @@ import com.github._1c_syntax.bsl.languageserver.providers.CodeActionProvider; import com.github._1c_syntax.bsl.languageserver.utils.Trees; import com.github._1c_syntax.bsl.parser.BSLParser; -import com.github._1c_syntax.bsl.parser.BSLParserRuleContext; import com.github._1c_syntax.bsl.types.ModuleType; import com.github._1c_syntax.utils.CaseInsensitivePattern; +import org.antlr.v4.runtime.ParserRuleContext; import org.antlr.v4.runtime.tree.ParseTree; import org.antlr.v4.runtime.tree.TerminalNode; import org.eclipse.lsp4j.CodeAction; @@ -84,12 +84,12 @@ public ParseTree visitFunction(BSLParser.FunctionContext ctx) { return ctx; } - private static boolean needCheck(BSLParserRuleContext declaration) { + private static boolean needCheck(ParserRuleContext declaration) { List params = getParams(declaration); return params.isEmpty() || !hasThisForm(params); } - private static List getParams(BSLParserRuleContext declaration) { + private static List getParams(ParserRuleContext declaration) { BSLParser.ParamListContext paramList = declaration.getRuleContext(BSLParser.ParamListContext.class, 0); if (paramList == null) { return Collections.emptyList(); diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/folding/QueryCommentFoldingRangeSupplier.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/folding/QueryCommentFoldingRangeSupplier.java index 56bba9e9a00..4723ed6e31e 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/folding/QueryCommentFoldingRangeSupplier.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/folding/QueryCommentFoldingRangeSupplier.java @@ -23,8 +23,8 @@ import com.github._1c_syntax.bsl.languageserver.context.DocumentContext; import com.github._1c_syntax.bsl.parser.SDBLLexer; -import com.github._1c_syntax.bsl.parser.Tokenizer; import org.antlr.v4.runtime.Token; +import org.antlr.v4.runtime.Tokenizer; import org.springframework.stereotype.Component; import java.util.Collection; diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/folding/QueryPackageFoldingRangeSupplier.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/folding/QueryPackageFoldingRangeSupplier.java index b9c35112e70..5ea0ca5c908 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/folding/QueryPackageFoldingRangeSupplier.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/folding/QueryPackageFoldingRangeSupplier.java @@ -23,7 +23,7 @@ import com.github._1c_syntax.bsl.languageserver.context.DocumentContext; import com.github._1c_syntax.bsl.parser.SDBLParser; -import com.github._1c_syntax.bsl.parser.Tokenizer; +import org.antlr.v4.runtime.Tokenizer; import org.eclipse.lsp4j.FoldingRange; import org.eclipse.lsp4j.FoldingRangeKind; import org.springframework.stereotype.Component; diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/infrastructure/CacheConfiguration.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/infrastructure/CacheConfiguration.java index b7e31a63dbb..8b653e83885 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/infrastructure/CacheConfiguration.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/infrastructure/CacheConfiguration.java @@ -21,8 +21,8 @@ */ package com.github._1c_syntax.bsl.languageserver.infrastructure; -import com.github.benmanes.caffeine.cache.Caffeine; import com.github._1c_syntax.bsl.languageserver.diagnostics.typo.WordStatus; +import com.github.benmanes.caffeine.cache.Caffeine; import org.ehcache.config.builders.CacheConfigurationBuilder; import org.ehcache.config.builders.CacheManagerBuilder; import org.ehcache.config.builders.ResourcePoolsBuilder; diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/inlayhints/SourceDefinedMethodCallInlayHintSupplier.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/inlayhints/SourceDefinedMethodCallInlayHintSupplier.java index 42b16d173ea..1b7abd8d27b 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/inlayhints/SourceDefinedMethodCallInlayHintSupplier.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/inlayhints/SourceDefinedMethodCallInlayHintSupplier.java @@ -31,8 +31,8 @@ import com.github._1c_syntax.bsl.languageserver.utils.Ranges; import com.github._1c_syntax.bsl.languageserver.utils.Trees; import com.github._1c_syntax.bsl.parser.BSLParser; -import com.github._1c_syntax.bsl.parser.BSLParserRuleContext; import lombok.RequiredArgsConstructor; +import org.antlr.v4.runtime.ParserRuleContext; import org.apache.commons.lang3.Strings; import org.eclipse.lsp4j.InlayHint; import org.eclipse.lsp4j.InlayHintKind; @@ -184,7 +184,7 @@ private boolean showDefaultValues() { } - private static boolean isRightMethod(BSLParserRuleContext doCallParent, Reference reference) { + private static boolean isRightMethod(ParserRuleContext doCallParent, Reference reference) { var selectionRange = reference.getSelectionRange(); if (doCallParent instanceof BSLParser.MethodCallContext methodCallContext) { diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/providers/SelectionRangeProvider.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/providers/SelectionRangeProvider.java index 758dc49b818..925d4fde6f8 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/providers/SelectionRangeProvider.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/providers/SelectionRangeProvider.java @@ -25,7 +25,6 @@ import com.github._1c_syntax.bsl.languageserver.utils.Ranges; import com.github._1c_syntax.bsl.languageserver.utils.Trees; import com.github._1c_syntax.bsl.parser.BSLParser; -import com.github._1c_syntax.bsl.parser.BSLParserRuleContext; import edu.umd.cs.findbugs.annotations.Nullable; import org.antlr.v4.runtime.ParserRuleContext; import org.antlr.v4.runtime.tree.ParseTree; @@ -128,7 +127,7 @@ private static Optional nextParentWithDifferentRange(ParseTree ctx) { return Optional.of(parent); } - private static BSLParserRuleContext getParentContext(ParseTree ctx) { + private static ParserRuleContext getParentContext(ParseTree ctx) { if (ctx instanceof BSLParser.StatementContext statementContext) { return getStatementParent(statementContext); } @@ -137,11 +136,11 @@ private static BSLParserRuleContext getParentContext(ParseTree ctx) { } @Nullable - private static BSLParserRuleContext getDefaultParent(ParseTree ctx) { - return (BSLParserRuleContext) ctx.getParent(); + private static ParserRuleContext getDefaultParent(ParseTree ctx) { + return (ParserRuleContext) ctx.getParent(); } - private static BSLParserRuleContext getStatementParent(BSLParser.StatementContext statement) { + private static ParserRuleContext getStatementParent(BSLParser.StatementContext statement) { var parent = getDefaultParent(statement); @@ -156,7 +155,7 @@ private static BSLParserRuleContext getStatementParent(BSLParser.StatementContex // Проверим узлы после текущего выражения. var localLine = statementLine; for (int i = currentPosition + 1; i < children.size(); i++) { - var child = (BSLParserRuleContext) children.get(i); + var child = (ParserRuleContext) children.get(i); if (child.getStart().getLine() == localLine + 1) { nearbyStatements.add(child); localLine++; @@ -168,7 +167,7 @@ private static BSLParserRuleContext getStatementParent(BSLParser.StatementContex // Проверим узлы перед текущим выражением localLine = statementLine; for (int i = currentPosition - 1; i >= 0; i--) { - var child = (BSLParserRuleContext) children.get(i); + var child = (ParserRuleContext) children.get(i); if (child.getStart().getLine() == localLine - 1) { nearbyStatements.add(child); localLine--; @@ -179,7 +178,7 @@ private static BSLParserRuleContext getStatementParent(BSLParser.StatementContex if (!nearbyStatements.isEmpty() && (nearbyStatements.size() + 1 != children.size())) { - var statementsBlock = new BSLParserRuleContext(); + var statementsBlock = new ParserRuleContext(); statementsBlock.setParent(parent); nearbyStatements.add(statement); @@ -200,7 +199,7 @@ private static BSLParserRuleContext getStatementParent(BSLParser.StatementContex return parent; } - private static boolean ifBranchMatchesIfStatement(BSLParserRuleContext ctx) { + private static boolean ifBranchMatchesIfStatement(ParserRuleContext ctx) { if (!(ctx instanceof BSLParser.IfBranchContext ifBranch)) { return false; } diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/references/AnnotationReferenceFinder.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/references/AnnotationReferenceFinder.java index 42c2c0114e9..1254d3ddef5 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/references/AnnotationReferenceFinder.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/references/AnnotationReferenceFinder.java @@ -35,8 +35,8 @@ import com.github._1c_syntax.bsl.languageserver.utils.Ranges; import com.github._1c_syntax.bsl.languageserver.utils.Trees; import com.github._1c_syntax.bsl.parser.BSLParser; -import com.github._1c_syntax.bsl.parser.BSLParserRuleContext; import lombok.RequiredArgsConstructor; +import org.antlr.v4.runtime.ParserRuleContext; import org.apache.commons.lang3.tuple.Pair; import org.eclipse.lsp4j.Location; import org.eclipse.lsp4j.Position; @@ -112,7 +112,7 @@ public Optional findReference(URI uri, Position position) { var terminalNode = maybeTerminalNode.get(); var parent = terminalNode.getParent(); - if (!(parent instanceof BSLParserRuleContext parentContext)) { + if (!(parent instanceof ParserRuleContext parentContext)) { return Optional.empty(); } @@ -134,15 +134,15 @@ public Optional findReference(URI uri, Position position) { ) .or(() -> Optional.of(parentContext) - .map(BSLParserRuleContext::getParent) + .map(ParserRuleContext::getParent) .filter(BSLParser.ConstValueContext.class::isInstance) .map(BSLParser.ConstValueContext.class::cast) .flatMap(constValue -> getReferenceToAnnotationParamSymbol(constValue, documentContext)) ) .or(() -> Optional.of(parentContext) - .map(BSLParserRuleContext::getParent) - .map(BSLParserRuleContext::getParent) + .map(ParserRuleContext::getParent) + .map(ParserRuleContext::getParent) .filter(BSLParser.ConstValueContext.class::isInstance) .map(BSLParser.ConstValueContext.class::cast) .flatMap(constValue -> getReferenceToAnnotationParamSymbol(constValue, documentContext)) @@ -163,14 +163,14 @@ private Optional getReferenceToAnnotationSymbol(URI uri, BSLParser.An private Optional getReferenceToAnnotationParamSymbol(BSLParser.AnnotationParamNameContext annotationParamName, DocumentContext documentContext) { return Optional.of(annotationParamName) - .map(BSLParserRuleContext::getParent) // BSLParser.AnnotationParamContext + .map(ParserRuleContext::getParent) // BSLParser.AnnotationParamContext .map(BSLParser.AnnotationParamContext.class::cast) .flatMap(annotationParamContext -> getReferenceToAnnotationParam(documentContext, Optional.of(annotationParamContext))); } private Optional getReferenceToAnnotationParamSymbol(BSLParser.ConstValueContext constValue, DocumentContext documentContext) { return Optional.of(constValue) - .map(BSLParserRuleContext::getParent) // BSLParser.AnnotationParamContext + .map(ParserRuleContext::getParent) // BSLParser.AnnotationParamContext .filter(BSLParser.AnnotationParamContext.class::isInstance) .map(BSLParser.AnnotationParamContext.class::cast) .flatMap(annotationParamContext -> getReferenceToAnnotationParam(documentContext, Optional.of(annotationParamContext))); @@ -188,18 +188,18 @@ private Optional getReferenceToAnnotationParam( var annotationParamName = annotationParamContext .map(BSLParser.AnnotationParamContext::annotationParamName) - .map(BSLParserRuleContext::getText) + .map(ParserRuleContext::getText) .orElse("Значение"); - BSLParserRuleContext annotationParamLocation = annotationParamContext + ParserRuleContext annotationParamLocation = annotationParamContext .map(BSLParser.AnnotationParamContext::annotationParamName) - .map(BSLParserRuleContext.class::cast) + .map(ParserRuleContext.class::cast) .or(() -> annotationParamContext.map(BSLParser.AnnotationParamContext::constValue)) .orElseThrow(); return annotationParamContext - .map(BSLParserRuleContext::getParent) // BSLParser.AnnotationParamsContext - .map(BSLParserRuleContext::getParent) // BSLParser.AnnotationContext + .map(ParserRuleContext::getParent) // BSLParser.AnnotationParamsContext + .map(ParserRuleContext::getParent) // BSLParser.AnnotationContext .map(BSLParser.AnnotationContext.class::cast) .map(BSLParser.AnnotationContext::annotationName) diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/references/ReferenceIndexFiller.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/references/ReferenceIndexFiller.java index ee23cf5bdec..a24b8f4410a 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/references/ReferenceIndexFiller.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/references/ReferenceIndexFiller.java @@ -35,10 +35,10 @@ import com.github._1c_syntax.bsl.mdo.MD; import com.github._1c_syntax.bsl.parser.BSLParser; import com.github._1c_syntax.bsl.parser.BSLParserBaseVisitor; -import com.github._1c_syntax.bsl.parser.BSLParserRuleContext; import com.github._1c_syntax.bsl.types.ModuleType; import edu.umd.cs.findbugs.annotations.Nullable; import lombok.RequiredArgsConstructor; +import org.antlr.v4.runtime.ParserRuleContext; import org.antlr.v4.runtime.Token; import org.antlr.v4.runtime.tree.ParseTree; import org.eclipse.lsp4j.Range; @@ -90,25 +90,25 @@ public void fill(DocumentContext documentContext) { } @RequiredArgsConstructor - private class MethodSymbolReferenceIndexFinder extends BSLParserBaseVisitor { + private class MethodSymbolReferenceIndexFinder extends BSLParserBaseVisitor { private final DocumentContext documentContext; private Set commonModuleMdoRefFromSubParams = Collections.emptySet(); @Override - public BSLParserRuleContext visitProcDeclaration(BSLParser.ProcDeclarationContext ctx) { + public ParserRuleContext visitProcDeclaration(BSLParser.ProcDeclarationContext ctx) { commonModuleMdoRefFromSubParams = calcParams(ctx.paramList()); return super.visitProcDeclaration(ctx); } @Override - public BSLParserRuleContext visitFuncDeclaration(BSLParser.FuncDeclarationContext ctx) { + public ParserRuleContext visitFuncDeclaration(BSLParser.FuncDeclarationContext ctx) { commonModuleMdoRefFromSubParams = calcParams(ctx.paramList()); return super.visitFuncDeclaration(ctx); } @Override - public BSLParserRuleContext visitCallStatement(BSLParser.CallStatementContext ctx) { + public ParserRuleContext visitCallStatement(BSLParser.CallStatementContext ctx) { if (ctx.globalMethodCall() != null) { // see visitGlobalMethodCall return super.visitCallStatement(ctx); @@ -125,7 +125,7 @@ public BSLParserRuleContext visitCallStatement(BSLParser.CallStatementContext ct } @Override - public BSLParserRuleContext visitComplexIdentifier(BSLParser.ComplexIdentifierContext ctx) { + public ParserRuleContext visitComplexIdentifier(BSLParser.ComplexIdentifierContext ctx) { var mdoRef = MdoRefBuilder.getMdoRef(documentContext, ctx); if (mdoRef.isEmpty()) { return super.visitComplexIdentifier(ctx); @@ -136,7 +136,7 @@ public BSLParserRuleContext visitComplexIdentifier(BSLParser.ComplexIdentifierCo } @Override - public BSLParserRuleContext visitGlobalMethodCall(BSLParser.GlobalMethodCallContext ctx) { + public ParserRuleContext visitGlobalMethodCall(BSLParser.GlobalMethodCallContext ctx) { var mdoRef = documentContext.getMdoRef(); var moduleType = documentContext.getModuleType(); var methodName = ctx.methodName().getStart(); @@ -149,7 +149,7 @@ public BSLParserRuleContext visitGlobalMethodCall(BSLParser.GlobalMethodCallCont } @Override - public BSLParserRuleContext visitNewExpression(BSLParser.NewExpressionContext ctx) { + public ParserRuleContext visitNewExpression(BSLParser.NewExpressionContext ctx) { if (NotifyDescription.isNotifyDescription(ctx)) { final var doCallContext = ctx.doCall(); if (doCallContext == null) { @@ -178,7 +178,7 @@ public BSLParserRuleContext visitNewExpression(BSLParser.NewExpressionContext ct } @Override - public BSLParserRuleContext visitLValue(BSLParser.LValueContext ctx) { + public ParserRuleContext visitLValue(BSLParser.LValueContext ctx) { final var identifier = ctx.IDENTIFIER(); if (identifier != null) { final List modifiers = Optional.ofNullable(ctx.acceptor()) @@ -260,13 +260,13 @@ private Set calcParams(@Nullable BSLParser.ParamListContext paramList) { } @RequiredArgsConstructor - private class VariableSymbolReferenceIndexFinder extends BSLParserBaseVisitor { + private class VariableSymbolReferenceIndexFinder extends BSLParserBaseVisitor { private final DocumentContext documentContext; private SourceDefinedSymbol currentScope; @Override - public BSLParserRuleContext visitModuleVarDeclaration(BSLParser.ModuleVarDeclarationContext ctx) { + public ParserRuleContext visitModuleVarDeclaration(BSLParser.ModuleVarDeclarationContext ctx) { findVariableSymbol(ctx.var_name().getText()).ifPresent(s -> { if (notVariableInitialization(ctx, s)) { addVariableUsage( @@ -282,7 +282,7 @@ public BSLParserRuleContext visitModuleVarDeclaration(BSLParser.ModuleVarDeclara } @Override - public BSLParserRuleContext visitSub(BSLParser.SubContext ctx) { + public ParserRuleContext visitSub(BSLParser.SubContext ctx) { currentScope = documentContext.getSymbolTree().getModule(); if (!Trees.nodeContainsErrors(ctx)) { @@ -298,7 +298,7 @@ public BSLParserRuleContext visitSub(BSLParser.SubContext ctx) { } @Override - public BSLParserRuleContext visitLValue(BSLParser.LValueContext ctx) { + public ParserRuleContext visitLValue(BSLParser.LValueContext ctx) { if (ctx.IDENTIFIER() == null) { return super.visitLValue(ctx); } @@ -318,7 +318,7 @@ public BSLParserRuleContext visitLValue(BSLParser.LValueContext ctx) { } @Override - public BSLParserRuleContext visitCallStatement(BSLParser.CallStatementContext ctx) { + public ParserRuleContext visitCallStatement(BSLParser.CallStatementContext ctx) { if (ctx.IDENTIFIER() == null) { return super.visitCallStatement(ctx); } @@ -333,7 +333,7 @@ public BSLParserRuleContext visitCallStatement(BSLParser.CallStatementContext ct } @Override - public BSLParserRuleContext visitComplexIdentifier(BSLParser.ComplexIdentifierContext ctx) { + public ParserRuleContext visitComplexIdentifier(BSLParser.ComplexIdentifierContext ctx) { if (ctx.IDENTIFIER() == null) { return super.visitComplexIdentifier(ctx); } @@ -348,7 +348,7 @@ public BSLParserRuleContext visitComplexIdentifier(BSLParser.ComplexIdentifierCo } @Override - public BSLParserRuleContext visitForStatement(BSLParser.ForStatementContext ctx) { + public ParserRuleContext visitForStatement(BSLParser.ForStatementContext ctx) { if (ctx.IDENTIFIER() == null) { return super.visitForStatement(ctx); } @@ -368,7 +368,7 @@ public BSLParserRuleContext visitForStatement(BSLParser.ForStatementContext ctx) } @Override - public BSLParserRuleContext visitForEachStatement(BSLParser.ForEachStatementContext ctx) { + public ParserRuleContext visitForEachStatement(BSLParser.ForEachStatementContext ctx) { if (ctx.IDENTIFIER() == null) { return super.visitForEachStatement(ctx); } diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/utils/MultilingualStringAnalyser.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/utils/MultilingualStringAnalyser.java index da0d0019ac9..fa9dfeaa9e3 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/utils/MultilingualStringAnalyser.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/utils/MultilingualStringAnalyser.java @@ -107,8 +107,7 @@ private static boolean isTemplate(BSLParser.GlobalMethodCallContext parent) { } private static String getVariableName(BSLParser.GlobalMethodCallContext ctx) { - BSLParser.AssignmentContext assignment = (BSLParser.AssignmentContext) - Trees.getAncestorByRuleIndex(ctx, BSLParser.RULE_assignment); + BSLParser.AssignmentContext assignment = Trees.getAncestorByRuleIndex(ctx, BSLParser.RULE_assignment); if (assignment != null) { BSLParser.LValueContext lValue = assignment.lValue(); @@ -204,7 +203,7 @@ private boolean istVariableUsingInTemplate() { return false; } - BSLParser.CodeBlockContext codeBlock = getCodeBlock(); + var codeBlock = getCodeBlock(); if (codeBlock == null) { return false; @@ -223,10 +222,7 @@ private boolean istVariableUsingInTemplate() { } private BSLParser.CodeBlockContext getCodeBlock() { - return (BSLParser.CodeBlockContext) Trees.getAncestorByRuleIndex( - globalMethodCallContext, - BSLParser.RULE_codeBlock - ); + return Trees.getAncestorByRuleIndex(globalMethodCallContext, BSLParser.RULE_codeBlock); } } diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/utils/Trees.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/utils/Trees.java index fe1437be8c7..faa2f2ce47f 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/utils/Trees.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/utils/Trees.java @@ -22,7 +22,6 @@ package com.github._1c_syntax.bsl.languageserver.utils; import com.github._1c_syntax.bsl.parser.BSLParser; -import com.github._1c_syntax.bsl.parser.BSLParserRuleContext; import edu.umd.cs.findbugs.annotations.Nullable; import lombok.experimental.UtilityClass; import org.antlr.v4.runtime.ParserRuleContext; @@ -34,16 +33,10 @@ import org.eclipse.lsp4j.util.Positions; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collection; -import java.util.Collections; -import java.util.HashSet; import java.util.List; import java.util.Optional; import java.util.Set; -import java.util.stream.Collectors; -import java.util.stream.IntStream; -import java.util.stream.Stream; /** * Утилитный класс для работы с синтаксическими деревьями ANTLR. @@ -67,14 +60,14 @@ public final class Trees { BSLParser.AMPERSAND ); - /** + /* * Обертки Trees */ /** * Найти все узлы указанного правила в дереве. * - * @param t Дерево разбора + * @param t Дерево разбора * @param ruleIndex Индекс правила для поиска * @return Коллекция найденных узлов */ @@ -101,40 +94,13 @@ public static List getChildren(Tree t) { * @return Список токенов */ public static List getTokens(ParseTree tree) { - if (tree instanceof BSLParserRuleContext parserRuleContext) { - return parserRuleContext.getTokens(); - } - - if (tree instanceof TerminalNode node) { - var token = node.getSymbol(); - return List.of(token); - } - - if (tree.getChildCount() == 0) { - return Collections.emptyList(); - } - - List results = new ArrayList<>(); - getTokensFromParseTree(tree, results); - return Collections.unmodifiableList(results); - } - - private static void getTokensFromParseTree(ParseTree tree, List tokens) { - for (var i = 0; i < tree.getChildCount(); i++) { - ParseTree child = tree.getChild(i); - if (child instanceof TerminalNode node) { - var token = node.getSymbol(); - tokens.add(token); - } else { - getTokensFromParseTree(child, tokens); - } - } + return org.antlr.v4.runtime.tree.Trees.getTokens(tree); } /** * Найти все узлы указанного типа токена в дереве. * - * @param t Дерево разбора + * @param t Дерево разбора * @param ttype Тип токена для поиска * @return Коллекция найденных узлов */ @@ -149,61 +115,17 @@ public static Collection findAllTokenNodes(ParseTree t, int ttype) { * @return Список всех потомков */ public static List getDescendants(ParseTree t) { - List nodes = new ArrayList<>(t.getChildCount()); - flatten(t, nodes); - return nodes; - } - - private static void flatten(ParseTree t, List flatList) { - flatList.add(t); - - int n = t.getChildCount(); - for (var i = 0; i < n; i++) { - flatten(t.getChild(i), flatList); - } - } - - /** - * Собственная реализация - */ - - private static int getRuleIndex(ParseTree node) { - if (node instanceof TerminalNode terminalNode) { - return terminalNode.getSymbol().getType(); - } else { - return ((BSLParserRuleContext) node).getRuleIndex(); - } - } - - private static List getDescendantsWithFilter(ParseTree parent, ParseTree tnc, int ruleindex) { - List descendants; - if (getRuleIndex(tnc) == ruleindex) { - descendants = new ArrayList<>(org.antlr.v4.runtime.tree.Trees.findAllRuleNodes(parent, ruleindex)); - } else { - descendants = org.antlr.v4.runtime.tree.Trees.getDescendants(parent) - .stream() - .filter(BSLParserRuleContext.class::isInstance) - .filter(node -> (node.equals(tnc) || getRuleIndex(node) == ruleindex)) - .toList(); - } - return descendants; + return org.antlr.v4.runtime.tree.Trees.getDescendants(t); } /** * Ищем предка элемента по указанному типу BSLParser * Пример: - * BSLParserRuleContext parent = Trees.getAncestorByRuleIndex(ctx, BSLParser.RULE_statement); + * ParserRuleContext parent = Trees.getAncestorByRuleIndex(ctx, BSLParser.RULE_statement); */ @Nullable - public static BSLParserRuleContext getAncestorByRuleIndex(BSLParserRuleContext element, int type) { - var parent = element.getParent(); - if (parent == null) { - return null; - } - if (parent.getRuleIndex() == type) { - return parent; - } - return getAncestorByRuleIndex(parent, type); + public static T getAncestorByRuleIndex(ParserRuleContext element, int type) { + return org.antlr.v4.runtime.tree.Trees.getAncestor(element, type); } /** @@ -212,7 +134,7 @@ public static BSLParserRuleContext getAncestorByRuleIndex(BSLParserRuleContext e * @return true - если есть узел с ошибкой */ public static boolean treeContainsErrors(ParseTree tnc) { - return treeContainsErrors(tnc, true); + return org.antlr.v4.runtime.tree.Trees.treeContainsErrors(tnc); } /** @@ -221,7 +143,7 @@ public static boolean treeContainsErrors(ParseTree tnc) { * @return true - если есть узел с ошибкой */ public static boolean nodeContainsErrors(ParseTree tnc) { - return treeContainsErrors(tnc, false); + return org.antlr.v4.runtime.tree.Trees.nodeContainsErrors(tnc); } /** @@ -233,12 +155,7 @@ public static boolean nodeContainsErrors(ParseTree tnc) { * @return tnc - если предыдущая нода не найдена, вернет текущую */ public static ParseTree getPreviousNode(ParseTree parent, ParseTree tnc, int ruleindex) { - List descendants = getDescendantsWithFilter(parent, tnc, ruleindex); - int pos = descendants.indexOf(tnc); - if (pos > 0) { - return descendants.get(pos - 1); - } - return tnc; + return org.antlr.v4.runtime.tree.Trees.getPreviousNode(parent, tnc, ruleindex); } /** @@ -248,19 +165,7 @@ public static ParseTree getPreviousNode(ParseTree parent, ParseTree tnc, int rul * @return предыдущий токен, если он был найден */ public Optional getPreviousTokenFromDefaultChannel(List tokens, int tokenIndex, int tokenType) { - while (true) { - if (tokenIndex == 0) { - return Optional.empty(); - } - var token = tokens.get(tokenIndex); - if (token.getChannel() != Token.DEFAULT_CHANNEL - || token.getType() != tokenType) { - tokenIndex = tokenIndex - 1; - continue; - } - - return Optional.of(token); - } + return org.antlr.v4.runtime.tree.Trees.getPreviousTokenFromDefaultChannel(tokens, tokenIndex, tokenType); } /** @@ -269,18 +174,7 @@ public Optional getPreviousTokenFromDefaultChannel(List tokens, in * @return предыдущий токен, если он был найден */ public static Optional getPreviousTokenFromDefaultChannel(List tokens, int tokenIndex) { - while (true) { - if (tokenIndex == 0) { - return Optional.empty(); - } - var token = tokens.get(tokenIndex); - if (token.getChannel() != Token.DEFAULT_CHANNEL) { - tokenIndex = tokenIndex - 1; - continue; - } - - return Optional.of(token); - } + return org.antlr.v4.runtime.tree.Trees.getPreviousTokenFromDefaultChannel(tokens, tokenIndex); } /** @@ -292,22 +186,14 @@ public static Optional getPreviousTokenFromDefaultChannel(List tok * @return tnc - если следующая нода не найдена, вернет текущую */ public static ParseTree getNextNode(ParseTree parent, ParseTree tnc, int ruleindex) { - List descendants = getDescendantsWithFilter(parent, tnc, ruleindex); - int pos = descendants.indexOf(tnc); - if (pos + 1 < descendants.size()) { - return descendants.get(pos + 1); - } - return tnc; + return org.antlr.v4.runtime.tree.Trees.getNextNode(parent, tnc, ruleindex); } /** * Рекурсивно находит самого верхнего родителя текущей ноды */ - public static BSLParserRuleContext getRootParent(BSLParserRuleContext tnc) { - if (tnc.getParent() != null) { - return getRootParent(tnc.getParent()); - } - return tnc; + public static ParserRuleContext getRootParent(ParserRuleContext tnc) { + return org.antlr.v4.runtime.tree.Trees.getAncestor(tnc); } /** @@ -318,17 +204,8 @@ public static BSLParserRuleContext getRootParent(BSLParserRuleContext tnc) { * @return tnc - если родитель не найден, вернет null */ @Nullable - public static BSLParserRuleContext getRootParent(BSLParserRuleContext tnc, int ruleindex) { - final var parent = tnc.getParent(); - if (parent == null) { - return null; - } - - if (getRuleIndex(parent) == ruleindex) { - return parent; - } else { - return getRootParent(parent, ruleindex); - } + public static ParserRuleContext getRootParent(ParserRuleContext tnc, int ruleindex) { + return org.antlr.v4.runtime.tree.Trees.getAncestor(tnc, ruleindex); } /** @@ -339,25 +216,15 @@ public static BSLParserRuleContext getRootParent(BSLParserRuleContext tnc, int r * @return tnc - если родитель не найден, вернет null */ @Nullable - public static BSLParserRuleContext getRootParent(BSLParserRuleContext tnc, Collection indexes) { - final var parent = tnc.getParent(); - if (parent == null) { - return null; - } - - if (indexes.contains(getRuleIndex(parent))) { - return parent; - } else { - return getRootParent(parent, indexes); - } + public static ParserRuleContext getRootParent(ParserRuleContext tnc, Collection indexes) { + return org.antlr.v4.runtime.tree.Trees.getAncestor(tnc, indexes); } /** * Получает детей с нужными типами */ - public static List getChildren(Tree t, Integer... ruleIndex) { - return getChildrenStream(t, ruleIndex) - .collect(Collectors.toList()); + public static List getChildren(Tree t, Integer... ruleIndex) { + return org.antlr.v4.runtime.tree.Trees.getChildren(t, ruleIndex); } /** @@ -367,41 +234,22 @@ public static List getChildren(Tree t, Integer... ruleInde * @param ruleIndex - arrays of BSLParser.RULE_* * @return child - если первый ребенок не найден, вернет Optional */ - public static Optional getFirstChild(Tree t, Integer... ruleIndex) { - return getChildrenStream(t, ruleIndex) - .findFirst(); - } - - private static Stream getChildrenStream(Tree t, Integer[] ruleIndex) { - List indexes = Arrays.asList(ruleIndex); - return IntStream.range(0, t.getChildCount()) - .mapToObj(t::getChild) - .filter(child -> child instanceof BSLParserRuleContext rule && indexes.contains(rule.getRuleIndex())) - .map(BSLParserRuleContext.class::cast); + public static Optional getFirstChild(Tree t, Integer... ruleIndex) { + return org.antlr.v4.runtime.tree.Trees.getFirstChild(t, ruleIndex); } /** * Получает дочерние ноды с нужными типами */ public static Collection findAllRuleNodes(ParseTree t, Integer... index) { - return findAllRuleNodes(t, Arrays.asList(index)); + return org.antlr.v4.runtime.tree.Trees.findAllRuleNodes(t, index); } /** * Получает дочерние ноды с нужными типами */ public static Collection findAllRuleNodes(ParseTree t, Collection indexes) { - List nodes = new ArrayList<>(); - - if (t instanceof ParserRuleContext parserRuleContext && indexes.contains(parserRuleContext.getRuleIndex())) { - nodes.add(parserRuleContext); - } - - IntStream.range(0, t.getChildCount()) - .mapToObj(i -> findAllRuleNodes(t.getChild(i), indexes)) - .forEachOrdered(nodes::addAll); - - return nodes; + return org.antlr.v4.runtime.tree.Trees.findAllRuleNodes(t, indexes); } /** @@ -417,53 +265,21 @@ public static Collection findAllRuleNodes(ParseTree t, Collec */ public static Collection findAllTopLevelDescendantNodes(ParserRuleContext root, Collection indexes) { - var result = new ArrayList(); - root.children.stream() - .map(node -> findAllTopLevelDescendantNodesInner(node, indexes)) - .forEach(result::addAll); - return result; - } - - private static Collection findAllTopLevelDescendantNodesInner(ParseTree root, - Collection indexes) { - if (root instanceof ParserRuleContext rule && indexes.contains(rule.getRuleIndex())) { - return List.of(rule); - } - - List result = new ArrayList<>(); - IntStream.range(0, root.getChildCount()) - .mapToObj(i -> findAllTopLevelDescendantNodesInner(root.getChild(i), indexes)) - .forEachOrdered(result::addAll); - - return result; + return org.antlr.v4.runtime.tree.Trees.findAllTopLevelDescendantNodes(root, indexes); } /** * Проверяет наличие дочерней ноды с указанным типом */ public static boolean nodeContains(ParseTree t, Integer... index) { - Set indexes = new HashSet<>(Arrays.asList(index)); - - if (t instanceof ParserRuleContext rule && indexes.contains(rule.getRuleIndex())) { - return true; - } - - return IntStream.range(0, t.getChildCount()) - .anyMatch(i -> nodeContains(t.getChild(i), index)); + return org.antlr.v4.runtime.tree.Trees.nodeContains(t, index); } /** * Проверяет наличие дочерней ноды с указанным типом исключая переданную */ public static boolean nodeContains(ParseTree t, ParseTree exclude, Integer... index) { - Set indexes = new HashSet<>(Arrays.asList(index)); - - if (t instanceof ParserRuleContext rule && !t.equals(exclude) && indexes.contains(rule.getRuleIndex())) { - return true; - } - - return IntStream.range(0, t.getChildCount()) - .anyMatch(i -> nodeContains(t.getChild(i), exclude, index)); + return org.antlr.v4.runtime.tree.Trees.nodeContains(t, exclude, index); } /** @@ -473,9 +289,8 @@ public static boolean nodeContains(ParseTree t, ParseTree exclude, Integer... in * @param position - искомая позиция * @return терминальная нода на указанной позиции, если есть */ - public static Optional findTerminalNodeContainsPosition(BSLParserRuleContext tree, + public static Optional findTerminalNodeContainsPosition(ParserRuleContext tree, Position position) { - if (tree.getTokens().isEmpty()) { return Optional.empty(); } @@ -496,7 +311,7 @@ public static Optional findTerminalNodeContainsPosition(BSLParserR return Optional.of(terminalNode); } } else { - Optional node = findTerminalNodeContainsPosition((BSLParserRuleContext) child, position); + Optional node = findTerminalNodeContainsPosition((ParserRuleContext) child, position); if (node.isPresent()) { return node; } @@ -574,20 +389,6 @@ private static boolean isBlankLine(Token previousToken, Token currentToken) { || (previousToken.getLine() + 1) != currentToken.getLine()); } - private static boolean treeContainsErrors(ParseTree tnc, boolean recursive) { - if (!(tnc instanceof BSLParserRuleContext ruleContext)) { - return false; - } - - if (ruleContext.exception != null) { - return true; - } - - return recursive - && ruleContext.children != null - && ruleContext.children.stream().anyMatch(Trees::treeContainsErrors); - } - private static boolean tokenContainsPosition(Token token, Position position) { var tokenRange = Ranges.create(token); return Ranges.containsPosition(tokenRange, position);