public MemberResult(string name, string documentation, JsMemberType type) { _name = _completion = name; _documentation = documentation; _type = () => type; _vars = () => Empty; }
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; } }
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); }