Skip to content

Commit c3c2cc9

Browse files
committed
Улучшена обработка описаний оповещения
1 parent c1d35c8 commit c3c2cc9

File tree

2 files changed

+30
-3
lines changed

2 files changed

+30
-3
lines changed

src/main/java/com/github/_1c_syntax/bsl/languageserver/references/ReferenceIndexFiller.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,9 @@ private void addMethodCall(String mdoRef, ModuleType moduleType, String methodNa
206206
}
207207

208208
private void addCallbackMethodCall(BSLParser.CallParamContext methodName, String mdoRef) {
209+
if (mdoRef.isEmpty()){
210+
return;
211+
}
209212
Methods.getMethodName(methodName).ifPresent((Token methodNameToken) -> {
210213
if (!mdoRef.equals(MdoRefBuilder.getMdoRef(documentContext))) {
211214
checkCall(mdoRef, methodNameToken);
@@ -221,8 +224,14 @@ private void addCallbackMethodCall(BSLParser.CallParamContext methodName, String
221224
}
222225

223226
private String getModule(BSLParser.CallParamContext callParamContext) {
224-
return NotifyDescription.getFirstMember(callParamContext)
227+
final var complexIdentifierContext1 = NotifyDescription.getFirstMember(callParamContext)
225228
.map(BSLParser.MemberContext::complexIdentifier)
229+
.filter(complexIdentifierContext -> complexIdentifierContext.IDENTIFIER() != null)
230+
.filter(complexIdentifierContext -> complexIdentifierContext.modifier().isEmpty());
231+
if (complexIdentifierContext1.isEmpty()){
232+
return "";
233+
}
234+
return complexIdentifierContext1
226235
.filter(Predicate.not(Modules::isThisObject))
227236
.map(complexIdentifier -> MdoRefBuilder.getMdoRef(documentContext, complexIdentifier))
228237
.orElse(MdoRefBuilder.getMdoRef(documentContext));

src/test/resources/references/ReferenceIndexNotifyDescription.bsl

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,28 @@
99
ЭтотОбъект
1010
);
1111

12+
// Такое объявление не ловим
13+
ОписаниеОповещения2 = Новый ОписаниеОповещения(
14+
"ОбработчикОписаниеОповещения",
15+
ОбщийМодуль("Имя"),
16+
,
17+
"ОшибкаОписаниеОповещения",
18+
ОбщегоНазначения.ОбщийМодуль("Имя")
19+
);
20+
21+
// Такое объявление не ловим
22+
ОписаниеОповещения3 = Новый ОписаниеОповещения(
23+
"ОбработчикОписаниеОповещения",
24+
"ИмяМодуля",
25+
,
26+
"ОшибкаОписаниеОповещения",
27+
"ДругоеИмяМодуля"
28+
);
29+
1230
// Такое объявление не ловим
1331
ОбработчикОписаниеОповещения = "ОбработчикОписаниеОповещенияВПеременной";
1432
ОшибкаОписаниеОповещения = "ОшибкаОписаниеОповещенияВПеременной";
15-
ОписаниеОповещения2 = Новый ОписаниеОповещения(
33+
ОписаниеОповещения4 = Новый ОписаниеОповещения(
1634
ОбработчикОписаниеОповещения,
1735
ЭтотОбъект,
1836
,
@@ -26,7 +44,7 @@
2644
ПараметрыОбработчика[1] = ЭтотОбъект;
2745
ПараметрыОбработчика[3] = "ОшибкаОписаниеОповещения";
2846
ПараметрыОбработчика[4] = ЭтотОбъект;
29-
ОписаниеОповещения3 = Новый("ОписаниеОповещения", ПараметрыОбработчика);
47+
ОписаниеОповещения5 = Новый("ОписаниеОповещения", ПараметрыОбработчика);
3048

3149
КонецПроцедуры
3250

0 commit comments

Comments
 (0)