Skip to content

Commit 221e1aa

Browse files
committed
исправления из ПР, пропавшие после мержа
1 parent dd26ec0 commit 221e1aa

File tree

2 files changed

+37
-20
lines changed

2 files changed

+37
-20
lines changed

src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/FieldsFromJoinsWithoutIsNullDiagnostic.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,8 @@
6060
public class FieldsFromJoinsWithoutIsNullDiagnostic extends AbstractSDBLVisitorDiagnostic {
6161

6262
private static final Integer SELECT_ROOT = SDBLParser.RULE_selectedField;
63-
private static final Collection<Integer> SELECT_STATEMENTS = Set.of(SELECT_ROOT, SDBLParser.RULE_builtInFunctions);
63+
private static final Collection<Integer> SELECT_STATEMENTS = Set.of(SELECT_ROOT, SDBLParser.RULE_builtInFunctions,
64+
SDBLParser.RULE_isNullPredicate);
6465

6566
private static final Integer WHERE_ROOT = SDBLParser.RULE_predicate;
6667
private static final Collection<Integer> WHERE_STATEMENTS = Set.of(WHERE_ROOT, SDBLParser.RULE_builtInFunctions,
@@ -162,7 +163,7 @@ private static boolean haveExprNotWithParens(SDBLParser.PredicateContext ctx) {
162163
}
163164

164165
private void checkSelect(String tableName, SDBLParser.SelectedFieldsContext columns) {
165-
checkStatements(tableName, columns, SELECT_STATEMENTS, SELECT_ROOT, false);
166+
checkStatements(tableName, columns, SELECT_STATEMENTS, SELECT_ROOT, true);
166167
}
167168

168169
private void checkStatements(String tableName, BSLParserRuleContext expression, Collection<Integer> statements,
@@ -205,7 +206,6 @@ private static boolean haveIsNullOperator(BSLParserRuleContext ctx) {
205206
return Optional.of(ctx)
206207
.filter(SDBLParser.IsNullPredicateContext.class::isInstance)
207208
.map(SDBLParser.IsNullPredicateContext.class::cast)
208-
.filter(isNullPredicateContext -> isNullPredicateContext.NOT() == null)
209209
.isPresent();
210210
}
211211

src/test/resources/diagnostics/FieldsFromJoinsWithoutIsNullDiagnostic.bsl

Lines changed: 34 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -207,20 +207,37 @@
207207
|";
208208
КонецПроцедуры
209209

210-
// Разрыв в соединении роняет с npe
211-
Запрос = "ВЫБРАТЬ
212-
| ДополнительныеСведения.КодИФНСФЛ КАК КодИФНСФЛ
213-
|ИЗ
214-
| РегистрСведений.АдресныеОбъекты КАК АдресныеОбъектыУровень0
215-
|
216-
| ОБЪЕДИНИТЬ ВСЕ
217-
|
218-
| ВЫБРАТЬ
219-
| ДополнительныеСведения.КодИФНСФЛ
220-
|ИЗ
221-
| РегистрСведений.АдресныеОбъекты КАК АдресныеОбъектыУровень0
222-
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АдресныеОбъекты КАК АдресныеОбъектыУровень1
223-
| ПО АдресныеОбъектыУровень0.РодительскийИдентификатор = АдресныеОбъектыУровень1.Идентификатор
224-
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений."+АдресныеОбъекты+" КАК АдресныеОбъектыУровень2
225-
| ПО (АдресныеОбъектыУровень1.РодительскийИдентификатор = АдресныеОбъектыУровень2.Идентификатор)
226-
|";
210+
Процедура Тест16_Выбор_Есть_пробел_NULL_ЛевоеСоединение()
211+
Запрос = Новый Запрос;
212+
Запрос.Текст =
213+
"ВЫБРАТЬ
214+
| Сотрудники16.Ссылка ЕСТЬ NULL КАК Флаг, // не ошибка
215+
| Сотрудники16.Ссылка ЕСТЬ НЕ NULL КАК Флаг2, // не ошибка
216+
| ВЫБОР
217+
| КОГДА Сотрудники16.Ссылка ЕСТЬ NULL // не ошибка
218+
| ТОГДА ИСТИНА
219+
| ИНАЧЕ Ложь
220+
| КОНЕЦ КАК Флаг3
221+
|ИЗ Справочник.Склады КАК Склады16
222+
|ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Сотрудники КАК Сотрудники16
223+
|ПО Склады16.Кладовщик = Сотрудники16.Ссылка
224+
|";
225+
КонецПроцедуры
226+
227+
// Разрыв в соединении роняет с npe
228+
Запрос = "ВЫБРАТЬ
229+
| ДополнительныеСведения.КодИФНСФЛ КАК КодИФНСФЛ
230+
|ИЗ
231+
| РегистрСведений.АдресныеОбъекты КАК АдресныеОбъектыУровень0
232+
|
233+
| ОБЪЕДИНИТЬ ВСЕ
234+
|
235+
| ВЫБРАТЬ
236+
| ДополнительныеСведения.КодИФНСФЛ
237+
|ИЗ
238+
| РегистрСведений.АдресныеОбъекты КАК АдресныеОбъектыУровень0
239+
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АдресныеОбъекты КАК АдресныеОбъектыУровень1
240+
| ПО АдресныеОбъектыУровень0.РодительскийИдентификатор = АдресныеОбъектыУровень1.Идентификатор
241+
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений."+АдресныеОбъекты+" КАК АдресныеОбъектыУровень2
242+
| ПО (АдресныеОбъектыУровень1.РодительскийИдентификатор = АдресныеОбъектыУровень2.Идентификатор)
243+
|";

0 commit comments

Comments
 (0)