Esempio n. 1
0
 public MemberResult(string name, string documentation, JsMemberType type)
 {
     _name          = _completion = name;
     _documentation = documentation;
     _type          = () => type;
     _vars          = () => Empty;
 }
Esempio n. 2
0
 internal MemberResult(string name, string completion, IEnumerable<AnalysisValue> vars, JsMemberType? type) {
     _documentation = null;
     _name = name;
     _vars = () => vars;
     _completion = completion;
     if (type != null) {
         _type = () => type.Value;
     } else {
         _type = null;
         _type = GetMemberType;
     }
 }
Esempio n. 3
0
        private JsMemberType GetMemberType()
        {
            JsMemberType result = JsMemberType.Unknown;

            var allVars = _vars().SelectMany(ns => {
                return(Enumerable.Repeat(ns, 1));
            });

            foreach (var ns in allVars)
            {
                var nsType = ns.MemberType;
                if (result == JsMemberType.Unknown &&
                    (ns.TypeId == BuiltinTypeId.Null ||
                     nsType == JsMemberType.Undefined))
                {
                    result = nsType;
                }
                else if (result == JsMemberType.Unknown ||
                         result == JsMemberType.Null ||
                         result == JsMemberType.Undefined)
                {
                    result = nsType;
                }
                else if (result == nsType)
                {
                    // No change
                }
                else
                {
                    return(JsMemberType.Multiple);
                }
            }
            if (result == JsMemberType.Unknown)
            {
                return(JsMemberType.Object);
            }
            return(result);
        }
Esempio n. 4
0
 public MemberResult(string name, string documentation, JsMemberType type) {
     _name = _completion = name;
     _documentation = documentation;
     _type = () => type;
     _vars = () => Empty;
 }