Class AbstractMagicValueDiagnostic
java.lang.Object
org.antlr.v4.runtime.tree.AbstractParseTreeVisitor<Result>
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 com.github._1c_syntax.bsl.languageserver.diagnostics.AbstractVisitorDiagnostic
diagnosticStorage, documentContext, info -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected static Optional<BSLParser.ExpressionContext>getExpression(BSLParser.ConstValueContext constValue) Получить ExpressionContext из Optional узла.protected static Optional<BSLParser.ExpressionContext>Получить ExpressionContext из узла AST.protected static booleaninsideContext(BSLParser.ExpressionContext expression, Class<? extends ParserRuleContext> contextClass) Универсальный метод для проверки контекста.protected static booleaninsideReturnStatement(BSLParser.ExpressionContext expression) Проверяет, находится ли выражение в return statement.protected static booleaninsideSimpleAssignment(BSLParser.ExpressionContext expression) Проверяет, находится ли выражение в простом присваивании.protected booleanПроверяет, находится ли выражение внутри структуры или соответствия.Methods inherited from class com.github._1c_syntax.bsl.languageserver.diagnostics.AbstractVisitorDiagnostic
getDiagnostics, getInfo, setInfoMethods inherited from class com.github._1c_syntax.bsl.parser.BSLParserBaseVisitor
visitAcceptor, visitAccessCall, visitAccessIndex, visitAccessProperty, visitAddHandlerStatement, visitAnnotation, visitAnnotationName, visitAnnotationParam, visitAnnotationParamName, visitAnnotationParams, 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 org.antlr.v4.runtime.tree.AbstractParseTreeVisitor
aggregateResult, defaultResult, shouldVisitNextChild, visit, visitChildren, visitErrorNode, visitTerminalMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface com.github._1c_syntax.bsl.languageserver.diagnostics.BSLDiagnostic
configureMethods inherited from interface org.antlr.v4.runtime.tree.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(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(BSLParser.ExpressionContext expression, Class<? extends ParserRuleContext> contextClass) Универсальный метод для проверки контекста.- Parameters:
expression- выражение для проверкиcontextClass- класс контекста для проверки- Returns:
- true, если выражение находится в указанном контексте
-