Skip to content
Merged
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
2 changes: 1 addition & 1 deletion src/MLIR.Generators/DialectSourceEmitter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -224,7 +224,7 @@ private static void AppendOperationBodySyntaxClass(StringBuilder builder, Operat
builder.AppendLine(" return false;");
builder.AppendLine(" }");
builder.AppendLine();
builder.AppendLine(" public override void WriteTo(Text.SyntaxWriter writer, int indentLevel, System.Action<Text.SyntaxWriter, RegionSyntax, int> writeRegion)");
builder.AppendLine(" public override void WriteTo(Text.SyntaxWriter writer, int indentLevel)");
builder.AppendLine(" {");
foreach (var field in fields)
{
Expand Down
7 changes: 6 additions & 1 deletion src/MLIR/Syntax/BlockArgumentSyntax.cs
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,12 @@ public bool TryGetRawType(out RawSyntaxText? rawType)
/// </summary>
public RawSyntaxText RawType => TypeSyntax.GetRawText();

internal void WriteTo(SyntaxWriter writer, string defaultLeadingTrivia)
/// <summary>
/// Writes this block argument to the supplied syntax writer.
/// </summary>
/// <param name="writer">The syntax writer to write to.</param>
/// <param name="defaultLeadingTrivia">The fallback leading trivia to use when syntax does not carry explicit trivia.</param>
public void WriteTo(SyntaxWriter writer, string defaultLeadingTrivia)
{
writer.WriteToken(NameToken, defaultLeadingTrivia);
writer.WriteToken(ColonToken, string.Empty);
Expand Down
13 changes: 8 additions & 5 deletions src/MLIR/Syntax/BlockSyntax.cs
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
namespace MLIR.Syntax;

using System.Collections.Generic;
using System;
using MLIR.Text;

/// <summary>
Expand Down Expand Up @@ -72,10 +71,14 @@ public BlockSyntax(
/// </summary>
public string Label => LabelToken.Text;

internal void WriteTo(
/// <summary>
/// Writes this block to the supplied syntax writer.
/// </summary>
/// <param name="writer">The syntax writer to write to.</param>
/// <param name="regionIndentLevel">The indentation level of the containing region.</param>
public void WriteTo(
SyntaxWriter writer,
int regionIndentLevel,
Action<SyntaxWriter, OperationSyntax, int, string> writeOperation)
int regionIndentLevel)
{
// Synthetic entry blocks are a parser implementation detail. Omit their labels when
// printing unless the block carries arguments that require an explicit header.
Expand Down Expand Up @@ -108,7 +111,7 @@ internal void WriteTo(
var operationIndentLevel = blockHasExplicitLabel ? regionIndentLevel + 2 : regionIndentLevel + 1;
foreach (var operation in Operations)
{
writeOperation(writer, operation, operationIndentLevel, "\n");
writer.WriteOperation(operation, operationIndentLevel, "\n");
}
}

Expand Down
4 changes: 2 additions & 2 deletions src/MLIR/Syntax/GenericOperationBodySyntax.cs
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ public override bool TryGetGenericBody(out GenericOperationBodySyntax? genericBo
}

/// <inheritdoc/>
public override void WriteTo(Text.SyntaxWriter writer, int indentLevel, System.Action<Text.SyntaxWriter, RegionSyntax, int> writeRegion)
public override void WriteTo(Text.SyntaxWriter writer, int indentLevel)
{
writer.WriteToken(OperandList.OpenToken!.Value, string.Empty);
for (var i = 0; i < OperandList.Count; i++)
Expand Down Expand Up @@ -110,7 +110,7 @@ public override void WriteTo(Text.SyntaxWriter writer, int indentLevel, System.A

foreach (var region in Regions)
{
writeRegion(writer, region, indentLevel);
writer.WriteRegion(region, indentLevel);
}

if (Attributes.OpenToken != null)
Expand Down
6 changes: 5 additions & 1 deletion src/MLIR/Syntax/ModuleSyntax.cs
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,11 @@ public ModuleSyntax(IReadOnlyList<OperationSyntax> operations)
/// </summary>
public SyntaxToken EndOfFileToken { get; } = endOfFileToken;

internal void WriteTo(SyntaxWriter writer)
/// <summary>
/// Writes this module to the supplied syntax writer.
/// </summary>
/// <param name="writer">The syntax writer to write to.</param>
public void WriteTo(SyntaxWriter writer)
{
for (var i = 0; i < Operations.Count; i++)
{
Expand Down
2 changes: 1 addition & 1 deletion src/MLIR/Syntax/OperationBodySyntax.cs
Original file line number Diff line number Diff line change
Expand Up @@ -35,5 +35,5 @@ public GenericOperationBodySyntax GetGenericBody()
/// <summary>
/// Writes the operation body to the supplied syntax writer.
/// </summary>
public abstract void WriteTo(Text.SyntaxWriter writer, int indentLevel, System.Action<Text.SyntaxWriter, RegionSyntax, int> writeRegion);
public abstract void WriteTo(Text.SyntaxWriter writer, int indentLevel);
}
14 changes: 9 additions & 5 deletions src/MLIR/Syntax/OperationSyntax.cs
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
namespace MLIR.Syntax;

using System.Collections.Generic;
using System;
using MLIR.Text;

/// <summary>
Expand Down Expand Up @@ -221,11 +220,16 @@ public bool TryGetRawTypeSignature(out RawSyntaxText? rawTypeSignature)
/// </summary>
public bool HasCustomAssemblyBody => Body is not GenericOperationBodySyntax;

internal void WriteTo(
/// <summary>
/// Writes this operation to the supplied syntax writer.
/// </summary>
/// <param name="writer">The syntax writer to write to.</param>
/// <param name="indentLevel">The indentation level to use when indentation is synthesized.</param>
/// <param name="defaultLeadingTrivia">The fallback leading trivia to use when syntax does not carry explicit trivia.</param>
public void WriteTo(
SyntaxWriter writer,
int indentLevel,
string defaultLeadingTrivia,
Action<SyntaxWriter, RegionSyntax, int> writeRegion)
string defaultLeadingTrivia)
{
if (ResultTokens.Count > 0)
{
Expand All @@ -247,7 +251,7 @@ internal void WriteTo(
writer.WriteToken(NameToken, defaultLeadingTrivia, indentLevel);
}

Body.WriteTo(writer, indentLevel, writeRegion);
Body.WriteTo(writer, indentLevel);
}

private static IReadOnlyList<SyntaxToken> CreateValueTokens(IReadOnlyList<string> values)
Expand Down
13 changes: 8 additions & 5 deletions src/MLIR/Syntax/RegionSyntax.cs
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
namespace MLIR.Syntax;

using System.Collections.Generic;
using System;
using MLIR.Text;

/// <summary>
Expand Down Expand Up @@ -39,16 +38,20 @@ public RegionSyntax(IReadOnlyList<BlockSyntax> blocks)
/// </summary>
public SyntaxToken CloseBraceToken { get; } = closeBraceToken;

internal void WriteTo(
/// <summary>
/// Writes this region to the supplied syntax writer.
/// </summary>
/// <param name="writer">The syntax writer to write to.</param>
/// <param name="indentLevel">The indentation level of the containing operation.</param>
public void WriteTo(
SyntaxWriter writer,
int indentLevel,
Action<SyntaxWriter, OperationSyntax, int, string> writeOperation)
int indentLevel)
{
writer.WriteToken(OpenBraceToken, " ");

foreach (var block in Blocks)
{
block.WriteTo(writer, indentLevel, writeOperation);
block.WriteTo(writer, indentLevel);
}

writer.WriteToken(CloseBraceToken, "\n", indentLevel);
Expand Down
10 changes: 3 additions & 7 deletions src/MLIR/Text/SyntaxWriter.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
namespace MLIR.Text;

using System;
using System.Text;
using MLIR.Syntax;

Expand Down Expand Up @@ -60,8 +59,7 @@ public void WriteModule(ModuleSyntax module)
/// <param name="defaultLeadingTrivia">The fallback leading trivia to use when syntax does not carry explicit trivia.</param>
public void WriteOperation(OperationSyntax operation, int indentLevel, string defaultLeadingTrivia)
{
operation.WriteTo(this, indentLevel, defaultLeadingTrivia, static (writer, region, innerIndentLevel) =>
writer.WriteRegion(region, innerIndentLevel));
operation.WriteTo(this, indentLevel, defaultLeadingTrivia);
}

/// <summary>
Expand All @@ -71,8 +69,7 @@ public void WriteOperation(OperationSyntax operation, int indentLevel, string de
/// <param name="indentLevel">The indentation level of the containing operation.</param>
public void WriteRegion(RegionSyntax region, int indentLevel)
{
region.WriteTo(this, indentLevel, static (writer, operation, operationIndentLevel, operationLeadingTrivia) =>
writer.WriteOperation(operation, operationIndentLevel, operationLeadingTrivia));
region.WriteTo(this, indentLevel);
}

/// <summary>
Expand All @@ -82,8 +79,7 @@ public void WriteRegion(RegionSyntax region, int indentLevel)
/// <param name="regionIndentLevel">The indentation level of the containing region.</param>
public void WriteBlock(BlockSyntax block, int regionIndentLevel)
{
block.WriteTo(this, regionIndentLevel, static (writer, operation, operationIndentLevel, operationLeadingTrivia) =>
writer.WriteOperation(operation, operationIndentLevel, operationLeadingTrivia));
block.WriteTo(this, regionIndentLevel);
}

/// <summary>
Expand Down
2 changes: 1 addition & 1 deletion tests/MLIR.Generators.Tests/DialectGeneratorTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ public void GeneratesOperationBodySyntaxClassForDeclarativeAssemblyFormat()
Assert.Contains("return false;", registrationSource);

// WriteTo is implemented.
Assert.Contains("public override void WriteTo(Text.SyntaxWriter writer, int indentLevel, System.Action<Text.SyntaxWriter, RegionSyntax, int> writeRegion)", registrationSource);
Assert.Contains("public override void WriteTo(Text.SyntaxWriter writer, int indentLevel)", registrationSource);
}

[Fact]
Expand Down
2 changes: 1 addition & 1 deletion tests/MLIR.Tests/ConstructionTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ public override bool TryGetGenericBody(out GenericOperationBodySyntax? genericBo
return true;
}

public override void WriteTo(SyntaxWriter writer, int indentLevel, System.Action<SyntaxWriter, RegionSyntax, int> writeRegion)
public override void WriteTo(SyntaxWriter writer, int indentLevel)
{
writer.WriteRaw(Value, " ");
writer.WriteToken(ColonToken, " ");
Expand Down
2 changes: 1 addition & 1 deletion tests/MLIR.Tests/ParsingTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ public override bool TryGetGenericBody(out GenericOperationBodySyntax? genericBo
return true;
}

public override void WriteTo(SyntaxWriter writer, int indentLevel, System.Action<SyntaxWriter, RegionSyntax, int> writeRegion)
public override void WriteTo(SyntaxWriter writer, int indentLevel)
{
writer.WriteRaw(value, " ");
writer.WriteToken(this.genericBody.TypeSignatureColonToken ?? new SyntaxToken(":"), " ");
Expand Down
2 changes: 1 addition & 1 deletion tests/MLIR.Tests/SemanticTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ public override bool TryGetGenericBody(out GenericOperationBodySyntax? genericBo
return true;
}

public override void WriteTo(SyntaxWriter writer, int indentLevel, System.Action<SyntaxWriter, RegionSyntax, int> writeRegion)
public override void WriteTo(SyntaxWriter writer, int indentLevel)
{
writer.WriteRaw(Value, " ");
writer.WriteToken(ColonToken, " ");
Expand Down
Loading