private void CheckMove(Core.DataAccess destination, Core.Type srcType, Diagnostics.Span srcSpan) { if (!TypeResolver.ValidateDataAccess(this.session, this.funct, destination)) { this.foundErrors = true; return; } var destType = TypeResolver.GetDataAccessType(this.session, this.funct, destination); if (destType == null) return; if (!srcType.IsConvertibleTo(destType) && ShouldDiagnose(srcType) && ShouldDiagnose(destType)) { this.foundErrors = true; var destReg = destination as Core.DataAccessRegister; if (destReg != null && destReg.registerIndex == 0) { this.session.AddMessage( Diagnostics.MessageKind.Error, Diagnostics.MessageCode.IncompatibleTypes, "returning '" + srcType.GetString(this.session) + "' " + "but expecting '" + destType.GetString(this.session) + "'", srcSpan, destination.span); } else { this.session.AddMessage( Diagnostics.MessageKind.Error, Diagnostics.MessageCode.IncompatibleTypes, "moving '" + srcType.GetString(this.session) + "' " + "into '" + destType.GetString(this.session) + "'", srcSpan, destination.span); } } }