public static Dictionary<int, Dictionary<ISyntaxRegion, byte>> Scan(DModule ast, ResolutionContext ctxt) { if (ast == null) return new Dictionary<int, Dictionary<ISyntaxRegion,byte>>(); var typeRefFinder = new TypeReferenceFinder(ctxt); ContextFrame backupFrame = null; if(ctxt.ScopedBlock == ast) backupFrame = ctxt.Pop (); /* if (ctxt.CurrentContext == null) { ctxt.Push(backupFrame); backupFrame = null; }*/ //typeRefFinder.ast = ast; // Enum all identifiers ast.Accept (typeRefFinder); if (backupFrame != null) ctxt.Push (backupFrame); // Crawl through all remaining expressions by evaluating their types and check if they're actual type references. /*typeRefFinder.queueCount = typeRefFinder.q.Count; typeRefFinder.ResolveAllIdentifiers(); */ return typeRefFinder.Matches; }
public static TypeReferencesResult Scan(IAbstractSyntaxTree ast, ParseCacheList pcl) { var typeRefFinder = new TypeReferenceFinder(pcl); typeRefFinder.ast = ast; // Enum all identifiers typeRefFinder.S(ast); // Crawl through all remaining expressions by evaluating their types and check if they're actual type references. typeRefFinder.queueCount = typeRefFinder.q.Count; typeRefFinder.ResolveAllIdentifiers(); return typeRefFinder.result; }
public static TypeReferencesResult Scan(IAbstractSyntaxTree ast, ParseCacheList pcl) { var typeRefFinder = new TypeReferenceFinder(pcl); typeRefFinder.ast = ast; // Enum all identifiers typeRefFinder.S(ast); // Crawl through all remaining expressions by evaluating their types and check if they're actual type references. typeRefFinder.queueCount = typeRefFinder.q.Count; typeRefFinder.ResolveAllIdentifiers(); return(typeRefFinder.result); }
public static Dictionary <int, Dictionary <ISyntaxRegion, byte> > Scan(IEditorData ed, List <ISyntaxRegion> invalidConditionalCodeRegions = null, int timeout = int.MinValue) { if (ed == null || ed.SyntaxTree == null) { return(new Dictionary <int, Dictionary <ISyntaxRegion, byte> >()); } var ctxt = ResolutionContext.Create(ed, false); // Since it's just about enumerating, not checking types, ignore any conditions ctxt.ContextIndependentOptions |= ResolutionOptions.IgnoreDeclarationConditions; var typeRefFinder = new TypeReferenceFinder(ctxt, invalidConditionalCodeRegions); CodeCompletion.DoTimeoutableCompletionTask(null, ctxt, () => ed.SyntaxTree.Accept(typeRefFinder), timeout); return(typeRefFinder.Matches); }
public static Dictionary <int, Dictionary <ISyntaxRegion, byte> > Scan(DModule ast, ResolutionContext ctxt) { if (ast == null) { return(new Dictionary <int, Dictionary <ISyntaxRegion, byte> >()); } var typeRefFinder = new TypeReferenceFinder(ctxt); ContextFrame backupFrame = null; if (ctxt.ScopedBlock == ast) { backupFrame = ctxt.Pop(); } /* * if (ctxt.CurrentContext == null) * { * ctxt.Push(backupFrame); * backupFrame = null; * }*/ //typeRefFinder.ast = ast; // Enum all identifiers ast.Accept(typeRefFinder); if (backupFrame != null) { ctxt.Push(backupFrame); } // Crawl through all remaining expressions by evaluating their types and check if they're actual type references. /*typeRefFinder.queueCount = typeRefFinder.q.Count; * typeRefFinder.ResolveAllIdentifiers(); */ return(typeRefFinder.Matches); }