/// <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);
     }
 }
Beispiel #2
0
            /// <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
                                });
                            }
                        }
                    }
                }
            }