diff --git a/src/Compilers/CSharp/Portable/Binder/LookupOptions.cs b/src/Compilers/CSharp/Portable/Binder/LookupOptions.cs index f2ef9c1fb49fa..9c2ff89185f0d 100644 --- a/src/Compilers/CSharp/Portable/Binder/LookupOptions.cs +++ b/src/Compilers/CSharp/Portable/Binder/LookupOptions.cs @@ -74,11 +74,6 @@ internal enum LookupOptions /// UseBaseReferenceAccessibility = 1 << 9, - /// - /// Include extension members. - /// - IncludeExtensionMembers = 1 << 10, - /// /// Consider only attribute types. /// @@ -115,6 +110,8 @@ internal enum LookupOptions /// Consider only symbols that are user-defined operators. /// MustBeOperator = 1 << 17, + + // Available 1 << 10, } internal static class LookupOptionExtensions diff --git a/src/Compilers/CSharp/Portable/Compilation/CSharpSemanticModel.cs b/src/Compilers/CSharp/Portable/Compilation/CSharpSemanticModel.cs index 7d96896ddd50e..5e6a5d1f8d310 100644 --- a/src/Compilers/CSharp/Portable/Compilation/CSharpSemanticModel.cs +++ b/src/Compilers/CSharp/Portable/Compilation/CSharpSemanticModel.cs @@ -1419,8 +1419,7 @@ public ImmutableArray LookupSymbols( string name = null, bool includeExtensions = false) { - var options = includeExtensions ? LookupOptions.IncludeExtensionMembers : LookupOptions.Default; - return LookupSymbolsInternal(position, container, name, options, useBaseReferenceAccessibility: false); + return LookupSymbolsInternal(position, container, name, LookupOptions.Default, includeExtensionMembers: includeExtensions, useBaseReferenceAccessibility: false); } /// @@ -1462,7 +1461,7 @@ public ImmutableArray LookupSymbols( int position, string name = null) { - return LookupSymbolsInternal(position, container: null, name: name, options: LookupOptions.Default, useBaseReferenceAccessibility: true); + return LookupSymbolsInternal(position, container: null, name: name, options: LookupOptions.Default, includeExtensionMembers: false, useBaseReferenceAccessibility: true); } /// @@ -1488,7 +1487,7 @@ public ImmutableArray LookupStaticMembers( NamespaceOrTypeSymbol container = null, string name = null) { - return LookupSymbolsInternal(position, container, name, LookupOptions.MustNotBeInstance, useBaseReferenceAccessibility: false); + return LookupSymbolsInternal(position, container, name, LookupOptions.MustNotBeInstance, includeExtensionMembers: false, useBaseReferenceAccessibility: false); } /// @@ -1514,7 +1513,7 @@ public ImmutableArray LookupNamespacesAndTypes( NamespaceOrTypeSymbol container = null, string name = null) { - return LookupSymbolsInternal(position, container, name, LookupOptions.NamespacesOrTypesOnly, useBaseReferenceAccessibility: false); + return LookupSymbolsInternal(position, container, name, LookupOptions.NamespacesOrTypesOnly, includeExtensionMembers: false, useBaseReferenceAccessibility: false); } /// @@ -1535,7 +1534,7 @@ public ImmutableArray LookupNamespacesAndTypes( int position, string name = null) { - return LookupSymbolsInternal(position, container: null, name: name, options: LookupOptions.LabelsOnly, useBaseReferenceAccessibility: false); + return LookupSymbolsInternal(position, container: null, name: name, options: LookupOptions.LabelsOnly, includeExtensionMembers: false, useBaseReferenceAccessibility: false); } /// @@ -1563,6 +1562,7 @@ private ImmutableArray LookupSymbolsInternal( NamespaceOrTypeSymbol container, string name, LookupOptions options, + bool includeExtensionMembers, bool useBaseReferenceAccessibility) { Debug.Assert((options & LookupOptions.UseBaseReferenceAccessibility) == 0, "Use the useBaseReferenceAccessibility parameter."); @@ -1579,7 +1579,7 @@ private ImmutableArray LookupSymbolsInternal( if ((object)container == null || container.Kind == SymbolKind.Namespace) { - options &= ~LookupOptions.IncludeExtensionMembers; + includeExtensionMembers = false; } var binder = GetEnclosingBinder(position); @@ -1655,7 +1655,7 @@ private ImmutableArray LookupSymbolsInternal( info.Free(); - if ((options & LookupOptions.IncludeExtensionMembers) != 0 && container is TypeSymbol receiverType) + if (includeExtensionMembers && container is TypeSymbol receiverType) { var lookupResult = LookupResult.GetInstance(); @@ -1753,7 +1753,7 @@ private void AppendSymbolsWithNameAndArity( name, arity, basesBeingResolved: null, - options: options & ~LookupOptions.IncludeExtensionMembers, + options: options, diagnose: false, useSiteInfo: ref discardedUseSiteInfo); diff --git a/src/Compilers/CSharp/Portable/Symbols/NamedTypeSymbol.cs b/src/Compilers/CSharp/Portable/Symbols/NamedTypeSymbol.cs index c532cfd748dd0..7308c33ee858a 100644 --- a/src/Compilers/CSharp/Portable/Symbols/NamedTypeSymbol.cs +++ b/src/Compilers/CSharp/Portable/Symbols/NamedTypeSymbol.cs @@ -412,7 +412,7 @@ private static bool IsValidExtensionReceiverParameter(ParameterSymbol thisParam) /// Does not perform a full viability check internal void GetExtensionMembers(ArrayBuilder members, string? name, string? alternativeName, int arity, LookupOptions options, ConsList fieldsBeingBound) { - Debug.Assert((options & ~(LookupOptions.IncludeExtensionMembers | LookupOptions.AllMethodsOnArityZero + Debug.Assert((options & ~(LookupOptions.AllMethodsOnArityZero | LookupOptions.MustBeInstance | LookupOptions.MustNotBeInstance | LookupOptions.MustBeInvocableIfMember | LookupOptions.MustBeOperator | LookupOptions.MustNotBeMethodTypeParameter)) == 0);