public override bool SolveReferences(List <AssembleError> errorList) { if (UsedLocation == null) { errorList.Add(new Assemble.AssembleError() { Title = "Refersolving", Detail = "Value description refering memory isn't bind by Block location", Position = this.AssemblePosition }); return(false); } IdentifierSearchResult searchRes; if (!UsedLocation.FindIdentifier(this.Refername, IdentifierType.ReferencingAddress | IdentifierType.ReferencingSymbol, out searchRes)) { errorList.Add(new Assemble.AssembleError() { Title = "Refersolving", Detail = "Symbol not found in or out of the block", Position = this.AssemblePosition }); return(false); } switch (searchRes.Type) { case IdentifierType.ReferencingAddress: if (searchRes.AddressIdentifier != null) { this.Referencer = new ReferencerToAddress(this, searchRes.AddressIdentifier); } break; case IdentifierType.ReferencingSymbol: if (searchRes.ImmediateIdentifier != null) { this.Referencer = new ReferencerToSymbol(this, searchRes.ImmediateIdentifier); } break; } if (this.Referencer == null) { errorList.Add(new Assemble.AssembleError() { Title = "Refersolving", Detail = "Reference target has been found,but that symbol has null info (maybe bug)", Position = this.AssemblePosition }); return(false); } return(true); }
public override bool Equals(ReferencerBase val) { return(val.Equals(this)); }
public abstract bool Equals(ReferencerBase val);