@@ -3116,18 +3116,26 @@ class NominalTypeDecl : public GenericTypeDecl, public IterableDeclContext {
31163116 // / called to make it immediately visible.
31173117 void makeMemberVisible (ValueDecl *member);
31183118
3119+ // / Special-behaviour flags passed to lookupDirect()
3120+ enum class LookupDirectFlags {
3121+ // / Whether to avoid loading any new extension.
3122+ // / Used by the module loader to break recursion.
3123+ IgnoreNewExtensions = 1 << 0 ,
3124+ // / Whether to include @_implements members.
3125+ // / Used by conformance-checking to find special @_implements members.
3126+ IncludeAttrImplements = 1 << 1 ,
3127+ };
3128+
31193129 // / Find all of the declarations with the given name within this nominal type
31203130 // / and its extensions.
31213131 // /
31223132 // / This routine does not look into superclasses, nor does it consider
31233133 // / protocols to which the nominal type conforms. Furthermore, the resulting
31243134 // / set of declarations has not been filtered for visibility, nor have
31253135 // / overridden declarations been removed.
3126- // /
3127- // / \param ignoreNewExtensions Whether to avoid loading any new extension.
3128- // / Used by the module loader to break recursion.
31293136 TinyPtrVector<ValueDecl *> lookupDirect (DeclName name,
3130- bool ignoreNewExtensions = false );
3137+ OptionSet<LookupDirectFlags> flags =
3138+ OptionSet<LookupDirectFlags>());
31313139
31323140 // / Collect the set of protocols to which this type should implicitly
31333141 // / conform, such as AnyObject (for classes).
0 commit comments