|
21 | 21 | */
|
22 | 22 | package com.github._1c_syntax.bsl.languageserver.diagnostics;
|
23 | 23 |
|
24 |
| -import com.github._1c_syntax.bsl.languageserver.diagnostics.infrastructure.Disabled; |
25 | 24 | import com.github._1c_syntax.bsl.languageserver.diagnostics.metadata.DiagnosticMetadata;
|
26 | 25 | import com.github._1c_syntax.bsl.languageserver.diagnostics.metadata.DiagnosticSeverity;
|
27 | 26 | import com.github._1c_syntax.bsl.languageserver.diagnostics.metadata.DiagnosticTag;
|
|
47 | 46 | import java.util.stream.Collectors;
|
48 | 47 | import java.util.stream.Stream;
|
49 | 48 |
|
50 |
| -@Disabled |
51 | 49 | @DiagnosticMetadata(
|
52 | 50 | type = DiagnosticType.ERROR,
|
53 | 51 | severity = DiagnosticSeverity.CRITICAL,
|
|
61 | 59 | )
|
62 | 60 | public class FieldsFromJoinsWithoutIsNullDiagnostic extends AbstractSDBLVisitorDiagnostic {
|
63 | 61 |
|
| 62 | + // схема расчета - находится поле из соединения, |
| 63 | + // далее идет поиск вверх по родительским узлам для проверки вхождения в разных вариациях ЕСТЬNULL или ЕСТЬ NULL |
| 64 | + // для оптимизации ищем вверх не до начального узла всего дерева, а до узла, в котором искать уже нет смысла |
| 65 | + |
64 | 66 | private static final Integer SELECT_ROOT = SDBLParser.RULE_selectedField;
|
65 | 67 | private static final Collection<Integer> SELECT_STATEMENTS = Set.of(SELECT_ROOT, SDBLParser.RULE_builtInFunctions,
|
66 | 68 | SDBLParser.RULE_isNullPredicate);
|
67 | 69 |
|
68 |
| - private static final Integer WHERE_ROOT = SDBLParser.RULE_predicate; |
| 70 | + private static final Integer WHERE_ROOT = SDBLParser.RULE_query; |
69 | 71 | private static final Collection<Integer> WHERE_STATEMENTS = Set.of(WHERE_ROOT, SDBLParser.RULE_builtInFunctions,
|
70 | 72 | SDBLParser.RULE_isNullPredicate);
|
71 | 73 |
|
|
0 commit comments