Skip to content

Commit

Permalink
Feature/address name +semver:major (#99)
Browse files Browse the repository at this point in the history
* fix

* #30 - инкапсуляция логики формирования названия адреса
  • Loading branch information
Stepami authored Aug 12, 2024
1 parent de4e279 commit 70a7e42
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -268,11 +268,11 @@ public Type Visit(LexicalDeclaration visitable)
{
var assignment = visitable.Assignments[i];
var registeredSymbol = _symbolTables[visitable.Scope].FindSymbol<VariableSymbol>(
assignment.Destination.Id);
assignment.Destination.Id)!;
var sourceType = assignment.Source.Accept(This);
if (sourceType.Equals(undefined))
throw new CannotDefineType(assignment.Source.Segment);
if (!registeredSymbol!.Type.Equals(undefined) && !registeredSymbol.Type.Equals(sourceType))
if (!registeredSymbol.Type.Equals(undefined) && !registeredSymbol.Type.Equals(sourceType))
throw new IncompatibleTypesOfOperands(
assignment.Segment,
left: registeredSymbol.Type,
Expand Down
4 changes: 3 additions & 1 deletion src/Domain/HydraScript.Domain.BackEnd/IAddress.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,7 @@ namespace HydraScript.Domain.BackEnd;

public interface IAddress : IEquatable<IAddress>
{
IAddress Next { get; set; }
public IAddress Next { get; set; }

public string Name { get; }
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,27 @@ namespace HydraScript.Domain.BackEnd.Impl.Addresses;
public class HashAddress(int seed) : IAddress
{
private readonly int _seed = seed;
private string? _name;

private readonly Guid _id = Guid.NewGuid();

public IAddress Next { get; set; } = default!;

public string Name
{
get
{
if (_name is null)
{
var baseName = $"{unchecked((uint)GetHashCode())}{_id:N}";
var nameArray = Random.Shared.GetItems(baseName.AsSpan(), 10);
_name = new string(nameArray);
}

return _name;
}
}

public bool Equals(IAddress? other)
{
if (other is HashAddress hashed)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ public Simple(
}

protected override void OnSetOfAddress(IAddress address) =>
Left ??= $"_t{unchecked((uint)address.GetHashCode())}";
Left ??= address.Name;

public override IAddress Execute(IExecuteParams executeParams)
{
Expand Down

0 comments on commit 70a7e42

Please sign in to comment.