public static ResolutionContext CreateCurrentContext() { Document doc = null; DispatchService.GuiSyncDispatch(() => doc = Ide.IdeApp.Workbench.ActiveDocument); if (doc != null) { var ddoc = doc.ParsedDocument as ParsedDModule; if (ddoc != null) { var ast = ddoc.DDom; if (ast != null) { IStatement stmt; var caret = new D_Parser.Dom.CodeLocation(doc.Editor.Caret.Column, doc.Editor.Caret.Line); var bn = DResolver.SearchBlockAt(ast, caret, out stmt); var dbn = bn as DBlockNode; if (stmt == null && dbn != null) { //TODO: If inside an expression statement, search the nearest function call or template instance expression - and try to evaluate that one. if (dbn.StaticStatements.Count != 0) { foreach (var ss in dbn.StaticStatements) { if (caret >= ss.Location && caret <= ss.EndLocation) { stmt = ss; break; } } } } var ed = DResolverWrapper.CreateEditorData(doc); return(new ResolutionContext(ed.ParseCache, new ConditionalCompilationFlags(ed), bn, stmt)); } } } return(new ResolutionContext(DResolverWrapper.CreateCacheList(), new ConditionalCompilationFlags(VersionIdEvaluation.GetOSAndCPUVersions(), 1, true), null)); }
public int ToOffset(D_Parser.Dom.CodeLocation loc) { return(doc.LocationToOffset(loc.Line, loc.Column)); }
protected TemplateParameter(int nameHash, CodeLocation nameLoc, DNode par) { NameHash = nameHash; NameLocation = nameLoc; Parent = par; }
protected TemplateParameter(string name, CodeLocation nameLoc, DNode par) : this(name != null ? name.GetHashCode() : 0, nameLoc, par) { Strings.Add(name); }
public TemplateTupleParameter(string name, CodeLocation nameLoc, DNode parent) : base(name, nameLoc, parent) { }
public TemplateAliasParameter(int name, CodeLocation nameLoc, DNode parent) : base(name, nameLoc, parent) { }
public TemplateTypeParameter(int nameHash, CodeLocation nameLoc, DNode parent) : base(nameHash, nameLoc, parent) { }