From 68e87770f9153db29e929dacef2b2d5d9fb092d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=B2=D0=B0=D0=BD=D0=BE=D0=B2=20=D0=AD=D0=B4=D1=83?= =?UTF-8?q?=D0=B0=D1=80=D0=B4?= Date: Fri, 3 May 2024 20:23:44 +0300 Subject: [PATCH 1/2] =?UTF-8?q?=D0=9D=D0=B5=D0=B2=D0=B5=D1=80=D0=BD=D0=BE?= =?UTF-8?q?=D0=B5=20=D0=BE=D0=BF=D0=B8=D1=81=D0=B0=D0=BD=D0=B8=D0=B5=20?= =?UTF-8?q?=D0=BF=D0=B5=D1=80=D0=B5=D0=BC=D0=B5=D0=BD=D0=BD=D0=BE=D0=B9=20?= =?UTF-8?q?=D0=B2=20=D1=86=D0=B8=D0=BA=D0=BB=D0=B5=20"=D0=94=D0=BB=D1=8F?= =?UTF-8?q?=20=D0=BA=D0=B0=D0=B6=D0=B4=D0=BE=D0=B3=D0=BE"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Как описание переменной бралось описание ближайшей переменной описанной в блоке Перем. Изменил поведение, как описание берется "висящий" комментарий в строке с первой строкой описания цикла --- .../context/computer/VariableSymbolComputer.java | 12 ++++++++++++ .../context/computer/VariableSymbolTest.java | 8 ++++---- .../resources/context/symbol/variableSymbolTest.bsl | 6 +++++- 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/context/computer/VariableSymbolComputer.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/context/computer/VariableSymbolComputer.java index e902d03b770..1b59ca1f199 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/context/computer/VariableSymbolComputer.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/context/computer/VariableSymbolComputer.java @@ -229,6 +229,18 @@ private Optional createDescription(BSLParser.LValueContext ); } + private Optional createDescription(BSLParser.ForEachStatementContext ctx) { + var trailingComments = Trees.getTrailingComment(documentContext.getTokens(), ctx.getStart()); + + if (trailingComments.isEmpty()) { + return Optional.empty(); + } + + return Optional.of( + new VariableDescription(Collections.emptyList(), trailingComments) + ); + } + private Optional createDescription(BSLParserRuleContext ctx) { List tokens = documentContext.getTokens(); List comments = new ArrayList<>(); diff --git a/src/test/java/com/github/_1c_syntax/bsl/languageserver/context/computer/VariableSymbolTest.java b/src/test/java/com/github/_1c_syntax/bsl/languageserver/context/computer/VariableSymbolTest.java index 152daa91ce3..6c6584c924c 100644 --- a/src/test/java/com/github/_1c_syntax/bsl/languageserver/context/computer/VariableSymbolTest.java +++ b/src/test/java/com/github/_1c_syntax/bsl/languageserver/context/computer/VariableSymbolTest.java @@ -52,7 +52,7 @@ void setup() { @Test void testVariableSymbolDescription() { - assertThat(variableSymbols).hasSize(19); + assertThat(variableSymbols).hasSize(20); assertThat(variableSymbols) .filteredOn(variableSymbol -> variableSymbol.getDescription().isEmpty()) @@ -69,7 +69,7 @@ void testVariableSymbolDescription() { assertThat(variableSymbols) .filteredOn(variableSymbol -> variableSymbol.getDescription().isPresent()) - .hasSize(10) + .hasSize(11) .anyMatch(variableSymbol -> variableSymbol.getRange().equals(Ranges.create(2, 6, 32))) .anyMatch(variableSymbol -> variableSymbol.getRange().equals(Ranges.create(6, 6, 33))) .anyMatch(variableSymbol -> variableSymbol.getRange().equals(Ranges.create(8, 6, 33))) @@ -92,7 +92,7 @@ void testVariableDescriptionRange() { .collect(Collectors.toList()); assertThat(variableDescriptions) - .hasSize(10) + .hasSize(11) .filteredOn(variableDescription -> !variableDescription.getDescription().equals("")) .hasSize(5) .anyMatch(variableDescription -> variableDescription.getRange().equals(Ranges.create(1, 0, 18))) @@ -105,7 +105,7 @@ void testVariableDescriptionRange() { assertThat(variableDescriptions) .extracting(VariableDescription::getTrailingDescription) .filteredOn(Optional::isPresent) - .hasSize(7) + .hasSize(8) .extracting(Optional::get) .anyMatch(trailingDescription -> trailingDescription.getRange().equals(Ranges.create(8, 35, 55))) .anyMatch(variableDescription -> variableDescription.getRange().equals(Ranges.create(19, 20, 42))) diff --git a/src/test/resources/context/symbol/variableSymbolTest.bsl b/src/test/resources/context/symbol/variableSymbolTest.bsl index de17b2730e2..dd32f9c4bf8 100644 --- a/src/test/resources/context/symbol/variableSymbolTest.bsl +++ b/src/test/resources/context/symbol/variableSymbolTest.bsl @@ -55,4 +55,8 @@ ПеременнаяСоздаваемаяВКодеВнеМетода = Неопределенно; ПеременнаяСоздаваемаяВКодеВнеМетодаВторойПример = МойМетод(); -А.ЭтоНеПеременная = Неопределенно; \ No newline at end of file +А.ЭтоНеПеременная = Неопределенно; + +Для Каждого Метод Из Методы Цикл // Висячий комментарий для цикла + МойМетод(Метод); +КонецЦикла; \ No newline at end of file From c1ef968d2797624c6ae43f99d858647b737aa686 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=B2=D0=B0=D0=BD=D0=BE=D0=B2=20=D0=AD=D0=B4=D1=83?= =?UTF-8?q?=D0=B0=D1=80=D0=B4?= Date: Wed, 29 May 2024 20:23:02 +0300 Subject: [PATCH 2/2] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D0=B8?= =?UTF-8?q?=20=D0=BE=D0=BF=D1=80=D0=B5=D0=B4=D0=B5=D0=BB=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D1=8F=20=D0=BE=D0=BF=D0=B8=D1=81=D0=B0=D0=BD=D0=B8=D1=8F=20?= =?UTF-8?q?=D0=BF=D0=B5=D1=80=D0=B5=D0=BC=D0=B5=D0=BD=D0=BD=D0=BE=D0=B9=20?= =?UTF-8?q?=D0=B4=D0=BB=D1=8F=20=D1=86=D0=B8=D0=BA=D0=BB=D0=B0=20=D0=94?= =?UTF-8?q?=D0=BB=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../computer/VariableSymbolComputer.java | 14 +++++++++++++- .../context/computer/VariableSymbolTest.java | 19 ++++++++++++------- .../context/symbol/variableSymbolTest.bsl | 14 +++++++++++++- 3 files changed, 38 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/context/computer/VariableSymbolComputer.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/context/computer/VariableSymbolComputer.java index 1b59ca1f199..ef1da40a5e6 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/context/computer/VariableSymbolComputer.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/context/computer/VariableSymbolComputer.java @@ -230,7 +230,19 @@ private Optional createDescription(BSLParser.LValueContext } private Optional createDescription(BSLParser.ForEachStatementContext ctx) { - var trailingComments = Trees.getTrailingComment(documentContext.getTokens(), ctx.getStart()); + var trailingComments = Trees.getTrailingComment(documentContext.getTokens(), ctx.IDENTIFIER().getSymbol()); + + if (trailingComments.isEmpty()) { + return Optional.empty(); + } + + return Optional.of( + new VariableDescription(Collections.emptyList(), trailingComments) + ); + } + + private Optional createDescription(BSLParser.ForStatementContext ctx) { + var trailingComments = Trees.getTrailingComment(documentContext.getTokens(), ctx.IDENTIFIER().getSymbol()); if (trailingComments.isEmpty()) { return Optional.empty(); diff --git a/src/test/java/com/github/_1c_syntax/bsl/languageserver/context/computer/VariableSymbolTest.java b/src/test/java/com/github/_1c_syntax/bsl/languageserver/context/computer/VariableSymbolTest.java index 6c6584c924c..453e5e766e5 100644 --- a/src/test/java/com/github/_1c_syntax/bsl/languageserver/context/computer/VariableSymbolTest.java +++ b/src/test/java/com/github/_1c_syntax/bsl/languageserver/context/computer/VariableSymbolTest.java @@ -52,11 +52,11 @@ void setup() { @Test void testVariableSymbolDescription() { - assertThat(variableSymbols).hasSize(20); + assertThat(variableSymbols).hasSize(23); assertThat(variableSymbols) .filteredOn(variableSymbol -> variableSymbol.getDescription().isEmpty()) - .hasSize(9) + .hasSize(11) .anyMatch(variableSymbol -> variableSymbol.getRange().equals(Ranges.create(12, 6, 34))) .anyMatch(variableSymbol -> variableSymbol.getRange().equals(Ranges.create(14, 6, 27))) .anyMatch(variableSymbol -> variableSymbol.getRange().equals(Ranges.create(16, 6, 17))) @@ -65,11 +65,12 @@ void testVariableSymbolDescription() { .anyMatch(variableSymbol -> variableSymbol.getRange().equals(Ranges.create(32, 31, 59))) .anyMatch(variableSymbol -> variableSymbol.getRange().equals(Ranges.create(33, 10, 19))) .anyMatch(variableSymbol -> variableSymbol.getRange().equals(Ranges.create(55, 0, 35))) - .anyMatch(variableSymbol -> variableSymbol.getRange().equals(Ranges.create(56, 0, 47))); + .anyMatch(variableSymbol -> variableSymbol.getRange().equals(Ranges.create(56, 0, 47))) + ; assertThat(variableSymbols) .filteredOn(variableSymbol -> variableSymbol.getDescription().isPresent()) - .hasSize(11) + .hasSize(12) .anyMatch(variableSymbol -> variableSymbol.getRange().equals(Ranges.create(2, 6, 32))) .anyMatch(variableSymbol -> variableSymbol.getRange().equals(Ranges.create(6, 6, 33))) .anyMatch(variableSymbol -> variableSymbol.getRange().equals(Ranges.create(8, 6, 33))) @@ -92,7 +93,7 @@ void testVariableDescriptionRange() { .collect(Collectors.toList()); assertThat(variableDescriptions) - .hasSize(11) + .hasSize(12) .filteredOn(variableDescription -> !variableDescription.getDescription().equals("")) .hasSize(5) .anyMatch(variableDescription -> variableDescription.getRange().equals(Ranges.create(1, 0, 18))) @@ -105,13 +106,15 @@ void testVariableDescriptionRange() { assertThat(variableDescriptions) .extracting(VariableDescription::getTrailingDescription) .filteredOn(Optional::isPresent) - .hasSize(8) + .hasSize(9) .extracting(Optional::get) .anyMatch(trailingDescription -> trailingDescription.getRange().equals(Ranges.create(8, 35, 55))) .anyMatch(variableDescription -> variableDescription.getRange().equals(Ranges.create(19, 20, 42))) .anyMatch(variableDescription -> variableDescription.getRange().equals(Ranges.create(24, 20, 42))) .anyMatch(variableDescription -> variableDescription.getRange().equals(Ranges.create(35, 21, 43))) .anyMatch(variableDescription -> variableDescription.getRange().equals(Ranges.create(39, 21, 43))) + .anyMatch(variableDescription -> variableDescription.getRange().equals(Ranges.create(63, 45, 77))) + .anyMatch(variableDescription -> variableDescription.getRange().equals(Ranges.create(71, 38, 70))) ; } @@ -121,7 +124,7 @@ void testVariableNameRange() { assertThat(variableSymbols) .filteredOn(variableSymbol -> variableSymbol.getDescription().isEmpty()) - .hasSize(9) + .hasSize(11) .anyMatch(variableName -> variableName.getVariableNameRange().equals(Ranges.create(12, 6, 34))) .anyMatch(variableName -> variableName.getVariableNameRange().equals(Ranges.create(14, 6, 27))) .anyMatch(variableName -> variableName.getVariableNameRange().equals(Ranges.create(16, 6, 17))) @@ -131,6 +134,8 @@ void testVariableNameRange() { .anyMatch(variableName -> variableName.getVariableNameRange().equals(Ranges.create(33, 10, 19))) .anyMatch(variableName -> variableName.getVariableNameRange().equals(Ranges.create(55, 0, 35))) .anyMatch(variableName -> variableName.getVariableNameRange().equals(Ranges.create(56, 0, 47))) + .anyMatch(variableName -> variableName.getVariableNameRange().equals(Ranges.create(59, 12, 30))) + .anyMatch(variableName -> variableName.getVariableNameRange().equals(Ranges.create(67, 4, 22))) ; } diff --git a/src/test/resources/context/symbol/variableSymbolTest.bsl b/src/test/resources/context/symbol/variableSymbolTest.bsl index dd32f9c4bf8..bf6e7ce5f32 100644 --- a/src/test/resources/context/symbol/variableSymbolTest.bsl +++ b/src/test/resources/context/symbol/variableSymbolTest.bsl @@ -57,6 +57,18 @@ ПеременнаяСоздаваемаяВКодеВнеМетодаВторойПример = МойМетод(); А.ЭтоНеПеременная = Неопределенно; -Для Каждого Метод Из Методы Цикл // Висячий комментарий для цикла +Для Каждого МетодБезКоментария Из Методы Цикл + МойМетод(Метод); +КонецЦикла; + +Для Каждого МетодСКоментарием Из Методы Цикл // Висячий комментарий для цикла + МойМетод(Метод); +КонецЦикла; + +Для СчДляБезКоментария = 1 По 100 Цикл + МойМетод(Метод); +КонецЦикла; + +Для СчДляСКоментарием = 1 По 100 Цикл // Висячий комментарий для цикла МойМетод(Метод); КонецЦикла; \ No newline at end of file