1c-syntax / bsl-language-server

Реализация Language Server Protocol для языка 1C (BSL)
https://1c-syntax.github.io/bsl-language-server
Other
301 stars 106 forks source link

[BUG] FieldsFromJoinsWithoutIsNull NPE #2724

Closed artbear closed 2 years ago

artbear commented 2 years ago

Диагностика

FieldsFromJoinsWithoutIsNull

Версия

ночная сборка от 01.04.2022 на базе v0.20.0-rc.2

Описание ошибки диагностики

Пример кода

ERROR: Diagnostic computation error.
File: file:///.../src/epf/����/����/Forms/������������������1�/Ext/Form/Module.bsl
Diagnostic: Either [
  left = FieldsFromJoinsWithoutIsNull
  right = null
]
java.lang.NullPointerException: null
    at org.antlr.v4.runtime.tree.Trees._findAllNodes(Trees.java:171)
    at org.antlr.v4.runtime.tree.Trees.findAllNodes(Trees.java:154)
    at org.antlr.v4.runtime.tree.Trees.findAllRuleNodes(Trees.java:149)
    at com.github._1c_syntax.bsl.languageserver.utils.Trees.findAllRuleNodes(Trees.java:67)
    at com.github._1c_syntax.bsl.languageserver.diagnostics.FieldsFromJoinsWithoutIsNullDiagnostic.checkStatements(FieldsFromJoinsWithoutIsNullDiagnostic.java:171)
    at com.github._1c_syntax.bsl.languageserver.diagnostics.FieldsFromJoinsWithoutIsNullDiagnostic.lambda$checkAllJoins$16(FieldsFromJoinsWithoutIsNullDiagnostic.java:234)
    at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source)
    at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source)
    at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source)
    at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(Unknown Source)
    at java.base/java.util.stream.ReferencePipeline$Head.forEach(Unknown Source)
    at java.base/java.util.stream.ReferencePipeline$7$1.accept(Unknown Source)
    at java.base/java.util.stream.Streams$StreamBuilderImpl.forEachRemaining(Unknown Source)
    at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source)
    at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)
    at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source)
    at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source)
    at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source)
    at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source)
    at com.github._1c_syntax.bsl.languageserver.diagnostics.FieldsFromJoinsWithoutIsNullDiagnostic.checkAllJoins(FieldsFromJoinsWithoutIsNullDiagnostic.java:234)
    at com.github._1c_syntax.bsl.languageserver.diagnostics.FieldsFromJoinsWithoutIsNullDiagnostic.lambda$checkQuery$3(FieldsFromJoinsWithoutIsNullDiagnostic.java:127)
    at java.base/java.util.Optional.ifPresent(Unknown Source)
    at com.github._1c_syntax.bsl.languageserver.diagnostics.FieldsFromJoinsWithoutIsNullDiagnostic.checkQuery(FieldsFromJoinsWithoutIsNullDiagnostic.java:123)
    at com.github._1c_syntax.bsl.languageserver.diagnostics.FieldsFromJoinsWithoutIsNullDiagnostic.lambda$visitJoinPart$0(FieldsFromJoinsWithoutIsNullDiagnostic.java:84)
    at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source)
    at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source)
    at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source)
    at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source)
    at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source)
    at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source)
    at java.base/java.util.Collections$2.tryAdvance(Unknown Source)
    at java.base/java.util.Collections$2.forEachRemaining(Unknown Source)
    at java.base/java.util.stream.ReferencePipeline$Head.forEach(Unknown Source)
    at java.base/java.util.stream.ReferencePipeline$7$1.accept(Unknown Source)
    at java.base/java.util.stream.Streams$StreamBuilderImpl.forEachRemaining(Unknown Source)
    at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source)
    at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)
    at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source)
    at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source)
    at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source)
    at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source)
    at com.github._1c_syntax.bsl.languageserver.diagnostics.FieldsFromJoinsWithoutIsNullDiagnostic.visitJoinPart(FieldsFromJoinsWithoutIsNullDiagnostic.java:84)
    at com.github._1c_syntax.bsl.languageserver.diagnostics.FieldsFromJoinsWithoutIsNullDiagnostic.visitJoinPart(FieldsFromJoinsWithoutIsNullDiagnostic.java:49)
    at com.github._1c_syntax.bsl.parser.SDBLParser$JoinPartContext.accept(SDBLParser.java:6301)
    at org.antlr.v4.runtime.tree.AbstractParseTreeVisitor.visitChildren(AbstractParseTreeVisitor.java:48)
    at com.github._1c_syntax.bsl.parser.SDBLParserBaseVisitor.visitDataSource(SDBLParserBaseVisitor.java:419)
    at com.github._1c_syntax.bsl.parser.SDBLParser$DataSourceContext.accept(SDBLParser.java:5690)
    at org.antlr.v4.runtime.tree.AbstractParseTreeVisitor.visitChildren(AbstractParseTreeVisitor.java:48)
    at com.github._1c_syntax.bsl.parser.SDBLParserBaseVisitor.visitDataSources(SDBLParserBaseVisitor.java:411)
    at com.github._1c_syntax.bsl.parser.SDBLParser$DataSourcesContext.accept(SDBLParser.java:[560](https://git-1c.infostart.ru/Infostart/ka/-/jobs/33615#L560)1)
    at org.antlr.v4.runtime.tree.AbstractParseTreeVisitor.visitChildren(AbstractParseTreeVisitor.java:48)
    at com.github._1c_syntax.bsl.parser.SDBLParserBaseVisitor.visitQuery(SDBLParserBaseVisitor.java:91)
    at com.github._1c_syntax.bsl.parser.SDBLParser$QueryContext.accept(SDBLParser.java:833)
    at org.antlr.v4.runtime.tree.AbstractParseTreeVisitor.visitChildren(AbstractParseTreeVisitor.java:48)
    at com.github._1c_syntax.bsl.parser.SDBLParserBaseVisitor.visitUnion(SDBLParserBaseVisitor.java:83)
    at com.github._1c_syntax.bsl.parser.SDBLParser$UnionContext.accept(SDBLParser.java:708)
    at org.antlr.v4.runtime.tree.AbstractParseTreeVisitor.visitChildren(AbstractParseTreeVisitor.java:48)
    at com.github._1c_syntax.bsl.parser.SDBLParserBaseVisitor.visitSubquery(SDBLParserBaseVisitor.java:75)
    at com.github._1c_syntax.bsl.parser.SDBLParser$SubqueryContext.accept(SDBLParser.java:618)
    at org.antlr.v4.runtime.tree.AbstractParseTreeVisitor.visitChildren(AbstractParseTreeVisitor.java:48)

Скриншоты

Дополнительная информация

nixel2007 commented 2 years ago

Пример кода?

artbear commented 2 years ago

Пример кода не могу найти, но причина понятна, ПР сейчас делаю