@@ -222,7 +222,7 @@ bool ASTScopeImpl::lookInGenericParametersOf(
222222 SmallVector<ValueDecl *, 32 > bindings;
223223 for (auto *param : paramList.get ()->getParams ())
224224 bindings.push_back (param);
225- if (consumer.consume (bindings, DeclVisibilityKind::GenericParameter ))
225+ if (consumer.consume (bindings))
226226 return true ;
227227 return false ;
228228}
@@ -289,28 +289,26 @@ PatternEntryInitializerScope::getLookupParent() const {
289289
290290bool GenericParamScope::lookupLocalsOrMembers (DeclConsumer consumer) const {
291291 auto *param = paramList->getParams ()[index];
292- return consumer.consume ({param}, DeclVisibilityKind::GenericParameter );
292+ return consumer.consume ({param});
293293}
294294
295295bool PatternEntryDeclScope::lookupLocalsOrMembers (DeclConsumer consumer) const {
296- if (vis != DeclVisibilityKind::LocalVariable )
297- return false ; // look in self type will find this later
298- return lookupLocalBindingsInPattern (getPattern (), vis, consumer);
296+ if (!isLocalBinding )
297+ return false ;
298+ return lookupLocalBindingsInPattern (getPattern (), consumer);
299299}
300300
301301bool ForEachPatternScope::lookupLocalsOrMembers (DeclConsumer consumer) const {
302- return lookupLocalBindingsInPattern (
303- stmt->getPattern (), DeclVisibilityKind::LocalVariable, consumer);
302+ return lookupLocalBindingsInPattern (stmt->getPattern (), consumer);
304303}
305304
306305bool CaseLabelItemScope::lookupLocalsOrMembers (DeclConsumer consumer) const {
307- return lookupLocalBindingsInPattern (
308- item.getPattern (), DeclVisibilityKind::LocalVariable, consumer);
306+ return lookupLocalBindingsInPattern (item.getPattern (), consumer);
309307}
310308
311309bool CaseStmtBodyScope::lookupLocalsOrMembers (DeclConsumer consumer) const {
312310 for (auto *var : stmt->getCaseBodyVariablesOrEmptyArray ())
313- if (consumer.consume ({var}, DeclVisibilityKind::LocalVariable ))
311+ if (consumer.consume ({var}))
314312 return true ;
315313
316314 return false ;
@@ -320,13 +318,12 @@ bool FunctionBodyScope::lookupLocalsOrMembers(
320318 DeclConsumer consumer) const {
321319 if (auto *paramList = decl->getParameters ()) {
322320 for (auto *paramDecl : *paramList)
323- if (consumer.consume ({paramDecl}, DeclVisibilityKind::FunctionParameter ))
321+ if (consumer.consume ({paramDecl}))
324322 return true ;
325323 }
326324
327325 if (decl->getDeclContext ()->isTypeContext ()) {
328- return consumer.consume ({decl->getImplicitSelfDecl ()},
329- DeclVisibilityKind::FunctionParameter);
326+ return consumer.consume ({decl->getImplicitSelfDecl ()});
330327 }
331328
332329 // Consider \c var t: T { (did/will/)get/set { ... t }}
@@ -335,7 +332,7 @@ bool FunctionBodyScope::lookupLocalsOrMembers(
335332 // then t needs to be found as a local binding:
336333 if (auto *accessor = dyn_cast<AccessorDecl>(decl)) {
337334 if (auto *storage = accessor->getStorage ())
338- if (consumer.consume ({storage}, DeclVisibilityKind::LocalVariable ))
335+ if (consumer.consume ({storage}))
339336 return true ;
340337 }
341338
@@ -346,7 +343,7 @@ bool SpecializeAttributeScope::lookupLocalsOrMembers(
346343 DeclConsumer consumer) const {
347344 if (auto *params = whatWasSpecialized->getGenericParams ())
348345 for (auto *param : params->getParams ())
349- if (consumer.consume ({param}, DeclVisibilityKind::GenericParameter ))
346+ if (consumer.consume ({param}))
350347 return true ;
351348 return false ;
352349}
@@ -356,7 +353,7 @@ bool DifferentiableAttributeScope::lookupLocalsOrMembers(
356353 auto visitAbstractFunctionDecl = [&](AbstractFunctionDecl *afd) {
357354 if (auto *params = afd->getGenericParams ())
358355 for (auto *param : params->getParams ())
359- if (consumer.consume ({param}, DeclVisibilityKind::GenericParameter ))
356+ if (consumer.consume ({param}))
360357 return true ;
361358 return false ;
362359 };
@@ -371,20 +368,10 @@ bool DifferentiableAttributeScope::lookupLocalsOrMembers(
371368}
372369
373370bool BraceStmtScope::lookupLocalsOrMembers (DeclConsumer consumer) const {
374- // All types and functions are visible anywhere within a brace statement
375- // scope. When ordering matters (i.e. var decl) we will have split the brace
376- // statement into nested scopes.
377- //
378- // Don't stop at the first one, there may be local funcs with same base name
379- // and want them all.
380- SmallVector<ValueDecl *, 32 > localBindings;
381- for (auto braceElement : stmt->getElements ()) {
382- if (auto localBinding = braceElement.dyn_cast <Decl *>()) {
383- if (auto *vd = dyn_cast<ValueDecl>(localBinding))
384- localBindings.push_back (vd);
385- }
386- }
387- if (consumer.consume (localBindings, DeclVisibilityKind::LocalVariable))
371+ if (consumer.consume (localFuncsAndTypes))
372+ return true ;
373+
374+ if (consumer.consumePossiblyNotInScope (localVars))
388375 return true ;
389376
390377 if (consumer.finishLookupInBraceStmt (stmt))
@@ -400,18 +387,15 @@ bool PatternEntryInitializerScope::lookupLocalsOrMembers(
400387 decl->getInitContext (0 ));
401388 if (initContext) {
402389 if (auto *selfParam = initContext->getImplicitSelfDecl ()) {
403- return consumer.consume ({selfParam},
404- DeclVisibilityKind::FunctionParameter);
390+ return consumer.consume ({selfParam});
405391 }
406392 }
407393 return false ;
408394}
409395
410396bool CaptureListScope::lookupLocalsOrMembers (DeclConsumer consumer) const {
411397 for (auto &e : expr->getCaptureList ()) {
412- if (consumer.consume (
413- {e.Var },
414- DeclVisibilityKind::LocalVariable)) // or FunctionParameter??
398+ if (consumer.consume ({e.Var }))
415399 return true ;
416400 }
417401 return false ;
@@ -420,26 +404,24 @@ bool CaptureListScope::lookupLocalsOrMembers(DeclConsumer consumer) const {
420404bool ClosureParametersScope::lookupLocalsOrMembers (
421405 DeclConsumer consumer) const {
422406 for (auto param : *closureExpr->getParameters ())
423- if (consumer.consume ({param}, DeclVisibilityKind::FunctionParameter ))
407+ if (consumer.consume ({param}))
424408 return true ;
425409 return false ;
426410}
427411
428412bool ConditionalClausePatternUseScope::lookupLocalsOrMembers (
429413 DeclConsumer consumer) const {
430- return lookupLocalBindingsInPattern (
431- pattern, DeclVisibilityKind::LocalVariable, consumer);
414+ return lookupLocalBindingsInPattern (pattern, consumer);
432415}
433416
434417bool ASTScopeImpl::lookupLocalBindingsInPattern (const Pattern *p,
435- DeclVisibilityKind vis,
436418 DeclConsumer consumer) {
437419 if (!p)
438420 return false ;
439421 bool isDone = false ;
440422 p->forEachVariable ([&](VarDecl *var) {
441423 if (!isDone)
442- isDone = consumer.consume ({var}, vis );
424+ isDone = consumer.consume ({var});
443425 });
444426 return isDone;
445427}
0 commit comments