Skip to content

Commit

Permalink
Remove part of fix for #749 - fixes #1062
Browse files Browse the repository at this point in the history
  • Loading branch information
GrahamTheCoder committed Dec 21, 2023
1 parent 4958153 commit 82f8bb2
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 43 deletions.
43 changes: 3 additions & 40 deletions CodeConverter/CSharp/DeclarationNodeVisitor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -818,7 +818,7 @@ private void AddRemainingInterfaceDeclarations(MethodDeclarationSyntax method, S
GetMethodId(interfaceImplement.Name) :
SetMethodId(interfaceImplement.Name));
var interfaceMethodDeclParams = new MethodDeclarationParameters(attributes, filteredModifiers,
method.ReturnType, method.TypeParameterList, MakeOptionalParametersRequired(method.ParameterList), method.ConstraintClauses, clause, identifier);
method.ReturnType, method.TypeParameterList, method.ParameterList, method.ConstraintClauses, clause, identifier);

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

if (hasExplicitInterfaceImplementation) {

var requiredParameterList = MakeOptionalParametersRequired(parameterList);
var delegatingClause = GetDelegatingClause(directlyConvertedCsIdentifier, requiredParameterList, false);
var delegatingClause = GetDelegatingClause(directlyConvertedCsIdentifier, parameterList, false);
var explicitInterfaceModifiers = convertedModifiers.RemoveWhere(m => m.IsCsMemberVisibility() || m.IsKind(CSSyntaxKind.VirtualKeyword, CSSyntaxKind.AbstractKeyword) || m.IsKind(CSSyntaxKind.OverrideKeyword, CSSyntaxKind.NewKeyword));

var interfaceDeclParams = new MethodDeclarationParameters(attributes, explicitInterfaceModifiers, returnType, typeParameters, requiredParameterList, constraints, delegatingClause);
var interfaceDeclParams = new MethodDeclarationParameters(attributes, explicitInterfaceModifiers, returnType, typeParameters, parameterList, constraints, delegatingClause);
AddInterfaceMemberDeclarations(declaredSymbol.ExplicitInterfaceImplementations, additionalDeclarations, interfaceDeclParams);
}

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


private static ParameterListSyntax MakeOptionalParametersRequired(ParameterListSyntax parameterList)
{
if (parameterList == null) return null;

var nonOptionalParameters = parameterList.Parameters.Select(ConvertOptionalParameter);

var separatedSyntaxList = SyntaxFactory.SeparatedList(nonOptionalParameters);
var newParameterList = parameterList.WithParameters(separatedSyntaxList);
return newParameterList;
}

private static ParameterSyntax ConvertOptionalParameter(ParameterSyntax parameter)
{
var optionalAttributes = new List<string> { nameof(OptionalAttribute).GetAttributeIdentifier(),
nameof(DefaultParameterValueAttribute).GetAttributeIdentifier() };

var attrListsToRemove = parameter.AttributeLists.SingleOrDefault(aList => aList.Attributes
.All(a =>
{
string attrIdentifier = string.Empty;

if (a.Name is IdentifierNameSyntax identifierNameSyntax) {
attrIdentifier = identifierNameSyntax.Identifier.Text;
} else if (a.Name is AliasQualifiedNameSyntax aliasQualifiedNameSyntax) {
attrIdentifier = aliasQualifiedNameSyntax.Alias.Identifier.Text;
}

return optionalAttributes.Contains(attrIdentifier);
}));

var newAttrLists = parameter.AttributeLists.Remove(attrListsToRemove);
return parameter.WithDefault(null).WithAttributeLists(newAttrLists);
}

private static ArrowExpressionClauseSyntax GetDelegatingClause(SyntaxToken csIdentifier,
ParameterListSyntax parameterList, bool isSetAccessor)
{
Expand Down
6 changes: 3 additions & 3 deletions Tests/CSharp/MemberTests/MemberTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2280,7 +2280,7 @@ private int ExplicitFunc(string str = """", int i2 = 1)
return 5;
}
int IFoo.ExplicitFunc(string str, int i2) => ExplicitFunc(str, i2);
int IFoo.ExplicitFunc(string str = """", int i2 = 1) => ExplicitFunc(str, i2);
private int get_ExplicitProp(string str = """")
{
Expand All @@ -2291,8 +2291,8 @@ private void set_ExplicitProp(string str = """", int value = default)
{
}
int IFoo.get_ExplicitProp(string str) => get_ExplicitProp(str);
void IFoo.set_ExplicitProp(string str, int value) => set_ExplicitProp(str, value);
int IFoo.get_ExplicitProp(string str = """") => get_ExplicitProp(str);
void IFoo.set_ExplicitProp(string str = """", int value = default) => set_ExplicitProp(str, value);
}
");
}
Expand Down

0 comments on commit 82f8bb2

Please sign in to comment.