Skip to content

Commit c0987df

Browse files
Remove part of fix for #749 - fixes #1062
1 parent 6986791 commit c0987df

2 files changed

Lines changed: 6 additions & 43 deletions

File tree

CodeConverter/CSharp/DeclarationNodeVisitor.cs

Lines changed: 3 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -818,7 +818,7 @@ private void AddRemainingInterfaceDeclarations(MethodDeclarationSyntax method, S
818818
GetMethodId(interfaceImplement.Name) :
819819
SetMethodId(interfaceImplement.Name));
820820
var interfaceMethodDeclParams = new MethodDeclarationParameters(attributes, filteredModifiers,
821-
method.ReturnType, method.TypeParameterList, MakeOptionalParametersRequired(method.ParameterList), method.ConstraintClauses, clause, identifier);
821+
method.ReturnType, method.TypeParameterList, method.ParameterList, method.ConstraintClauses, clause, identifier);
822822

823823
AddInterfaceMemberDeclarations(interfaceImplement, additionalDeclarations, interfaceMethodDeclParams);
824824
});
@@ -1173,12 +1173,10 @@ public override async Task<CSharpSyntaxNode> VisitMethodStatement(VBSyntax.Metho
11731173
directlyConvertedCsIdentifier = hasExplicitInterfaceImplementation ? directlyConvertedCsIdentifier : CommonConversions.ConvertIdentifier(node.Identifier);
11741174

11751175
if (hasExplicitInterfaceImplementation) {
1176-
1177-
var requiredParameterList = MakeOptionalParametersRequired(parameterList);
1178-
var delegatingClause = GetDelegatingClause(directlyConvertedCsIdentifier, requiredParameterList, false);
1176+
var delegatingClause = GetDelegatingClause(directlyConvertedCsIdentifier, parameterList, false);
11791177
var explicitInterfaceModifiers = convertedModifiers.RemoveWhere(m => m.IsCsMemberVisibility() || m.IsKind(CSSyntaxKind.VirtualKeyword, CSSyntaxKind.AbstractKeyword) || m.IsKind(CSSyntaxKind.OverrideKeyword, CSSyntaxKind.NewKeyword));
11801178

1181-
var interfaceDeclParams = new MethodDeclarationParameters(attributes, explicitInterfaceModifiers, returnType, typeParameters, requiredParameterList, constraints, delegatingClause);
1179+
var interfaceDeclParams = new MethodDeclarationParameters(attributes, explicitInterfaceModifiers, returnType, typeParameters, parameterList, constraints, delegatingClause);
11821180
AddInterfaceMemberDeclarations(declaredSymbol.ExplicitInterfaceImplementations, additionalDeclarations, interfaceDeclParams);
11831181
}
11841182

@@ -1273,41 +1271,6 @@ private void AddMemberDeclaration(ICollection<MemberDeclarationSyntax> additiona
12731271
additionalDeclarations.Add(declaration);
12741272
}
12751273

1276-
1277-
private static ParameterListSyntax MakeOptionalParametersRequired(ParameterListSyntax parameterList)
1278-
{
1279-
if (parameterList == null) return null;
1280-
1281-
var nonOptionalParameters = parameterList.Parameters.Select(ConvertOptionalParameter);
1282-
1283-
var separatedSyntaxList = SyntaxFactory.SeparatedList(nonOptionalParameters);
1284-
var newParameterList = parameterList.WithParameters(separatedSyntaxList);
1285-
return newParameterList;
1286-
}
1287-
1288-
private static ParameterSyntax ConvertOptionalParameter(ParameterSyntax parameter)
1289-
{
1290-
var optionalAttributes = new List<string> { nameof(OptionalAttribute).GetAttributeIdentifier(),
1291-
nameof(DefaultParameterValueAttribute).GetAttributeIdentifier() };
1292-
1293-
var attrListsToRemove = parameter.AttributeLists.SingleOrDefault(aList => aList.Attributes
1294-
.All(a =>
1295-
{
1296-
string attrIdentifier = string.Empty;
1297-
1298-
if (a.Name is IdentifierNameSyntax identifierNameSyntax) {
1299-
attrIdentifier = identifierNameSyntax.Identifier.Text;
1300-
} else if (a.Name is AliasQualifiedNameSyntax aliasQualifiedNameSyntax) {
1301-
attrIdentifier = aliasQualifiedNameSyntax.Alias.Identifier.Text;
1302-
}
1303-
1304-
return optionalAttributes.Contains(attrIdentifier);
1305-
}));
1306-
1307-
var newAttrLists = parameter.AttributeLists.Remove(attrListsToRemove);
1308-
return parameter.WithDefault(null).WithAttributeLists(newAttrLists);
1309-
}
1310-
13111274
private static ArrowExpressionClauseSyntax GetDelegatingClause(SyntaxToken csIdentifier,
13121275
ParameterListSyntax parameterList, bool isSetAccessor)
13131276
{

Tests/CSharp/MemberTests/MemberTests.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2280,7 +2280,7 @@ private int ExplicitFunc(string str = """", int i2 = 1)
22802280
return 5;
22812281
}
22822282
2283-
int IFoo.ExplicitFunc(string str, int i2) => ExplicitFunc(str, i2);
2283+
int IFoo.ExplicitFunc(string str = """", int i2 = 1) => ExplicitFunc(str, i2);
22842284
22852285
private int get_ExplicitProp(string str = """")
22862286
{
@@ -2291,8 +2291,8 @@ private void set_ExplicitProp(string str = """", int value = default)
22912291
{
22922292
}
22932293
2294-
int IFoo.get_ExplicitProp(string str) => get_ExplicitProp(str);
2295-
void IFoo.set_ExplicitProp(string str, int value) => set_ExplicitProp(str, value);
2294+
int IFoo.get_ExplicitProp(string str = """") => get_ExplicitProp(str);
2295+
void IFoo.set_ExplicitProp(string str = """", int value = default) => set_ExplicitProp(str, value);
22962296
}
22972297
");
22982298
}

0 commit comments

Comments
 (0)