From f32f9494c156714a9aef6dcce74e36ad04eeaeb0 Mon Sep 17 00:00:00 2001 From: Artur Ayukhanov Date: Sun, 3 Jul 2022 18:29:55 +0300 Subject: [PATCH] =?UTF-8?q?=D0=BF=D0=B0=D0=B4=D0=B0=D1=8E=D1=89=D0=B8?= =?UTF-8?q?=D0=B9=20=D0=BA=D0=B5=D0=B9=D1=81=20=D0=B4=D0=BB=D1=8F=20=D0=BF?= =?UTF-8?q?=D1=80=D0=B8=D1=81=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=D0=BC=20=D1=81?= =?UTF-8?q?=20=D0=BC=D0=B5=D0=BD=D0=B5=D0=B4=D0=B6=D0=B5=D1=80=D0=B0=D0=BC?= =?UTF-8?q?=D0=B8=20=D0=BE=D0=B1=D1=8A=D0=B5=D0=BA=D1=82=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit уточнил пред.тест --- .../references/ReferenceIndexTest.java | 39 +++++++++++++++++++ .../resources/references/ReferenceIndex.bsl | 8 +++- 2 files changed, 46 insertions(+), 1 deletion(-) 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 38a3b86f7ea..dfa2e16b6f5 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 @@ -173,6 +173,7 @@ void getReferencesToCommonModuleMethodFromAssignment() { // when final var referencesTo = referenceIndex.getReferencesTo(calledMethodSymbol).stream() .filter(reference -> reference.getUri().equals(uri)) + .filter(reference -> Ranges.containsRange(methodSymbol.getRange(), reference.toLocation().getRange())) .collect(Collectors.toList()); // then @@ -197,6 +198,44 @@ void getReferencesToCommonModuleMethodFromAssignment() { assertThat(referencesTo).hasSize(3); } + @Test + void getReferencesToFullPathModuleMethodFromAssignment() { + // given + var documentContext = TestUtils.getDocumentContextFromFile(PATH_TO_FILE); + var methodSymbol = documentContext.getSymbolTree().getMethodSymbol("Тест_ВызовЧерезПолноеИмяОбъекта").orElseThrow(); + var commonModuleContext = serverContext.getDocument("InformationRegister.РегистрСведений1", ModuleType.ManagerModule).orElseThrow(); + var calledMethodSymbol = commonModuleContext.getSymbolTree().getMethodSymbol("НеУстаревшаяФункция").orElseThrow(); + + var uri = documentContext.getUri(); + + // when + final var referencesTo = referenceIndex.getReferencesTo(calledMethodSymbol).stream() + .filter(reference -> reference.getUri().equals(uri)) + .filter(reference -> Ranges.containsRange(methodSymbol.getRange(), reference.toLocation().getRange())) + .collect(Collectors.toList()); + + // then + var reference = referencesTo.get(0); + assertThat(reference.getFrom()).isEqualTo(methodSymbol); + assertThat(reference.getSymbol()).isEqualTo(calledMethodSymbol); + assertThat(reference.getSelectionRange()).isEqualTo(Ranges.create(22, 42, 61)); + assertThat(reference.getUri()).isEqualTo(uri); + + reference = referencesTo.get(1); + assertThat(reference.getFrom()).isEqualTo(methodSymbol); + assertThat(reference.getSymbol()).isEqualTo(calledMethodSymbol); + assertThat(reference.getSelectionRange()).isEqualTo(Ranges.create(23, 42, 61)); + assertThat(reference.getUri()).isEqualTo(uri); + + reference = referencesTo.get(2); + assertThat(reference.getFrom()).isEqualTo(methodSymbol); + assertThat(reference.getSymbol()).isEqualTo(calledMethodSymbol); + assertThat(reference.getSelectionRange()).isEqualTo(Ranges.create(24, 38, 57)); + assertThat(reference.getUri()).isEqualTo(uri); + + assertThat(referencesTo).hasSize(3); + } + @Test void getReferencesToCommonModuleMethodWithEqualNameWitMethodParam() { diff --git a/src/test/resources/references/ReferenceIndex.bsl b/src/test/resources/references/ReferenceIndex.bsl index d2826eb75fb..fed32b1ea86 100644 --- a/src/test/resources/references/ReferenceIndex.bsl +++ b/src/test/resources/references/ReferenceIndex.bsl @@ -17,4 +17,10 @@ ПервыйОбщийМодуль.НеУстаревшаяФункция().Добавить(); // ошибка ПервыйОбщийМодуль.НеУстаревшаяФункция().Реквизит = 10; // ошибка Б = ПервыйОбщийМодуль.НеУстаревшаяФункция().Добавить(); // ошибка -КонецПроцедуры \ No newline at end of file +КонецПроцедуры + +Процедура Тест_ВызовЧерезПолноеИмяОбъекта() + А = РегистрыСведений.РегистрСведений1.НеУстаревшаяФункция(); + Б = РегистрыСведений.РегистрСведений1.НеУстаревшаяФункция().Добавить(); + РегистрыСведений.РегистрСведений1.НеУстаревшаяФункция().Реквизит = 10; +КонецПроцедуры