/// <summary> /// Вход в выражение. /// </summary> /// <param name="context">Контекст.</param> public override void EnterInvocationCall(IsblParser.InvocationCallContext context) { if (context.identifier().GetText().Equals(ReferenceProperty, StringComparison.OrdinalIgnoreCase) && context.parameterList() == null) { ContextWithInvocationErrors.Add(context); } }
/// <summary> /// Вход в выражение. /// </summary> /// <param name="context">Контекст.</param> public override void EnterInvocationCall(IsblParser.InvocationCallContext context) { if (context.identifier().GetText().Equals(ReferenceFactoryMethod, StringComparison.OrdinalIgnoreCase) && context.parameterList() != null && context.parameterList().expression().Any()) { // Обращение к справочнику через ReferencesFactory(). var firstParam = context.parameterList().expression(0); CheckReferenceInExpressionExists(firstParam); } else if (context.Parent.GetChild(0) is IsblParser.VariableContext) { var variableName = context.Parent.GetChild(0).GetText().Trim('!'); if (variableName.Equals(ReferencesFactoryVar, StringComparison.OrdinalIgnoreCase)) { // Обращение к справочнику через предопределенную переменную References. // Проверить, что обращение к справочнику - это первый вызов после переменной References. IsblParser.InvocationCallContext firstInvocationCall = null; for (var i = 0; i < context.Parent.ChildCount; i++) { firstInvocationCall = context.Parent.GetChild(i) as IsblParser.InvocationCallContext; if (firstInvocationCall != null) { break; } } if (firstInvocationCall == context && context.parameterList() == null) { var referenceName = context.identifier().GetText(); // Использование "устаревших" наименований справочников в случае с References не допускаются. if (!IsReferenceExists(referenceName, withOldReferences: false)) { UsingReferenceEntries.Add(new UsingReferenceEntry { Context = context.identifier(), ReferenceName = referenceName }); } } } } }