コード例 #1
0
        private static bool TryResolveLocalReference <TElement>(OraclePlSqlReference plSqlReference, IEnumerable <TElement> elements, ICollection <TElement> resolvedCollection) where TElement : OraclePlSqlElement
        {
            if (plSqlReference.OwnerNode != null)
            {
                return(false);
            }

            var program = plSqlReference.PlSqlProgram;

            do
            {
                foreach (var element in elements)
                {
                    var isLocal = program == element.Owner;
                    if (resolvedCollection.Count > 0 && !isLocal)
                    {
                        break;
                    }

                    var matchVisitor = new OraclePlSqlReferenceElementMatchVisitor(plSqlReference, program);
                    element.Accept(matchVisitor);

                    if (matchVisitor.IsMatch)
                    {
                        resolvedCollection.Add(element);
                    }
                }

                if (resolvedCollection.Count > 0)
                {
                    return(true);
                }

                program = program.Owner;
            } while (resolvedCollection.Count == 0 && program != null);


            return(false);
        }
コード例 #2
0
 public OraclePlSqlReferenceElementMatchVisitor(OraclePlSqlReference plSqlReference, OraclePlSqlProgram currentProgram)
 {
     _plSqlReference = plSqlReference;
     _currentProgram = currentProgram;
 }