@@ -243,6 +243,16 @@ class UnqualifiedLookupFactory {
243
243
nonoperatorScopeForASTScopeLookup (DeclContext *dc,
244
244
Optional<bool > isCascadingUse) const ;
245
245
246
+ struct DCAndUnresolvedIsCascadingUse {
247
+ DeclContext *whereToLook;
248
+ Optional<bool > isCascadingUse;
249
+ DCAndResolvedIsCascadingUse resolve (const bool resolution) const {
250
+ return DCAndResolvedIsCascadingUse{
251
+ whereToLook,
252
+ isCascadingUse.hasValue () ? isCascadingUse.getValue () : resolution};
253
+ }
254
+ };
255
+
246
256
struct ASTScopeLookupState {
247
257
const ASTScope *scope;
248
258
DeclContext *selfDC;
@@ -282,25 +292,13 @@ class UnqualifiedLookupFactory {
282
292
283
293
void lookInDeclContexts (DeclContext *dc, const Optional <bool > isCascadingUseArg);
284
294
285
- // / Return None if lookup done.
286
- Optional<DCAndResolvedIsCascadingUse>
287
- lookupOperatorInDeclContexts (DeclContext *dc, Optional<bool > isCascadingUse);
295
+ void lookupOperatorInDeclContexts (DCAndUnresolvedIsCascadingUse);
288
296
289
297
// / Return None if lookup done.
290
298
Optional<DCAndResolvedIsCascadingUse>
291
299
lookupNameInDeclContexts (DeclContext * dc,
292
300
const Optional<bool > isCascadingUseArg);
293
301
294
- struct DCAndUnresolvedIsCascadingUse {
295
- DeclContext *whereToLook;
296
- Optional<bool > isCascadingUse;
297
- DCAndResolvedIsCascadingUse resolve (const bool resolution) const {
298
- return DCAndResolvedIsCascadingUse{
299
- whereToLook,
300
- isCascadingUse.hasValue () ? isCascadingUse.getValue () : resolution};
301
- }
302
- };
303
-
304
302
// / Return the next context to search.
305
303
Optional<DCAndUnresolvedIsCascadingUse>
306
304
lookupNameInOneDeclContext (DCAndUnresolvedIsCascadingUse);
@@ -370,7 +368,11 @@ class UnqualifiedLookupFactory {
370
368
static bool resolveIsCascadingUse (const DeclContext *const dc,
371
369
Optional<bool > isCascadingUse,
372
370
bool onlyCareAboutFunctionBody);
373
-
371
+ static bool resolveIsCascadingUse (DCAndUnresolvedIsCascadingUse x,
372
+ bool onlyCareAboutFunctionBody) {
373
+ return resolveIsCascadingUse (x.whereToLook , x.isCascadingUse ,
374
+ onlyCareAboutFunctionBody);
375
+ }
374
376
void dumpBreadcrumbs () const ;
375
377
376
378
public:
@@ -652,24 +654,27 @@ void UnqualifiedLookupFactory::lookIntoDeclarationContextForASTScopeLookup(
652
654
653
655
void
654
656
UnqualifiedLookupFactory::lookInDeclContexts (DeclContext *dc, const Optional <bool > isCascadingUseArg) {
655
- // #error move final rnt to tails of next two
656
- auto dcAndIsCascadingUse =
657
- Name.isOperator () ? lookupOperatorInDeclContexts (DC, isCascadingUseArg)
658
- : lookupNameInDeclContexts (DC, isCascadingUseArg);
657
+ if (Name.isOperator ()) {
658
+ lookupOperatorInDeclContexts (
659
+ DCAndUnresolvedIsCascadingUse{DC, isCascadingUseArg});
660
+ return ;
661
+ }
662
+ auto dcAndIsCascadingUse = lookupNameInDeclContexts (DC, isCascadingUseArg);
659
663
if (!dcAndIsCascadingUse.hasValue ())
660
664
return ;
661
665
if (addLocalVariableResults (dcAndIsCascadingUse.getValue ().DC ))
662
666
return ;
663
667
lookInModuleScopeContext (dcAndIsCascadingUse.getValue ());
664
668
}
665
669
666
- Optional<UnqualifiedLookupFactory::DCAndResolvedIsCascadingUse>
667
- UnqualifiedLookupFactory::lookupOperatorInDeclContexts (DeclContext *dc,
668
- Optional<bool > isCascadingUse) {
669
- auto *msc = dc->getModuleScopeContext ();
670
- return DCAndResolvedIsCascadingUse{
671
- msc, resolveIsCascadingUse (dc, isCascadingUse,
672
- /* onlyCareAboutFunctionBody*/ true )};
670
+ void UnqualifiedLookupFactory::lookupOperatorInDeclContexts (
671
+ const DCAndUnresolvedIsCascadingUse dcAndUseArg) {
672
+ DCAndResolvedIsCascadingUse dcAndResolvedIsCascadingUse{
673
+ dcAndUseArg.whereToLook ->getModuleScopeContext (),
674
+ resolveIsCascadingUse (dcAndUseArg,
675
+ /* onlyCareAboutFunctionBody*/ true )};
676
+ if (!addLocalVariableResults (dcAndResolvedIsCascadingUse.DC ))
677
+ lookInModuleScopeContext (dcAndResolvedIsCascadingUse);
673
678
}
674
679
675
680
// TODO: Unify with LookupVisibleDecls.cpp::lookupVisibleDeclsImpl
0 commit comments