diff --git a/src/Compilers/CSharp/Portable/Binder/Binder.ValueChecks.cs b/src/Compilers/CSharp/Portable/Binder/Binder.ValueChecks.cs index c7bf068473af2..32e0250ef7120 100644 --- a/src/Compilers/CSharp/Portable/Binder/Binder.ValueChecks.cs +++ b/src/Compilers/CSharp/Portable/Binder/Binder.ValueChecks.cs @@ -93,7 +93,7 @@ internal MethodInfo ReplaceWithExtensionImplementation(out bool wasError) wasError = (Method is not null && method is null) || (SetMethod is not null && setMethod is null); - // Tracked by https://github.com/dotnet/roslyn/issues/76130 : Test with indexers (ie. "method") and in compound assignment (ie. "setMethod") + // Tracked by https://github.com/dotnet/roslyn/issues/76130 : Test in compound assignment (ie. "setMethod") return new MethodInfo(symbol, method, setMethod); static MethodSymbol? replace(MethodSymbol? method) diff --git a/src/Compilers/CSharp/Portable/Binder/Binder_Conversions.cs b/src/Compilers/CSharp/Portable/Binder/Binder_Conversions.cs index 3cb962361b12a..aaf1bbc33a9a7 100644 --- a/src/Compilers/CSharp/Portable/Binder/Binder_Conversions.cs +++ b/src/Compilers/CSharp/Portable/Binder/Binder_Conversions.cs @@ -1467,7 +1467,7 @@ static ImmutableArray filterOutBadGenericMethods( if (!typeParameters.IsEmpty) { - if (resolution.IsExtensionMethodGroup) // Tracked by https://github.com/dotnet/roslyn/issues/76130 : we need to handle new extension methods + if (resolution.IsExtensionMethodGroup) // Tracked by https://github.com/dotnet/roslyn/issues/78960 : we need to handle new extension methods { // We need to validate an ability to infer type arguments as well as check conversion to 'this' parameter. // Overload resolution doesn't check the conversion when 'this' type refers to a type parameter @@ -1518,7 +1518,7 @@ static ImmutableArray filterOutBadGenericMethods( parameterTypes, parameterRefKinds, ImmutableArray.Create(methodGroup.ReceiverOpt, new BoundValuePlaceholder(syntax, secondArgumentType) { WasCompilerGenerated = true }), - ref useSiteInfo); // Tracked by https://github.com/dotnet/roslyn/issues/76130 : we may need to override ordinals here + ref useSiteInfo); // Tracked by https://github.com/dotnet/roslyn/issues/78960 : we may need to override ordinals here if (!inferenceResult.Success) { @@ -1601,7 +1601,7 @@ static bool bindInvocationExpressionContinued( var methodResult = result.ValidResult; var method = methodResult.Member; - // Tracked by https://github.com/dotnet/roslyn/issues/76130: It looks like we added a bunch of code in BindInvocationExpressionContinued at this position + // Tracked by https://github.com/dotnet/roslyn/issues/78960: It looks like we added a bunch of code in BindInvocationExpressionContinued at this position // that specifically deals with new extension methods. It adjusts analyzedArguments, etc. // It is very likely we need to do the same here. @@ -1663,7 +1663,7 @@ internal static BoundExpression GetUnderlyingCollectionExpressionElement(BoundCo // Add methods. This case can be hit for spreads and non-spread elements. Debug.Assert(call.HasErrors); Debug.Assert(call.Method.Name == "Add"); - return call.Arguments[call.InvokedAsExtensionMethod ? 1 : 0]; // Tracked by https://github.com/dotnet/roslyn/issues/76130: Add test coverage for new extensions + return call.Arguments[call.InvokedAsExtensionMethod ? 1 : 0]; // Tracked by https://github.com/dotnet/roslyn/issues/78960: Add test coverage for new extensions case BoundBadExpression badExpression: Debug.Assert(false); // Add test if we hit this assert. return badExpression; @@ -1712,7 +1712,7 @@ internal bool TryGetCollectionIterationType(SyntaxNode syntax, TypeSymbol collec out iterationType, builder: out var builder); // Collection expression target types require instance method GetEnumerator. - if (result && builder.ViaExtensionMethod) // Tracked by https://github.com/dotnet/roslyn/issues/76130: Add test coverage for new extensions + if (result && builder.ViaExtensionMethod) // Tracked by https://github.com/dotnet/roslyn/issues/78960: Add test coverage for new extensions { iterationType = default; return false; diff --git a/src/Compilers/CSharp/Portable/Binder/Binder_Crefs.cs b/src/Compilers/CSharp/Portable/Binder/Binder_Crefs.cs index 8758bf909e6f3..7a568a04417c1 100644 --- a/src/Compilers/CSharp/Portable/Binder/Binder_Crefs.cs +++ b/src/Compilers/CSharp/Portable/Binder/Binder_Crefs.cs @@ -222,7 +222,7 @@ private ImmutableArray BindIndexerMemberCref(IndexerMemberCrefSyntax syn private ImmutableArray BindExtensionMemberCref(ExtensionMemberCrefSyntax syntax, NamespaceOrTypeSymbol? containerOpt, out Symbol? ambiguityWinner, BindingDiagnosticBag diagnostics) { - // Tracked by https://github.com/dotnet/roslyn/issues/76130 : handle extension operators + // Tracked by https://github.com/dotnet/roslyn/issues/78967 : cref, handle extension operators CheckFeatureAvailability(syntax, MessageID.IDS_FeatureExtensions, diagnostics); if (containerOpt is not NamedTypeSymbol namedContainer) diff --git a/src/Compilers/CSharp/Portable/Binder/Binder_Expressions.cs b/src/Compilers/CSharp/Portable/Binder/Binder_Expressions.cs index 301cbb675dc7c..480a43208530c 100644 --- a/src/Compilers/CSharp/Portable/Binder/Binder_Expressions.cs +++ b/src/Compilers/CSharp/Portable/Binder/Binder_Expressions.cs @@ -8045,7 +8045,7 @@ private BoundExpression GetExtensionMemberAccess(SyntaxNode syntax, BoundExpress return BindPropertyAccess(syntax, receiver, propertySymbol, diagnostics, LookupResultKind.Viable, hasErrors: false); case ExtendedErrorTypeSymbol errorTypeSymbol: - // Tracked by https://github.com/dotnet/roslyn/issues/76130 : we should likely reduce (ie. do type inference and substitute) the candidates (like ToBadExpression) + // Tracked by https://github.com/dotnet/roslyn/issues/78957 : public API, we should likely reduce (ie. do type inference and substitute) the candidates (like ToBadExpression) return new BoundBadExpression(syntax, LookupResultKind.Viable, errorTypeSymbol.CandidateSymbols!, [receiver], CreateErrorType()); default: diff --git a/src/Compilers/CSharp/Portable/Binder/Binder_InterpolatedString.cs b/src/Compilers/CSharp/Portable/Binder/Binder_InterpolatedString.cs index fb21a3e6ba53a..43b9267700cc7 100644 --- a/src/Compilers/CSharp/Portable/Binder/Binder_InterpolatedString.cs +++ b/src/Compilers/CSharp/Portable/Binder/Binder_InterpolatedString.cs @@ -339,7 +339,7 @@ private BoundInterpolatedString BindUnconvertedInterpolatedExpressionToFactory( SyntaxNode syntax = unconvertedSource.Syntax; ImmutableArray expressions = makeInterpolatedStringFactoryArguments(syntax, parts, diagnostics); - BoundExpression construction = MakeInvocationExpression( // Tracked by https://github.com/dotnet/roslyn/issues/76130 : test this scenario with a delegate-returning property (should be blocked by virtue of allowFieldsAndProperties: false) + BoundExpression construction = MakeInvocationExpression( // Tracked by https://github.com/dotnet/roslyn/issues/78965 : interpolated string, test this scenario with a delegate-returning property (should be blocked by virtue of allowFieldsAndProperties: false) syntax, new BoundTypeExpression(syntax, null, factoryType) { WasCompilerGenerated = true }, factoryMethod, diff --git a/src/Compilers/CSharp/Portable/CodeGen/EmitExpression.cs b/src/Compilers/CSharp/Portable/CodeGen/EmitExpression.cs index f54ef8c053578..86b3e463535e1 100644 --- a/src/Compilers/CSharp/Portable/CodeGen/EmitExpression.cs +++ b/src/Compilers/CSharp/Portable/CodeGen/EmitExpression.cs @@ -3565,7 +3565,7 @@ private void EmitParameterIdExpression(BoundParameterId node) if (node.HoistedField is null) { - _builder.EmitIntConstant(node.Parameter.Ordinal); // Tracked by https://github.com/dotnet/roslyn/issues/76130 : Follow up + _builder.EmitIntConstant(node.Parameter.Ordinal); // Tracked by https://github.com/dotnet/roslyn/issues/78963 : Follow up } else { diff --git a/src/Compilers/CSharp/Portable/Compilation/CSharpSemanticModel.cs b/src/Compilers/CSharp/Portable/Compilation/CSharpSemanticModel.cs index dcdc84c7f6706..0131fcf2365a8 100644 --- a/src/Compilers/CSharp/Portable/Compilation/CSharpSemanticModel.cs +++ b/src/Compilers/CSharp/Portable/Compilation/CSharpSemanticModel.cs @@ -3371,7 +3371,7 @@ private OneOrMany GetSemanticSymbols( case BoundKind.PropertyGroup: symbols = GetPropertyGroupSemanticSymbols((BoundPropertyGroup)boundNode, boundNodeForSyntacticParent, binderOpt, out resultKind, out memberGroup); break; - // Tracked by https://github.com/dotnet/roslyn/issues/76130 : handle BoundPropertyAccess (which now may have a member group) + // Tracked by https://github.com/dotnet/roslyn/issues/78957 : public API, consider handling BoundPropertyAccess (which now may have a member group) case BoundKind.BadExpression: { diff --git a/src/Compilers/CSharp/Portable/Lowering/ExtensionMethodReferenceRewriter.cs b/src/Compilers/CSharp/Portable/Lowering/ExtensionMethodReferenceRewriter.cs index 4b0b4545fcfa8..74822d80fda54 100644 --- a/src/Compilers/CSharp/Portable/Lowering/ExtensionMethodReferenceRewriter.cs +++ b/src/Compilers/CSharp/Portable/Lowering/ExtensionMethodReferenceRewriter.cs @@ -190,7 +190,7 @@ method.OriginalDefinition is ErrorMethodSymbol || public override BoundNode? VisitMethodDefIndex(BoundMethodDefIndex node) { MethodSymbol method = node.Method; - Debug.Assert(method.IsDefinition); // Tracked by https://github.com/dotnet/roslyn/issues/76130 : From the code coverage and other instrumentations perspective, should we remap the index to the implementation symbol? + Debug.Assert(method.IsDefinition); // Tracked by https://github.com/dotnet/roslyn/issues/78962 : From the code coverage and other instrumentations perspective, should we remap the index to the implementation symbol? TypeSymbol? type = this.VisitType(node.Type); return node.Update(method, type); } diff --git a/src/Compilers/CSharp/Portable/SymbolDisplay/SymbolDisplayVisitor.Types.cs b/src/Compilers/CSharp/Portable/SymbolDisplay/SymbolDisplayVisitor.Types.cs index 988793c924187..6b8fd91e46265 100644 --- a/src/Compilers/CSharp/Portable/SymbolDisplay/SymbolDisplayVisitor.Types.cs +++ b/src/Compilers/CSharp/Portable/SymbolDisplay/SymbolDisplayVisitor.Types.cs @@ -345,7 +345,7 @@ private void AddNameAndTypeArgumentsOrParameters(INamedTypeSymbol symbol) { if (Format.CompilerInternalOptions.HasFlag(SymbolDisplayCompilerInternalOptions.UseMetadataMemberNames)) { - var extensionIdentifier = underlyingTypeSymbol!.ExtensionName; // Tracked by https://github.com/dotnet/roslyn/issues/76130 : use public API once it's available + var extensionIdentifier = underlyingTypeSymbol!.ExtensionName; // Tracked by https://github.com/dotnet/roslyn/issues/78957 : public API, use public API once it's available Builder.Add(CreatePart(SymbolDisplayPartKind.ClassName, symbol, extensionIdentifier)); } else diff --git a/src/Compilers/CSharp/Portable/Symbols/Extensions/RewrittenMethodSymbol.cs b/src/Compilers/CSharp/Portable/Symbols/Extensions/RewrittenMethodSymbol.cs index 2ffc82ff8e75f..74dd40339a045 100644 --- a/src/Compilers/CSharp/Portable/Symbols/Extensions/RewrittenMethodSymbol.cs +++ b/src/Compilers/CSharp/Portable/Symbols/Extensions/RewrittenMethodSymbol.cs @@ -21,7 +21,7 @@ protected RewrittenMethodSymbol(MethodSymbol originalMethod, TypeMap typeMap, Im Debug.Assert(originalMethod.ExplicitInterfaceImplementations.IsEmpty); _originalMethod = originalMethod; - // Tracked by https://github.com/dotnet/roslyn/issues/76130 : Are we creating type parameters with the right emit behavior? Attributes, etc. + // Tracked by https://github.com/dotnet/roslyn/issues/78963 : Are we creating type parameters with the right emit behavior? Attributes, etc. _typeMap = typeMap.WithAlphaRename(typeParametersToAlphaRename, this, out _typeParameters); } diff --git a/src/Compilers/CSharp/Portable/Symbols/Extensions/RewrittenParameterSymbol.cs b/src/Compilers/CSharp/Portable/Symbols/Extensions/RewrittenParameterSymbol.cs index ccf32fb12c6d3..c7da897fcb269 100644 --- a/src/Compilers/CSharp/Portable/Symbols/Extensions/RewrittenParameterSymbol.cs +++ b/src/Compilers/CSharp/Portable/Symbols/Extensions/RewrittenParameterSymbol.cs @@ -22,8 +22,8 @@ public RewrittenParameterSymbol(ParameterSymbol originalParameter) : internal sealed override int CallerArgumentExpressionParameterIndex => _underlyingParameter.CallerArgumentExpressionParameterIndex; - internal sealed override ImmutableArray InterpolatedStringHandlerArgumentIndexes => throw ExceptionUtilities.Unreachable(); // Tracked by https://github.com/dotnet/roslyn/issues/76130 : Follow up + internal sealed override ImmutableArray InterpolatedStringHandlerArgumentIndexes => throw ExceptionUtilities.Unreachable(); // Tracked by https://github.com/dotnet/roslyn/issues/78965 : interpolated string, Follow up - internal sealed override bool HasInterpolatedStringHandlerArgumentError => throw ExceptionUtilities.Unreachable(); // Tracked by https://github.com/dotnet/roslyn/issues/76130 : Follow up + internal sealed override bool HasInterpolatedStringHandlerArgumentError => throw ExceptionUtilities.Unreachable(); // Tracked by https://github.com/dotnet/roslyn/issues/78965 : interpolated string, Follow up } } diff --git a/src/Compilers/CSharp/Portable/Symbols/Extensions/SourceExtensionImplementationMethodSymbol.cs b/src/Compilers/CSharp/Portable/Symbols/Extensions/SourceExtensionImplementationMethodSymbol.cs index 0d171d66e31b4..9d3f3cfeea36e 100644 --- a/src/Compilers/CSharp/Portable/Symbols/Extensions/SourceExtensionImplementationMethodSymbol.cs +++ b/src/Compilers/CSharp/Portable/Symbols/Extensions/SourceExtensionImplementationMethodSymbol.cs @@ -25,7 +25,7 @@ public SourceExtensionImplementationMethodSymbol(MethodSymbol sourceMethod) Debug.Assert(!sourceMethod.IsExtern); Debug.Assert(!sourceMethod.IsExternal); - // Tracked by https://github.com/dotnet/roslyn/issues/76130 : Are we creating type parameters with the right emit behavior? Attributes, etc. + // Tracked by https://github.com/dotnet/roslyn/issues/78963 : Are we creating type parameters with the right emit behavior? Attributes, etc. // Also, they should be IsImplicitlyDeclared } @@ -126,7 +126,7 @@ protected override ImmutableArray MakeParameters() if (!_originalMethod.IsStatic) { - // Tracked by https://github.com/dotnet/roslyn/issues/76130 : Need to confirm if this rewrite going to break LocalStateTracingInstrumenter + // Tracked by https://github.com/dotnet/roslyn/issues/78962 : Need to confirm if this rewrite going to break LocalStateTracingInstrumenter // Specifically BoundParameterId, etc. parameters.Add(new ExtensionMetadataMethodParameterSymbol(this, ((SourceNamedTypeSymbol)_originalMethod.ContainingType).ExtensionParameter!)); } diff --git a/src/Compilers/CSharp/Portable/Symbols/NamedTypeSymbol.cs b/src/Compilers/CSharp/Portable/Symbols/NamedTypeSymbol.cs index 54d2be2cc783b..99c5d3eb7ea8c 100644 --- a/src/Compilers/CSharp/Portable/Symbols/NamedTypeSymbol.cs +++ b/src/Compilers/CSharp/Portable/Symbols/NamedTypeSymbol.cs @@ -355,7 +355,7 @@ internal void DoGetExtensionMethods(ArrayBuilder methods, string n { var thisParam = method.Parameters.First(); - // Tracked by https://github.com/dotnet/roslyn/issues/76130 : we should use similar logic when looking up new extension members + // Tracked by https://github.com/dotnet/roslyn/issues/78827 : MQ, we should use similar logic when looking up new extension members if ((thisParam.RefKind == RefKind.Ref && !thisParam.Type.IsValueType) || (thisParam.RefKind is RefKind.In or RefKind.RefReadOnlyParameter && thisParam.Type.TypeKind != TypeKind.Struct)) { diff --git a/src/Compilers/CSharp/Portable/Symbols/Source/SourcePropertySymbolBase.cs b/src/Compilers/CSharp/Portable/Symbols/Source/SourcePropertySymbolBase.cs index 1f51f81bfffa0..93cfe2842bc9b 100644 --- a/src/Compilers/CSharp/Portable/Symbols/Source/SourcePropertySymbolBase.cs +++ b/src/Compilers/CSharp/Portable/Symbols/Source/SourcePropertySymbolBase.cs @@ -501,7 +501,7 @@ static bool isPossibleIndexerNameAttribute(AttributeSyntax node, Binder? rootBin static bool isPossibleIndexerNameAttributeInExtension(AttributeSyntax node, Binder? rootBinderOpt) { - // Tracked by https://github.com/dotnet/roslyn/issues/76130 : Temporarily limit binding to a string literal argument in order to avoid a binding cycle. + // Tracked by https://github.com/dotnet/roslyn/issues/78829 : extension indexers, Temporarily limit binding to a string literal argument in order to avoid a binding cycle. if (node.ArgumentList?.Arguments is not [{ NameColon: null, NameEquals: null, Expression: LiteralExpressionSyntax { RawKind: (int)SyntaxKind.StringLiteralExpression } }]) { return false; diff --git a/src/Compilers/CSharp/Portable/Syntax/Syntax.xml b/src/Compilers/CSharp/Portable/Syntax/Syntax.xml index ee5d7ede378e0..c8dc72b771244 100644 --- a/src/Compilers/CSharp/Portable/Syntax/Syntax.xml +++ b/src/Compilers/CSharp/Portable/Syntax/Syntax.xml @@ -4359,7 +4359,7 @@ - + Gets the identifier. diff --git a/src/Compilers/CSharp/Portable/Syntax/SyntaxKindFacts.cs b/src/Compilers/CSharp/Portable/Syntax/SyntaxKindFacts.cs index 5e22aa093ff31..7b0fd1c1de5a0 100644 --- a/src/Compilers/CSharp/Portable/Syntax/SyntaxKindFacts.cs +++ b/src/Compilers/CSharp/Portable/Syntax/SyntaxKindFacts.cs @@ -853,7 +853,7 @@ public static SyntaxKind GetBaseTypeDeclarationKind(SyntaxKind kind) return kind == SyntaxKind.EnumKeyword ? SyntaxKind.EnumDeclaration : GetTypeDeclarationKind(kind); } - // Tracked by https://github.com/dotnet/roslyn/issues/76130 : decide what we want for extension declaration + // Tracked by https://github.com/dotnet/roslyn/issues/78957 : public API, decide what we want for extension declaration public static SyntaxKind GetTypeDeclarationKind(SyntaxKind kind) { switch (kind) diff --git a/src/Compilers/CSharp/Test/Emit3/Semantics/ExtensionTests.cs b/src/Compilers/CSharp/Test/Emit3/Semantics/ExtensionTests.cs index 5424ae1691dc0..9ad23e27e5b22 100644 --- a/src/Compilers/CSharp/Test/Emit3/Semantics/ExtensionTests.cs +++ b/src/Compilers/CSharp/Test/Emit3/Semantics/ExtensionTests.cs @@ -11542,11 +11542,11 @@ public static class E var model = comp.GetSemanticModel(tree); var memberAccess = GetSyntax(tree, "object.P"); Assert.Equal("System.Int32 E.<>E__0.P { get; }", model.GetSymbolInfo(memberAccess).Symbol.ToTestDisplayString()); - Assert.Equal([], model.GetMemberGroup(memberAccess).ToTestDisplayStrings()); // Tracked by https://github.com/dotnet/roslyn/issues/76130 : handle GetMemberGroup on a property access + Assert.Equal([], model.GetMemberGroup(memberAccess).ToTestDisplayStrings()); // Tracked by https://github.com/dotnet/roslyn/issues/78957 : handle GetMemberGroup on a property access memberAccess = GetSyntax(tree, "int.P"); Assert.Equal("System.Int32 E.<>E__0.P { get; }", model.GetSymbolInfo(memberAccess).Symbol.ToTestDisplayString()); - Assert.Equal([], model.GetMemberGroup(memberAccess).ToTestDisplayStrings()); // Tracked by https://github.com/dotnet/roslyn/issues/76130 : handle GetMemberGroup on a property access + Assert.Equal([], model.GetMemberGroup(memberAccess).ToTestDisplayStrings()); // Tracked by https://github.com/dotnet/roslyn/issues/78957 : handle GetMemberGroup on a property access } [Fact] @@ -13869,7 +13869,7 @@ static class E } } """; - // Tracked by https://github.com/dotnet/roslyn/issues/76130 : missing ERR_AmbiguousPrimaryConstructorParameterAsColorColorReceiver + // Tracked by https://github.com/dotnet/roslyn/issues/78968 : missing ERR_AmbiguousPrimaryConstructorParameterAsColorColorReceiver var comp = CreateCompilation(source, options: TestOptions.ReleaseDll); comp.VerifyEmitDiagnostics( //// (5,9): error CS9106: Identifier 'Color' is ambiguous between type 'Color' and parameter 'Color Color' in this context. @@ -13912,7 +13912,7 @@ static class E2 } } """; - // Tracked by https://github.com/dotnet/roslyn/issues/76130 : missing ERR_AmbiguousPrimaryConstructorParameterAsColorColorReceiver + // Tracked by https://github.com/dotnet/roslyn/issues/78968 : missing ERR_AmbiguousPrimaryConstructorParameterAsColorColorReceiver var comp = CreateCompilation(source, options: TestOptions.ReleaseDll); comp.VerifyEmitDiagnostics( //// (5,9): error CS9106: Identifier 'Color' is ambiguous between type 'Color' and parameter 'Color Color' in this context. @@ -15327,7 +15327,7 @@ public static class Extensions var memberAccess = GetSyntax(tree, "new object().P"); Assert.Equal("System.Action Extensions.<>E__0.P { get; }", model.GetSymbolInfo(memberAccess).Symbol.ToTestDisplayString()); Assert.Equal([], model.GetSymbolInfo(memberAccess).CandidateSymbols.ToTestDisplayStrings()); - Assert.Equal([], model.GetMemberGroup(memberAccess).ToTestDisplayStrings()); // Tracked by https://github.com/dotnet/roslyn/issues/76130 : handle GetMemberGroup on a property access + Assert.Equal([], model.GetMemberGroup(memberAccess).ToTestDisplayStrings()); // Tracked by https://github.com/dotnet/roslyn/issues/78957 : handle GetMemberGroup on a property access } [Fact] @@ -16642,7 +16642,7 @@ public class C Diagnostic(ErrorCode.ERR_BadDynamicQuery, "where i is not null").WithLocation(2, 9)); } - [Fact(Skip = "Tracked by https://github.com/dotnet/roslyn/issues/76130 : WasPropertyBackingFieldAccessChecked asserts that we're setting twice")] + [Fact(Skip = "Tracked by https://github.com/dotnet/roslyn/issues/78968 : WasPropertyBackingFieldAccessChecked asserts that we're setting twice")] public void ResolveAll_Query_Cast() { var source = """ @@ -17366,7 +17366,7 @@ static class E var model = comp.GetSemanticModel(tree); var memberAccess = GetSyntax(tree, "object.M"); Assert.Null(model.GetSymbolInfo(memberAccess).Symbol); - Assert.Empty(model.GetMemberGroup(memberAccess)); // Tracked by https://github.com/dotnet/roslyn/issues/76130 : consider handling BoundBadExpression better + Assert.Empty(model.GetMemberGroup(memberAccess)); // Tracked by https://github.com/dotnet/roslyn/issues/78957 : consider handling BoundBadExpression better } [Fact] @@ -17404,7 +17404,7 @@ static class E var model = comp.GetSemanticModel(tree); var memberAccess = GetSyntax(tree, "new object().M"); Assert.Equal("System.Action E.<>E__0.M { get; }", model.GetSymbolInfo(memberAccess).Symbol.ToTestDisplayString()); - Assert.Equal([], model.GetMemberGroup(memberAccess).ToTestDisplayStrings()); // Tracked by https://github.com/dotnet/roslyn/issues/76130 : handle GetMemberGroup on a property access + Assert.Equal([], model.GetMemberGroup(memberAccess).ToTestDisplayStrings()); // Tracked by https://github.com/dotnet/roslyn/issues/78957 : handle GetMemberGroup on a property access } [Fact] @@ -17442,7 +17442,7 @@ static class E var model = comp.GetSemanticModel(tree); var memberAccess = GetSyntax(tree, "new object().M"); Assert.Equal("System.Action E.<>E__0.M { get; }", model.GetSymbolInfo(memberAccess).Symbol.ToTestDisplayString()); - Assert.Equal([], model.GetMemberGroup(memberAccess).ToTestDisplayStrings()); // Tracked by https://github.com/dotnet/roslyn/issues/76130 : handle GetMemberGroup on a property access + Assert.Equal([], model.GetMemberGroup(memberAccess).ToTestDisplayStrings()); // Tracked by https://github.com/dotnet/roslyn/issues/78957 : handle GetMemberGroup on a property access } [Fact] @@ -17690,7 +17690,7 @@ static class E var model = comp.GetSemanticModel(tree); var memberAccess = GetSyntax(tree, "new object().M"); Assert.Equal("System.Int32 E.<>E__0.M { get; }", model.GetSymbolInfo(memberAccess).Symbol.ToTestDisplayString()); - Assert.Equal([], model.GetMemberGroup(memberAccess).ToTestDisplayStrings()); // Tracked by https://github.com/dotnet/roslyn/issues/76130 : handle GetMemberGroup on a property access + Assert.Equal([], model.GetMemberGroup(memberAccess).ToTestDisplayStrings()); // Tracked by https://github.com/dotnet/roslyn/issues/78957 : handle GetMemberGroup on a property access } [Fact] @@ -18866,7 +18866,7 @@ static class E var model = comp.GetSemanticModel(tree); var property = GetSyntax(tree, "C.Property"); Assert.Equal("System.Int32 E.<>E__0.Property { set; }", model.GetSymbolInfo(property).Symbol.ToTestDisplayString()); - Assert.Empty(model.GetMemberGroup(property)); // Tracked by https://github.com/dotnet/roslyn/issues/76130 : handle GetMemberGroup on a property access + Assert.Empty(model.GetMemberGroup(property)); // Tracked by https://github.com/dotnet/roslyn/issues/78957 : handle GetMemberGroup on a property access } [Fact] @@ -18898,7 +18898,7 @@ static class E var model = comp.GetSemanticModel(tree); var property = GetSyntax(tree, "C.Property"); Assert.Equal("System.Int32 E.<>E__0.Property { set; }", model.GetSymbolInfo(property).Symbol.ToTestDisplayString()); - Assert.Empty(model.GetMemberGroup(property)); // Tracked by https://github.com/dotnet/roslyn/issues/76130 : handle GetMemberGroup on a property access + Assert.Empty(model.GetMemberGroup(property)); // Tracked by https://github.com/dotnet/roslyn/issues/78957 : handle GetMemberGroup on a property access } [Fact] @@ -19165,7 +19165,7 @@ public static void M1(T x) where T : unmanaged } } """; - // Tracked by https://github.com/dotnet/roslyn/issues/76130 : missing ERR_AmbiguousPrimaryConstructorParameterAsColorColorReceiver + // Tracked by https://github.com/dotnet/roslyn/issues/78968 : missing ERR_AmbiguousPrimaryConstructorParameterAsColorColorReceiver var comp = CreateCompilation(source, options: TestOptions.ReleaseDll); comp.VerifyEmitDiagnostics( //// (5,9): error CS9106: Identifier 'Color' is ambiguous between type 'Color' and parameter 'Color Color' in this context. @@ -19211,7 +19211,7 @@ static class E2 } } """; - // Tracked by https://github.com/dotnet/roslyn/issues/76130 : missing ERR_AmbiguousPrimaryConstructorParameterAsColorColorReceiver + // Tracked by https://github.com/dotnet/roslyn/issues/78968 : missing ERR_AmbiguousPrimaryConstructorParameterAsColorColorReceiver var comp = CreateCompilation(source, options: TestOptions.ReleaseDll); comp.VerifyEmitDiagnostics(); @@ -19254,7 +19254,7 @@ public static void M1(T x) where T : unmanaged } } """; - // Tracked by https://github.com/dotnet/roslyn/issues/76130 : missing ERR_AmbiguousPrimaryConstructorParameterAsColorColorReceiver + // Tracked by https://github.com/dotnet/roslyn/issues/78968 : missing ERR_AmbiguousPrimaryConstructorParameterAsColorColorReceiver var comp = CreateCompilation(source, options: TestOptions.ReleaseDll); comp.VerifyEmitDiagnostics( //// (5,9): error CS9106: Identifier 'Color' is ambiguous between type 'Color' and parameter 'Color Color' in this context. @@ -19413,7 +19413,7 @@ static class E Assert.Equal(["void E.<>E__0.Method()"], model.GetMemberGroup(memberAccess1).ToTestDisplayStrings()); var memberAccess2 = GetSyntax(tree, "object.Property"); - Assert.Equal([], model.GetMemberGroup(memberAccess2).ToTestDisplayStrings()); // Tracked by https://github.com/dotnet/roslyn/issues/76130 : handle GetMemberGroup on a property access + Assert.Equal([], model.GetMemberGroup(memberAccess2).ToTestDisplayStrings()); // Tracked by https://github.com/dotnet/roslyn/issues/78957 : handle GetMemberGroup on a property access } [Fact] @@ -19623,7 +19623,7 @@ static class E Assert.Null(model.GetSymbolInfo(memberAccess).Symbol); Assert.Equal(["System.Int32 E.<>E__0.Property { set; }"], model.GetSymbolInfo(memberAccess).CandidateSymbols.ToTestDisplayStrings()); Assert.Equal(CandidateReason.NotAVariable, model.GetSymbolInfo(memberAccess).CandidateReason); - Assert.Equal([], model.GetMemberGroup(memberAccess).ToTestDisplayStrings()); // Tracked by https://github.com/dotnet/roslyn/issues/76130 : handle GetMemberGroup on a property access + Assert.Equal([], model.GetMemberGroup(memberAccess).ToTestDisplayStrings()); // Tracked by https://github.com/dotnet/roslyn/issues/78957 : handle GetMemberGroup on a property access } [Fact] @@ -20040,7 +20040,7 @@ static class E2 Assert.Null(model.GetSymbolInfo(memberAccess).Symbol); Assert.Equal(["System.String E1.<>E__0.M()", "System.String E2.<>E__0.M { get; }"], model.GetSymbolInfo(memberAccess).CandidateSymbols.ToTestDisplayStrings()); - Assert.Empty(model.GetMemberGroup(memberAccess)); // Tracked by https://github.com/dotnet/roslyn/issues/76130 : consider handling BoundBadExpression better + Assert.Empty(model.GetMemberGroup(memberAccess)); // Tracked by https://github.com/dotnet/roslyn/issues/78957 : public API, consider handling BoundBadExpression better } [Fact] @@ -20076,7 +20076,7 @@ static class E2 var memberAccess = GetSyntax(tree, "object.M"); Assert.Null(model.GetSymbolInfo(memberAccess).Symbol); - // Tracked by https://github.com/dotnet/roslyn/issues/76130 : consider handling BoundBadExpression better + // Tracked by https://github.com/dotnet/roslyn/issues/78957 : public API, consider handling BoundBadExpression better Assert.Equal(["System.String E1.<>E__0.M()", "System.String E2.<>E__0.M { get; }"], model.GetSymbolInfo(memberAccess).CandidateSymbols.ToTestDisplayStrings()); Assert.Empty(model.GetMemberGroup(memberAccess)); @@ -23103,7 +23103,6 @@ public int Length """; var comp = CreateCompilation(src, targetFramework: TargetFramework.Net70); - // Tracked by https://github.com/dotnet/roslyn/issues/76130 : confirm whether we want extension Length/Count to contribute to list-patterns comp.VerifyEmitDiagnostics( // (1,33): error CS8985: List patterns may not be used for a value of type 'C'. No suitable 'Length' or 'Count' property was found. // System.Console.Write(new C() is ["hi"]); @@ -24067,7 +24066,7 @@ static class E2 Assert.Equal(["System.String E1.<>E__0.M()", "System.Func E2.<>E__0.M { get; }"], model.GetSymbolInfo(memberAccess).CandidateSymbols.ToTestDisplayStrings()); - Assert.Empty(model.GetMemberGroup(memberAccess)); // Tracked by https://github.com/dotnet/roslyn/issues/76130 : consider handling BoundBadExpression better + Assert.Empty(model.GetMemberGroup(memberAccess)); // Tracked by https://github.com/dotnet/roslyn/issues/78957 : public API, consider handling BoundBadExpression better } [Fact] @@ -24557,7 +24556,7 @@ public void StaticMethodInvocation_TupleTypeReceiver() (string, string).M(); (int a, int b).M(); """; - // Tracked by https://github.com/dotnet/roslyn/issues/76130 : consider parsing this + // Tracked by https://github.com/dotnet/roslyn/issues/78961 : consider parsing this var comp = CreateCompilation(src); comp.VerifyDiagnostics( // (1,2): error CS1525: Invalid expression term 'string' @@ -24590,7 +24589,7 @@ public void StaticMethodInvocation_TupleTypeReceiver_02() ((string, string)).M(); ((int a, int b)).M(); """; - // Tracked by https://github.com/dotnet/roslyn/issues/76130 : consider parsing this + // Tracked by https://github.com/dotnet/roslyn/issues/78961 : consider parsing this var comp = CreateCompilation(src); comp.VerifyDiagnostics( // (1,3): error CS1525: Invalid expression term 'string' @@ -24629,7 +24628,7 @@ void M() } } """; - // Tracked by https://github.com/dotnet/roslyn/issues/76130 : consider parsing this + // Tracked by https://github.com/dotnet/roslyn/issues/78961 : consider parsing this var comp = CreateCompilation(src, options: TestOptions.UnsafeDebugDll); comp.VerifyDiagnostics( // (5,13): error CS1001: Identifier expected @@ -26414,7 +26413,7 @@ int this[int y] "; var comp = CreateCompilation(src); - // Tracked by https://github.com/dotnet/roslyn/issues/76130 : We do not allow complex forms of IndexerName attribute due to a possible binding cycle + // Tracked by https://github.com/dotnet/roslyn/issues/78829 : indexers, We do not allow complex forms of IndexerName attribute due to a possible binding cycle comp.VerifyEmitDiagnostics( // (7,54): error CS8078: An expression is too long or complex to compile // [System.Runtime.CompilerServices.IndexerName(Str)] @@ -31992,7 +31991,7 @@ public static class E Assert.Equal([ "System.Boolean System.Object.Equals(System.Object objA, System.Object objB)", "System.Boolean System.Object.ReferenceEquals(System.Object objA, System.Object objB)"], - model.LookupStaticMembers(position: 0, o, name: null).ToTestDisplayStrings()); // Tracked by https://github.com/dotnet/roslyn/issues/76130 : should we include extension static members? + model.LookupStaticMembers(position: 0, o, name: null).ToTestDisplayStrings()); // Tracked by https://github.com/dotnet/roslyn/issues/78957 : public API, should we include extension static members? Assert.Empty(model.LookupNamespacesAndTypes(position: 0, o, name: null)); } @@ -32458,7 +32457,7 @@ static class E var model = comp.GetSemanticModel(tree); var memberAccess = GetSyntax(tree, "object.P"); - Assert.Equal([], model.GetMemberGroup(memberAccess).ToTestDisplayStrings()); // Tracked by https://github.com/dotnet/roslyn/issues/76130 : handle GetMemberGroup on a property access + Assert.Equal([], model.GetMemberGroup(memberAccess).ToTestDisplayStrings()); // Tracked by https://github.com/dotnet/roslyn/issues/78957 : handle GetMemberGroup on a property access } [Fact] @@ -32727,7 +32726,7 @@ static class E2 var memberAccess = GetSyntax(tree, "object.P"); Assert.Equal("System.Int32 E2.<>E__0.P { get; }", model.GetSymbolInfo(memberAccess).Symbol.ToTestDisplayString()); Assert.Equal([], model.GetSymbolInfo(memberAccess).CandidateSymbols.ToTestDisplayStrings()); - Assert.Equal([], model.GetMemberGroup(memberAccess).ToTestDisplayStrings()); // Tracked by https://github.com/dotnet/roslyn/issues/76130 : handle GetMemberGroup on a property access + Assert.Equal([], model.GetMemberGroup(memberAccess).ToTestDisplayStrings()); // Tracked by https://github.com/dotnet/roslyn/issues/78957 : handle GetMemberGroup on a property access } [Fact] @@ -33376,7 +33375,7 @@ static class E public partial class RegionAnalysisTests : FlowTestBase { - // Tracked by https://github.com/dotnet/roslyn/issues/76130 : consider removing `this` from the region analysis tests + // Tracked by https://github.com/dotnet/roslyn/issues/78968 : consider removing `this` from the region analysis tests [Fact] public void RegionAnalysis_01() { @@ -36064,7 +36063,7 @@ static class E [Fact] public void ReceiverParameterValidation_UnnamedReceiverParameter_Scoped() { - // Tracked by https://github.com/dotnet/roslyn/issues/76130 : This should probably parse (but still error) + // Tracked by https://github.com/dotnet/roslyn/issues/78961 : This should probably parse (but still error) string source = """ static class E { @@ -36703,7 +36702,7 @@ static class E Assert.Equal("<>E__0", comp.GetTypeByMetadataName("E").GetTypeMembers().Single().ExtensionName); - // Tracked by https://github.com/dotnet/roslyn/issues/76130 : we should find the unspeakable nested type + // Tracked by https://github.com/dotnet/roslyn/issues/78968 : we should find the unspeakable nested type Assert.Null(comp.GetTypeByMetadataName("E+<>E__0")); } @@ -39655,7 +39654,7 @@ class C public object? P => null; } """; - // Tracked by https://github.com/dotnet/roslyn/issues/76130 : we shouldn't care about static/instance mismatch in nameof + // Tracked by https://github.com/dotnet/roslyn/issues/78968 : should disallow usage of extension members in nameof comp = CreateCompilation(src, targetFramework: TargetFramework.Net90); comp.VerifyEmitDiagnostics( // (5,5): warning CS8602: Dereference of a possibly null reference. diff --git a/src/Compilers/CSharp/Test/Emit3/Semantics/ExtensionTests2.cs b/src/Compilers/CSharp/Test/Emit3/Semantics/ExtensionTests2.cs index 3026f4bc56e36..3bd43cf601365 100644 --- a/src/Compilers/CSharp/Test/Emit3/Semantics/ExtensionTests2.cs +++ b/src/Compilers/CSharp/Test/Emit3/Semantics/ExtensionTests2.cs @@ -597,7 +597,7 @@ public static class E public static void M2(this T t) { System.Console.Write("method2 "); } } """; - // Tracked by https://github.com/dotnet/roslyn/issues/76130 : should work + // Tracked by https://github.com/dotnet/roslyn/issues/78968 : should work var comp = CreateCompilation(src); comp.VerifyEmitDiagnostics( // (4,12): error CS1061: '' does not contain a definition for 'P' and no accessible extension method 'P' accepting a first argument of type '' could be found (are you missing a using directive or an assembly reference?) @@ -2388,7 +2388,7 @@ static class E2 """; var comp = CreateCompilation(src); - // Tracked by https://github.com/dotnet/roslyn/issues/76130 : the diagnostic should describe what went wrong + // Tracked by https://github.com/dotnet/roslyn/issues/78830 : diagnostic quality, the diagnostic should describe what went wrong comp.VerifyEmitDiagnostics( // (1,9): error CS9286: 'object' does not contain a definition for 'M' and no accessible extension member 'M' for receiver of type 'object' could be found (are you missing a using directive or an assembly reference?) // var x = object.M; // 1 @@ -5392,7 +5392,7 @@ public static void Method() { } public static void M2() { } } """; - // Tracked by https://github.com/dotnet/roslyn/issues/76130 : cref, such unqualified references in CREF should work within context of enclosing static type + // Tracked by https://github.com/dotnet/roslyn/issues/78967 : cref, such unqualified references in CREF should work within context of enclosing static type var comp = CreateCompilation(src, parseOptions: TestOptions.RegularPreviewWithDocumentationComments); comp.VerifyEmitDiagnostics( // (1,16): warning CS1574: XML comment has cref attribute 'extension(int).Method' that could not be resolved diff --git a/src/Compilers/CSharp/Test/Symbol/Compilation/SemanticModelGetSemanticInfoTests.cs b/src/Compilers/CSharp/Test/Symbol/Compilation/SemanticModelGetSemanticInfoTests.cs index e23a2130fd8f5..ffd9ddaf95b3d 100644 --- a/src/Compilers/CSharp/Test/Symbol/Compilation/SemanticModelGetSemanticInfoTests.cs +++ b/src/Compilers/CSharp/Test/Symbol/Compilation/SemanticModelGetSemanticInfoTests.cs @@ -274,7 +274,7 @@ class K Assert.Null(semanticInfo.Symbol); Assert.Equal(CandidateReason.None, semanticInfo.CandidateReason); - // Tracked by https://github.com/dotnet/roslyn/issues/76130 : see if we can restore a behavior closer to previous (ie. returning the field as candidate symbol) + // Tracked by https://github.com/dotnet/roslyn/issues/78957 : public API, see if we can restore a behavior closer to previous (ie. returning the field as candidate symbol) Assert.Empty(semanticInfo.CandidateSymbols); Assert.Equal(0, semanticInfo.MethodGroup.Length); diff --git a/src/Compilers/CSharp/Test/Syntax/Parsing/ExtensionsParsingTests.cs b/src/Compilers/CSharp/Test/Syntax/Parsing/ExtensionsParsingTests.cs index 8d7bf2990fe4a..44ca611121a6f 100644 --- a/src/Compilers/CSharp/Test/Syntax/Parsing/ExtensionsParsingTests.cs +++ b/src/Compilers/CSharp/Test/Syntax/Parsing/ExtensionsParsingTests.cs @@ -19,7 +19,7 @@ public ExtensionsParsingTests(ITestOutputHelper output) : base(output) { } [Fact] public void LangVer13() { - // Tracked by https://github.com/dotnet/roslyn/issues/76130 : consider giving a LangVer error to trigger UpgradeProject + // Tracked by https://github.com/dotnet/roslyn/issues/78961 : consider giving a LangVer error to trigger UpgradeProject UsingTree(""" class C { diff --git a/src/Compilers/VisualBasic/Test/Symbol/SymbolDisplay/SymbolDisplayTests.vb b/src/Compilers/VisualBasic/Test/Symbol/SymbolDisplay/SymbolDisplayTests.vb index 2dd567fc52e14..abc8d80b989d8 100644 --- a/src/Compilers/VisualBasic/Test/Symbol/SymbolDisplay/SymbolDisplayTests.vb +++ b/src/Compilers/VisualBasic/Test/Symbol/SymbolDisplay/SymbolDisplayTests.vb @@ -6125,7 +6125,7 @@ static class E Dim e = DirectCast(comp.GlobalNamespace.GetMembers("E").Single(), ITypeSymbol) Dim extension = e.GetMembers().OfType(Of ITypeSymbol).Single() - ' Tracked by https://github.com/dotnet/roslyn/issues/76130 : the arity should not be included in the extension type name + ' Tracked by https://github.com/dotnet/roslyn/issues/78957 : public API, the arity should not be included in the extension type name Assert.True(extension.IsExtension) Assert.Equal("E.<>E__0`1(Of T)", SymbolDisplay.ToDisplayString(extension, format))