Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public static Doc Print(CSharpSyntaxNode node, PrintingContext context)
TypeSyntax? returnType = null;
ExplicitInterfaceSpecifierSyntax? explicitInterfaceSpecifier = null;
TypeParameterListSyntax? typeParameterList = null;
Func<Doc>? identifier = null;
Func<CSharpSyntaxNode, PrintingContext, Doc>? identifier = null;
SyntaxList<TypeParameterConstraintClauseSyntax>? constraintClauses = null;
ParameterListSyntax? parameterList = null;
ConstructorInitializerSyntax? constructorInitializer = null;
Expand All @@ -46,21 +46,32 @@ public static Doc Print(CSharpSyntaxNode node, PrintingContext context)
{
returnType = methodDeclarationSyntax.ReturnType;
explicitInterfaceSpecifier = methodDeclarationSyntax.ExplicitInterfaceSpecifier;
identifier = () => Token.Print(methodDeclarationSyntax.Identifier, context);
identifier = static (node, context) =>
{
var methodDeclarationSyntax = (MethodDeclarationSyntax)node;
return Token.Print(methodDeclarationSyntax.Identifier, context);
};
typeParameterList = methodDeclarationSyntax.TypeParameterList;
constraintClauses = methodDeclarationSyntax.ConstraintClauses;
}
else if (node is DestructorDeclarationSyntax destructorDeclarationSyntax)
else if (node is DestructorDeclarationSyntax)
{
identifier = () =>
Doc.Concat(
identifier = static (node, context) =>
{
var destructorDeclarationSyntax = (DestructorDeclarationSyntax)node;
return Doc.Concat(
Token.Print(destructorDeclarationSyntax.TildeToken, context),
Token.Print(destructorDeclarationSyntax.Identifier, context)
);
};
}
else if (node is ConstructorDeclarationSyntax constructorDeclarationSyntax)
{
identifier = () => Token.Print(constructorDeclarationSyntax.Identifier, context);
identifier = static (node, context) =>
{
var constructorDeclarationSyntax = (ConstructorDeclarationSyntax)node;
return Token.Print(constructorDeclarationSyntax.Identifier, context);
};
constructorInitializer = constructorDeclarationSyntax.Initializer;
}

Expand All @@ -71,7 +82,11 @@ public static Doc Print(CSharpSyntaxNode node, PrintingContext context)
attributeLists = localFunctionStatementSyntax.AttributeLists;
modifiers = localFunctionStatementSyntax.Modifiers;
returnType = localFunctionStatementSyntax.ReturnType;
identifier = () => Token.Print(localFunctionStatementSyntax.Identifier, context);
identifier = static (node, context) =>
{
var localFunctionStatementSyntax = (LocalFunctionStatementSyntax)node;
return Token.Print(localFunctionStatementSyntax.Identifier, context);
};
typeParameterList = localFunctionStatementSyntax.TypeParameterList;
parameterList = localFunctionStatementSyntax.ParameterList;
constraintClauses = localFunctionStatementSyntax.ConstraintClauses;
Expand Down Expand Up @@ -163,7 +178,7 @@ void PrintMethodUnformattedWithoutAttributes(SyntaxTriviaList syntaxTriviaList)

if (identifier != null)
{
declarationGroup.Add(identifier());
declarationGroup.Add(identifier(node, context));
}

if (node is ConversionOperatorDeclarationSyntax conversionOperatorDeclarationSyntax)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ public static Doc Print(BasePropertyDeclarationSyntax node, PrintingContext cont
{
EqualsValueClauseSyntax? initializer = null;
ExplicitInterfaceSpecifierSyntax? explicitInterfaceSpecifierSyntax = null;
Func<Doc>? identifier = null;
Func<SyntaxNode, PrintingContext, Doc>? identifier = null;
Doc eventKeyword = Doc.Null;
ArrowExpressionClauseSyntax? expressionBody = null;
SyntaxToken? semicolonToken = null;
Expand All @@ -21,25 +21,37 @@ public static Doc Print(BasePropertyDeclarationSyntax node, PrintingContext cont
expressionBody = propertyDeclarationSyntax.ExpressionBody;
initializer = propertyDeclarationSyntax.Initializer;
explicitInterfaceSpecifierSyntax = propertyDeclarationSyntax.ExplicitInterfaceSpecifier;
identifier = () => Token.Print(propertyDeclarationSyntax.Identifier, context);
identifier = static (node, context) =>
{
var propertyDeclarationSyntax = (PropertyDeclarationSyntax)node;
return Token.Print(propertyDeclarationSyntax.Identifier, context);
};
semicolonToken = propertyDeclarationSyntax.SemicolonToken;
}
else if (node is IndexerDeclarationSyntax indexerDeclarationSyntax)
{
expressionBody = indexerDeclarationSyntax.ExpressionBody;
explicitInterfaceSpecifierSyntax = indexerDeclarationSyntax.ExplicitInterfaceSpecifier;
identifier = () =>
Doc.Concat(
identifier = static (node, context) =>
{
var indexerDeclarationSyntax = (IndexerDeclarationSyntax)node;
return Doc.Concat(
Token.Print(indexerDeclarationSyntax.ThisKeyword, context),
Node.Print(indexerDeclarationSyntax.ParameterList, context)
);
};

semicolonToken = indexerDeclarationSyntax.SemicolonToken;
}
else if (node is EventDeclarationSyntax eventDeclarationSyntax)
{
eventKeyword = Token.PrintWithSuffix(eventDeclarationSyntax.EventKeyword, " ", context);
explicitInterfaceSpecifierSyntax = eventDeclarationSyntax.ExplicitInterfaceSpecifier;
identifier = () => Token.Print(eventDeclarationSyntax.Identifier, context);
identifier = static (node, context) =>
{
var eventDeclarationSyntax = (EventDeclarationSyntax)node;
return Token.Print(eventDeclarationSyntax.Identifier, context);
};
semicolonToken = eventDeclarationSyntax.SemicolonToken;
}

Expand All @@ -56,7 +68,7 @@ public static Doc Print(BasePropertyDeclarationSyntax node, PrintingContext cont
Token.Print(explicitInterfaceSpecifierSyntax.DotToken, context)
)
: Doc.Null,
identifier != null ? identifier() : Doc.Null,
identifier != null ? identifier(node, context) : Doc.Null,
Contents(node, expressionBody, context),
initializer != null ? EqualsValueClause.Print(initializer, context) : Doc.Null,
semicolonToken.HasValue ? Token.Print(semicolonToken.Value, context) : Doc.Null
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ public static Doc Print(BaseTypeDeclarationSyntax node, PrintingContext context)
SyntaxList<TypeParameterConstraintClauseSyntax>? constraintClauses = null;
SyntaxToken? recordKeyword = null;
SyntaxToken? keyword = null;
Func<Doc>? members = null;
Func<CSharpSyntaxNode, PrintingContext, Doc>? members = null;
SyntaxToken? semicolonToken = null;

if (node is TypeDeclarationSyntax typeDeclarationSyntax)
Expand All @@ -24,14 +24,17 @@ public static Doc Print(BaseTypeDeclarationSyntax node, PrintingContext context)
constraintClauses = typeDeclarationSyntax.ConstraintClauses;
if (typeDeclarationSyntax.Members.Count > 0)
{
members = () =>
Doc.Indent(
members = static (node, context) =>
{
var typeDeclarationSyntax = (TypeDeclarationSyntax)node;
return Doc.Indent(
MembersWithForcedLines.Print(
typeDeclarationSyntax,
typeDeclarationSyntax.Members,
context
)
);
};
}

if (node is ClassDeclarationSyntax classDeclarationSyntax)
Expand Down Expand Up @@ -66,14 +69,17 @@ public static Doc Print(BaseTypeDeclarationSyntax node, PrintingContext context)
{
if (enumDeclarationSyntax.Members.Count > 0)
{
members = () =>
Doc.Indent(
members = static (node, context) =>
{
var enumDeclarationSyntax = (EnumDeclarationSyntax)node;
return Doc.Indent(
MembersWithForcedLines.Print(
enumDeclarationSyntax,
enumDeclarationSyntax.Members,
context
)
);
};
}

keyword = enumDeclarationSyntax.EnumKeyword;
Expand Down Expand Up @@ -151,7 +157,7 @@ public static Doc Print(BaseTypeDeclarationSyntax node, PrintingContext context)

if (members != null)
{
var membersContent = members();
var membersContent = members(node, context);

DocUtilities.RemoveInitialDoubleHardLine(membersContent);

Expand Down