public MatchName ( string name ) : IEnumerable |
||
name | string | |
return | IEnumerable |
public void SetCurrentScope(string memberName, DeclarationType type) { Logger.Trace("Setting current scope: {0} ({1}) in thread {2}", memberName, type, Thread.CurrentThread.ManagedThreadId); _currentParent = _declarationFinder.MatchName(memberName).SingleOrDefault(item => item.QualifiedName.QualifiedModuleName == _qualifiedModuleName && item.DeclarationType == type); _currentScope = _declarationFinder.MatchName(memberName).SingleOrDefault(item => item.QualifiedName.QualifiedModuleName == _qualifiedModuleName && item.DeclarationType == type) ?? _moduleDeclaration; Logger.Trace("Current scope is now {0} in thread {1}", _currentScope == null ? "null" : _currentScope.IdentifierName, Thread.CurrentThread.ManagedThreadId); }
public IReadOnlyList <Declaration> Load() { foreach (var item in _finder.MatchName(Tokens.Err)) { if (item.IsBuiltIn && item.DeclarationType == DeclarationType.Variable && item.Accessibility == Accessibility.Global) { return(new List <Declaration>()); } } var vba = _finder.FindProject("VBA"); if (vba == null) { // if VBA project is null, we haven't loaded any COM references; // we're in a unit test and mock project didn't setup any references. return(new List <Declaration>()); } var informationModule = _finder.FindStdModule("Information", vba, true); Debug.Assert(informationModule != null, "We expect the information module to exist in the VBA project."); return(Load(vba, informationModule)); }
public IdentifierReferenceResolver(QualifiedModuleName qualifiedModuleName, DeclarationFinder finder) { _declarationFinder = finder; _qualifiedModuleName = qualifiedModuleName; _withBlockExpressions = new Stack <IBoundExpression>(); _moduleDeclaration = finder.MatchName(_qualifiedModuleName.ComponentName) .SingleOrDefault(item => (item.DeclarationType == DeclarationType.ClassModule || item.DeclarationType == DeclarationType.ProceduralModule) && item.QualifiedName.QualifiedModuleName.Equals(_qualifiedModuleName)); SetCurrentScope(); var typeBindingContext = new TypeBindingContext(_declarationFinder); var procedurePointerBindingContext = new ProcedurePointerBindingContext(_declarationFinder); _bindingService = new BindingService( _declarationFinder, new DefaultBindingContext(_declarationFinder, typeBindingContext, procedurePointerBindingContext), typeBindingContext, procedurePointerBindingContext); _boundExpressionVisitor = new BoundExpressionVisitor(finder); }