示例#1
0
        public override IAnalysisSet GetDescriptor(Node node, AnalysisValue instance, AnalysisValue context, AnalysisUnit unit)
        {
            if (_original == null)
            {
                return(base.GetDescriptor(node, instance, context, unit));
            }

            if (_descriptor == null)
            {
                var res = _original.GetDescriptor(node, instance, context, unit);
                // TODO: This kinda sucks...
                if (Object.ReferenceEquals(res, _original))
                {
                    _descriptor = SelfSet;
                }
                else if (res.Count >= 1)
                {
                    // TODO: Dictionary per-instance

                    _descriptor = Clone(res.First(), instance);
                }
                else
                {
                    _descriptor = Clone(_original, instance);
                }
            }
            return(_descriptor);
        }