Class AbstractMagicValueDiagnostic
java.lang.Object
org.antlr.v4.runtime.tree.AbstractParseTreeVisitor<ParseTree>
com.github._1c_syntax.bsl.parser.BSLParserBaseVisitor<ParseTree>
com.github._1c_syntax.bsl.languageserver.diagnostics.AbstractVisitorDiagnostic
com.github._1c_syntax.bsl.languageserver.diagnostics.AbstractMagicValueDiagnostic
- All Implemented Interfaces:
BSLDiagnostic, BSLParserVisitor<ParseTree>, ParseTreeVisitor<ParseTree>
- Direct Known Subclasses:
MagicDateDiagnostic, MagicNumberDiagnostic
Абстрактный базовый класс для диагностик магических значений (чисел и дат).
Содержит общую логику проверки использования значений в структурах и соответствиях.
-
Field Summary
Fields inherited from class AbstractVisitorDiagnostic
diagnosticStorage, documentContext, info -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected static Optional<BSLParser.ExpressionContext> getExpression(@Nullable BSLParser.ConstValueContext constValue) Получить ExpressionContext из Optional узла.protected static Optional<BSLParser.ExpressionContext> Получить ExpressionContext из узла AST.protected static booleaninsideContext(@Nullable BSLParser.ExpressionContext expression, Class<? extends ParserRuleContext> contextClass) Универсальный метод для проверки контекста.protected static booleanПроверяет, находится ли выражение в return statement.protected static booleanПроверяет, находится ли выражение в простом присваивании.protected booleanПроверяет, находится ли выражение внутри структуры или соответствия.Methods inherited from class AbstractVisitorDiagnostic
getDiagnostics, getInfo, setInfoMethods inherited from class BSLParserBaseVisitor
visitAcceptor, visitAccessCall, visitAccessIndex, visitAccessProperty, visitAddHandlerStatement, visitAnnotation, visitAnnotationName, visitAnnotationParam, visitAnnotationParamName, visitAnnotationParams, visitAnnotationParamValue, visitAssignment, visitBoolOperation, visitBreakStatement, visitCallParam, visitCallParamList, visitCallStatement, visitCodeBlock, visitCompareOperation, visitCompilerDirective, visitCompilerDirectiveSymbol, visitComplexIdentifier, visitCompoundStatement, visitConstValue, visitContinueStatement, visitDefaultValue, visitDoCall, visitElseBranch, visitElsifBranch, visitEvent, visitExceptCodeBlock, visitExecuteStatement, visitExpression, visitFile, visitFileCodeBlock, visitFileCodeBlockBeforeSub, visitForEachStatement, visitForStatement, visitFuncDeclaration, visitFunction, visitGlobalMethodCall, visitGotoStatement, visitHandler, visitIfBranch, visitIfStatement, visitLabel, visitLabelName, visitLValue, visitMember, visitMethodCall, visitMethodName, visitModifier, visitModuleAnnotations, visitModuleVar, visitModuleVarDeclaration, visitModuleVars, visitModuleVarsList, visitMultilineString, visitNewExpression, visitNumeric, visitOperation, visitParam, visitParamList, visitPreproc_boolOperation, visitPreproc_else, visitPreproc_elsif, visitPreproc_endif, visitPreproc_expression, visitPreproc_if, visitPreproc_logicalExpression, visitPreproc_logicalOperand, visitPreproc_native, visitPreproc_symbol, visitPreproc_unknownSymbol, visitPreprocessor, visitProcDeclaration, visitProcedure, visitRaiseStatement, visitRegionEnd, visitRegionName, visitRegionStart, visitRemoveHandlerStatement, visitReturnStatement, visitShebang, visitStatement, visitString, visitSub, visitSubCodeBlock, visitSubName, visitSubs, visitSubVar, visitSubVarDeclaration, visitSubVars, visitSubVarsList, visitTernaryOperator, visitTryCodeBlock, visitTryStatement, visitTypeName, visitUnaryModifier, visitUse, visitUsedLib, visitVar_name, visitWaitExpression, visitWaitStatement, visitWhileStatementMethods inherited from class AbstractParseTreeVisitor
aggregateResult, defaultResult, shouldVisitNextChild, visit, visitChildren, visitErrorNode, visitTerminalMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface BSLDiagnostic
configureMethods inherited from interface ParseTreeVisitor
visit, visitChildren, visitErrorNode, visitTerminal
-
Constructor Details
-
AbstractMagicValueDiagnostic
public AbstractMagicValueDiagnostic()
-
-
Method Details
-
getExpression
Получить ExpressionContext из узла AST. Работает для разных типов узлов (NumericContext, ConstValueContext и т.д.).- Parameters:
ctx- узел AST- Returns:
- Optional с ExpressionContext, если найден
-
getExpression
protected static Optional<BSLParser.ExpressionContext> getExpression(@Nullable BSLParser.ConstValueContext constValue) Получить ExpressionContext из Optional узла. Используется для ConstValueContext.- Parameters:
constValue- ConstValueContext- Returns:
- Optional с ExpressionContext, если найден
-
insideStructureOrCorrespondence
Проверяет, находится ли выражение внутри структуры или соответствия. Это включает проверку: - Второго параметра метода Вставить структуры или соответствия - Параметров конструктора структуры (после первого строкового параметра) - Прямого присваивания свойству структуры - Второго параметра метода Вставить соответствия - Первого параметра метода Вставить соответствия (ключ соответствия)- Parameters:
expression- выражение для проверки- Returns:
- true, если выражение находится внутри структуры или соответствия
-
insideSimpleAssignment
Проверяет, находится ли выражение в простом присваивании.- Parameters:
expression- выражение для проверки- Returns:
- true, если выражение находится в простом присваивании
-
insideReturnStatement
Проверяет, находится ли выражение в return statement.- Parameters:
expression- выражение для проверки- Returns:
- true, если выражение находится в return statement
-
insideContext
protected static boolean insideContext(@Nullable BSLParser.ExpressionContext expression, Class<? extends ParserRuleContext> contextClass) Универсальный метод для проверки контекста.- Parameters:
expression- выражение для проверкиcontextClass- класс контекста для проверки- Returns:
- true, если выражение находится в указанном контексте
-