BCSYM_Variable* Bindable::BindWithEventsVariable ( _In_z_ STRING *WithEventVarName, bool &InAccessible, bool &WithEventsVarFoundInBase ) { InAccessible = false; WithEventsVarFoundInBase = false; VSASSERT( CurrentContainer()->IsClass(), "How can a non-class have handles clauses ?"); BCSYM_Class *Class = CurrentContainer()->PClass(); bool IsShadowed = false; BCSYM_NamedRoot *Member; for(Member = Class->SimpleBind(NULL, WithEventVarName); Member; Member = Member->GetNextOfSameName()) { if (Member->IsVariable() && Member->PVariable()->GetVarkind() == VAR_WithEvents) { return Member->PVariable(); } // Ignore synthesized properties in checking for shadowing. if (!Member->CreatedByWithEventsDecl() || !Member->IsProperty()) { IsShadowed = true; } } for(BCSYM_Class *Base = Class->GetCompilerBaseClass(); !IsShadowed && Base; Base = Base->GetCompilerBaseClass()) { for(Member = Base->SimpleBind(NULL, WithEventVarName); Member; Member = Member->GetNextOfSameName()) { if (Member->IsVariable() && Member->PVariable()->GetVarkind() == VAR_WithEvents) { if (IsAccessible(Member)) { WithEventsVarFoundInBase = true; return Member->PVariable(); } InAccessible = true; } else { if (IsAccessible(Member) && // Ignore synthesized properties in checking for shadowing. (!Member->CreatedByWithEventsDecl() || !Member->IsProperty())) { IsShadowed = true; } } } } return NULL; }