diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index c2d23593168..bec26a7ce58 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -15,7 +15,7 @@ This is a Java-based language server that provides code analysis, diagnostics, c ## Technology Stack -- **Language:** Java 17 +- **Language:** Java 21 - **Build System:** Gradle with Kotlin DSL - **Frameworks:** Spring Boot - **Key Technologies:** @@ -27,7 +27,7 @@ This is a Java-based language server that provides code analysis, diagnostics, c ## Environment Setup ### Prerequisites -- Java Development Kit 17 +- Java Development Kit 21 - Gradle (wrapper included in the repository) ### Building the Project diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml index cecb53ddb70..10a85628389 100644 --- a/.github/workflows/gradle.yml +++ b/.github/workflows/gradle.yml @@ -33,7 +33,7 @@ jobs: strategy: fail-fast: false matrix: - java_version: ['17', '21', '25'] + java_version: ['21', '25'] os: [ubuntu-latest, windows-latest, macOS-latest] steps: - uses: actions/checkout@v6 diff --git a/build.gradle.kts b/build.gradle.kts index db8340e4230..0bfb33e2c0a 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,7 +1,7 @@ import org.apache.tools.ant.filters.EscapeUnicode -import java.util.* -import java.text.SimpleDateFormat import org.jreleaser.model.Active.* +import java.text.SimpleDateFormat +import java.util.* plugins { `java-library` @@ -74,59 +74,55 @@ dependencies { api("info.picocli:picocli-spring-boot-starter:4.7.7") // кэширование - api("com.github.ben-manes.caffeine", "caffeine", "3.2.3") + api("com.github.ben-manes.caffeine:caffeine:3.2.3") api("org.ehcache:ehcache:3.11.1") // lsp4j core - api("org.eclipse.lsp4j", "org.eclipse.lsp4j", "0.24.0") - api("org.eclipse.lsp4j", "org.eclipse.lsp4j.websocket.jakarta", "0.24.0") + api("org.eclipse.lsp4j:org.eclipse.lsp4j:0.24.0") + api("org.eclipse.lsp4j:org.eclipse.lsp4j.websocket.jakarta:0.24.0") // 1c-syntax - api("io.github.1c-syntax", "bsl-parser", "0.30.0") { - exclude("com.ibm.icu", "*") - exclude("org.antlr", "ST4") - exclude("org.antlr", "antlr-runtime") - } - api("io.github.1c-syntax", "utils", "0.6.9") - api("io.github.1c-syntax", "mdclasses", "0.17.4") - api("io.github.1c-syntax", "bsl-common-library", "0.9.2") - api("io.github.1c-syntax", "supportconf", "0.15.0") + api("io.github.1c-syntax:bsl-parser:0.31.0") + api("io.github.1c-syntax:utils:0.7.0") + api("io.github.1c-syntax:mdclasses:0.18.0") + api("io.github.1c-syntax:bsl-common-library:0.10.0") + api("io.github.1c-syntax:supportconf:0.16.0") // nullability annotations - api("org.jspecify", "jspecify", "1.0.0") + api("org.jspecify:jspecify:1.0.0") // JLanguageTool - implementation("org.languagetool", "languagetool-core", languageToolVersion){ + implementation("org.languagetool:languagetool-core:$languageToolVersion") { exclude("commons-logging", "commons-logging") exclude("com.sun.xml.bind", "jaxb-core") exclude("com.sun.xml.bind", "jaxb-impl") } - implementation("org.languagetool", "language-en", languageToolVersion){ - exclude("commons-logging", "commons-logging") + implementation("org.languagetool:language-en:$languageToolVersion") { + exclude("commons-logging:commons-logging") exclude("com.sun.xml.bind", "jaxb-core") exclude("com.sun.xml.bind", "jaxb-impl") } - implementation("org.languagetool", "language-ru", languageToolVersion){ + implementation("org.languagetool:language-ru:$languageToolVersion") { exclude("commons-logging", "commons-logging") exclude("com.sun.xml.bind", "jaxb-core") exclude("com.sun.xml.bind", "jaxb-impl") } // AOP - implementation("org.aspectj", "aspectjrt", "1.9.25.1") + implementation("org.aspectj:aspectjrt:1.9.25.1") // commons utils - implementation("commons-io", "commons-io", "2.21.0") - implementation("commons-beanutils", "commons-beanutils", "1.11.0"){ + implementation("commons-io:commons-io:2.21.0") + implementation("commons-beanutils:commons-beanutils:1.11.0") { exclude("commons-logging", "commons-logging") } - implementation("commons-codec", "commons-codec", "1.20.0") - implementation("org.apache.commons", "commons-lang3", "3.20.0") - implementation("org.apache.commons", "commons-collections4", "4.5.0") - implementation("org.apache.commons", "commons-exec", "1.6.0") + implementation("commons-codec:commons-codec:1.20.0") + implementation("org.apache.commons:commons-lang3:3.20.0") + implementation("org.apache.commons:commons-collections4:4.5.0") + implementation("org.apache.commons:commons-exec:1.6.0") // progress bar - implementation("me.tongfei", "progressbar", "0.10.1") + implementation("me.tongfei:progressbar:0.10.1") // (de)serialization implementation("tools.jackson.core:jackson-databind") @@ -134,39 +130,39 @@ dependencies { implementation("io.leangen.geantyref:geantyref:2.0.1") // graphs - implementation("org.jgrapht", "jgrapht-core", "1.5.2") + implementation("org.jgrapht:jgrapht-core:1.5.2") // SARIF serialization - implementation("com.contrastsecurity", "java-sarif", "2.0") + implementation("com.contrastsecurity:java-sarif:2.0") // CONSTRAINTS implementation("com.google.guava:guava") { version { strictly("33.5.0-jre") - } + } } - + // COMPILE // TEST // spring testImplementation("org.springframework.boot:spring-boot-starter-test") { - exclude("com.vaadin.external.google", "android-json") + exclude("com.vaadin.external.google:android-json") } testImplementation("org.junit.jupiter:junit-jupiter") // test utils - testImplementation("org.jmockit", "jmockit", "1.50") - testImplementation("org.awaitility", "awaitility", "4.3.0") + testImplementation("org.jmockit:jmockit:1.50") + testImplementation("org.awaitility:awaitility:4.3.0") testRuntimeOnly("org.junit.platform:junit-platform-launcher") } java { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 + sourceCompatibility = JavaVersion.VERSION_21 + targetCompatibility = JavaVersion.VERSION_21 withSourcesJar() withJavadocJar() } @@ -278,7 +274,7 @@ jmh { sentry { org.set("1c-syntax") projectName.set("bsl-language-server") - + // Включить source context только при наличии токена аутентификации includeSourceContext = System.getenv("SENTRY_AUTH_TOKEN") != null } @@ -336,7 +332,10 @@ sonarqube { property("sonar.projectKey", "1c-syntax_bsl-language-server") property("sonar.projectName", "BSL Language Server") property("sonar.exclusions", "**/gen/**/*.*") - property("sonar.coverage.jacoco.xmlReportPaths", "${layout.buildDirectory.get()}/reports/jacoco/test/jacoco.xml") + property( + "sonar.coverage.jacoco.xmlReportPaths", + "${layout.buildDirectory.get()}/reports/jacoco/test/jacoco.xml" + ) } } diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/BSLLSPLauncher.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/BSLLSPLauncher.java index 2eb0facb621..22a552ac327 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/BSLLSPLauncher.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/BSLLSPLauncher.java @@ -155,7 +155,7 @@ public void run(String... args) { private static String[] addDefaultCommand(String[] args) { List tmpList = new ArrayList<>(Arrays.asList(args)); - tmpList.add(0, DEFAULT_COMMAND); + tmpList.addFirst(DEFAULT_COMMAND); args = tmpList.toArray(new String[0]); return args; } diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/BSLLanguageServer.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/BSLLanguageServer.java index 481713fbd83..98fe4aee4ad 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/BSLLanguageServer.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/BSLLanguageServer.java @@ -146,7 +146,7 @@ private void setConfigurationRoot(InitializeParams params) { return; } - var rootUri = workspaceFolders.get(0).getUri(); + var rootUri = workspaceFolders.getFirst().getUri(); Path rootPath; try { rootPath = new File(new URI(rootUri).getPath()).getCanonicalFile().toPath(); diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/aop/sentry/SentryScopeConfigurer.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/aop/sentry/SentryScopeConfigurer.java index 53d28f11653..3350b1e8444 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/aop/sentry/SentryScopeConfigurer.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/aop/sentry/SentryScopeConfigurer.java @@ -28,7 +28,6 @@ import io.sentry.protocol.Geo; import io.sentry.protocol.User; import lombok.RequiredArgsConstructor; -import org.eclipse.lsp4j.ClientInfo; import org.eclipse.lsp4j.ServerInfo; import org.jspecify.annotations.Nullable; import org.springframework.boot.context.event.ApplicationReadyEvent; 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 4854509c276..74edfeef72e 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 @@ -46,7 +46,7 @@ public Optional getAst() { return super.getAst(); } - return Optional.of(statements.get(0)); + return Optional.of(statements.getFirst()); } @Override 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 7533af65b4b..6e1d04d7aea 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 @@ -677,8 +677,8 @@ private void removeOrphanedNodes() { return edges.isEmpty() || (adjacentDeadCodeEnabled && edges.size() == 1 - && edges.get(0).getType() == CfgEdgeType.ADJACENT_CODE - && graph.getEdgeTarget(edges.get(0)) == vertex); + && edges.getFirst().getType() == CfgEdgeType.ADJACENT_CODE + && graph.getEdgeTarget(edges.getFirst()) == vertex); }) .toList(); diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/cli/FormatCommand.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/cli/FormatCommand.java index 9d5cf002ae7..1dd8bf4d965 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/cli/FormatCommand.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/cli/FormatCommand.java @@ -164,7 +164,7 @@ private void formatFile(File file) { return; } - final TextEdit textEdit = formatting.get(0); + final TextEdit textEdit = formatting.getFirst(); final String newText = textEdit.getNewText(); FileUtils.writeStringToFile(file, newText, StandardCharsets.UTF_8); } 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 1e96c9409bc..4c33d33b091 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 @@ -85,7 +85,7 @@ public List getCodeActions(CodeActionParams params, DocumentContext var parameters = maybeDoCall .map(BSLParser.DoCallContext::callParamList) - .map(callParamListContext -> callParamListContext.children) + .map(ParserRuleContext::getChildren) .orElse(Collections.emptyList()) .stream() .filter(Predicate.not(TerminalNode.class::isInstance)) @@ -96,12 +96,12 @@ public List getCodeActions(CodeActionParams params, DocumentContext return Collections.emptyList(); } - var firstParam = parameters.get(0); + var firstParam = parameters.getFirst(); if (firstParam.getTokens().isEmpty()) { return Collections.emptyList(); } - var firstToken = firstParam.getTokens().get(0); + var firstToken = firstParam.getTokens().getFirst(); if (firstToken.getType() != BSLLexer.STRING) { return Collections.emptyList(); } diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/codelenses/RunAllTestsCodeLensSupplier.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/codelenses/RunAllTestsCodeLensSupplier.java index 6c9c0c4123a..6d44cccc707 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/codelenses/RunAllTestsCodeLensSupplier.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/codelenses/RunAllTestsCodeLensSupplier.java @@ -87,7 +87,7 @@ public List getCodeLenses(DocumentContext documentContext) { return Collections.emptyList(); } - var firstMethod = methods.get(0); + var firstMethod = methods.getFirst(); return List.of(toCodeLens(firstMethod, documentContext)); } diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/color/ConstructorColorInformationSupplier.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/color/ConstructorColorInformationSupplier.java index 7b72e967fa3..66f063311cd 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/color/ConstructorColorInformationSupplier.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/color/ConstructorColorInformationSupplier.java @@ -96,7 +96,7 @@ private static Double getColorValue(BSLParser.CallParamListContext callParams, b return Optional.ofNullable(callParams.callParam(colorPosition)) .map(BSLParser.CallParamContext::expression) .filter(expression -> expression.getTokens().size() == 1) - .map(expression -> expression.getTokens().get(0)) + .map(expression -> expression.getTokens().getFirst()) .map(Token::getText) .map(ConstructorColorInformationSupplier::tryParseInteger) .map(colorValue -> (double) colorValue / MAX_COLOR_COMPONENT_VALUE) diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/configuration/semantictokens/SemanticTokensOptions.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/configuration/semantictokens/SemanticTokensOptions.java index 1c5e0862a87..2e33e3be165 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/configuration/semantictokens/SemanticTokensOptions.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/configuration/semantictokens/SemanticTokensOptions.java @@ -33,7 +33,6 @@ import java.util.HashSet; import java.util.List; import java.util.Locale; -import java.util.Map; import java.util.Set; /** diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/context/DocumentChangeExecutor.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/context/DocumentChangeExecutor.java index b4d0551ad94..d79a90475fa 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/context/DocumentChangeExecutor.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/context/DocumentChangeExecutor.java @@ -182,7 +182,7 @@ private void runWorker() { } } } catch (Exception e) { - LOGGER.error("Unexpected error in document executor worker: " + e.getMessage(), e); + LOGGER.error("Unexpected error in document executor worker: {}", e.getMessage(), e); } finally { flushPendingChanges(); } @@ -225,7 +225,7 @@ private void accumulate(ChangeTask task) { pendingContent = changeApplier.apply(baseContent, task.contentChanges); pendingVersion = task.version; } catch (Exception e) { - LOGGER.error("Error while accumulating document change task: " + e.getMessage(), e); + LOGGER.error("Error while accumulating document change task: {}", e.getMessage(), e); pendingContent = null; pendingVersion = -1; latestAppliedVersion.accumulateAndGet(task.version, Math::max); @@ -249,7 +249,7 @@ private void flushPendingChanges() { latestAppliedVersion.accumulateAndGet(pendingVersion, Math::max); completeWaitersUpTo(latestAppliedVersion.get()); } catch (Exception e) { - LOGGER.error("Error while applying accumulated document changes: " + e.getMessage(), e); + LOGGER.error("Error while applying accumulated document changes: {}", e.getMessage(), e); } finally { lock.writeLock().unlock(); pendingContent = null; diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/context/DocumentContext.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/context/DocumentContext.java index 240325234be..8ecc4a4714e 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/context/DocumentContext.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/context/DocumentContext.java @@ -430,7 +430,7 @@ private MetricStorage computeMetrics() { if (tokensUnboxed.isEmpty()) { lines = 0; } else { - lines = tokensUnboxed.get(tokensUnboxed.size() - 1).getLine(); + lines = tokensUnboxed.getLast().getLine(); } metricsTemp.setLines(lines); diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/context/computer/DiagnosticIgnoranceComputer.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/context/computer/DiagnosticIgnoranceComputer.java index 1bf09439021..9144e4cbbf8 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/context/computer/DiagnosticIgnoranceComputer.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/context/computer/DiagnosticIgnoranceComputer.java @@ -162,10 +162,10 @@ private void computeCommentsIgnorance(List codeTokens, List commen int lastTokenLine; if (codeTokens.isEmpty()) { // File contains only comments - lastTokenLine = comments.isEmpty() ? 0 : comments.get(comments.size() - 1).getLine(); + lastTokenLine = comments.isEmpty() ? 0 : comments.getLast().getLine(); } else { - int lastCodeTokenLine = codeTokens.get(codeTokens.size() - 1).getLine(); - int lastCommentLine = comments.isEmpty() ? 0 : comments.get(comments.size() - 1).getLine(); + int lastCodeTokenLine = codeTokens.getLast().getLine(); + int lastCommentLine = comments.isEmpty() ? 0 : comments.getLast().getLine(); lastTokenLine = Math.max(lastCodeTokenLine, lastCommentLine); } 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 04e26fe7fce..3f9c29e4656 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 @@ -97,7 +97,7 @@ public ParseTree visitFunction(BSLParser.FunctionContext ctx) { } if (!declaration.annotation().isEmpty()) { - startNode = declaration.annotation().get(0).AMPERSAND(); + startNode = declaration.annotation().getFirst().AMPERSAND(); } MethodSymbol methodSymbol = createMethodSymbol( @@ -132,7 +132,7 @@ public ParseTree visitProcedure(BSLParser.ProcedureContext ctx) { } if (!declaration.annotation().isEmpty()) { - startNode = declaration.annotation().get(0).AMPERSAND(); + startNode = declaration.annotation().getFirst().AMPERSAND(); } MethodSymbol methodSymbol = createMethodSymbol( @@ -190,7 +190,7 @@ private static Optional getCompilerDirective( .map(compilerDirectiveContext -> compilerDirectiveContext.getStop().getType()) .filter(SPECIAL_COMPILER_DIRECTIVES_TOKEN_TYPES::contains) .findAny() - .orElseGet(() -> compilerDirectiveContexts.get(0).getStop().getType()); + .orElseGet(() -> compilerDirectiveContexts.getFirst().getStop().getType()); return CompilerDirectiveKind.of(tokenType); diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/context/computer/QueryComputer.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/context/computer/QueryComputer.java index 0b072dac29a..1a167a3ad72 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/context/computer/QueryComputer.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/context/computer/QueryComputer.java @@ -98,7 +98,7 @@ public ParseTree visitString(BSLParser.StringContext ctx) { var startLine = 0; var startEmptyLines = ""; if (!ctx.getTokens().isEmpty()) { - startLine = ctx.getTokens().get(0).getLine(); + startLine = ctx.getTokens().getFirst().getLine(); startEmptyLines = "\n".repeat(startLine - 1); } diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/AbstractMagicValueDiagnostic.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/AbstractMagicValueDiagnostic.java index da4fbfb676d..f814bb31af6 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/AbstractMagicValueDiagnostic.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/AbstractMagicValueDiagnostic.java @@ -567,12 +567,12 @@ private static boolean isValidStructureConstructorParameter( return true; } - var firstParam = callParams.get(0); + var firstParam = callParams.getFirst(); var tokens = firstParam.getTokens(); if (tokens.isEmpty()) { return false; } - return tokens.get(0).getType() == BSLParser.STRING; + return tokens.getFirst().getType() == BSLParser.STRING; } /** 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 41cb5d2255d..5ac591db76b 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 @@ -128,15 +128,13 @@ private void checkAllPathsHaveReturns(BSLParser.FunctionContext ctx) { } private Optional nonExplicitReturnNode(CfgVertex v, ControlFlowGraph graph) { - if (v instanceof BasicBlockVertex basicBlock) { - return checkBasicBlockExitingNode(basicBlock); - } else if (v instanceof LoopVertex loop) { - return checkLoopExitingNode(loop); - } else if (v instanceof ConditionalVertex conditional) { - return checkElseIfClauseExitingNode(conditional, graph); - } + return switch (v) { + case BasicBlockVertex basicBlock -> checkBasicBlockExitingNode(basicBlock); + case LoopVertex loop -> checkLoopExitingNode(loop); + case ConditionalVertex conditional -> checkElseIfClauseExitingNode(conditional, graph); + default -> v.getAst(); + }; - return v.getAst(); } private Optional checkElseIfClauseExitingNode(ConditionalVertex v, ControlFlowGraph graph) { @@ -159,7 +157,7 @@ private Optional checkElseIfClauseExitingNode(ConditionalVert private static Optional checkBasicBlockExitingNode(BasicBlockVertex block) { if (!block.statements().isEmpty()) { - var lastStatement = block.statements().get(block.statements().size() - 1); + var lastStatement = block.statements().getLast(); var nodes = Trees.findAllRuleNodes(lastStatement, BSLParser.RULE_returnStatement, BSLParser.RULE_raiseStatement); if (nodes.isEmpty()) { 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 ecd4e560204..150325dd01f 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 @@ -85,7 +85,7 @@ public ParseTree visitFile(BSLParser.FileContext ctx) { List relatedInformation = createRelatedInformations(ctx); if (!relatedInformation.isEmpty()) { diagnosticStorage.addDiagnostic( - relatedInformation.get(0).getLocation().getRange(), + relatedInformation.getFirst().getLocation().getRange(), relatedInformation); } return ctx; diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CommentedCodeDiagnostic.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CommentedCodeDiagnostic.java index ef17a738c1d..d0d67e8d15b 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CommentedCodeDiagnostic.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CommentedCodeDiagnostic.java @@ -138,7 +138,7 @@ private static List initNewGroup(Token comment) { } private boolean isAdjacent(Token comment, List currentGroup) { - var last = currentGroup.get(currentGroup.size() - 1); + var last = currentGroup.getLast(); return last.getLine() + 1 == comment.getLine() && onlyEmptyDelimiters(last.getTokenIndex(), comment.getTokenIndex()); } @@ -163,15 +163,15 @@ private boolean isCommentGroupNotMethodDescription(List commentGroup) { return true; } - final var first = commentGroup.get(0); - final var last = commentGroup.get(commentGroup.size() - 1); + final var first = commentGroup.getFirst(); + final var last = commentGroup.getLast(); return methodDescriptions.stream().noneMatch(methodDescription -> methodDescription.contains(first, last)); } private void checkCommentGroup(List commentGroup) { - var firstComment = commentGroup.get(0); - var lastComment = commentGroup.get(commentGroup.size() - 1); + var firstComment = commentGroup.getFirst(); + var lastComment = commentGroup.getLast(); for (var comment : commentGroup) { if (isTextParsedAsCode(comment.getText())) { diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/ConsecutiveEmptyLinesDiagnostic.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/ConsecutiveEmptyLinesDiagnostic.java index ccfc6e17a97..06abe3211f0 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/ConsecutiveEmptyLinesDiagnostic.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/ConsecutiveEmptyLinesDiagnostic.java @@ -88,7 +88,7 @@ private void checkEmptyLines(int currentLine, int previousLine) { } private static int getEofTokenLine(List tokens) { - return tokens.get(tokens.size() - 1).getLine(); + return tokens.getLast().getLine(); } private void addIssue(int startEmptyLine, int lastEmptyLine) { 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 1b0fc73eb02..749912e9e02 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 @@ -217,7 +217,7 @@ private Set getTypesFromComplexIdentifier(BSLParser.ComplexIdentifierCon private void visitDescendantCodeBlock(BSLParser.@Nullable CodeBlockContext ctx) { Optional.ofNullable(ctx) - .map(e -> e.children) + .map(ParserRuleContext::getChildren) .stream() .flatMap(Collection::stream) .forEach(t -> t.accept(this)); diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/DisableSafeModeDiagnostic.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/DisableSafeModeDiagnostic.java index 3939ea361a3..ba65c5b3305 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/DisableSafeModeDiagnostic.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/DisableSafeModeDiagnostic.java @@ -29,6 +29,7 @@ import com.github._1c_syntax.bsl.parser.BSLParser; import com.github._1c_syntax.utils.CaseInsensitivePattern; +import java.util.List; import java.util.Optional; import java.util.regex.Pattern; @@ -72,10 +73,10 @@ private static boolean enabledCall(BSLParser.GlobalMethodCallContext ctx, int en .map(BSLParser.DoCallContext::callParamList) .map(BSLParser.CallParamListContext::callParam) .filter(callParamContexts -> callParamContexts.size() == 1) - .map(callParamContexts -> callParamContexts.get(0)) + .map(List::getFirst) .map(BSLParser.CallParamContext::expression) .map(BSLParser.ExpressionContext::member) - .map(memberContexts -> memberContexts.get(0)) + .map(List::getFirst) .map(BSLParser.MemberContext::constValue) .filter(constValueContext -> constValueContext.getToken(enabledValue, 0) != null) .isPresent(); diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/DuplicateRegionDiagnostic.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/DuplicateRegionDiagnostic.java index 28c07ee4f01..f2650ad58b5 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/DuplicateRegionDiagnostic.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/DuplicateRegionDiagnostic.java @@ -93,7 +93,7 @@ public ParseTree visitFile(BSLParser.FileContext ctx) { if (regionsList.size() > 1) { List relatedInformation = new ArrayList<>(); - RegionSymbol currentRegion = regionsList.get(0); + RegionSymbol currentRegion = regionsList.getFirst(); Range currentRange = currentRegion.getStartRange(); regionsList.stream() 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 b6198f55801..1359b1a8ef1 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 @@ -156,7 +156,7 @@ private void checkStringLiterals(ParserRuleContext ctx) { literal.getText() )).collect(Collectors.toList()); - var firstLiteral = literals.get(0); + var firstLiteral = literals.getFirst(); diagnosticStorage.addDiagnostic(firstLiteral, info.getMessage(firstLiteral.getText()), relatedInformation); } }); 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 295d9bcebc0..010fc17a59a 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 @@ -137,7 +137,7 @@ private List getPossibleDuplicates() { BSLParser.AccessCallContext accessCallContext) { final var methodCallContext = accessCallContext.methodCall(); final var callParams = methodCallContext.doCall().callParamList().callParam(); - final var firstParamContext = callParams.get(0); + final var firstParamContext = callParams.getFirst(); if (firstParamContext.getChildCount() == 0) { return null; } @@ -218,7 +218,7 @@ private boolean excludeValidElements(List duplicates, int currInde return false; } final var first = duplicates.get(currIndex); - var alreadyAdd = !listForIssue.isEmpty() && listForIssue.get(listForIssue.size() - 1) == first; + var alreadyAdd = !listForIssue.isEmpty() && listForIssue.getLast() == first; for (int i = currIndex + 1; i < duplicates.size(); i++) { final var next = duplicates.get(i); if (hasValidChange(first, next)) { diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/EmptyCodeBlockDiagnostic.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/EmptyCodeBlockDiagnostic.java index 37677c24165..f61601f33a0 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/EmptyCodeBlockDiagnostic.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/EmptyCodeBlockDiagnostic.java @@ -87,8 +87,8 @@ public ParseTree visitCodeBlock(BSLParser.CodeBlockContext ctx) { .toList(); if (!list.isEmpty()) { - TerminalNode first = (TerminalNode) list.get(0); - TerminalNode last = (TerminalNode) list.get(list.size() - 1); + TerminalNode first = (TerminalNode) list.getFirst(); + TerminalNode last = (TerminalNode) list.getLast(); diagnosticStorage.addDiagnostic(first, last); } else { diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/ExcessiveAutoTestCheckDiagnostic.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/ExcessiveAutoTestCheckDiagnostic.java index b2e55ad072f..2202cf3f209 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/ExcessiveAutoTestCheckDiagnostic.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/ExcessiveAutoTestCheckDiagnostic.java @@ -73,7 +73,7 @@ private static boolean codeBlockWithOnlyReturn(BSLParser.CodeBlockContext codeBl List statements = codeBlock.statement(); if (statements.size() == 1) { - BSLParser.CompoundStatementContext compoundStatement = statements.get(0).compoundStatement(); + BSLParser.CompoundStatementContext compoundStatement = statements.getFirst().compoundStatement(); if (compoundStatement != null) { return compoundStatement.returnStatement() != null; 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 ac6251ce6cc..d480fa768f5 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 @@ -108,11 +108,11 @@ private static Stream joinedTables(SDBLParser.JoinPartContext joinPartCt private static List joinedDataSourceContext(SDBLParser.JoinPartContext joinPartCtx) { final List result; - if (joinPartCtx.LEFT() != null) { + if (joinPartCtx.leftJoin() != null) { result = Collections.singletonList(joinPartCtx.dataSource()); - } else if (joinPartCtx.RIGHT() != null) { + } else if (joinPartCtx.rightJoin() != null) { result = Collections.singletonList(((SDBLParser.DataSourceContext) joinPartCtx.getParent())); - } else if (joinPartCtx.FULL() != null) { + } else if (joinPartCtx.fullJoin() != null) { result = Arrays.asList(((SDBLParser.DataSourceContext) joinPartCtx.getParent()), joinPartCtx.dataSource()); } else { diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/FullOuterJoinQueryDiagnostic.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/FullOuterJoinQueryDiagnostic.java index a4eba273b87..19b1cc920d7 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/FullOuterJoinQueryDiagnostic.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/FullOuterJoinQueryDiagnostic.java @@ -29,6 +29,8 @@ import com.github._1c_syntax.bsl.parser.SDBLParser; import org.antlr.v4.runtime.tree.ParseTree; +import java.util.Optional; + @DiagnosticMetadata( type = DiagnosticType.CODE_SMELL, severity = DiagnosticSeverity.MAJOR, @@ -45,10 +47,7 @@ public class FullOuterJoinQueryDiagnostic extends AbstractSDBLVisitorDiagnostic @Override public ParseTree visitJoinPart(SDBLParser.JoinPartContext ctx) { - if (ctx.FULL() != null && ctx.JOIN() != null) { - diagnosticStorage.addDiagnostic(ctx.FULL(), ctx.JOIN()); - } - + Optional.ofNullable(ctx.fullJoin()).ifPresent(diagnosticStorage::addDiagnostic); return super.visitJoinPart(ctx); } } diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/IfElseDuplicatedCodeBlockDiagnostic.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/IfElseDuplicatedCodeBlockDiagnostic.java index 7dfe34fe478..36d7f966850 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/IfElseDuplicatedCodeBlockDiagnostic.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/IfElseDuplicatedCodeBlockDiagnostic.java @@ -96,7 +96,7 @@ private void checkCodeBlock(List codeBlockContexts, .skip(i) .filter(codeBlockContext -> !codeBlockContext.equals(currentCodeBlock) - && !(currentCodeBlock.children == null && codeBlockContext.children == null) + && !(currentCodeBlock.getChildren().isEmpty() && codeBlockContext.getChildren().isEmpty()) && DiagnosticHelper.equalNodes(currentCodeBlock, codeBlockContext)) .toList(); 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 4ef6ff8b141..40d6ce7834f 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 @@ -32,6 +32,7 @@ import org.jspecify.annotations.Nullable; import java.util.HashSet; +import java.util.List; import java.util.Objects; import java.util.Optional; import java.util.regex.Matcher; @@ -77,7 +78,7 @@ private static boolean paramsAreDifferent(BSLParser.GlobalMethodCallContext ctx) return false; } - var templateString = getTemplateString(params.get(0)); + var templateString = getTemplateString(params.getFirst()); if (templateString == null) { return false; } @@ -141,7 +142,7 @@ private static Optional getConstValue(Optional memberContexts.size() == 1) - .map(memberContexts -> memberContexts.get(0)) + .map(List::getFirst) .flatMap(memberContext -> calcStringForMemberContext(memberContext, isFullSearch)); } @@ -192,7 +193,7 @@ private static Optional calcAssignedValueForIdentif @Nullable private static ParserRuleContext getPreviousNode(ParserRuleContext node, int ruleStatement) { - final var children = node.getParent().children; + final var children = node.getParent().getChildren(); final var pos = children.indexOf(node); if (pos > 0) { for (int i = pos - 1; i >= 0; i--) { @@ -221,7 +222,7 @@ private static Optional getStringFromNStrCall(Optional memberContexts.size() == 1) - .map(memberContexts -> memberContexts.get(0)) + .map(List::getFirst) .map(BSLParser.MemberContext::complexIdentifier) .map(BSLParser.ComplexIdentifierContext::globalMethodCall) .filter(globalMethodCallContext -> nstrPattern.matcher(globalMethodCallContext.methodName().getText()).matches()) diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/LineLengthDiagnostic.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/LineLengthDiagnostic.java index 8dae70c87e9..f083fe63a2a 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/LineLengthDiagnostic.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/LineLengthDiagnostic.java @@ -150,7 +150,7 @@ private static boolean descriptionContainToken(List descriptionRang return false; } - var first = descriptionRanges.get(0); + var first = descriptionRanges.getFirst(); if (first.startLine() + 1 > token.getLine()) { return false; } else if (first.endLine() + 1 < token.getLine()) { diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/MultilineStringInQueryDiagnostic.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/MultilineStringInQueryDiagnostic.java index 58e03b14bff..9cbf07b5491 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/MultilineStringInQueryDiagnostic.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/MultilineStringInQueryDiagnostic.java @@ -41,7 +41,7 @@ scope = DiagnosticScope.BSL ) public class MultilineStringInQueryDiagnostic extends AbstractSDBLVisitorDiagnostic { - private static final int MULTI_STRING_MIN_SIZE = 2; // see SDBLParser grammar + private static final int MULTI_STRING_MIN_SIZE = 1; // see SDBLParser grammar @Override public ParseTree visitMultiString(SDBLParser.MultiStringContext ctx) { diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/RedundantAccessToObjectDiagnostic.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/RedundantAccessToObjectDiagnostic.java index 75356adb7f4..575df9d63f0 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/RedundantAccessToObjectDiagnostic.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/RedundantAccessToObjectDiagnostic.java @@ -139,8 +139,8 @@ public ParseTree visitComplexIdentifier(BSLParser.ComplexIdentifierContext ctx) if ( PATTERN.matcher(identifier.getText()).matches() - && modifiers.get(0) != null - && modifiers.get(0).accessIndex() == null + && modifiers.getFirst() != null + && modifiers.getFirst().accessIndex() == null ) { diagnosticStorage.addDiagnostic(ctx.getStart()); } @@ -200,8 +200,8 @@ private static boolean notHasAccessIndex(BSLParser.AcceptorContext acceptor) { var modifiers = acceptor.modifier(); return modifiers == null || modifiers.isEmpty() - || modifiers.get(0) == null - || modifiers.get(0).accessIndex() == null; + || modifiers.getFirst() == null + || modifiers.getFirst().accessIndex() == null; } private static boolean hasAccessProperty(BSLParser.AcceptorContext acceptor) { 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 04dc9880c08..bfbacb4107d 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 @@ -295,7 +295,7 @@ private boolean isOveruse(SDBLParser.ColumnContext ctx) { if (refIndex > LAST_INDEX_OF_TABLE_DOT_REF) { return true; } - var tabName = children.get(0).getText(); + var tabName = children.getFirst().getText(); return dataSourceWithTabularSectionNames.getOrDefault(tabName, Collections.emptyList()).isEmpty(); } @@ -312,7 +312,7 @@ private static int findLastRef(List children) { private static List extractFirstMetadataTypeName(SDBLParser.ColumnContext ctx) { final var mdoName = ctx.mdoName; - final var children = ctx.children; + final var children = ctx.getChildren(); if (mdoName == null || children.size() < COUNT_OF_TABLE_DOT_REF_DOT_REF || !METADATA_TYPES.contains(mdoName.getStart().getType())) { return children; diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/ScheduledJobHandlerDiagnostic.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/ScheduledJobHandlerDiagnostic.java index 77204bb5bb0..84aa0fb7361 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/ScheduledJobHandlerDiagnostic.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/ScheduledJobHandlerDiagnostic.java @@ -99,7 +99,7 @@ private void fireIssueForDoubles(List mdScheduledJobs) { .map(ScheduledJob::getName) .reduce((s, s2) -> s.concat(", ").concat(s2)) .orElseThrow(); - final var mdScheduledJob = mdScheduledJobs.get(0).getMethodName(); + final var mdScheduledJob = mdScheduledJobs.getFirst().getMethodName(); final var methodPath = getFullName(mdScheduledJob.getModuleName(), mdScheduledJob.getMethodName()); addDiagnostic(info.getResourceString(DOUBLE_MESSAGE, methodPath, scheduleJobNames)); diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/SetPrivilegedModeDiagnostic.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/SetPrivilegedModeDiagnostic.java index b76334faf01..e8467ee6651 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/SetPrivilegedModeDiagnostic.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/SetPrivilegedModeDiagnostic.java @@ -29,6 +29,7 @@ import com.github._1c_syntax.bsl.parser.BSLParser; import com.github._1c_syntax.utils.CaseInsensitivePattern; +import java.util.List; import java.util.Optional; import java.util.regex.Pattern; @@ -65,10 +66,10 @@ private static boolean isSetPrivilegedModeWithFalse(BSLParser.GlobalMethodCallCo .map(BSLParser.DoCallContext::callParamList) .map(BSLParser.CallParamListContext::callParam) .filter(callParamContexts -> callParamContexts.size() == 1) - .map(callParamContexts -> callParamContexts.get(0)) + .map(List::getFirst) .map(BSLParser.CallParamContext::expression) .map(BSLParser.ExpressionContext::member) - .map(memberContexts -> memberContexts.get(0)) + .map(List::getFirst) .map(BSLParser.MemberContext::constValue) .filter(constValueContext -> constValueContext.FALSE() != null) .isPresent(); diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/TimeoutsInExternalResourcesDiagnostic.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/TimeoutsInExternalResourcesDiagnostic.java index 47b37d52bd0..ab80f14eea4 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/TimeoutsInExternalResourcesDiagnostic.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/TimeoutsInExternalResourcesDiagnostic.java @@ -191,7 +191,7 @@ private static boolean isTimeoutModifier(BSLParser.StatementContext localStateme List allRuleNodes = new ArrayList<>(Trees.findAllRuleNodes(acceptor, BSLParser.RULE_accessProperty)); if (!allRuleNodes.isEmpty()) { - BSLParser.AccessPropertyContext accessProperty = (BSLParser.AccessPropertyContext) allRuleNodes.get(0); + BSLParser.AccessPropertyContext accessProperty = (BSLParser.AccessPropertyContext) allRuleNodes.getFirst(); return PATTERN_TIMEOUT.matcher(accessProperty.getText()).find(); } diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UnionAllDiagnostic.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UnionAllDiagnostic.java index 3fb54d0fd0b..9940ae39062 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UnionAllDiagnostic.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UnionAllDiagnostic.java @@ -29,6 +29,8 @@ import com.github._1c_syntax.bsl.parser.SDBLParser; import org.antlr.v4.runtime.tree.ParseTree; +import java.util.Optional; + @DiagnosticMetadata( type = DiagnosticType.CODE_SMELL, severity = DiagnosticSeverity.MINOR, @@ -44,12 +46,7 @@ public class UnionAllDiagnostic extends AbstractSDBLVisitorDiagnostic { @Override public ParseTree visitUnion(SDBLParser.UnionContext ctx) { - if (ctx.UNION() != null && ctx.ALL() != null) { - return super.visitUnion(ctx); - } - - diagnosticStorage.addDiagnostic(ctx.UNION()); + Optional.ofNullable(ctx.UNION()).ifPresent(diagnosticStorage::addDiagnostic); return super.visitUnion(ctx); } - } 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 7466a04c2ce..cb773b65c32 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 @@ -261,7 +261,7 @@ private ParserRuleContext getEndCurrentBlockNode(List stateme } // т.к. список реверснут, берем первый элемент - ParserRuleContext endCurrentBlockNode = statements.get(0); + ParserRuleContext endCurrentBlockNode = statements.getFirst(); if (preprocRange != null) { // пройдем по всем стейтам (с конца идем) и ищем первый, находящийся в том же блоке 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 606f13c4ca1..67f086b510f 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 @@ -103,9 +103,9 @@ private static boolean nonValidExpression(BSLParser.MemberContext currentRootMem private static boolean haveNeighboorBooleanOperator(ParserRuleContext currentRootMember, ParserRuleContext rootExpressionNode) { var haveNeighbourBoolOperation = false; - int indexOfCurrentMemberNode = rootExpressionNode.children.indexOf(currentRootMember); + int indexOfCurrentMemberNode = rootExpressionNode.getChildren().indexOf(currentRootMember); if (indexOfCurrentMemberNode > 0) { - var prev = (ParserRuleContext) rootExpressionNode.children.get(indexOfCurrentMemberNode - 1); + var prev = (ParserRuleContext) rootExpressionNode.getChildren().get(indexOfCurrentMemberNode - 1); if (Trees.nodeContains(prev, BSLParser.RULE_compareOperation)) { return false; } @@ -113,7 +113,7 @@ private static boolean haveNeighboorBooleanOperator(ParserRuleContext currentRoo } if (indexOfCurrentMemberNode < rootExpressionNode.getChildCount() - 1) { - var next = (ParserRuleContext) rootExpressionNode.children.get(indexOfCurrentMemberNode + 1); + var next = (ParserRuleContext) rootExpressionNode.getChildren().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 f5a2300d75b..de17adc5746 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 @@ -152,7 +152,7 @@ private static boolean hasErrorLogLevel(BSLParser.CallParamContext callParamCont .map(BSLParser.CallParamContext::expression) .map(BSLParser.ExpressionContext::member) .filter(memberContexts -> memberContexts.size() == 1) - .map(memberContexts -> memberContexts.get(0)) + .map(List::getFirst) .map(BSLParser.MemberContext::complexIdentifier) .filter(identifier -> identifier.IDENTIFIER() != null); if (complexIdentifier.isEmpty()) { diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UselessTernaryOperatorDiagnostic.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UselessTernaryOperatorDiagnostic.java index d764f9cbc53..ca2ec8925fb 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UselessTernaryOperatorDiagnostic.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UselessTernaryOperatorDiagnostic.java @@ -95,8 +95,8 @@ public List getQuickFixes( diagnostics.forEach((Diagnostic diagnostic) -> { var range = diagnostic.getRange(); var data = diagnostic.getData(); - if (data instanceof DiagnosticStorage.DiagnosticAdditionalData additionalData) { - var textEdit = new TextEdit(range, additionalData.string()); + if (data instanceof DiagnosticStorage.DiagnosticAdditionalData(String string)) { + var textEdit = new TextEdit(range, string); textEdits.add(textEdit); } }); diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingFindElementByStringDiagnostic.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingFindElementByStringDiagnostic.java index 6fffacd2782..f9b16b086ce 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingFindElementByStringDiagnostic.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingFindElementByStringDiagnostic.java @@ -29,6 +29,7 @@ import com.github._1c_syntax.bsl.parser.BSLParser; import com.github._1c_syntax.utils.CaseInsensitivePattern; import org.antlr.v4.runtime.tree.ParseTree; +import org.jspecify.annotations.Nullable; import java.util.regex.Pattern; @@ -51,11 +52,11 @@ public class UsingFindElementByStringDiagnostic extends AbstractVisitorDiagnosti ); @Override - public ParseTree visitMethodCall(BSLParser.MethodCallContext ctx) { + public @Nullable ParseTree visitMethodCall(BSLParser.MethodCallContext ctx) { var matcher = pattern.matcher(ctx.methodName().getText()); if (matcher.matches()) { - BSLParser.CallParamContext param = ctx.doCall().callParamList().callParam().get(0); - if (param.children == null || + BSLParser.CallParamContext param = ctx.doCall().callParamList().callParam().getFirst(); + if (param.getChildren().isEmpty() || param.getStart().getType() == BSLParser.STRING || param.getStart().getType() == BSLParser.DECIMAL) { diagnosticStorage.addDiagnostic(ctx, info.getMessage(matcher.group(0))); 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 8300b019220..00a72201376 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 @@ -94,7 +94,7 @@ public ParseTree visitAssignment(BSLParser.AssignmentContext ctx) { var matcher = searchWords.matcher(ctx.getStart().getText()); if (matcher.find()) { List list = ctx.expression().getTokens(); - if (list.size() == 1 && isNotEmptyStringByToken(list.get(0))) { + if (list.size() == 1 && isNotEmptyStringByToken(list.getFirst())) { diagnosticStorage.addDiagnostic(ctx); } } @@ -116,7 +116,7 @@ public ParseTree visitAccessIndex(BSLParser.AccessIndexContext ctx) { List list = ctx.expression().getTokens(); if (list.size() == 1) { - processCheckAssignmentKey(ctx, list.get(0).getText()); + processCheckAssignmentKey(ctx, list.getFirst().getText()); } return super.visitAccessIndex(ctx); } @@ -212,7 +212,7 @@ private void processParameterList( BSLParser.NewExpressionContext ctx, List list ) { - String[] arr = list.get(0).getText().split(","); + String[] arr = list.getFirst().getText().split(","); for (var index = 0; index < arr.length; index++) { var matcher = searchWords.matcher(getClearString(arr[index])); if (matcher.find() && list.size() > index + 1 && isNotEmptyStringByToken(list.get(index + 1).getStart())) { diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/documenthighlight/AbstractASTDocumentHighlightSupplier.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/documenthighlight/AbstractASTDocumentHighlightSupplier.java index b0ef1381ca6..1c5745a65e5 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/documenthighlight/AbstractASTDocumentHighlightSupplier.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/documenthighlight/AbstractASTDocumentHighlightSupplier.java @@ -24,7 +24,6 @@ import com.github._1c_syntax.bsl.languageserver.utils.Ranges; import org.antlr.v4.runtime.tree.TerminalNode; import org.eclipse.lsp4j.DocumentHighlight; -import java.util.Optional; import org.jspecify.annotations.Nullable; import java.util.List; @@ -41,7 +40,7 @@ public abstract class AbstractASTDocumentHighlightSupplier implements DocumentHi *

* Используется для прямого доступа к токенам через геттеры ANTLR-контекста. * - * @param highlights Список подсветок, в который будет добавлена подсветка токена + * @param highlights Список подсветок, в который будет добавлена подсветка токена * @param terminalNode Терминальный узел с токеном (может быть null) */ protected void addTokenHighlight(List highlights, @Nullable TerminalNode terminalNode) { diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/documenthighlight/AbstractSDBLDocumentHighlightSupplier.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/documenthighlight/AbstractSDBLDocumentHighlightSupplier.java index 03d5ac69c6e..af5ce3a25ba 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/documenthighlight/AbstractSDBLDocumentHighlightSupplier.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/documenthighlight/AbstractSDBLDocumentHighlightSupplier.java @@ -28,12 +28,10 @@ import org.antlr.v4.runtime.tree.TerminalNode; import org.eclipse.lsp4j.DocumentHighlight; import org.eclipse.lsp4j.Position; -import java.util.Optional; import org.jspecify.annotations.Nullable; import java.util.List; import java.util.Optional; -import org.jspecify.annotations.Nullable; /** * Базовый класс для поставщиков подсветки в SDBL-запросах. diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/documenthighlight/SDBLJoinDocumentHighlightSupplier.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/documenthighlight/SDBLJoinDocumentHighlightSupplier.java index 1d26497fe22..4c0469be675 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/documenthighlight/SDBLJoinDocumentHighlightSupplier.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/documenthighlight/SDBLJoinDocumentHighlightSupplier.java @@ -29,13 +29,13 @@ import org.eclipse.lsp4j.DocumentHighlight; import org.eclipse.lsp4j.DocumentHighlightParams; import org.eclipse.lsp4j.Position; -import java.util.Optional; import org.jspecify.annotations.Nullable; import org.springframework.stereotype.Component; import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.Optional; /** * Поставщик подсветки для конструкций JOIN в SDBL-запросах. @@ -79,13 +79,14 @@ public List getDocumentHighlight( private boolean isJoinKeyword(int tokenType) { return tokenType == SDBLLexer.JOIN - || tokenType == SDBLLexer.LEFT - || tokenType == SDBLLexer.RIGHT - || tokenType == SDBLLexer.FULL - || tokenType == SDBLLexer.INNER - || tokenType == SDBLLexer.OUTER - || tokenType == SDBLLexer.ON_EN - || tokenType == SDBLLexer.PO_RU; + || tokenType == SDBLLexer.LEFT_JOIN + || tokenType == SDBLLexer.LEFT_OUTER_JOIN + || tokenType == SDBLLexer.RIGHT_JOIN + || tokenType == SDBLLexer.RIGHT_OUTER_JOIN + || tokenType == SDBLLexer.FULL_JOIN + || tokenType == SDBLLexer.FULL_OUTER_JOIN + || tokenType == SDBLLexer.INNER_JOIN + || tokenType == SDBLLexer.BY; } private SDBLParser.@Nullable JoinPartContext findJoinPartAtPosition( @@ -107,20 +108,17 @@ private List highlightJoinPart(SDBLParser.JoinPartContext joi List highlights = new ArrayList<>(); // LEFT/RIGHT/FULL/INNER - addTerminalHighlight(highlights, joinCtx.LEFT()); - addTerminalHighlight(highlights, joinCtx.RIGHT()); - addTerminalHighlight(highlights, joinCtx.FULL()); - addTerminalHighlight(highlights, joinCtx.INNER()); - - // OUTER (опционально после LEFT/RIGHT/FULL) - addTerminalHighlight(highlights, joinCtx.OUTER()); - - // JOIN - addTerminalHighlight(highlights, joinCtx.JOIN()); + if(joinCtx.leftJoin() != null) { + addTokenHighlight(highlights, joinCtx.leftJoin().keyword); + } else if(joinCtx.rightJoin() != null) { + addTokenHighlight(highlights, joinCtx.rightJoin().keyword); + } else if(joinCtx.fullJoin() != null) { + addTokenHighlight(highlights, joinCtx.fullJoin().keyword); + } else if(joinCtx.innerJoin() != null) { + addTokenHighlight(highlights, joinCtx.innerJoin().keyword); + } - // ON/ПО - addTerminalHighlight(highlights, joinCtx.ON_EN()); - addTerminalHighlight(highlights, joinCtx.PO_RU()); + addTerminalHighlight(highlights, joinCtx.BY()); return highlights; } diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/providers/CommandProvider.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/providers/CommandProvider.java index e59e296ca75..fe0a9ac8cc3 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/providers/CommandProvider.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/providers/CommandProvider.java @@ -106,7 +106,7 @@ public CommandArguments extractArguments(ExecuteCommandParams executeCommandPara throw new RuntimeException("Command arguments is empty"); } - var rawArgument = rawArguments.get(0); + var rawArgument = rawArguments.getFirst(); if (rawArgument instanceof CommandArguments arguments) { return arguments; diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/providers/FormatProvider.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/providers/FormatProvider.java index 23a5b4ec6b8..897b7e3356a 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/providers/FormatProvider.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/providers/FormatProvider.java @@ -112,8 +112,8 @@ public List getFormatting(DocumentFormattingParams params, DocumentCon if (tokens.isEmpty()) { return Collections.emptyList(); } - var firstToken = tokens.get(0); - var lastToken = tokens.get(tokens.size() - 1); + var firstToken = tokens.getFirst(); + var lastToken = tokens.getLast(); var locale = documentContext.getScriptVariantLocale(); return getTextEdits( @@ -204,7 +204,7 @@ public String getNewText( var newTextBuilder = new StringBuilder(); - var firstToken = filteredTokens.get(0); + var firstToken = filteredTokens.getFirst(); String indentation = insertSpaces ? StringUtils.repeat(' ', tabSize) : "\t"; int currentIndentLevel = (firstToken.getCharPositionInLine() - startCharacter) / indentation.length(); @@ -323,7 +323,7 @@ public String getNewText( previousTokenType = tokenType; } - var lastToken = tokens.get(tokens.size() - 1); + var lastToken = tokens.getLast(); if (lastToken.getText().endsWith("\n") || lastToken.getText().endsWith("\r")) { newTextBuilder.append("\n"); 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 5e56eeadb8f..063297178bf 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 @@ -180,7 +180,7 @@ private static ParserRuleContext getStatementParent(BSLParser.StatementContext s if (!nearbyStatements.isEmpty() && (nearbyStatements.size() + 1 != children.size())) { - var statementsBlock = new ParserRuleContext(); + var statementsBlock = new ParserRuleContext(null, -1); statementsBlock.setParent(parent); nearbyStatements.add(statement); @@ -192,8 +192,8 @@ private static ParserRuleContext getStatementParent(BSLParser.StatementContext s // возвращение parent nearbyStatements.forEach(ruleContext -> ruleContext.setParent(codeBlock)); - statementsBlock.start = nearbyStatements.get(0).getStart(); - statementsBlock.stop = nearbyStatements.get(nearbyStatements.size() - 1).getStop(); + statementsBlock.start = nearbyStatements.getFirst().getStart(); + statementsBlock.stop = nearbyStatements.getLast().getStop(); parent = statementsBlock; } diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/providers/SemanticTokensProvider.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/providers/SemanticTokensProvider.java index 29746092ea9..380159902da 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/providers/SemanticTokensProvider.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/providers/SemanticTokensProvider.java @@ -252,11 +252,7 @@ private static boolean isTokenInRangeDetailed( } // Token is on the end line - check if it starts before range end - if (tokenLine == endLine && tokenStart >= endChar) { - return false; - } - - return true; + return tokenLine != endLine || tokenStart < endChar; } /** 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 b64fcb81826..64e2892cbb6 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 @@ -243,7 +243,7 @@ private static Optional> findAnnotation(MethodSym } private static Optional getAnnotationName(Annotation annotation) { - var annotationParameterDefinition = annotation.getParameters().get(0); + var annotationParameterDefinition = annotation.getParameters().getFirst(); return Optional.of(annotationParameterDefinition) .map(AnnotationParameterDefinition::value) .map(Either::getLeft); diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/semantictokens/strings/SdblAstTokenCollector.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/semantictokens/strings/SdblAstTokenCollector.java index b9d2f4c9d01..b809e867fe1 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/semantictokens/strings/SdblAstTokenCollector.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/semantictokens/strings/SdblAstTokenCollector.java @@ -135,10 +135,10 @@ public Void visitColumn(SDBLParser.ColumnContext ctx) { var identifiers = ctx.identifier(); if (identifiers != null && !identifiers.isEmpty()) { if (identifiers.size() == 1) { - addTokenOverride(identifiers.get(0).getStart(), SemanticTokenTypes.Variable, NO_MODIFIERS); + addTokenOverride(identifiers.getFirst().getStart(), SemanticTokenTypes.Variable, NO_MODIFIERS); } else { - addTokenOverride(identifiers.get(0).getStart(), SemanticTokenTypes.Variable, NO_MODIFIERS); - addTokenOverride(identifiers.get(identifiers.size() - 1).getStart(), SemanticTokenTypes.Property, NO_MODIFIERS); + addTokenOverride(identifiers.getFirst().getStart(), SemanticTokenTypes.Variable, NO_MODIFIERS); + addTokenOverride(identifiers.getLast().getStart(), SemanticTokenTypes.Property, NO_MODIFIERS); } } return super.visitColumn(ctx); diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/semantictokens/strings/SdblTokenTypes.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/semantictokens/strings/SdblTokenTypes.java index 9be931a7bd7..5a6103b1d9e 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/semantictokens/strings/SdblTokenTypes.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/semantictokens/strings/SdblTokenTypes.java @@ -96,14 +96,14 @@ public static SdblTokenTypeAndModifiers getTokenTypeAndModifiers(int tokenType) private static Set createSdblKeywords() { return Set.of( - SDBLLexer.ALL, SDBLLexer.ALLOWED, + SDBLLexer.ADD, SDBLLexer.AND, SDBLLexer.AS, SDBLLexer.ASC, SDBLLexer.AUTOORDER, SDBLLexer.BETWEEN, - SDBLLexer.BY_EN, + SDBLLexer.BY, SDBLLexer.CASE, SDBLLexer.CAST, SDBLLexer.DESC, @@ -112,53 +112,59 @@ private static Set createSdblKeywords() { SDBLLexer.ELSE, SDBLLexer.END, SDBLLexer.ESCAPE, - SDBLLexer.FOR, SDBLLexer.FROM, - SDBLLexer.FULL, - SDBLLexer.GROUP, SDBLLexer.HAVING, - SDBLLexer.HIERARCHY, - SDBLLexer.HIERARCHY_FOR_IN, - SDBLLexer.IN, - SDBLLexer.INDEX, - SDBLLexer.INNER, SDBLLexer.INTO, SDBLLexer.IS, - SDBLLexer.JOIN, - SDBLLexer.LEFT, SDBLLexer.LIKE, SDBLLexer.NOT, SDBLLexer.OF, - SDBLLexer.ONLY, - SDBLLexer.ON_EN, SDBLLexer.OR, - SDBLLexer.ORDER, SDBLLexer.OVERALL, - SDBLLexer.OUTER, - SDBLLexer.PERIODS, - SDBLLexer.PO_RU, - SDBLLexer.REFS, - SDBLLexer.RIGHT, SDBLLexer.SELECT, - SDBLLexer.SET, SDBLLexer.THEN, SDBLLexer.TOP, SDBLLexer.TOTALS, - SDBLLexer.UNION, - SDBLLexer.UPDATE, SDBLLexer.WHEN, SDBLLexer.WHERE, SDBLLexer.EMPTYREF, - SDBLLexer.GROUPEDBY, - SDBLLexer.GROUPING + SDBLLexer.UNIQUE, + SDBLLexer.PERIODS, + SDBLLexer.REFS, + SDBLLexer.INDEX_BY_SETS, + SDBLLexer.INDEX_BY, + SDBLLexer.GROUP_BY_GROUPING_SETS, + SDBLLexer.GROUP_BY, + SDBLLexer.ORDER_BY, + SDBLLexer.FOR_UPDATE, + SDBLLexer.RIGHT_OUTER_JOIN, + SDBLLexer.RIGHT_JOIN, + SDBLLexer.LEFT_OUTER_JOIN, + SDBLLexer.LEFT_JOIN, + SDBLLexer.FULL_OUTER_JOIN, + SDBLLexer.FULL_JOIN, + SDBLLexer.INNER_JOIN, + SDBLLexer.JOIN, + SDBLLexer.UNION_ALL, + SDBLLexer.UNION, + SDBLLexer.ONLY_HIERARCHY, + SDBLLexer.HIERARCHY, + SDBLLexer.IN_HIERARCHY, + SDBLLexer.IN, + SDBLLexer.GROUPEDBY ); } private static Set createSdblFunctions() { return Set.of( + SDBLLexer.ISNULL, + SDBLLexer.ACOS, + SDBLLexer.ASIN, + SDBLLexer.ATAN, SDBLLexer.AVG, SDBLLexer.BEGINOFPERIOD, SDBLLexer.BOOLEAN, + SDBLLexer.COS, SDBLLexer.COUNT, SDBLLexer.DATE, SDBLLexer.DATEADD, @@ -168,9 +174,14 @@ private static Set createSdblFunctions() { SDBLLexer.DAYOFYEAR, SDBLLexer.EMPTYTABLE, SDBLLexer.ENDOFPERIOD, + SDBLLexer.EXP, SDBLLexer.HALFYEAR, SDBLLexer.HOUR, - SDBLLexer.ISNULL, + SDBLLexer.INT, + SDBLLexer.LEFT, + SDBLLexer.LOG, + SDBLLexer.LOG10, + SDBLLexer.LOWER, SDBLLexer.MAX, SDBLLexer.MIN, SDBLLexer.MINUTE, @@ -180,40 +191,32 @@ private static Set createSdblFunctions() { SDBLLexer.PRESENTATION, SDBLLexer.RECORDAUTONUMBER, SDBLLexer.REFPRESENTATION, + SDBLLexer.POW, + SDBLLexer.RIGHT, + SDBLLexer.ROUND, SDBLLexer.SECOND, + SDBLLexer.SIN, + SDBLLexer.SQRT, + SDBLLexer.STOREDDATASIZE, SDBLLexer.STRING, + SDBLLexer.STRINGLENGTH, + SDBLLexer.STRFIND, + SDBLLexer.STRREPLACE, SDBLLexer.SUBSTRING, SDBLLexer.SUM, + SDBLLexer.TAN, SDBLLexer.TENDAYS, + SDBLLexer.TRIMALL, + SDBLLexer.TRIML, + SDBLLexer.TRIMR, SDBLLexer.TYPE, + SDBLLexer.UPPER, SDBLLexer.VALUE, SDBLLexer.VALUETYPE, SDBLLexer.WEEK, SDBLLexer.WEEKDAY, SDBLLexer.YEAR, - SDBLLexer.INT, - SDBLLexer.ACOS, - SDBLLexer.ASIN, - SDBLLexer.ATAN, - SDBLLexer.COS, - SDBLLexer.SIN, - SDBLLexer.TAN, - SDBLLexer.LOG, - SDBLLexer.LOG10, - SDBLLexer.EXP, - SDBLLexer.POW, - SDBLLexer.SQRT, - SDBLLexer.LOWER, - SDBLLexer.STRINGLENGTH, - SDBLLexer.TRIMALL, - SDBLLexer.TRIML, - SDBLLexer.TRIMR, - SDBLLexer.UPPER, - SDBLLexer.ROUND, - SDBLLexer.STOREDDATASIZE, - SDBLLexer.UUID, - SDBLLexer.STRFIND, - SDBLLexer.STRREPLACE + SDBLLexer.UUID ); } @@ -251,22 +254,22 @@ private static Set createSdblLiterals() { private static Set createSdblOperators() { return Set.of( - SDBLLexer.SEMICOLON, SDBLLexer.DOT, + SDBLLexer.SEMICOLON, + SDBLLexer.COMMA, + SDBLLexer.ASSIGN, SDBLLexer.PLUS, SDBLLexer.MINUS, - SDBLLexer.MUL, - SDBLLexer.QUOTIENT, - SDBLLexer.ASSIGN, SDBLLexer.LESS_OR_EQUAL, - SDBLLexer.LESS, SDBLLexer.NOT_EQUAL, + SDBLLexer.LESS, SDBLLexer.GREATER_OR_EQUAL, SDBLLexer.GREATER, - SDBLLexer.COMMA, + SDBLLexer.MUL, + SDBLLexer.QUOTIENT, + SDBLLexer.NUMBER_SIGH, SDBLLexer.BRACE, - SDBLLexer.BRACE_START, - SDBLLexer.NUMBER_SIGH + SDBLLexer.BRACE_START ); } } diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/semantictokens/strings/SpecialContextVisitor.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/semantictokens/strings/SpecialContextVisitor.java index e641b3755f6..849d3979b27 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/semantictokens/strings/SpecialContextVisitor.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/semantictokens/strings/SpecialContextVisitor.java @@ -168,7 +168,7 @@ private void processMethodCallParams( ) { var callParams = doCall.callParamList().callParam(); if (!callParams.isEmpty()) { - var firstParam = callParams.get(0); + var firstParam = callParams.getFirst(); var stringTokens = getStringTokensFromParam(firstParam); if (stringTokens.isEmpty() && context == StringContext.STR_TEMPLATE) { @@ -239,7 +239,7 @@ private String extractVariableName(BSLParser.CallParamContext callParam) { .map(BSLParser.CallParamContext::expression) .map(BSLParser.ExpressionContext::member) .filter(members -> members.size() == 1) - .map(members -> members.get(0)) + .map(List::getFirst) .map(BSLParser.MemberContext::complexIdentifier) .map(BSLParser.ComplexIdentifierContext::IDENTIFIER) .map(id -> id.getSymbol().getText()) @@ -273,8 +273,8 @@ private String extractVariableName(BSLParser.CallParamContext callParam) { return null; } - var children = parent.children; - if (children == null) { + var children = parent.getChildren(); + if (children.isEmpty()) { return null; } @@ -307,7 +307,7 @@ private List extractStringTokensFromExpression(BSLParser.ExpressionContex var stringContext = Optional.of(expression) .map(BSLParser.ExpressionContext::member) .filter(members -> members.size() == 1) - .map(members -> members.get(0)) + .map(List::getFirst) .map(BSLParser.MemberContext::constValue) .map(BSLParser.ConstValueContext::string) .orElse(null); @@ -320,7 +320,7 @@ private List extractStringTokensFromExpression(BSLParser.ExpressionContex var globalMethodCall = Optional.of(expression) .map(BSLParser.ExpressionContext::member) .filter(members -> members.size() == 1) - .map(members -> members.get(0)) + .map(List::getFirst) .map(BSLParser.MemberContext::complexIdentifier) .map(BSLParser.ComplexIdentifierContext::globalMethodCall) .orElse(null); @@ -328,7 +328,7 @@ private List extractStringTokensFromExpression(BSLParser.ExpressionContex if (globalMethodCall != null && MultilingualStringAnalyser.isNStrCall(globalMethodCall)) { var callParams = globalMethodCall.doCall().callParamList().callParam(); if (!callParams.isEmpty()) { - return getStringTokensFromParam(callParams.get(0)); + return getStringTokensFromParam(callParams.getFirst()); } } diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/utils/ModuleReference.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/utils/ModuleReference.java index 36929085ee4..7589c440dde 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/utils/ModuleReference.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/utils/ModuleReference.java @@ -288,7 +288,7 @@ private static Optional extractParameterFromDoCall(BSLParser.@Nullable D .map(BSLParser.DoCallContext::callParamList) .map(BSLParser.CallParamListContext::callParam) .filter(params -> !params.isEmpty()) - .map(params -> params.get(0)) + .map(List::getFirst) .map(BSLParser.CallParamContext::getText) .map(Strings::trimQuotes); } diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/utils/NotifyDescription.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/utils/NotifyDescription.java index 727a2317e90..00bf835d143 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/utils/NotifyDescription.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/utils/NotifyDescription.java @@ -107,7 +107,7 @@ public static Optional getFirstMember(BSLParser.CallPar return Optional.ofNullable(callParamContext.expression()) .map(BSLParser.ExpressionContext::member) .filter(Predicate.not(List::isEmpty)) - .map(member -> member.get(0)); + .map(List::getFirst); } } diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/utils/Ranges.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/utils/Ranges.java index 4688df0140c..ec2c8606ea4 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/utils/Ranges.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/utils/Ranges.java @@ -21,8 +21,6 @@ */ package com.github._1c_syntax.bsl.languageserver.utils; -import com.github._1c_syntax.bsl.languageserver.context.symbol.ModuleSymbol; -import com.github._1c_syntax.bsl.parser.BSLLexer; import lombok.experimental.UtilityClass; import org.antlr.v4.runtime.ParserRuleContext; import org.antlr.v4.runtime.Token; @@ -34,9 +32,7 @@ import org.eclipse.lsp4j.util.Positions; import org.jspecify.annotations.Nullable; -import java.util.Collection; import java.util.List; -import java.util.Optional; /** * Набор методов для удобства работы с областями текста (ренджами) @@ -68,8 +64,8 @@ public Range create() { * * @param startLine Начальная строка * @param startChar Начальный символ - * @param endLine Конечная строка - * @param endChar Конечный символ + * @param endLine Конечная строка + * @param endChar Конечный символ * @return Созданный диапазон */ public Range create(int startLine, int startChar, int endLine, int endChar) { @@ -102,7 +98,7 @@ public Range create(ParserRuleContext ruleContext) { * Создать диапазон от начала одного контекста до конца другого. * * @param startCtx Начальный контекст - * @param endCtx Конечный контекст + * @param endCtx Конечный контекст * @return Диапазон между контекстами */ public Range create(ParserRuleContext startCtx, ParserRuleContext endCtx) { @@ -113,7 +109,7 @@ public Range create(ParserRuleContext startCtx, ParserRuleContext endCtx) { * Создать диапазон из токенов. * * @param startToken Начальный токен - * @param endToken Конечный токен + * @param endToken Конечный токен * @return Диапазон между токенами */ public Range create(Token startToken, @Nullable Token endToken) { @@ -141,8 +137,8 @@ public Range create(List tokens) { if (tokens.isEmpty()) { return Ranges.create(); } - var firstElement = tokens.get(0); - var lastElement = tokens.get(tokens.size() - 1); + var firstElement = tokens.getFirst(); + var lastElement = tokens.getLast(); return Ranges.create(firstElement, lastElement); } @@ -153,15 +149,19 @@ public Range create(List tokens) { * @param terminalNode Терминальный узел * @return Диапазон узла */ - public Range create(TerminalNode terminalNode) { - return create(terminalNode.getSymbol()); + public Range create(@Nullable TerminalNode terminalNode) { + if (terminalNode == null) { + return create(); + } else { + return create(terminalNode.getSymbol()); + } } /** * Создать диапазон между двумя терминальными узлами. * * @param startTerminalNode Начальный узел - * @param stopTerminalNode Конечный узел + * @param stopTerminalNode Конечный узел * @return Диапазон между узлами */ public Range create(TerminalNode startTerminalNode, TerminalNode stopTerminalNode) { @@ -190,15 +190,12 @@ public Range create(Token token) { * @return - полученный Range. */ public Range create(ParseTree tree) { - if (tree instanceof TerminalNode node) { - return Ranges.create(node); - } else if (tree instanceof Token token) { - return Ranges.create(token); - } else if (tree instanceof ParserRuleContext context) { - return Ranges.create(context); - } else { - throw new IllegalArgumentException(); - } + return switch (tree) { + case TerminalNode node -> Ranges.create(node); + case Token token -> Ranges.create(token); + case ParserRuleContext context -> Ranges.create(context); + default -> throw new IllegalArgumentException(); + }; } public boolean containsRange(Range bigger, Range smaller) { @@ -210,7 +207,7 @@ public boolean containsPosition(Range range, Position position) { Preconditions.checkNotNull(position, "position"); return range.getStart().equals(position) || (Positions.isBefore(range.getStart(), position) - && Positions.isBefore(position, range.getEnd())); + && Positions.isBefore(position, range.getEnd())); } /** @@ -275,7 +272,6 @@ private boolean isBefore(int line1, int character1, int line2, int character2) { } - /** * Натуральный порядок сравнения Range * @@ -284,11 +280,11 @@ private boolean isBefore(int line1, int character1, int line2, int character2) { * @return 0 - равно, 1 - больше, -1 - меньше */ public int compare(Range o1, Range o2) { - if (o1.equals(o2)){ + if (o1.equals(o2)) { return 0; } final var startCompare = compare(o1.getStart(), o2.getStart()); - if (startCompare != 0){ + if (startCompare != 0) { return startCompare; } return compare(o1.getEnd(), o2.getEnd()); @@ -302,7 +298,7 @@ public int compare(Range o1, Range o2) { * @return 0 - равно, 1 - больше, -1 - меньше */ public int compare(Position pos1, Position pos2) { - if (pos1.equals(pos2)){ + if (pos1.equals(pos2)) { return 0; } diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/utils/bsl/Constructors.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/utils/bsl/Constructors.java index 89543624cd9..a2f4685b20d 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/utils/bsl/Constructors.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/utils/bsl/Constructors.java @@ -66,7 +66,7 @@ private static Optional first(List list) { if (list.isEmpty()) { return Optional.empty(); } else { - return Optional.of(list.get(0)); + return Optional.of(list.getFirst()); } } } diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/utils/expressiontree/ExpressionTreeBuildingVisitor.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/utils/expressiontree/ExpressionTreeBuildingVisitor.java index bfab6875415..bf31b1387f1 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/utils/expressiontree/ExpressionTreeBuildingVisitor.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/utils/expressiontree/ExpressionTreeBuildingVisitor.java @@ -92,7 +92,8 @@ public ParseTree visitExpression(BSLParser.ExpressionContext ctx) { var nestingCount = operatorsInFly.size(); recursionLevel++; - if (Trees.nodeContainsErrors(ctx) || (ctx.getChildCount() == 0 || ctx.children.stream().anyMatch(ErrorNode.class::isInstance))) { + if (Trees.nodeContainsErrors(ctx) + || (ctx.getChildCount() == 0 || ctx.getChildren().stream().anyMatch(ErrorNode.class::isInstance))) { var errorExpressionNode = new ErrorExpressionNode(ctx); if (recursionLevel > 0) { operands.push(errorExpressionNode); @@ -108,14 +109,13 @@ public ParseTree visitExpression(BSLParser.ExpressionContext ctx) { if (count > 1) { for (var i = 1; i < count; ++i) { var child = ctx.getChild(i); - if (child instanceof BSLParser.OperationContext operationContext) { - visitOperation(operationContext); - } else if (child instanceof BSLParser.MemberContext memberContext) { - visitMember(memberContext); - } else if (child instanceof BSLParser.PreprocessorContext) { - // просто пропускаем - } else { - throw new IllegalStateException(); + switch (child) { + case BSLParser.OperationContext operationContext -> visitOperation(operationContext); + case BSLParser.MemberContext memberContext -> visitMember(memberContext); + case BSLParser.PreprocessorContext preprocessorContext -> { + // просто пропускаем + } + case null, default -> throw new IllegalStateException(); } } } @@ -150,7 +150,9 @@ public ParseTree visitExpression(BSLParser.ExpressionContext ctx) { public ParseTree visitMember(BSLParser.MemberContext ctx) { // В случае ошибки парсинга member может быть пустой. - if (Trees.nodeContainsErrors(ctx) || ctx.getChildCount() == 0 || ctx.children.stream().anyMatch(ErrorNode.class::isInstance)) { + if (Trees.nodeContainsErrors(ctx) + || ctx.getChildCount() == 0 + || ctx.getChildren().stream().anyMatch(ErrorNode.class::isInstance)) { operands.push(new ErrorExpressionNode(ctx)); return ctx; } @@ -168,7 +170,7 @@ public ParseTree visitMember(BSLParser.MemberContext ctx) { if (unaryModifier != null) { visitUnaryModifier(unaryModifier); - childIndex = ctx.children.indexOf(unaryModifier) + 1; + childIndex = ctx.getChildren().indexOf(unaryModifier) + 1; } if (ctx.waitExpression() != null) { @@ -318,7 +320,7 @@ public ParseTree visitComplexIdentifier(BSLParser.ComplexIdentifierContext ctx) if (ctx.IDENTIFIER() != null) { operands.push(TerminalSymbolNode.identifier(ctx.IDENTIFIER())); } else { - var childVariant = ctx.children.get(0); + var childVariant = ctx.getChildren().getFirst(); childVariant.accept(this); } @@ -362,7 +364,7 @@ public ParseTree visitNewExpression(BSLParser.NewExpressionContext ctx) { ConstructorCallNode callNode; if (typeName == null) { // function style - var typeNameArg = args.get(0); + var typeNameArg = args.getFirst(); if (typeNameArg.expression() == null) { operands.push(new ErrorExpressionNode(ctx)); return ctx; diff --git a/src/test/java/com/github/_1c_syntax/bsl/languageserver/cfg/ControlFlowGraphBuilderTest.java b/src/test/java/com/github/_1c_syntax/bsl/languageserver/cfg/ControlFlowGraphBuilderTest.java index 1c7dc90e9e9..2298ef78bbf 100644 --- a/src/test/java/com/github/_1c_syntax/bsl/languageserver/cfg/ControlFlowGraphBuilderTest.java +++ b/src/test/java/com/github/_1c_syntax/bsl/languageserver/cfg/ControlFlowGraphBuilderTest.java @@ -888,7 +888,7 @@ void test_realWorldPatternWithPreprocessorInElsifBranch() { assertThat(subs).hasSize(1); // Build CFG - should not throw ClassCastException - var sub = subs.get(0); + var sub = subs.getFirst(); var codeBlock = sub.procedure().subCodeBlock().codeBlock(); var builder = new CfgBuildingParseTreeVisitor(); @@ -932,6 +932,6 @@ BSLParser.CodeBlockContext parse(String code) { private String textOfCurrentNode(ControlFlowGraphWalker walker) { var block = (BasicBlockVertex) walker.getCurrentNode(); - return block.statements().get(0).getText(); + return block.statements().getFirst().getText(); } } \ No newline at end of file diff --git a/src/test/java/com/github/_1c_syntax/bsl/languageserver/codeactions/ExtractStructureConstructorSupplierTest.java b/src/test/java/com/github/_1c_syntax/bsl/languageserver/codeactions/ExtractStructureConstructorSupplierTest.java index 3d4bf37981a..df1f9f07a65 100644 --- a/src/test/java/com/github/_1c_syntax/bsl/languageserver/codeactions/ExtractStructureConstructorSupplierTest.java +++ b/src/test/java/com/github/_1c_syntax/bsl/languageserver/codeactions/ExtractStructureConstructorSupplierTest.java @@ -66,7 +66,7 @@ void testGetCodeActions() { .hasSize(1) .anyMatch(codeAction -> codeAction.getTitle().equals("Unwrap constructor")); - assertThat((((ArrayList) (codeActions.get(0).getEdit().getChanges().values()).toArray()[0]))) + assertThat((((ArrayList) (codeActions.getFirst().getEdit().getChanges().values()).toArray()[0]))) .hasSize(4) .anyMatch(textedit -> ((TextEdit) textedit).getNewText().equals("()")) .anyMatch(textedit -> ((TextEdit) textedit).getNewText().equals("Структура.Insert(\"а\", а);\n")) @@ -175,7 +175,7 @@ void testGetCodeActionsObject() { assertThat(codeActions) .hasSize(1) .anyMatch(codeAction -> codeAction.getTitle().equals("Unwrap constructor")); - assertThat((((ArrayList) (codeActions.get(0).getEdit().getChanges().values()).toArray()[0]))) + assertThat((((ArrayList) (codeActions.getFirst().getEdit().getChanges().values()).toArray()[0]))) .hasSize(4) .anyMatch(textedit -> ((TextEdit) textedit).getNewText().equals("()")) .anyMatch(textedit -> ((TextEdit) textedit).getNewText().equals("Чтото.Поле.Insert(\"а\", а);\n")) diff --git a/src/test/java/com/github/_1c_syntax/bsl/languageserver/codelenses/CognitiveComplexityCodeLensSupplierTest.java b/src/test/java/com/github/_1c_syntax/bsl/languageserver/codelenses/CognitiveComplexityCodeLensSupplierTest.java index 8dddc7a47bf..86352a822e6 100644 --- a/src/test/java/com/github/_1c_syntax/bsl/languageserver/codelenses/CognitiveComplexityCodeLensSupplierTest.java +++ b/src/test/java/com/github/_1c_syntax/bsl/languageserver/codelenses/CognitiveComplexityCodeLensSupplierTest.java @@ -80,13 +80,13 @@ void testGetCodeLens() { assertThat(codeLens.getRange()).isEqualTo(firstMethod.getSubNameRange()); assertThat(codeLens.getCommand().getTitle()).contains(String.valueOf(complexityFirstMethod)); assertThat(codeLens.getCommand().getCommand()).isEqualTo("toggleCognitiveComplexityInlayHints"); - assertThat(((ToggleComplexityInlayHintsCommandArguments) codeLens.getCommand().getArguments().get(0)).getMethodName()).isEqualTo(firstMethod.getName()); + assertThat(((ToggleComplexityInlayHintsCommandArguments) codeLens.getCommand().getArguments().getFirst()).getMethodName()).isEqualTo(firstMethod.getName()); }) .anySatisfy(codeLens -> { assertThat(codeLens.getRange()).isEqualTo(secondMethod.getSubNameRange()); assertThat(codeLens.getCommand().getTitle()).contains(String.valueOf(complexitySecondMethod)); assertThat(codeLens.getCommand().getCommand()).isEqualTo("toggleCognitiveComplexityInlayHints"); - assertThat(((ToggleComplexityInlayHintsCommandArguments) codeLens.getCommand().getArguments().get(0)).getMethodName()).isEqualTo(secondMethod.getName()); + assertThat(((ToggleComplexityInlayHintsCommandArguments) codeLens.getCommand().getArguments().getFirst()).getMethodName()).isEqualTo(secondMethod.getName()); }); } diff --git a/src/test/java/com/github/_1c_syntax/bsl/languageserver/codelenses/CyclomaticComplexityCodeLensSupplierTest.java b/src/test/java/com/github/_1c_syntax/bsl/languageserver/codelenses/CyclomaticComplexityCodeLensSupplierTest.java index 09535d6c092..429514dc26d 100644 --- a/src/test/java/com/github/_1c_syntax/bsl/languageserver/codelenses/CyclomaticComplexityCodeLensSupplierTest.java +++ b/src/test/java/com/github/_1c_syntax/bsl/languageserver/codelenses/CyclomaticComplexityCodeLensSupplierTest.java @@ -80,13 +80,13 @@ void testGetCodeLens() { assertThat(codeLens.getRange()).isEqualTo(firstMethod.getSubNameRange()); assertThat(codeLens.getCommand().getTitle()).contains(String.valueOf(complexityFirstMethod)); assertThat(codeLens.getCommand().getCommand()).isEqualTo("toggleCyclomaticComplexityInlayHints"); - assertThat(((ToggleComplexityInlayHintsCommandArguments) codeLens.getCommand().getArguments().get(0)).getMethodName()).isEqualTo(firstMethod.getName()); + assertThat(((ToggleComplexityInlayHintsCommandArguments) codeLens.getCommand().getArguments().getFirst()).getMethodName()).isEqualTo(firstMethod.getName()); }) .anySatisfy(codeLens -> { assertThat(codeLens.getRange()).isEqualTo(secondMethod.getSubNameRange()); assertThat(codeLens.getCommand().getTitle()).contains(String.valueOf(complexitySecondMethod)); assertThat(codeLens.getCommand().getCommand()).isEqualTo("toggleCyclomaticComplexityInlayHints"); - assertThat(((ToggleComplexityInlayHintsCommandArguments) codeLens.getCommand().getArguments().get(0)).getMethodName()).isEqualTo(secondMethod.getName()); + assertThat(((ToggleComplexityInlayHintsCommandArguments) codeLens.getCommand().getArguments().getFirst()).getMethodName()).isEqualTo(secondMethod.getName()); }); } diff --git a/src/test/java/com/github/_1c_syntax/bsl/languageserver/codelenses/testrunner/TestRunnerAdapterTest.java b/src/test/java/com/github/_1c_syntax/bsl/languageserver/codelenses/testrunner/TestRunnerAdapterTest.java index d1d1d525cf3..bf14bf82e3a 100644 --- a/src/test/java/com/github/_1c_syntax/bsl/languageserver/codelenses/testrunner/TestRunnerAdapterTest.java +++ b/src/test/java/com/github/_1c_syntax/bsl/languageserver/codelenses/testrunner/TestRunnerAdapterTest.java @@ -49,6 +49,6 @@ void whenComputeTestsByLanguageServer_thenContainsTests() { // then assertThat(testIds).hasSize(1); - assertThat(testIds.get(0)).isEqualTo("Тест1"); + assertThat(testIds.getFirst()).isEqualTo("Тест1"); } } \ No newline at end of file diff --git a/src/test/java/com/github/_1c_syntax/bsl/languageserver/commands/ToggleCognitiveComplexityInlayHintsCommandSupplierTest.java b/src/test/java/com/github/_1c_syntax/bsl/languageserver/commands/ToggleCognitiveComplexityInlayHintsCommandSupplierTest.java index 296ef3bccb9..51036258600 100644 --- a/src/test/java/com/github/_1c_syntax/bsl/languageserver/commands/ToggleCognitiveComplexityInlayHintsCommandSupplierTest.java +++ b/src/test/java/com/github/_1c_syntax/bsl/languageserver/commands/ToggleCognitiveComplexityInlayHintsCommandSupplierTest.java @@ -53,7 +53,7 @@ void testExecute() { // given var documentContext = TestUtils.getDocumentContextFromFile(FILE_PATH); - MethodSymbol firstMethod = documentContext.getSymbolTree().getMethods().get(0); + MethodSymbol firstMethod = documentContext.getSymbolTree().getMethods().getFirst(); var methodName = firstMethod.getName(); diff --git a/src/test/java/com/github/_1c_syntax/bsl/languageserver/commands/ToggleCyclomaticComplexityInlayHintsCommandSupplierTest.java b/src/test/java/com/github/_1c_syntax/bsl/languageserver/commands/ToggleCyclomaticComplexityInlayHintsCommandSupplierTest.java index e53f6213db3..14c95b92124 100644 --- a/src/test/java/com/github/_1c_syntax/bsl/languageserver/commands/ToggleCyclomaticComplexityInlayHintsCommandSupplierTest.java +++ b/src/test/java/com/github/_1c_syntax/bsl/languageserver/commands/ToggleCyclomaticComplexityInlayHintsCommandSupplierTest.java @@ -53,7 +53,7 @@ void testExecute() { // given var documentContext = TestUtils.getDocumentContextFromFile(FILE_PATH); - MethodSymbol firstMethod = documentContext.getSymbolTree().getMethods().get(0); + MethodSymbol firstMethod = documentContext.getSymbolTree().getMethods().getFirst(); var methodName = firstMethod.getName(); diff --git a/src/test/java/com/github/_1c_syntax/bsl/languageserver/context/DocumentContextTest.java b/src/test/java/com/github/_1c_syntax/bsl/languageserver/context/DocumentContextTest.java index 0e68a3c249a..f80a7829cd6 100644 --- a/src/test/java/com/github/_1c_syntax/bsl/languageserver/context/DocumentContextTest.java +++ b/src/test/java/com/github/_1c_syntax/bsl/languageserver/context/DocumentContextTest.java @@ -235,7 +235,7 @@ void testEOF() { var documentContext = getDocumentContext(); // when List tokens = documentContext.getTokens(); - Token lastToken = tokens.get(tokens.size() - 1); + Token lastToken = tokens.getLast(); // then assertThat(lastToken.getType()).isEqualTo(Lexer.EOF); assertThat(lastToken.getChannel()).isEqualTo(Lexer.HIDDEN); @@ -255,7 +255,7 @@ Function extractIDs ( changes ) // when-then var documentContext = TestUtils.getDocumentContext(content); - assertThatCode(() -> documentContext.getQueries()).doesNotThrowAnyException(); + assertThatCode(documentContext::getQueries).doesNotThrowAnyException(); } @Test @@ -272,6 +272,6 @@ Function test() // when-then var documentContext = TestUtils.getDocumentContext(content); - assertThatCode(() -> documentContext.getQueries()).doesNotThrowAnyException(); + assertThatCode(documentContext::getQueries).doesNotThrowAnyException(); } } diff --git a/src/test/java/com/github/_1c_syntax/bsl/languageserver/context/computer/CognitiveComplexityComputerTest.java b/src/test/java/com/github/_1c_syntax/bsl/languageserver/context/computer/CognitiveComplexityComputerTest.java index fa49700ea68..547dbc7ffc1 100644 --- a/src/test/java/com/github/_1c_syntax/bsl/languageserver/context/computer/CognitiveComplexityComputerTest.java +++ b/src/test/java/com/github/_1c_syntax/bsl/languageserver/context/computer/CognitiveComplexityComputerTest.java @@ -51,7 +51,7 @@ void compute() { final Map methodsComplexity = data.methodsComplexity(); //then - MethodSymbol example1 = documentContext.getSymbolTree().getMethods().get(0); + MethodSymbol example1 = documentContext.getSymbolTree().getMethods().getFirst(); Integer example1Complexity = methodsComplexity.get(example1); assertThat(example1Complexity).isEqualTo(19); diff --git a/src/test/java/com/github/_1c_syntax/bsl/languageserver/context/computer/CyclomaticComplexityComputerTest.java b/src/test/java/com/github/_1c_syntax/bsl/languageserver/context/computer/CyclomaticComplexityComputerTest.java index 8e0d522ce69..c5ddab23ce5 100644 --- a/src/test/java/com/github/_1c_syntax/bsl/languageserver/context/computer/CyclomaticComplexityComputerTest.java +++ b/src/test/java/com/github/_1c_syntax/bsl/languageserver/context/computer/CyclomaticComplexityComputerTest.java @@ -52,7 +52,7 @@ void compute() { final Map methodsComplexity = data.methodsComplexity(); //then - MethodSymbol example1 = documentContext.getSymbolTree().getMethods().get(0); + MethodSymbol example1 = documentContext.getSymbolTree().getMethods().getFirst(); Integer example1Complexity = methodsComplexity.get(example1); assertThat(example1Complexity).isEqualTo(12); diff --git a/src/test/java/com/github/_1c_syntax/bsl/languageserver/context/computer/MethodSymbolComputerTest.java b/src/test/java/com/github/_1c_syntax/bsl/languageserver/context/computer/MethodSymbolComputerTest.java index 9d205442026..fadb8e66694 100644 --- a/src/test/java/com/github/_1c_syntax/bsl/languageserver/context/computer/MethodSymbolComputerTest.java +++ b/src/test/java/com/github/_1c_syntax/bsl/languageserver/context/computer/MethodSymbolComputerTest.java @@ -58,8 +58,8 @@ void testMethodSymbolComputer() { assertThat(methods.size()).isEqualTo(25); - assertThat(methods.get(0).getName()).isEqualTo("Один"); - assertThat(methods.get(0).getDescription()).isNotPresent(); + assertThat(methods.getFirst().getName()).isEqualTo("Один"); + assertThat(methods.getFirst().getDescription()).isNotPresent(); assertThat(methods.get(0).getRange()).isEqualTo(Ranges.create(1, 0, 3, 14)); assertThat(methods.get(0).getSubNameRange()).isEqualTo(Ranges.create(1, 10, 1, 14)); @@ -92,9 +92,9 @@ void testMethodSymbolComputer() { assertThat(methodSymbol.getCompilerDirectiveKind()).isEmpty(); var annotations = methodSymbol.getAnnotations(); assertThat(annotations).hasSize(1); - assertThat(annotations.get(0).getKind()).isEqualTo(AnnotationKind.AFTER); - assertThat(annotations.get(0).getName()).isEqualTo("После"); - assertThat(annotations.get(0).getParameters()).isEmpty(); + assertThat(annotations.getFirst().getKind()).isEqualTo(AnnotationKind.AFTER); + assertThat(annotations.getFirst().getName()).isEqualTo("После"); + assertThat(annotations.getFirst().getParameters()).isEmpty(); methodSymbol = methods.get(10); assertThat(methodSymbol.getName()).isEqualTo("Метод11"); @@ -154,12 +154,12 @@ void testAnnotation() { assertThat(methodSymbol.getName()).isEqualTo("Метод20"); assertThat(methodSymbol.getCompilerDirectiveKind()).isEmpty(); assertThat(methodSymbol.getAnnotations()).hasSize(1); - assertThat(methodSymbol.getAnnotations().get(0).getKind()).isEqualTo(AnnotationKind.CUSTOM); + assertThat(methodSymbol.getAnnotations().getFirst().getKind()).isEqualTo(AnnotationKind.CUSTOM); - var parameters = methodSymbol.getAnnotations().get(0).getParameters(); + var parameters = methodSymbol.getAnnotations().getFirst().getParameters(); assertThat(parameters).hasSize(3); - assertThat(parameters.get(0).name()).isEqualTo("ДажеСПараметром"); + assertThat(parameters.getFirst().name()).isEqualTo("ДажеСПараметром"); assertThat(parameters.get(0).optional()).isTrue(); assertThat(parameters.get(0).value().getLeft()).isEqualTo("Да"); @@ -174,23 +174,23 @@ void testAnnotation() { // BEFORE methodSymbol = methods.get(20); assertThat(methodSymbol.getName()).isEqualTo("Р_Перед"); - assertThat(methodSymbol.getAnnotations().get(0).getName()).isEqualTo("Перед"); - assertThat(methodSymbol.getAnnotations().get(0).getKind()).isEqualTo(AnnotationKind.BEFORE); - assertThat(methodSymbol.getAnnotations().get(0).getParameters().get(0).value().getLeft()).isEqualTo("Перед"); + assertThat(methodSymbol.getAnnotations().getFirst().getName()).isEqualTo("Перед"); + assertThat(methodSymbol.getAnnotations().getFirst().getKind()).isEqualTo(AnnotationKind.BEFORE); + assertThat(methodSymbol.getAnnotations().getFirst().getParameters().getFirst().value().getLeft()).isEqualTo("Перед"); // AFTER methodSymbol = methods.get(21); assertThat(methodSymbol.getName()).isEqualTo("Р_После"); - assertThat(methodSymbol.getAnnotations().get(0).getName()).isEqualTo("После"); - assertThat(methodSymbol.getAnnotations().get(0).getKind()).isEqualTo(AnnotationKind.AFTER); - assertThat(methodSymbol.getAnnotations().get(0).getParameters().get(0).value().getLeft()).isEqualTo("После"); + assertThat(methodSymbol.getAnnotations().getFirst().getName()).isEqualTo("После"); + assertThat(methodSymbol.getAnnotations().getFirst().getKind()).isEqualTo(AnnotationKind.AFTER); + assertThat(methodSymbol.getAnnotations().getFirst().getParameters().getFirst().value().getLeft()).isEqualTo("После"); // AROUND methodSymbol = methods.get(22); assertThat(methodSymbol.getName()).isEqualTo("Р_Вместо"); - assertThat(methodSymbol.getAnnotations().get(0).getName()).isEqualTo("Вместо"); - assertThat(methodSymbol.getAnnotations().get(0).getKind()).isEqualTo(AnnotationKind.AROUND); - assertThat(methodSymbol.getAnnotations().get(0).getParameters().get(0).value().getLeft()).isEqualTo("Вместо"); + assertThat(methodSymbol.getAnnotations().getFirst().getName()).isEqualTo("Вместо"); + assertThat(methodSymbol.getAnnotations().getFirst().getKind()).isEqualTo(AnnotationKind.AROUND); + assertThat(methodSymbol.getAnnotations().getFirst().getParameters().getFirst().value().getLeft()).isEqualTo("Вместо"); } @Test @@ -201,8 +201,8 @@ void testParameters() { List parameters = methods.get(2).getParameters(); assertThat(parameters.size()).isEqualTo(4); - assertThat(parameters.get(0).getName()).isEqualTo("Парам"); - assertThat(parameters.get(0).isByValue()).isFalse(); + assertThat(parameters.getFirst().getName()).isEqualTo("Парам"); + assertThat(parameters.getFirst().isByValue()).isFalse(); assertThat(parameters.get(0).isOptional()).isFalse(); assertThat(parameters.get(0).getRange()).isEqualTo(Ranges.create(14, 12, 17)); @@ -233,17 +233,17 @@ void testParameters() { parameters = methods.get(24).getParameters(); assertThat(parameters.get(0).getName()).isEqualTo("Парам1"); - assertThat(parameters.get(0).getAnnotations()).hasSize(1); - assertThat(parameters.get(0).getAnnotations().get(0).getName()).isEqualTo("Повторяемый"); - assertThat(parameters.get(0).getAnnotations().get(0).getKind()).isEqualTo(AnnotationKind.CUSTOM); - assertThat(parameters.get(0).getAnnotations().get(0).getParameters()).isEmpty(); + assertThat(parameters.getFirst().getAnnotations()).hasSize(1); + assertThat(parameters.getFirst().getAnnotations().getFirst().getName()).isEqualTo("Повторяемый"); + assertThat(parameters.get(0).getAnnotations().getFirst().getKind()).isEqualTo(AnnotationKind.CUSTOM); + assertThat(parameters.get(0).getAnnotations().getFirst().getParameters()).isEmpty(); assertThat(parameters.get(1).getName()).isEqualTo("Парам2"); assertThat(parameters.get(1).getAnnotations()).hasSize(1); - assertThat(parameters.get(1).getAnnotations().get(0).getName()).isEqualTo("ДругаяАннотация"); - assertThat(parameters.get(1).getAnnotations().get(0).getKind()).isEqualTo(AnnotationKind.CUSTOM); - assertThat(parameters.get(1).getAnnotations().get(0).getParameters()).hasSize(1); - assertThat(parameters.get(1).getAnnotations().get(0).getParameters().get(0).name()).isEmpty(); - assertThat(parameters.get(1).getAnnotations().get(0).getParameters().get(0).value().getLeft()).isEqualTo("СПараметром"); + assertThat(parameters.get(1).getAnnotations().getFirst().getName()).isEqualTo("ДругаяАннотация"); + assertThat(parameters.get(1).getAnnotations().getFirst().getKind()).isEqualTo(AnnotationKind.CUSTOM); + assertThat(parameters.get(1).getAnnotations().getFirst().getParameters()).hasSize(1); + assertThat(parameters.get(1).getAnnotations().getFirst().getParameters().getFirst().name()).isEmpty(); + assertThat(parameters.get(1).getAnnotations().getFirst().getParameters().getFirst().value().getLeft()).isEqualTo("СПараметром"); assertThat(parameters.get(2).getName()).isEqualTo("Парам3"); assertThat(parameters.get(2).getAnnotations()).isEmpty(); @@ -286,8 +286,8 @@ void testParseError() { var documentContext = TestUtils.getDocumentContextFromFile("./src/test/resources/context/computer/MethodSymbolComputerTestParseError.bsl"); List methods = documentContext.getSymbolTree().getMethods(); - assertThat(methods.get(0).getName()).isEqualTo("Выполнить"); - assertThat(methods.get(0).getSubNameRange()).isEqualTo(Ranges.create(0, 10, 0, 19)); + assertThat(methods.getFirst().getName()).isEqualTo("Выполнить"); + assertThat(methods.getFirst().getSubNameRange()).isEqualTo(Ranges.create(0, 10, 0, 19)); } @@ -295,7 +295,7 @@ private static void checkCompilerDirective_for_AtClient_AndAnnotation_After(Meth assertThat(methodSymbol.getCompilerDirectiveKind().orElse(null)).isEqualTo(CompilerDirectiveKind.AT_CLIENT); var annotations = methodSymbol.getAnnotations(); assertThat(annotations).hasSize(1); - assertThat(annotations.get(0).getKind()).isEqualTo(AnnotationKind.AFTER); + assertThat(annotations.getFirst().getKind()).isEqualTo(AnnotationKind.AFTER); } private void checkModule( @@ -309,7 +309,7 @@ private void checkModule( serverContext.rebuildDocument(documentContext); List methods = documentContext.getSymbolTree().getMethods(); assertThat(methods.size()).isEqualTo(methodsCount); - assertThat(methods.get(0).getName()).isEqualTo("Тест"); - assertThat(methods.get(0).getOwner()).isEqualTo(documentContext); + assertThat(methods.getFirst().getName()).isEqualTo("Тест"); + assertThat(methods.getFirst().getOwner()).isEqualTo(documentContext); } } diff --git a/src/test/java/com/github/_1c_syntax/bsl/languageserver/context/symbol/description/MethodDescriptionTest.java b/src/test/java/com/github/_1c_syntax/bsl/languageserver/context/symbol/description/MethodDescriptionTest.java index cbb43ac815e..29be1e9c1b6 100644 --- a/src/test/java/com/github/_1c_syntax/bsl/languageserver/context/symbol/description/MethodDescriptionTest.java +++ b/src/test/java/com/github/_1c_syntax/bsl/languageserver/context/symbol/description/MethodDescriptionTest.java @@ -85,11 +85,11 @@ void testMethod13() { assertThat(method.getReturnedValue()).hasSize(1); assertThat(method.getLinks()).isEmpty(); - var param = method.getParameters().get(0); + var param = method.getParameters().getFirst(); assertThat(param.name()).isEqualTo("Ссылки"); assertThat(param.types()).hasSize(1); - assertThat(param.types().get(0).name()).isEqualTo("Массив"); - assertThat(param.types().get(0).description()).isEqualTo(""" + assertThat(param.types().getFirst().name()).isEqualTo("Массив"); + assertThat(param.types().getFirst().description()).isEqualTo(""" массив ссылок на объекты одного типа. Значения массива должны быть ссылками на объекты одного типа. если массив пуст, то результатом будет пустое соответствие."""); @@ -98,8 +98,8 @@ void testMethod13() { param = method.getParameters().get(1); assertThat(param.name()).isEqualTo("Реквизиты"); assertThat(param.types()).hasSize(1); - assertThat(param.types().get(0).name()).isEqualTo("Строка"); - assertThat(param.types().get(0).description()).isEqualTo( + assertThat(param.types().getFirst().name()).isEqualTo("Строка"); + assertThat(param.types().getFirst().description()).isEqualTo( """ имена реквизитов перечисленные через запятую, в формате требований к свойствам структуры. Например, "Код, Наименование, Родитель"."""); @@ -108,8 +108,8 @@ void testMethod13() { param = method.getParameters().get(2); assertThat(param.name()).isEqualTo("ВыбратьРазрешенные"); assertThat(param.types()).hasSize(1); - assertThat(param.types().get(0).name()).isEqualTo("Булево"); - assertThat(param.types().get(0).description()).isEqualTo( + assertThat(param.types().getFirst().name()).isEqualTo("Булево"); + assertThat(param.types().getFirst().description()).isEqualTo( """ если Истина, то запрос к объектам выполняется с учетом прав пользователя, и в случае, - если какой-либо объект будет исключен из выборки по правам, то этот объект @@ -118,7 +118,7 @@ void testMethod13() { или любой из реквизитов."""); assertThat(param.isHyperlink()).isFalse(); - var type = method.getReturnedValue().get(0); + var type = method.getReturnedValue().getFirst(); assertThat(type.name()).isEqualTo("Соответствие"); assertThat(type.description()).isEqualTo("список объектов и значений их реквизитов:"); assertThat(type.fields()).hasSize(2); @@ -137,7 +137,7 @@ void testMethod12() { assertThat(method.getReturnedValue()).hasSize(1); assertThat(method.getLinks()).hasSize(1); - var type = method.getReturnedValue().get(0); + var type = method.getReturnedValue().getFirst(); assertThat(type.name()).isEqualTo("ОбщийМодуль.Метод"); assertThat(type.description()).isEmpty(); assertThat(type.fields()).isEmpty(); @@ -157,7 +157,7 @@ void testMethod11() { assertThat(method.getReturnedValue()).isEmpty(); assertThat(method.getLinks()).hasSize(1); - var param = method.getParameters().get(0); + var param = method.getParameters().getFirst(); assertThat(param.name()).isEqualTo("ОбщийМодуль.Метод"); assertThat(param.types()).hasSize(1); assertThat(param.isHyperlink()).isTrue(); @@ -263,7 +263,7 @@ void testMethod4() { assertThat(method.getParameters()).isEmpty(); assertThat(method.getReturnedValue()).hasSize(2); assertThat(method.getLinks()).isEmpty(); - var type = method.getReturnedValue().get(0); + var type = method.getReturnedValue().getFirst(); assertThat(type.description()).isEqualTo("ссылка на предопределенный элемент."); assertThat(type.name()).isEqualTo("ЛюбаяСсылка"); assertThat(type.fields()).isEmpty(); @@ -298,14 +298,14 @@ void testMethod2() { assertThat(method.getCallOptions()).isEmpty(); assertThat(method.getParameters()).hasSize(8); assertThat(method.getLinks()).hasSize(3); - var param = method.getParameters().get(0); + var param = method.getParameters().getFirst(); assertThat(param.name()).isEqualTo("ПараметрБезТипаИОписания"); assertThat(param.types()).isEmpty(); param = method.getParameters().get(1); assertThat(param.name()).isEqualTo("ПараметрСТипом"); assertThat(param.types()).hasSize(1); - var type = param.types().get(0); + var type = param.types().getFirst(); assertThat(type.description()).isEmpty(); assertThat(type.name()).isEqualTo("Произвольный"); assertThat(type.fields()).isEmpty(); @@ -313,7 +313,7 @@ void testMethod2() { param = method.getParameters().get(2); assertThat(param.name()).isEqualTo("ПараметрСОписаниемСсылкой"); assertThat(param.types()).hasSize(1); - type = param.types().get(0); + type = param.types().getFirst(); assertThat(type.description()).isEmpty(); assertThat(type.name()).isEqualTo("ПодключаемыеКомандыПереопределяемый.ПриОпределенииКомандПодключенныхКОбъекту.НастройкиФормы"); assertThat(type.fields()).isEmpty(); @@ -321,7 +321,7 @@ void testMethod2() { param = method.getParameters().get(3); assertThat(param.name()).isEqualTo("ПараметрСТипомИОписанием"); assertThat(param.types()).hasSize(1); - type = param.types().get(0); + type = param.types().getFirst(); assertThat(type.description()).isEqualTo("описание параметра см. Справочник.Контрагенты."); assertThat(type.name()).isEqualTo("Произвольный"); assertThat(type.fields()).isEmpty(); @@ -329,7 +329,7 @@ void testMethod2() { param = method.getParameters().get(4); assertThat(param.name()).isEqualTo("ПараметрСТипамиИОписанием"); assertThat(param.types()).hasSize(2); - type = param.types().get(0); + type = param.types().getFirst(); assertThat(type.description()).isEqualTo("простое описание параметра."); assertThat(type.name()).isEqualTo("Произвольный"); assertThat(type.fields()).isEmpty(); @@ -341,7 +341,7 @@ void testMethod2() { param = method.getParameters().get(5); assertThat(param.name()).isEqualTo("ПараметрСТипамиИОписанием2"); assertThat(param.types()).hasSize(2); - type = param.types().get(0); + type = param.types().getFirst(); assertThat(type.description()).isEqualTo("многострочное"); assertThat(type.name()).isEqualTo("Произвольный"); assertThat(type.fields()).isEmpty(); @@ -353,7 +353,7 @@ void testMethod2() { param = method.getParameters().get(6); assertThat(param.name()).isEqualTo("ПараметрСТипамиИОписанием3"); assertThat(param.types()).hasSize(4); - type = param.types().get(0); + type = param.types().getFirst(); assertThat(type.description()).isEqualTo("описание произвольного типа"); assertThat(type.name()).isEqualTo("Произвольный"); assertThat(type.fields()).isEmpty(); @@ -373,18 +373,18 @@ void testMethod2() { param = method.getParameters().get(7); assertThat(param.name()).isEqualTo("ПараметрМассив"); assertThat(param.types()).hasSize(1); - type = param.types().get(0); + type = param.types().getFirst(); assertThat(type.description()).isEmpty(); assertThat(type.name()).isEqualTo("Массив<Структура>"); assertThat(type.fields()).hasSize(4); - param = type.fields().get(0); + param = type.fields().getFirst(); assertThat(param.name()).isEqualTo("Элемент1"); assertThat(param.types()).hasSize(1); - var subtype = param.types().get(0); + var subtype = param.types().getFirst(); assertThat(subtype.description()).isEmpty(); assertThat(subtype.name()).isEqualTo("Структура"); assertThat(subtype.fields()).hasSize(3); - var subparam = subtype.fields().get(0); + var subparam = subtype.fields().getFirst(); assertThat(subparam.name()).isEqualTo("СубЭлемент1"); assertThat(subparam.types()).hasSize(1); subparam = subtype.fields().get(1); @@ -402,28 +402,28 @@ void testMethod2() { param = type.fields().get(3); assertThat(param.name()).isEqualTo("Жесть"); assertThat(param.types()).hasSize(1); - subtype = param.types().get(0); + subtype = param.types().getFirst(); assertThat(subtype.description()).isEmpty(); assertThat(subtype.name()).isEqualTo("Структура"); assertThat(subtype.fields()).hasSize(1); - subparam = subtype.fields().get(0); + subparam = subtype.fields().getFirst(); assertThat(subparam.name()).isEqualTo("Массив"); assertThat(subparam.types()).hasSize(1); - var subsubtype = subparam.types().get(0); + var subsubtype = subparam.types().getFirst(); assertThat(subsubtype.description()).isEmpty(); assertThat(subsubtype.name()).isEqualTo("Массив<Структура>"); assertThat(subsubtype.fields()).hasSize(2); - var subsubparam = subsubtype.fields().get(0); + var subsubparam = subsubtype.fields().getFirst(); assertThat(subsubparam.name()).isEqualTo("Элемент"); assertThat(subsubparam.types()).hasSize(1); subsubparam = subsubtype.fields().get(1); assertThat(subsubparam.name()).isEqualTo("Элемент4"); assertThat(subsubparam.types()).hasSize(1); - subsubtype = subsubparam.types().get(0); + subsubtype = subsubparam.types().getFirst(); assertThat(subsubtype.description()).isEmpty(); assertThat(subsubtype.name()).isEqualTo("строка"); assertThat(subsubtype.fields()).hasSize(1); - subsubparam = subsubtype.fields().get(0); + subsubparam = subsubtype.fields().getFirst(); assertThat(subsubparam.name()).isEqualTo("Элемент5"); assertThat(subsubparam.types()).hasSize(1); assertThat(method.getReturnedValue()).isEmpty(); @@ -431,7 +431,7 @@ void testMethod2() { @Test void testMethod1() { - var method = methodsWithDescription.get(0); + var method = methodsWithDescription.getFirst(); assertThat(method.getPurposeDescription()) .isNotEmpty() .isEqualTo("Описание метода"); diff --git a/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CanonicalSpellingKeywordsDiagnosticTest.java b/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CanonicalSpellingKeywordsDiagnosticTest.java index d514858d572..e37cd58c95b 100644 --- a/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CanonicalSpellingKeywordsDiagnosticTest.java +++ b/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CanonicalSpellingKeywordsDiagnosticTest.java @@ -307,13 +307,13 @@ void testQuickFix() { final var documentContext = getDocumentContext(); List diagnostics = getDiagnostics(); - final Diagnostic firstDiagnostic = diagnostics.get(0); + final Diagnostic firstDiagnostic = diagnostics.getFirst(); List quickFixes = getQuickFixes(firstDiagnostic); assertThat(quickFixes).hasSize(1); - final CodeAction quickFix = quickFixes.get(0); + final CodeAction quickFix = quickFixes.getFirst(); assertThat(quickFix).of(diagnosticInstance).in(documentContext) .fixes(firstDiagnostic); diff --git a/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CodeOutOfRegionDiagnosticTest.java b/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CodeOutOfRegionDiagnosticTest.java index 0586b6cea93..3432a284192 100644 --- a/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CodeOutOfRegionDiagnosticTest.java +++ b/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CodeOutOfRegionDiagnosticTest.java @@ -68,10 +68,10 @@ void testNoRegions() { assertThat(diagnostics, true) .hasRange(4, 0, 5, 8) ; - assertThat(diagnostics.get(0).getRelatedInformation()) + assertThat(diagnostics.getFirst().getRelatedInformation()) .isNotNull() .isNotEmpty(); - assertThat(diagnostics.get(0).getRelatedInformation().size()).isEqualTo(4); + assertThat(diagnostics.getFirst().getRelatedInformation().size()).isEqualTo(4); } @Test diff --git a/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CognitiveComplexityDiagnosticTest.java b/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CognitiveComplexityDiagnosticTest.java index 1c3faf9117f..8a9f26cdb82 100644 --- a/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CognitiveComplexityDiagnosticTest.java +++ b/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CognitiveComplexityDiagnosticTest.java @@ -45,7 +45,7 @@ void runTest() { assertThat(diagnostics).hasSize(1); assertThat(diagnostics, true) .hasRange(0, 8, 0, 32); - assertThat(diagnostics.get(0).getRelatedInformation()).hasSize(35); + assertThat(diagnostics.getFirst().getRelatedInformation()).hasSize(35); } @Test diff --git a/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CommentedCodeDiagnosticTest.java b/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CommentedCodeDiagnosticTest.java index 2fb20a91477..90ef55a7cbb 100644 --- a/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CommentedCodeDiagnosticTest.java +++ b/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CommentedCodeDiagnosticTest.java @@ -98,13 +98,13 @@ void testConfigure() { @Test void testQuickFixRemoveCode() { List diagnostics = getDiagnostics(); - List quickFixes = getQuickFixes(diagnostics.get(0)); + List quickFixes = getQuickFixes(diagnostics.getFirst()); assertThat(quickFixes) .hasSize(1); - final CodeAction fix = quickFixes.get(0); - assertThat(fix).of(diagnosticInstance).in(getDocumentContext()).fixes(diagnostics.get(0)); + final CodeAction fix = quickFixes.getFirst(); + assertThat(fix).of(diagnosticInstance).in(getDocumentContext()).fixes(diagnostics.getFirst()); } } \ No newline at end of file diff --git a/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/ConsecutiveEmptyLinesDiagnosticTest.java b/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/ConsecutiveEmptyLinesDiagnosticTest.java index 983da59fd62..0e0ff55909c 100644 --- a/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/ConsecutiveEmptyLinesDiagnosticTest.java +++ b/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/ConsecutiveEmptyLinesDiagnosticTest.java @@ -301,7 +301,7 @@ private void checkFix(DocumentContext documentContext, Diagnostic diagnostic, bo assertThat(quickFixes).hasSize(1); - final CodeAction quickFix = quickFixes.get(0); + final CodeAction quickFix = quickFixes.getFirst(); if (haveFix) { assertThat(quickFix).of(diagnosticInstance).in(documentContext) diff --git a/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CyclomaticComplexityDiagnosticTest.java b/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CyclomaticComplexityDiagnosticTest.java index a68f423a00e..76d77208188 100644 --- a/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CyclomaticComplexityDiagnosticTest.java +++ b/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/CyclomaticComplexityDiagnosticTest.java @@ -46,7 +46,7 @@ void test() { assertThat(diagnostics).hasSize(1); assertThat(diagnostics, true) .hasRange(0, 8, 0, 32); - assertThat(diagnostics.get(0).getRelatedInformation()).hasSize(21); + assertThat(diagnostics.getFirst().getRelatedInformation()).hasSize(21); } @Test diff --git a/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/DeprecatedTypeManagedFormDiagnosticTest.java b/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/DeprecatedTypeManagedFormDiagnosticTest.java index d796d40da94..7d83b356530 100644 --- a/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/DeprecatedTypeManagedFormDiagnosticTest.java +++ b/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/DeprecatedTypeManagedFormDiagnosticTest.java @@ -52,12 +52,12 @@ void testQuickFix() { final var documentContext = getDocumentContext(); List diagnostics = getDiagnostics(); - final Diagnostic ruDiagnostic = diagnostics.get(0); + final Diagnostic ruDiagnostic = diagnostics.getFirst(); List quickFixes = getQuickFixes(ruDiagnostic); assertThat(quickFixes).hasSize(1); - final CodeAction quickFix = quickFixes.get(0); + final CodeAction quickFix = quickFixes.getFirst(); assertThat(quickFix) .of(diagnosticInstance) diff --git a/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/EmptyCodeBlockDiagnosticTest.java b/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/EmptyCodeBlockDiagnosticTest.java index ba44e84fd67..e5edfd5e4da 100644 --- a/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/EmptyCodeBlockDiagnosticTest.java +++ b/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/EmptyCodeBlockDiagnosticTest.java @@ -57,7 +57,7 @@ void testFileEmptyCodeBlock() { List diagnostics = getDiagnostics("EmptyCodeBlockDiagnosticFileCodeBlock"); assertThat(diagnostics).hasSize(1); - assertThat(diagnostics.get(0).getRange()).isEqualTo(Ranges.create(4, 4, 4, 16)); + assertThat(diagnostics.getFirst().getRange()).isEqualTo(Ranges.create(4, 4, 4, 16)); } @Test diff --git a/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/EmptyRegionDiagnosticTest.java b/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/EmptyRegionDiagnosticTest.java index 58c7e56f7a4..77993cd899a 100644 --- a/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/EmptyRegionDiagnosticTest.java +++ b/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/EmptyRegionDiagnosticTest.java @@ -59,7 +59,7 @@ void testQuickFix() { List quickFixes = getQuickFixes(externalRegionDiagnostic); assertThat(quickFixes).hasSize(1); - final CodeAction quickFix = quickFixes.get(0); + final CodeAction quickFix = quickFixes.getFirst(); assertThat(quickFix) .of(diagnosticInstance) diff --git a/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/EmptyStatementDiagnosticTest.java b/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/EmptyStatementDiagnosticTest.java index 091566caa83..671af8292ef 100644 --- a/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/EmptyStatementDiagnosticTest.java +++ b/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/EmptyStatementDiagnosticTest.java @@ -55,7 +55,7 @@ void testQuickFix() { List diagnostics = getDiagnostics(); List quickFixes = getQuickFixes( - diagnostics.get(0), + diagnostics.getFirst(), Ranges.create(3, 19, 3, 19) ); @@ -65,11 +65,11 @@ void testQuickFix() { .matches(codeAction -> codeAction.getKind().equals(CodeActionKind.QuickFix)) .matches(codeAction -> codeAction.getDiagnostics().size() == 1) - .matches(codeAction -> codeAction.getDiagnostics().get(0).equals(diagnostics.get(0))) + .matches(codeAction -> codeAction.getDiagnostics().getFirst().equals(diagnostics.getFirst())) .matches(codeAction -> codeAction.getEdit().getChanges().size() == 1) .matches(codeAction -> - codeAction.getEdit().getChanges().get(FAKE_DOCUMENT_URI.toString()).get(0).getNewText().isEmpty() + codeAction.getEdit().getChanges().get(FAKE_DOCUMENT_URI.toString()).getFirst().getNewText().isEmpty() ) ; } diff --git a/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/IdenticalExpressionsDiagnosticTest.java b/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/IdenticalExpressionsDiagnosticTest.java index 3d27bcc2eb8..e534848092f 100644 --- a/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/IdenticalExpressionsDiagnosticTest.java +++ b/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/IdenticalExpressionsDiagnosticTest.java @@ -77,7 +77,7 @@ void checkMessage() { var context = TestUtils.getDocumentContext(code); var diagnostics = getDiagnostics(context); assertThat(diagnostics).hasSize(1); - assertThat(diagnostics.get(0).getMessage()).contains("\"ДокументСсылка.СчетНаОплатуПоставщика\""); + assertThat(diagnostics.getFirst().getMessage()).contains("\"ДокументСсылка.СчетНаОплатуПоставщика\""); } @Test @@ -112,7 +112,7 @@ void testThatConfiguredPopularQuantificationSkipped() { var context = TestUtils.getDocumentContext(code); var diagnostics = getDiagnostics(context); assertThat(diagnostics).hasSize(1); - assertThat(diagnostics.get(0).getMessage()).contains("60"); + assertThat(diagnostics.getFirst().getMessage()).contains("60"); } diff --git a/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/IfElseDuplicatedCodeBlockDiagnosticTest.java b/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/IfElseDuplicatedCodeBlockDiagnosticTest.java index 5ffc25474fe..d26565bf892 100644 --- a/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/IfElseDuplicatedCodeBlockDiagnosticTest.java +++ b/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/IfElseDuplicatedCodeBlockDiagnosticTest.java @@ -85,7 +85,7 @@ private void checkDiagnosticContent( String relatedMessage = diagnosticInstance.getInfo().getResourceString("identicalCodeBlockRelatedMessage"); - DiagnosticRelatedInformation relatedInformation = relatedInformationList.get(0); + DiagnosticRelatedInformation relatedInformation = relatedInformationList.getFirst(); assertThat(relatedInformation.getMessage()).isEqualTo(relatedMessage); assertThat(relatedInformation.getLocation().getRange()).isEqualTo(diagnosticRange); diff --git a/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/IfElseDuplicatedConditionDiagnosticTest.java b/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/IfElseDuplicatedConditionDiagnosticTest.java index 61622935089..f7736fdd74a 100644 --- a/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/IfElseDuplicatedConditionDiagnosticTest.java +++ b/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/IfElseDuplicatedConditionDiagnosticTest.java @@ -50,7 +50,7 @@ void test() { relatedInformation.add(Ranges.create(9, 10, 9, 21)); checkDiagnosticContent( - diagnostics.get(0), + diagnostics.getFirst(), Ranges.create(3, 10, 3, 15), relatedInformation); diff --git a/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/MissingSpaceDiagnosticTest.java b/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/MissingSpaceDiagnosticTest.java index 43ee353b32d..1c4620929b9 100644 --- a/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/MissingSpaceDiagnosticTest.java +++ b/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/MissingSpaceDiagnosticTest.java @@ -129,11 +129,11 @@ void testQuickFix() { .matches(codeAction -> codeAction.getKind().equals(CodeActionKind.QuickFix)) .matches(codeAction -> codeAction.getDiagnostics().size() == 1) - .matches(codeAction -> codeAction.getDiagnostics().get(0).equals(diagnostics.get(23))) + .matches(codeAction -> codeAction.getDiagnostics().getFirst().equals(diagnostics.get(23))) .matches(codeAction -> codeAction.getEdit().getChanges().size() == 1) .matches(codeAction -> - codeAction.getEdit().getChanges().get(FAKE_DOCUMENT_URI.toString()).get(0).getNewText().equals(" ") + codeAction.getEdit().getChanges().get(FAKE_DOCUMENT_URI.toString()).getFirst().getNewText().equals(" ") ) ; } diff --git a/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/NestedConstructorsInStructureDeclarationDiagnosticTest.java b/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/NestedConstructorsInStructureDeclarationDiagnosticTest.java index d1a175b4d59..e73254ddc83 100644 --- a/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/NestedConstructorsInStructureDeclarationDiagnosticTest.java +++ b/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/NestedConstructorsInStructureDeclarationDiagnosticTest.java @@ -58,7 +58,7 @@ void test() { relatedInformation.add(Ranges.create(11, 33, 11, 69)); checkDiagnosticContent( - diagnostics.get(0), + diagnostics.getFirst(), Ranges.create(10, 16, 12, 36), relatedInformation); diff --git a/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/NestedStatementsDiagnosticTest.java b/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/NestedStatementsDiagnosticTest.java index bec59e485be..759e2dec0e4 100644 --- a/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/NestedStatementsDiagnosticTest.java +++ b/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/NestedStatementsDiagnosticTest.java @@ -64,7 +64,7 @@ void testConfigure() { assertThat(diagnostics).hasSize(1); Assertions.assertThat(diagnostics, true) .hasRange(50, 6, 50, 10); - assertThat(diagnostics.get(0).getRelatedInformation()).hasSize(7); + assertThat(diagnostics.getFirst().getRelatedInformation()).hasSize(7); } } diff --git a/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/OneStatementPerLineDiagnosticTest.java b/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/OneStatementPerLineDiagnosticTest.java index a908e275e85..92deef543b2 100644 --- a/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/OneStatementPerLineDiagnosticTest.java +++ b/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/OneStatementPerLineDiagnosticTest.java @@ -59,7 +59,7 @@ void testEndFile() { assertThat(diagnostics, true) .hasRange(1, 5, 1, 9) .hasRange(1, 10, 1, 14); - assertThat(diagnostics.get(0).getRelatedInformation()).hasSize(1); + assertThat(diagnostics.getFirst().getRelatedInformation()).hasSize(1); } @Test @@ -67,7 +67,7 @@ void testQuickFixStartLine() { List diagnostics = getDiagnostics(); List quickFixes = getQuickFixes( - diagnostics.get(0), + diagnostics.getFirst(), Ranges.create(12, 5, 12, 9) ); @@ -77,11 +77,11 @@ void testQuickFixStartLine() { .matches(codeAction -> codeAction.getKind().equals(CodeActionKind.QuickFix)) .matches(codeAction -> codeAction.getDiagnostics().size() == 1) - .matches(codeAction -> codeAction.getDiagnostics().get(0).equals(diagnostics.get(0))) + .matches(codeAction -> codeAction.getDiagnostics().getFirst().equals(diagnostics.getFirst())) .matches(codeAction -> codeAction.getEdit().getChanges().size() == 1) .matches(codeAction -> - codeAction.getEdit().getChanges().get(FAKE_DOCUMENT_URI.toString()).get(0).getNewText().startsWith("\n") + codeAction.getEdit().getChanges().get(FAKE_DOCUMENT_URI.toString()).getFirst().getNewText().startsWith("\n") ); } } diff --git a/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/SameMetadataObjectAndChildNamesDiagnosticTest.java b/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/SameMetadataObjectAndChildNamesDiagnosticTest.java index bb733bb3646..3d290530be0 100644 --- a/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/SameMetadataObjectAndChildNamesDiagnosticTest.java +++ b/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/SameMetadataObjectAndChildNamesDiagnosticTest.java @@ -83,7 +83,7 @@ void testCatalog() { when(tabularSection.getName()).thenReturn("Тара"); tabularSections.add(tabularSection); - var tabAttribute = spy(tabularSection.getAttributes().get(0)); + var tabAttribute = spy(tabularSection.getAttributes().getFirst()); when(tabAttribute.getName()).thenReturn("Тара"); when(tabularSection.getAttributes()).thenReturn(List.of(tabAttribute)); diff --git a/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/SemicolonPresenceDiagnosticTest.java b/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/SemicolonPresenceDiagnosticTest.java index 735a24a1759..5bd8d45799f 100644 --- a/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/SemicolonPresenceDiagnosticTest.java +++ b/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/SemicolonPresenceDiagnosticTest.java @@ -55,7 +55,7 @@ void testQuickFix() { List diagnostics = getDiagnostics(); List quickFixes = getQuickFixes( - diagnostics.get(0), + diagnostics.getFirst(), Ranges.create(6, 10, 6, 10) ); @@ -65,11 +65,11 @@ void testQuickFix() { .matches(codeAction -> codeAction.getKind().equals(CodeActionKind.QuickFix)) .matches(codeAction -> codeAction.getDiagnostics().size() == 1) - .matches(codeAction -> codeAction.getDiagnostics().get(0).equals(diagnostics.get(0))) + .matches(codeAction -> codeAction.getDiagnostics().getFirst().equals(diagnostics.getFirst())) .matches(codeAction -> codeAction.getEdit().getChanges().size() == 1) .matches(codeAction -> - codeAction.getEdit().getChanges().get(FAKE_DOCUMENT_URI.toString()).get(0).getNewText().equals(";") + codeAction.getEdit().getChanges().get(FAKE_DOCUMENT_URI.toString()).getFirst().getNewText().equals(";") ) ; } diff --git a/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/ServerCallsInFormEventsDiagnosticTest.java b/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/ServerCallsInFormEventsDiagnosticTest.java index 9f90c70cd64..d068c15dec9 100644 --- a/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/ServerCallsInFormEventsDiagnosticTest.java +++ b/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/ServerCallsInFormEventsDiagnosticTest.java @@ -30,7 +30,7 @@ /** * Тесты для диагностики ServerCallsInFormEventsDiagnostic. - * + *

* Проверяет корректность обнаружения вызовов серверных процедур * в событиях ПриАктивизацииСтроки и НачалоВыбора. * diff --git a/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/SpaceAtStartCommentDiagnosticTest.java b/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/SpaceAtStartCommentDiagnosticTest.java index 3162685e906..04ea3c4a584 100644 --- a/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/SpaceAtStartCommentDiagnosticTest.java +++ b/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/SpaceAtStartCommentDiagnosticTest.java @@ -101,7 +101,7 @@ void testQuickFixStartLine() { List diagnostics = getDiagnostics(); List quickFixes = getQuickFixes( - diagnostics.get(0), + diagnostics.getFirst(), Ranges.create(6, 10, 6, 20) ); @@ -111,11 +111,11 @@ void testQuickFixStartLine() { .matches(codeAction -> codeAction.getKind().equals(CodeActionKind.QuickFix)) .matches(codeAction -> codeAction.getDiagnostics().size() == 1) - .matches(codeAction -> codeAction.getDiagnostics().get(0).equals(diagnostics.get(0))) + .matches(codeAction -> codeAction.getDiagnostics().getFirst().equals(diagnostics.getFirst())) .matches(codeAction -> codeAction.getEdit().getChanges().size() == 1) .matches(codeAction -> - codeAction.getEdit().getChanges().get(FAKE_DOCUMENT_URI.toString()).get(0).getNewText().startsWith("// ") + codeAction.getEdit().getChanges().get(FAKE_DOCUMENT_URI.toString()).getFirst().getNewText().startsWith("// ") ); } @@ -134,11 +134,11 @@ void testQuickFixInLine() { .matches(codeAction -> codeAction.getKind().equals(CodeActionKind.QuickFix)) .matches(codeAction -> codeAction.getDiagnostics().size() == 1) - .matches(codeAction -> codeAction.getDiagnostics().get(0).equals(diagnostics.get(1))) + .matches(codeAction -> codeAction.getDiagnostics().getFirst().equals(diagnostics.get(1))) .matches(codeAction -> codeAction.getEdit().getChanges().size() == 1) .matches(codeAction -> - codeAction.getEdit().getChanges().get(FAKE_DOCUMENT_URI.toString()).get(0).getNewText().startsWith("// ") + codeAction.getEdit().getChanges().get(FAKE_DOCUMENT_URI.toString()).getFirst().getNewText().startsWith("// ") ); } } diff --git a/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/TooManyReturnsDiagnosticTest.java b/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/TooManyReturnsDiagnosticTest.java index d45d933b57f..d14faf1d68b 100644 --- a/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/TooManyReturnsDiagnosticTest.java +++ b/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/TooManyReturnsDiagnosticTest.java @@ -42,7 +42,7 @@ void test() { assertThat(diagnostics).hasSize(1); assertThat(diagnostics, true) .hasRange(11, 8, 11, 21); - assertThat(diagnostics.get(0).getRelatedInformation()).hasSize(5); + assertThat(diagnostics.getFirst().getRelatedInformation()).hasSize(5); } diff --git a/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/TransferringParametersBetweenClientAndServerDiagnosticTest.java b/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/TransferringParametersBetweenClientAndServerDiagnosticTest.java index 2882e2e8b6e..c07f54a047d 100644 --- a/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/TransferringParametersBetweenClientAndServerDiagnosticTest.java +++ b/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/TransferringParametersBetweenClientAndServerDiagnosticTest.java @@ -21,7 +21,6 @@ */ package com.github._1c_syntax.bsl.languageserver.diagnostics; -import com.github._1c_syntax.bsl.languageserver.context.DocumentContext; import com.github._1c_syntax.bsl.languageserver.util.CleanupContextBeforeClassAndAfterClass; import com.github._1c_syntax.bsl.languageserver.util.TestUtils; import org.eclipse.lsp4j.Diagnostic; @@ -78,13 +77,13 @@ void testWithCachedValues() { Процедура Метод(Парам) КонецПроцедуры """; - + var documentContext = TestUtils.getDocumentContext(code); - + Map configuration = diagnosticInstance.getInfo().getDefaultConfiguration(); configuration.put("cachedValueNames", "КэшированныеЗначения"); diagnosticInstance.configure(configuration); - + var diagnostics = getDiagnostics(documentContext); assertThat(diagnostics, true) @@ -109,13 +108,13 @@ void testWithCachedValuesButNoVariable() { Процедура Метод(Парам) КонецПроцедуры """; - + var documentContext = TestUtils.getDocumentContext(code); - + Map configuration = diagnosticInstance.getInfo().getDefaultConfiguration(); configuration.put("cachedValueNames", "КэшированныеЗначения"); diagnosticInstance.configure(configuration); - + var diagnostics = getDiagnostics(documentContext); assertThat(diagnostics, true) @@ -143,13 +142,13 @@ void testWithCachedValuesButNotClientVariable() { Процедура Метод(Парам) КонецПроцедуры """; - + var documentContext = TestUtils.getDocumentContext(code); - + Map configuration = diagnosticInstance.getInfo().getDefaultConfiguration(); configuration.put("cachedValueNames", "КэшированныеЗначения"); diagnosticInstance.configure(configuration); - + var diagnostics = getDiagnostics(documentContext); assertThat(diagnostics, true) diff --git a/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UnsafeFindByCodeDiagnosticTest.java b/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UnsafeFindByCodeDiagnosticTest.java index 055531edc7c..95b99158b01 100644 --- a/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UnsafeFindByCodeDiagnosticTest.java +++ b/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UnsafeFindByCodeDiagnosticTest.java @@ -141,7 +141,6 @@ void testEdgeCases() { * * @param pathToFile путь к тестовому файлу относительно корня проекта * @return контекст документа для тестирования - * @throws Exception если произошла ошибка при чтении файла или инициализации контекста */ @SneakyThrows DocumentContext createDocumentContextFromFile(String pathToFile) { diff --git a/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UselessTernaryOperatorDiagnosticTest.java b/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UselessTernaryOperatorDiagnosticTest.java index 2c84ea294eb..4bc3badc73c 100644 --- a/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UselessTernaryOperatorDiagnosticTest.java +++ b/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UselessTernaryOperatorDiagnosticTest.java @@ -61,10 +61,10 @@ void testQuickFix() { final DocumentContext documentContext = getDocumentContext(); List diagnostics = getDiagnostics(); - final Diagnostic directDiagnostic = diagnostics.get(0); + final Diagnostic directDiagnostic = diagnostics.getFirst(); List directQuickFixes = getQuickFixes(directDiagnostic); assertThat(directQuickFixes).hasSize(1); - final CodeAction directQuickFix = directQuickFixes.get(0); + final CodeAction directQuickFix = directQuickFixes.getFirst(); assertThat(directQuickFix) .of(diagnosticInstance) .in(documentContext) @@ -75,7 +75,7 @@ void testQuickFix() { final Diagnostic reversDiagnostic = diagnostics.get(1); List reversQuickFixes = getQuickFixes(reversDiagnostic); assertThat(reversQuickFixes).hasSize(1); - final CodeAction reversQuickFix = reversQuickFixes.get(0); + final CodeAction reversQuickFix = reversQuickFixes.getFirst(); assertThat(reversQuickFix) .of(diagnosticInstance) .in(documentContext) diff --git a/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingThisFormDiagnosticTest.java b/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingThisFormDiagnosticTest.java index 3976876dd05..3fddc3372c5 100644 --- a/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingThisFormDiagnosticTest.java +++ b/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UsingThisFormDiagnosticTest.java @@ -66,13 +66,13 @@ void runTest() { void runQuickFixTest() { final var documentContext = getDocumentContext(); List diagnostics = getDiagnostics(); - final Diagnostic firstDiagnostic = diagnostics.get(0); + final Diagnostic firstDiagnostic = diagnostics.getFirst(); List quickFixes = getQuickFixes(firstDiagnostic); assertThat(quickFixes).hasSize(1); - final CodeAction quickFix = quickFixes.get(0); + final CodeAction quickFix = quickFixes.getFirst(); assertThat(quickFix).of(diagnosticInstance).in(documentContext) .fixes(firstDiagnostic); diff --git a/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/infrastructure/MinimumLSPDiagnosticLevelTest.java b/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/infrastructure/MinimumLSPDiagnosticLevelTest.java index bd08eea2271..196b5180f5c 100644 --- a/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/infrastructure/MinimumLSPDiagnosticLevelTest.java +++ b/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/infrastructure/MinimumLSPDiagnosticLevelTest.java @@ -22,8 +22,8 @@ package com.github._1c_syntax.bsl.languageserver.diagnostics.infrastructure; import com.github._1c_syntax.bsl.languageserver.configuration.LanguageServerConfiguration; -import com.github._1c_syntax.bsl.languageserver.context.DocumentContext; import com.github._1c_syntax.bsl.languageserver.diagnostics.BSLDiagnostic; +import com.github._1c_syntax.bsl.languageserver.diagnostics.metadata.DiagnosticInfo; import com.github._1c_syntax.bsl.languageserver.util.CleanupContextBeforeClassAndAfterClass; import com.github._1c_syntax.bsl.languageserver.util.TestUtils; import org.junit.jupiter.api.Test; @@ -96,10 +96,10 @@ void testMinimumLSPDiagnosticLevelNotSet() { // Verify we have diagnostics with different LSP severities var hasHintOrInformation = diagnostics.stream() .map(BSLDiagnostic::getInfo) - .map(info -> info.getLSPSeverity()) - .anyMatch(severity -> - severity == org.eclipse.lsp4j.DiagnosticSeverity.Hint - || severity == org.eclipse.lsp4j.DiagnosticSeverity.Information + .map(DiagnosticInfo::getLSPSeverity) + .anyMatch(severity -> + severity == org.eclipse.lsp4j.DiagnosticSeverity.Hint + || severity == org.eclipse.lsp4j.DiagnosticSeverity.Information ); // With default configuration, we should have diagnostics with Hint or Information severity diff --git a/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/metadata/DiagnosticInfoTest.java b/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/metadata/DiagnosticInfoTest.java index 682dbe2d03e..fa5ec9aab82 100644 --- a/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/metadata/DiagnosticInfoTest.java +++ b/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/metadata/DiagnosticInfoTest.java @@ -71,7 +71,7 @@ void testParameter() { Assertions.assertThat(diagnosticInfo.getDefaultConfiguration()).isNotEmpty(); - var parameter = diagnosticInfo.getParameters().get(0); + var parameter = diagnosticInfo.getParameters().getFirst(); assertThat(parameter.getDescription()) .isEqualTo("Считать комментарий в блоке кодом"); @@ -124,7 +124,7 @@ void testParameterSuper() { Assertions.assertThat(diagnosticInfo.getParameters()).hasSize(1); Assertions.assertThat(diagnosticInfo.canLocateOnProject()).isFalse(); - var parameter = diagnosticInfo.getParameters().get(0); + var parameter = diagnosticInfo.getParameters().getFirst(); assertThat(parameter.getDescription()) .isEqualTo("Заявленные языки"); @@ -168,7 +168,7 @@ void testParameterEn() { var diagnosticEnInfo = new DiagnosticInfo(EmptyCodeBlockDiagnostic.class, configuration, stringInterner); // then - assertThat(diagnosticEnInfo.getParameters().get(0).getDescription()) + assertThat(diagnosticEnInfo.getParameters().getFirst().getDescription()) .isEqualTo("Comment as code"); } } diff --git a/src/test/java/com/github/_1c_syntax/bsl/languageserver/documenthighlight/AllKnownTokenTest.java b/src/test/java/com/github/_1c_syntax/bsl/languageserver/documenthighlight/AllKnownTokenTest.java new file mode 100644 index 00000000000..0c7560c460a --- /dev/null +++ b/src/test/java/com/github/_1c_syntax/bsl/languageserver/documenthighlight/AllKnownTokenTest.java @@ -0,0 +1,93 @@ +/* + * This file is a part of BSL Language Server. + * + * Copyright (c) 2018-2026 + * Alexey Sosnoviy , Nikita Fedkin and contributors + * + * SPDX-License-Identifier: LGPL-3.0-or-later + * + * BSL Language Server is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3.0 of the License, or (at your option) any later version. + * + * BSL Language Server is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with BSL Language Server. + */ +package com.github._1c_syntax.bsl.languageserver.documenthighlight; + +import com.github._1c_syntax.bsl.languageserver.semantictokens.strings.SdblTokenTypes; +import com.github._1c_syntax.bsl.parser.BSLLexer; +import com.github._1c_syntax.bsl.parser.SDBLLexer; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +import java.util.ArrayList; +import java.util.List; +import java.util.Set; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * Тесты для проверки того, что обо всех токенах лексера было известно + */ +@SpringBootTest +public class AllKnownTokenTest { + + private static final Set skippedSdblToken = Set.of( + SDBLLexer.WHITE_SPACE, + SDBLLexer.LPAREN, + SDBLLexer.RPAREN, + SDBLLexer.AMPERSAND, + SDBLLexer.ROUTEPOINT_FIELD, + SDBLLexer.INCORRECT_IDENTIFIER, + SDBLLexer.IDENTIFIER, + SDBLLexer.UNKNOWN, + SDBLLexer.PARAMETER_IDENTIFIER, + SDBLLexer.ACTUAL_ACTION_PERIOD_VT, + SDBLLexer.BALANCE_VT, + SDBLLexer.BALANCE_AND_TURNOVERS_VT, + SDBLLexer.BOUNDARIES_VT, + SDBLLexer.DR_CR_TURNOVERS_VT, + SDBLLexer.EXT_DIMENSIONS_VT, + SDBLLexer.RECORDS_WITH_EXT_DIMENSIONS_VT, + SDBLLexer.SCHEDULE_DATA_VT, + SDBLLexer.SLICEFIRST_VT, + SDBLLexer.SLICELAST_VT, + SDBLLexer.TASK_BY_PERFORMER_VT, + SDBLLexer.TURNOVERS_VT + ); + + @Test + void sdblTokens() { + List unknown = new ArrayList<>(); + // токены имею индекс от одного максимального + var endToken = SDBLLexer.VOCABULARY.getMaxTokenType(); + for (int i = 1; i <= endToken; i++) { + var type = SdblTokenTypes.getTokenTypeAndModifiers(i); + if (type == null) { + // проверим на исключения + if (!skippedSdblToken.contains(i)) { + unknown.add("Type=%s, name %s".formatted(i, SDBLLexer.VOCABULARY.getSymbolicName(i))); + } + } + } + + assertThat(unknown).isEmpty(); + } + + @Test + void bslTokens() { + List unknown = new ArrayList<>(); + // токены имею индекс от одного максимального + var endToken = BSLLexer.VOCABULARY.getMaxTokenType(); + // todo реализовать аналог для bsl lexer + + assertThat(unknown).isEmpty(); + } +} diff --git a/src/test/java/com/github/_1c_syntax/bsl/languageserver/documenthighlight/SDBLJoinDocumentHighlightSupplierTest.java b/src/test/java/com/github/_1c_syntax/bsl/languageserver/documenthighlight/SDBLJoinDocumentHighlightSupplierTest.java index 69b5a3def2c..5b6c837720f 100644 --- a/src/test/java/com/github/_1c_syntax/bsl/languageserver/documenthighlight/SDBLJoinDocumentHighlightSupplierTest.java +++ b/src/test/java/com/github/_1c_syntax/bsl/languageserver/documenthighlight/SDBLJoinDocumentHighlightSupplierTest.java @@ -60,11 +60,10 @@ void testLeftKeyword() { // then assertThat(highlights).isNotEmpty(); // Должны подсветиться: ЛЕВОЕ, СОЕДИНЕНИЕ, ПО (первого JOIN) - assertThat(highlights).hasSize(3); + assertThat(highlights).hasSize(2); // Проверяем точные позиции - assertHighlightRange(highlights, 10, 5, 10, 10); // ЛЕВОЕ - assertHighlightRange(highlights, 10, 11, 10, 21); // СОЕДИНЕНИЕ + assertHighlightRange(highlights, 10, 5, 10, 21); // ЛЕВОЕ СОЕДИНЕНИЕ assertHighlightRange(highlights, 11, 8, 11, 10); // ПО } @@ -83,11 +82,10 @@ void testJoinKeyword() { // then assertThat(highlights).isNotEmpty(); - assertThat(highlights).hasSize(3); + assertThat(highlights).hasSize(2); // Проверяем точные позиции - assertHighlightRange(highlights, 10, 5, 10, 10); // ЛЕВОЕ - assertHighlightRange(highlights, 10, 11, 10, 21); // СОЕДИНЕНИЕ + assertHighlightRange(highlights, 10, 5, 10, 21); // ЛЕВОЕ соединение assertHighlightRange(highlights, 11, 8, 11, 10); // ПО } @@ -106,11 +104,10 @@ void testOnKeyword() { // then assertThat(highlights).isNotEmpty(); - assertThat(highlights).hasSize(3); + assertThat(highlights).hasSize(2); // Проверяем точные позиции - assertHighlightRange(highlights, 10, 5, 10, 10); // ЛЕВОЕ - assertHighlightRange(highlights, 10, 11, 10, 21); // СОЕДИНЕНИЕ + assertHighlightRange(highlights, 10, 5, 10, 21); // ЛЕВОЕ СОЕДИНЕНИЕ assertHighlightRange(highlights, 11, 8, 11, 10); // ПО } diff --git a/src/test/java/com/github/_1c_syntax/bsl/languageserver/hover/ModuleSymbolMarkupContentBuilderTest.java b/src/test/java/com/github/_1c_syntax/bsl/languageserver/hover/ModuleSymbolMarkupContentBuilderTest.java index 6edb9785114..c7f712901ac 100644 --- a/src/test/java/com/github/_1c_syntax/bsl/languageserver/hover/ModuleSymbolMarkupContentBuilderTest.java +++ b/src/test/java/com/github/_1c_syntax/bsl/languageserver/hover/ModuleSymbolMarkupContentBuilderTest.java @@ -92,7 +92,7 @@ void testContentFromManagerModule() { assertThat(blocks).hasSizeGreaterThanOrEqualTo(1); // Для ManagerModule используется локализованный mdoRef - assertThat(blocks.get(0)).contains("Справочник.Справочник1"); + assertThat(blocks.getFirst()).contains("Справочник.Справочник1"); } @Test @@ -112,7 +112,7 @@ void testContentFromObjectModule() { assertThat(blocks).hasSizeGreaterThanOrEqualTo(1); // Для ObjectModule используется локализованный mdoRef - assertThat(blocks.get(0)).contains("Справочник.Справочник1"); + assertThat(blocks.getFirst()).contains("Справочник.Справочник1"); } @Test diff --git a/src/test/java/com/github/_1c_syntax/bsl/languageserver/infrastructure/CacheConfigurationTest.java b/src/test/java/com/github/_1c_syntax/bsl/languageserver/infrastructure/CacheConfigurationTest.java index f44c055cb7b..263772b6cb7 100644 --- a/src/test/java/com/github/_1c_syntax/bsl/languageserver/infrastructure/CacheConfigurationTest.java +++ b/src/test/java/com/github/_1c_syntax/bsl/languageserver/infrastructure/CacheConfigurationTest.java @@ -89,7 +89,7 @@ private static void deleteDirectorySilently(Path directory) { } try { - Files.walkFileTree(directory, new SimpleFileVisitor() { + Files.walkFileTree(directory, new SimpleFileVisitor<>() { @Override public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException { try { @@ -99,7 +99,7 @@ public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IO } return FileVisitResult.CONTINUE; } - + @Override public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException { try { diff --git a/src/test/java/com/github/_1c_syntax/bsl/languageserver/inlayhints/CognitiveComplexityInlayHintSupplierTest.java b/src/test/java/com/github/_1c_syntax/bsl/languageserver/inlayhints/CognitiveComplexityInlayHintSupplierTest.java index d7de646c702..72856f0a44b 100644 --- a/src/test/java/com/github/_1c_syntax/bsl/languageserver/inlayhints/CognitiveComplexityInlayHintSupplierTest.java +++ b/src/test/java/com/github/_1c_syntax/bsl/languageserver/inlayhints/CognitiveComplexityInlayHintSupplierTest.java @@ -52,7 +52,7 @@ void testGetInlayHints() { // given var documentContext = TestUtils.getDocumentContextFromFile(FILE_PATH); - MethodSymbol firstMethod = documentContext.getSymbolTree().getMethods().get(0); + MethodSymbol firstMethod = documentContext.getSymbolTree().getMethods().getFirst(); var methodName = firstMethod.getName(); var textDocumentIdentifier = TestUtils.getTextDocumentIdentifier(documentContext.getUri()); diff --git a/src/test/java/com/github/_1c_syntax/bsl/languageserver/inlayhints/CyclomaticComplexityInlayHintSupplierTest.java b/src/test/java/com/github/_1c_syntax/bsl/languageserver/inlayhints/CyclomaticComplexityInlayHintSupplierTest.java index 6dee250ba0d..159ef6e1d0c 100644 --- a/src/test/java/com/github/_1c_syntax/bsl/languageserver/inlayhints/CyclomaticComplexityInlayHintSupplierTest.java +++ b/src/test/java/com/github/_1c_syntax/bsl/languageserver/inlayhints/CyclomaticComplexityInlayHintSupplierTest.java @@ -52,7 +52,7 @@ void testGetInlayHints() { // given var documentContext = TestUtils.getDocumentContextFromFile(FILE_PATH); - MethodSymbol firstMethod = documentContext.getSymbolTree().getMethods().get(0); + MethodSymbol firstMethod = documentContext.getSymbolTree().getMethods().getFirst(); var methodName = firstMethod.getName(); var textDocumentIdentifier = TestUtils.getTextDocumentIdentifier(documentContext.getUri()); diff --git a/src/test/java/com/github/_1c_syntax/bsl/languageserver/inlayhints/SourceDefinedMethodCallInlayHintSupplierTest.java b/src/test/java/com/github/_1c_syntax/bsl/languageserver/inlayhints/SourceDefinedMethodCallInlayHintSupplierTest.java index 3f6f7aa6217..c070c6ae870 100644 --- a/src/test/java/com/github/_1c_syntax/bsl/languageserver/inlayhints/SourceDefinedMethodCallInlayHintSupplierTest.java +++ b/src/test/java/com/github/_1c_syntax/bsl/languageserver/inlayhints/SourceDefinedMethodCallInlayHintSupplierTest.java @@ -56,7 +56,7 @@ void testDefaultInlayHints() { // given var documentContext = TestUtils.getDocumentContextFromFile(FILE_PATH); - MethodSymbol firstMethod = documentContext.getSymbolTree().getMethods().get(0); + MethodSymbol firstMethod = documentContext.getSymbolTree().getMethods().getFirst(); var textDocumentIdentifier = TestUtils.getTextDocumentIdentifier(documentContext.getUri()); var range = firstMethod.getRange(); @@ -97,7 +97,7 @@ void testInlayHintsShowParametersWithTheSameName() { ); var documentContext = TestUtils.getDocumentContextFromFile(FILE_PATH); - MethodSymbol firstMethod = documentContext.getSymbolTree().getMethods().get(0); + MethodSymbol firstMethod = documentContext.getSymbolTree().getMethods().getFirst(); var textDocumentIdentifier = TestUtils.getTextDocumentIdentifier(documentContext.getUri()); var range = firstMethod.getRange(); diff --git a/src/test/java/com/github/_1c_syntax/bsl/languageserver/providers/CallHierarchyProviderTest.java b/src/test/java/com/github/_1c_syntax/bsl/languageserver/providers/CallHierarchyProviderTest.java index 145f22af74d..92a4cee2434 100644 --- a/src/test/java/com/github/_1c_syntax/bsl/languageserver/providers/CallHierarchyProviderTest.java +++ b/src/test/java/com/github/_1c_syntax/bsl/languageserver/providers/CallHierarchyProviderTest.java @@ -267,6 +267,6 @@ private CallHierarchyItem getCallHierarchyItem(Position position) { List items = provider.prepareCallHierarchy(documentContext, params); - return items.get(0); + return items.getFirst(); } } \ No newline at end of file diff --git a/src/test/java/com/github/_1c_syntax/bsl/languageserver/providers/CodeActionProviderTest.java b/src/test/java/com/github/_1c_syntax/bsl/languageserver/providers/CodeActionProviderTest.java index f5e3299376c..03d437ed020 100644 --- a/src/test/java/com/github/_1c_syntax/bsl/languageserver/providers/CodeActionProviderTest.java +++ b/src/test/java/com/github/_1c_syntax/bsl/languageserver/providers/CodeActionProviderTest.java @@ -101,7 +101,7 @@ void testGetCodeActions() { assertThat(codeActions) .extracting(Either::getRight) .hasSizeGreaterThanOrEqualTo(3) - .anyMatch(codeAction -> codeAction.getDiagnostics().contains(diagnostics.get(0))) + .anyMatch(codeAction -> codeAction.getDiagnostics().contains(diagnostics.getFirst())) .anyMatch(codeAction -> codeAction.getDiagnostics().contains(diagnostics.get(1))) .anyMatch(codeAction -> codeAction.getKind().equals(CodeActionKind.QuickFix)) .allMatch(codeAction -> (codeAction.getDiagnostics().size() == 1) == toBoolean(codeAction.getIsPreferred())) diff --git a/src/test/java/com/github/_1c_syntax/bsl/languageserver/providers/DefinitionProviderTest.java b/src/test/java/com/github/_1c_syntax/bsl/languageserver/providers/DefinitionProviderTest.java index 2c481e23284..b0c56bcc4b8 100644 --- a/src/test/java/com/github/_1c_syntax/bsl/languageserver/providers/DefinitionProviderTest.java +++ b/src/test/java/com/github/_1c_syntax/bsl/languageserver/providers/DefinitionProviderTest.java @@ -85,7 +85,7 @@ void testDefinitionOfLocalMethod() { // then assertThat(definitions).hasSize(1); - var definition = definitions.get(0); + var definition = definitions.getFirst(); assertThat(definition.getTargetUri()).isEqualTo(documentContext.getUri().toString()); assertThat(definition.getTargetSelectionRange()).isEqualTo(methodSymbol.getSelectionRange()); @@ -108,7 +108,7 @@ void testDefinitionOfManagerModuleMethod() { // then assertThat(definitions).hasSize(1); - var definition = definitions.get(0); + var definition = definitions.getFirst(); assertThat(definition.getTargetUri()).isEqualTo(managerModule.getUri().toString()); assertThat(definition.getTargetSelectionRange()).isEqualTo(methodSymbol.getSelectionRange()); @@ -134,7 +134,7 @@ void testDefinitionOfCommonModuleName() { // then assertThat(definitions).hasSize(1); - var definition = definitions.get(0); + var definition = definitions.getFirst(); assertThat(definition.getTargetUri()).isEqualTo(commonModule.getUri().toString()); assertThat(definition.getTargetSelectionRange()).isEqualTo(moduleSymbol.getSelectionRange()); diff --git a/src/test/java/com/github/_1c_syntax/bsl/languageserver/providers/DiagnosticProviderTest.java b/src/test/java/com/github/_1c_syntax/bsl/languageserver/providers/DiagnosticProviderTest.java index 2f9818b9017..bb9af8ec584 100644 --- a/src/test/java/com/github/_1c_syntax/bsl/languageserver/providers/DiagnosticProviderTest.java +++ b/src/test/java/com/github/_1c_syntax/bsl/languageserver/providers/DiagnosticProviderTest.java @@ -127,7 +127,7 @@ void testGetDiagnosticReportStructure() { assertThat(fullReport.getItems()).hasSizeGreaterThan(0); // Verify diagnostics have required fields - Diagnostic firstDiagnostic = fullReport.getItems().get(0); + Diagnostic firstDiagnostic = fullReport.getItems().getFirst(); assertThat(firstDiagnostic.getRange()).isNotNull(); assertThat(firstDiagnostic.getMessage()).isNotNull(); assertThat(firstDiagnostic.getSource()).isEqualTo(DiagnosticProvider.SOURCE); diff --git a/src/test/java/com/github/_1c_syntax/bsl/languageserver/providers/DocumentSymbolProviderTest.java b/src/test/java/com/github/_1c_syntax/bsl/languageserver/providers/DocumentSymbolProviderTest.java index 1bd40419069..4cc33fe34bd 100644 --- a/src/test/java/com/github/_1c_syntax/bsl/languageserver/providers/DocumentSymbolProviderTest.java +++ b/src/test/java/com/github/_1c_syntax/bsl/languageserver/providers/DocumentSymbolProviderTest.java @@ -107,14 +107,14 @@ void testDocumentSymbol() { .allMatch(documentSymbol -> documentSymbol.getKind() == SymbolKind.Method) ; - DocumentSymbol method = externalRegion.getChildren().get(0); + DocumentSymbol method = externalRegion.getChildren().getFirst(); assertThat(method.getChildren()) .hasSize(1) .allMatch(documentSymbol -> documentSymbol.getKind() == SymbolKind.Namespace) .allMatch(documentSymbol -> documentSymbol.getName().equals("ВнутренняяОбласть1")) ; - DocumentSymbol internalRegion1 = method.getChildren().get(0); + DocumentSymbol internalRegion1 = method.getChildren().getFirst(); assertThat(internalRegion1.getChildren()) .hasSize(1) .allMatch(documentSymbol -> documentSymbol.getKind() == SymbolKind.Namespace) diff --git a/src/test/java/com/github/_1c_syntax/bsl/languageserver/providers/FormatProviderTest.java b/src/test/java/com/github/_1c_syntax/bsl/languageserver/providers/FormatProviderTest.java index d27bef2efb7..8a0f861321b 100644 --- a/src/test/java/com/github/_1c_syntax/bsl/languageserver/providers/FormatProviderTest.java +++ b/src/test/java/com/github/_1c_syntax/bsl/languageserver/providers/FormatProviderTest.java @@ -89,7 +89,7 @@ void testRangeFormat() throws IOException { // then assertThat(textEdits).hasSize(1); - TextEdit textEdit = textEdits.get(0); + TextEdit textEdit = textEdits.getFirst(); assertThat(textEdit.getNewText()).isEqualTo(formattedFileContent); } @@ -114,7 +114,7 @@ void testFormat() throws IOException { // then assertThat(textEdits).hasSize(1); - TextEdit textEdit = textEdits.get(0); + TextEdit textEdit = textEdits.getFirst(); assertThat(textEdit.getNewText()).isEqualTo(formattedFileContent); } @@ -142,7 +142,7 @@ void testFormatRuKeywords() throws IOException { // then assertThat(textEdits).hasSize(1); - TextEdit textEdit = textEdits.get(0); + TextEdit textEdit = textEdits.getFirst(); assertThat(textEdit.getNewText()).isEqualTo(formattedFileContent); } @@ -170,7 +170,7 @@ void testFormatRuKeywordsWithoutUpperCase() throws IOException { // then assertThat(textEdits).hasSize(1); - TextEdit textEdit = textEdits.get(0); + TextEdit textEdit = textEdits.getFirst(); assertThat(textEdit.getNewText()).isEqualTo(formattedFileContent); } @@ -196,7 +196,7 @@ void testDisabledKeywordsFormatting() throws IOException { // then assertThat(textEdits).hasSize(1); - TextEdit textEdit = textEdits.get(0); + TextEdit textEdit = textEdits.getFirst(); assertThat(textEdit.getNewText()).isEqualTo(fileContent); } @@ -226,7 +226,7 @@ void testFormatEngKeywords() throws IOException { // then assertThat(textEdits).hasSize(1); - TextEdit textEdit = textEdits.get(0); + TextEdit textEdit = textEdits.getFirst(); assertThat(textEdit.getNewText()).isEqualTo(formattedFileContent); } @@ -252,7 +252,7 @@ void testFormatFluent() throws IOException { // then assertThat(textEdits).hasSize(1); - TextEdit textEdit = textEdits.get(0); + TextEdit textEdit = textEdits.getFirst(); assertThat(textEdit.getNewText()).isEqualTo(formattedFileContent); } @@ -275,7 +275,7 @@ void testFormatUnaryMinus() { // then assertThat(textEdits).hasSize(1); - assertThat(textEdits.get(0).getNewText()).isEqualTo("Возврат -1 > -2"); + assertThat(textEdits.getFirst().getNewText()).isEqualTo("Возврат -1 > -2"); } diff --git a/src/test/java/com/github/_1c_syntax/bsl/languageserver/providers/ReferencesProviderTest.java b/src/test/java/com/github/_1c_syntax/bsl/languageserver/providers/ReferencesProviderTest.java index 7c9d0c0f578..0272e577880 100644 --- a/src/test/java/com/github/_1c_syntax/bsl/languageserver/providers/ReferencesProviderTest.java +++ b/src/test/java/com/github/_1c_syntax/bsl/languageserver/providers/ReferencesProviderTest.java @@ -84,7 +84,7 @@ void testLocalMethods() { // then assertThat(references).hasSize(1); - var reference = references.get(0); + var reference = references.getFirst(); assertThat(reference.getUri()).isEqualTo(documentContext.getUri().toString()); assertThat(reference.getRange()).isEqualTo(Ranges.create(4, 0, 10)); diff --git a/src/test/java/com/github/_1c_syntax/bsl/languageserver/providers/SemanticTokensProviderTest.java b/src/test/java/com/github/_1c_syntax/bsl/languageserver/providers/SemanticTokensProviderTest.java index 329acf5e7ed..907607d4648 100644 --- a/src/test/java/com/github/_1c_syntax/bsl/languageserver/providers/SemanticTokensProviderTest.java +++ b/src/test/java/com/github/_1c_syntax/bsl/languageserver/providers/SemanticTokensProviderTest.java @@ -47,6 +47,7 @@ import java.net.URI; import java.nio.charset.StandardCharsets; import java.util.ArrayList; +import java.util.Comparator; import java.util.List; import java.util.Set; @@ -212,7 +213,7 @@ void tokenEncodingFormat_deltaLineAndDeltaStart() { assertThat(decoded).isNotEmpty(); // First token should be at line 0 - assertThat(decoded.get(0).line).isZero(); + assertThat(decoded.getFirst().line).isZero(); // Tokens should be ordered by position for (int i = 1; i < decoded.size(); i++) { @@ -928,8 +929,7 @@ void sdblQuery_complexQueryWithJoin() { new ExpectedToken(7, 56, 3, SemanticTokenTypes.Keyword, "КАК"), new ExpectedToken(7, 60, 5, SemanticTokenTypes.Variable, SemanticTokenModifiers.Declaration, "Курсы"), // Line 8: ИНДЕКСИРОВАТЬ ПО Валюта, Период - new ExpectedToken(8, 3, 13, SemanticTokenTypes.Keyword, "ИНДЕКСИРОВАТЬ"), - new ExpectedToken(8, 17, 2, SemanticTokenTypes.Keyword, "ПО"), + new ExpectedToken(8, 3, 16, SemanticTokenTypes.Keyword, "ИНДЕКСИРОВАТЬ ПО"), // Second query - line 10: ВЫБРАТЬ new ExpectedToken(10, 3, 7, SemanticTokenTypes.Keyword, "ВЫБРАТЬ"), // Line 14: ИЗ ВТ_Курсы КАК ВТ @@ -938,8 +938,7 @@ void sdblQuery_complexQueryWithJoin() { new ExpectedToken(14, 15, 3, SemanticTokenTypes.Keyword, "КАК"), new ExpectedToken(14, 19, 2, SemanticTokenTypes.Variable, SemanticTokenModifiers.Declaration, "ВТ"), // Line 15: ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Валюты КАК СпрВалюта - new ExpectedToken(15, 3, 5, SemanticTokenTypes.Keyword, "ЛЕВОЕ"), - new ExpectedToken(15, 9, 10, SemanticTokenTypes.Keyword, "СОЕДИНЕНИЕ"), + new ExpectedToken(15, 3, 16, SemanticTokenTypes.Keyword, "ЛЕВОЕ СОЕДИНЕНИЕ"), new ExpectedToken(15, 20, 10, SemanticTokenTypes.Namespace, "Справочник"), new ExpectedToken(15, 31, 6, SemanticTokenTypes.Class, "Валюты"), new ExpectedToken(15, 38, 3, SemanticTokenTypes.Keyword, "КАК"), @@ -968,7 +967,7 @@ void sdblQuery_noTokenOverlaps() { // Sort tokens by position var sortedTokens = decoded.stream() .filter(t -> t.line == 1) - .sorted((a, b) -> Integer.compare(a.start, b.start)) + .sorted(Comparator.comparingInt(a -> a.start)) .toList(); // Verify no overlaps @@ -1211,7 +1210,7 @@ void deltaWithModifiedSameDocument_returnsEdits() { var delta = result.getRight(); assertThat(delta.getResultId()).isNotNull(); assertThat(delta.getEdits()).isNotEmpty(); - var edit = delta.getEdits().get(0); + var edit = delta.getEdits().getFirst(); assertThat(edit.getDeleteCount() + (edit.getData() != null ? edit.getData().size() : 0)) .isGreaterThan(0); } @@ -1273,7 +1272,7 @@ void deltaWithLineInsertedAtBeginning_shouldHaveSmallDelta() { // then - should return delta with small edits (just the new token + changed deltaLine) assertThat(result.isRight()).isTrue(); var delta = result.getRight(); - var edit = delta.getEdits().get(0); + var edit = delta.getEdits().getFirst(); // For inserting at beginning: prefix=0, suffix should match most of the old data // deleteCount should be small (just the first deltaLine that changed) // insertData should be the new token + updated first deltaLine @@ -1315,7 +1314,7 @@ void deltaWithLineInsertedInMiddle_shouldReturnOptimalDelta() { assertThat(result.isRight()).isTrue(); var delta = result.getRight(); assertThat(delta.getEdits()).isNotEmpty(); - var edit = delta.getEdits().get(0); + var edit = delta.getEdits().getFirst(); // For insertion in middle: // - prefix matches up to insertion point // - suffix matches tokens after insertion (they have same relative deltaLine) @@ -1385,7 +1384,7 @@ void deltaWithTextInsertedOnSameLine_shouldReturnOptimalDelta() { // Note: "А" is NOT in suffix because its deltaStart changed (boundary token) // - Edit deletes: old "А" (1 token = 5 integers) // - Edit inserts: "Новая", ",", new "А" (3 tokens = 15 integers) - var edit = delta.getEdits().get(0); + var edit = delta.getEdits().getFirst(); assertThat(edit.getStart()) .as("Edit should start after the prefix match (Перем = 5 integers)") .isEqualTo(5); diff --git a/src/test/java/com/github/_1c_syntax/bsl/languageserver/references/ReferenceIndexFillerTest.java b/src/test/java/com/github/_1c_syntax/bsl/languageserver/references/ReferenceIndexFillerTest.java index f14042fe436..45a7e3fc596 100644 --- a/src/test/java/com/github/_1c_syntax/bsl/languageserver/references/ReferenceIndexFillerTest.java +++ b/src/test/java/com/github/_1c_syntax/bsl/languageserver/references/ReferenceIndexFillerTest.java @@ -170,7 +170,7 @@ void testFindVariables() { var references = referenceIndex.getReferencesFrom(scopeMethod.get()); assertThat(references).hasSize(13); - var targetVariable = documentContext.getSymbolTree().getVariables().get(0); + var targetVariable = documentContext.getSymbolTree().getVariables().getFirst(); var usage = referenceIndex.getReferencesTo(targetVariable); assertThat(usage).hasSize(5); } @@ -491,7 +491,7 @@ void testHandleServerContextDocumentRemovedEvent_WithVariables() { referenceIndexFiller.fill(documentContext); var uri = documentContext.getUri(); - var targetVariable = documentContext.getSymbolTree().getVariables().get(0); + var targetVariable = documentContext.getSymbolTree().getVariables().getFirst(); // Проверяем, что ссылки на переменные есть var usage = referenceIndex.getReferencesTo(targetVariable); diff --git a/src/test/java/com/github/_1c_syntax/bsl/languageserver/references/ReferenceIndexTest.java b/src/test/java/com/github/_1c_syntax/bsl/languageserver/references/ReferenceIndexTest.java index 0814ccea39b..4b0427d291e 100644 --- a/src/test/java/com/github/_1c_syntax/bsl/languageserver/references/ReferenceIndexTest.java +++ b/src/test/java/com/github/_1c_syntax/bsl/languageserver/references/ReferenceIndexTest.java @@ -179,7 +179,7 @@ void getReferencesToCommonModuleMethodFromAssignment() { .collect(Collectors.toList()); // then - var reference = referencesTo.get(0); + var reference = referencesTo.getFirst(); assertThat(reference.from()).isEqualTo(methodSymbol); assertThat(reference.symbol()).isEqualTo(calledMethodSymbol); assertThat(reference.selectionRange()).isEqualTo(Ranges.create(8, 26, 45)); @@ -217,7 +217,7 @@ void getReferencesToFullPathModuleMethodFromAssignment() { .collect(Collectors.toList()); // then - var reference = referencesTo.get(0); + var reference = referencesTo.getFirst(); assertThat(reference.from()).isEqualTo(methodSymbol); assertThat(reference.symbol()).isEqualTo(calledMethodSymbol); assertThat(reference.selectionRange()).isEqualTo(Ranges.create(22, 42, 61)); diff --git a/src/test/java/com/github/_1c_syntax/bsl/languageserver/references/SourceDefinedSymbolDeclarationReferenceFinderTest.java b/src/test/java/com/github/_1c_syntax/bsl/languageserver/references/SourceDefinedSymbolDeclarationReferenceFinderTest.java index 8f7353cf70d..126f49f2066 100644 --- a/src/test/java/com/github/_1c_syntax/bsl/languageserver/references/SourceDefinedSymbolDeclarationReferenceFinderTest.java +++ b/src/test/java/com/github/_1c_syntax/bsl/languageserver/references/SourceDefinedSymbolDeclarationReferenceFinderTest.java @@ -40,7 +40,7 @@ void testFindReferenceOnMethodDeclaration() { // given var documentContext = TestUtils.getDocumentContextFromFile("./src/test/resources/references/SourceDefinedSymbolDeclarationReferenceFinder.bsl"); var module = documentContext.getSymbolTree().getModule(); - var method = documentContext.getSymbolTree().getMethods().get(0); + var method = documentContext.getSymbolTree().getMethods().getFirst(); // when var optionalReference = referenceFinder.findReference(documentContext.getUri(), new Position(0, 15)); diff --git a/src/test/java/com/github/_1c_syntax/bsl/languageserver/reporters/GenericReporterTest.java b/src/test/java/com/github/_1c_syntax/bsl/languageserver/reporters/GenericReporterTest.java index 7cfc7b68a75..7822a74d108 100644 --- a/src/test/java/com/github/_1c_syntax/bsl/languageserver/reporters/GenericReporterTest.java +++ b/src/test/java/com/github/_1c_syntax/bsl/languageserver/reporters/GenericReporterTest.java @@ -104,7 +104,7 @@ void report() { var documentContext = TestUtils.getDocumentContext(""); Location location = new Location("file:///fake-uri2.bsl", Ranges.create(0, 2, 2, 3)); - diagnostics.get(0).setRelatedInformation(Collections.singletonList(new DiagnosticRelatedInformation(location, "message"))); + diagnostics.getFirst().setRelatedInformation(Collections.singletonList(new DiagnosticRelatedInformation(location, "message"))); String sourceDir = "."; FileInfo fileInfo = new FileInfo(sourceDir, documentContext, diagnostics); @@ -119,7 +119,7 @@ void report() { assertThat(report).isNotNull(); assertThat(report.getIssues()).isNotNull(); assertThat(report.getIssues()).hasSize(3); - assertThat(report.getIssues().get(0).getPrimaryLocation()).isNotNull(); + assertThat(report.getIssues().getFirst().getPrimaryLocation()).isNotNull(); assertThat(report.getIssues().get(0).getSecondaryLocations()).isNotNull(); assertThat(report.getIssues().get(0).getSecondaryLocations()).hasSize(1); assertThat(report.getIssues().get(2).getRuleId()).isEqualTo(secondInfo.getCode().getStringValue()); diff --git a/src/test/java/com/github/_1c_syntax/bsl/languageserver/reporters/SarifReporterTest.java b/src/test/java/com/github/_1c_syntax/bsl/languageserver/reporters/SarifReporterTest.java index 5577d91a5c7..2417a922d45 100644 --- a/src/test/java/com/github/_1c_syntax/bsl/languageserver/reporters/SarifReporterTest.java +++ b/src/test/java/com/github/_1c_syntax/bsl/languageserver/reporters/SarifReporterTest.java @@ -48,6 +48,7 @@ import java.time.LocalDateTime; import java.util.Collection; import java.util.Collections; +import java.util.List; import java.util.Map; import static org.assertj.core.api.Assertions.assertThat; @@ -106,13 +107,13 @@ void report() { assertThat(report).isNotNull(); - var run = report.getRuns().get(0); + var run = report.getRuns().getFirst(); assertThat(run.getTool().getDriver().getName()).isEqualTo("BSL Language Server"); assertThat(run.getTool().getDriver().getRules()) .hasSize(diagnosticInfos.size()); - var invocation = run.getInvocations().get(0); + var invocation = run.getInvocations().getFirst(); assertThat(invocation.getRuleConfigurationOverrides()) .hasSizeGreaterThan(0) .anyMatch(configurationOverride -> configurationOverride.getDescriptor().getId().equals("Typo") @@ -133,7 +134,7 @@ void report() { .matches(result -> result.getAnalysisTarget().getUri().equals(documentContext.getUri().toString())) .extracting(Result::getLocations) - .extracting(locations -> locations.get(0)) + .extracting(List::getFirst) .extracting(Location::getPhysicalLocation) .extracting(PhysicalLocation::getRegion) diff --git a/src/test/java/com/github/_1c_syntax/bsl/languageserver/utils/ExpressionParseTreeRewriterTest.java b/src/test/java/com/github/_1c_syntax/bsl/languageserver/utils/ExpressionParseTreeRewriterTest.java index ce1adef9d84..589de8535d8 100644 --- a/src/test/java/com/github/_1c_syntax/bsl/languageserver/utils/ExpressionParseTreeRewriterTest.java +++ b/src/test/java/com/github/_1c_syntax/bsl/languageserver/utils/ExpressionParseTreeRewriterTest.java @@ -243,7 +243,7 @@ void canBuildGlobalCallInExpression() { assertThat(binary.getRight()).isInstanceOf(MethodCallNode.class); var call = (MethodCallNode) binary.getRight(); - assertThat(call.arguments().get(0)).isInstanceOf(BinaryOperationNode.class); + assertThat(call.arguments().getFirst()).isInstanceOf(BinaryOperationNode.class); } @Test diff --git a/src/test/java/com/github/_1c_syntax/bsl/languageserver/utils/ModuleReferenceTest.java b/src/test/java/com/github/_1c_syntax/bsl/languageserver/utils/ModuleReferenceTest.java index cda7fdfa3a1..e94c0810b50 100644 --- a/src/test/java/com/github/_1c_syntax/bsl/languageserver/utils/ModuleReferenceTest.java +++ b/src/test/java/com/github/_1c_syntax/bsl/languageserver/utils/ModuleReferenceTest.java @@ -58,7 +58,7 @@ void testDetectCommonModuleExpression() { assertThat(assignments).hasSize(1); - var expression = assignments.get(0).expression(); + var expression = assignments.getFirst().expression(); assertThat(ModuleReference.isCommonModuleExpression(expression, DEFAULT_ACCESSORS)).isTrue(); var moduleName = ModuleReference.extractCommonModuleName(expression, DEFAULT_ACCESSORS); @@ -84,7 +84,7 @@ void testCustomAccessor() { assertThat(assignments).hasSize(1); - var expression = assignments.get(0).expression(); + var expression = assignments.getFirst().expression(); // With default accessors - should not match assertThat(ModuleReference.isCommonModuleExpression(expression, DEFAULT_ACCESSORS)).isFalse();