Skip to content

Commit e217422

Browse files
committed
Make SqlNodeCloneContext readonly struct
1 parent 26bc157 commit e217422

3 files changed

Lines changed: 10 additions & 4 deletions

File tree

Orm/Xtensive.Orm/Sql/Dml/Expressions/SqlExpression.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,7 @@ public static implicit operator SqlExpression(SqlSelect select)
231231

232232
public sealed override bool Equals(object obj) => ReferenceEquals(this, obj);
233233

234-
public override SqlExpression Clone() => Clone(new SqlNodeCloneContext());
234+
public override SqlExpression Clone() => Clone(new SqlNodeCloneContext(false));
235235

236236
internal override abstract SqlExpression Clone(SqlNodeCloneContext context);
237237

Orm/Xtensive.Orm/Sql/Internals/SqlNodeCloneContext.cs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,10 @@
66

77
namespace Xtensive.Sql
88
{
9-
internal class SqlNodeCloneContext
9+
internal readonly struct SqlNodeCloneContext
1010
{
11-
public Dictionary<SqlNode, SqlNode> NodeMapping { get; } = new();
11+
private readonly Dictionary<SqlNode, SqlNode> nodeMapping;
12+
public Dictionary<SqlNode, SqlNode> NodeMapping => nodeMapping;
1213

1314
public T TryGet<T>(T node) where T : SqlNode =>
1415
NodeMapping.TryGetValue(node, out var clone)
@@ -20,5 +21,10 @@ public T Add<T>(T node, T clone) where T : SqlNode
2021
NodeMapping[node] = clone;
2122
return clone;
2223
}
24+
25+
public SqlNodeCloneContext(bool _)
26+
{
27+
nodeMapping = new();
28+
}
2329
}
2430
}

Orm/Xtensive.Orm/Sql/SqlNode.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public abstract class SqlNode : ISqlNode
2424
/// <returns>
2525
/// A new object that is a copy of this instance.
2626
/// </returns>
27-
public virtual object Clone() => Clone(new SqlNodeCloneContext());
27+
public virtual object Clone() => Clone(new SqlNodeCloneContext(false));
2828

2929
internal abstract object Clone(SqlNodeCloneContext context);
3030

0 commit comments

Comments
 (0)