public override bool Walk(DottedName node) { if (base.Walk(node)) { string totalName = null; foreach (var n in node.Names.MaybeEnumerate()) { if (n?.Name == null) { break; } if (Location >= n.StartIndex && Location <= n.EndIndex) { if (totalName == null) { Expression = n; } else { Expression = new NameExpression(totalName + n.Name); Expression.SetLoc(node.StartIndex, n.EndIndex); } break; } totalName = (totalName ?? "") + n.Name + "."; } } return(false); }
public override bool Walk(MemberExpression node) { if (Save(node, base.Walk(node), _options.Members && Location >= node.NameHeader)) { if (_options.MemberName && Location >= node.NameHeader) { var nameNode = new NameExpression(node.Name); nameNode.SetLoc(node.NameHeader, node.EndIndex); Expression = nameNode; } return(true); } return(false); }
public override bool Walk(MemberExpression node) { if (base.Walk(node)) { if (_options.MemberName && Location > node.DotIndex && _endLocation <= node.EndIndex) { var nameNode = new NameExpression(node.Name); nameNode.SetLoc(node.NameHeader, node.EndIndex); Expression = nameNode; return(false); } else if (_options.Members) { Expression = node; } return(true); } return(false); }
private IEnumerable <CompletionItem> GetCompletionsFromMembers(ref GetMemberOptions opts) { if (Node is MemberExpression me && me.Target != null && me.DotIndex > me.StartIndex && Index > me.DotIndex) { _log.TraceMessage($"Completing expression {me.Target.ToCodeString(Tree, CodeFormattingOptions.Traditional)}"); ParentExpression = me.Target; if (!string.IsNullOrEmpty(me.Name)) { Node = new NameExpression(me.Name); Node.SetLoc(me.NameHeader, me.NameHeader + me.Name.Length); } else { Node = null; } ShouldCommitByDefault = true; return(Analysis.GetMembers(me.Target, Position, opts, null).Select(ToCompletionItem)); } return(null); }
private bool Save(int startIndex, bool baseWalk, string keyword) { if (!baseWalk) { return(false); } if (startIndex < 0) { return(true); } if (_endLocation <= startIndex + keyword.Length) { var ne = new NameExpression(keyword); ne.SetLoc(startIndex, startIndex + keyword.Length); Expression = ne; return(false); } return(true); }