From jon.clayden at gmail.com  Fri Aug  5 12:41:12 2011
From: jon.clayden at gmail.com (Jon Clayden)
Date: Fri, 5 Aug 2011 11:41:12 +0100
Subject: [Rd] initFields() method no longer coerces arguments in R-devel
Message-ID: <CAM9CR=2fg_5io9xGZnW86JB-51BOTqxH_Ui=gPh5odciPa7eGA@mail.gmail.com>

Dear all,

I've just had a package update bounced from CRAN because of a recent
change in R-devel which seems to affect the behaviour of the
initFields() reference class method. (The change must be very recent
because I tested the package on a week-old build of R-devel.) It seems
that the method no longer coerces its arguments to the expected type
of each field. For a simple example:

> Foo <- setRefClass("Foo", fields=list(number="integer"), methods=list(initialize=function (number = NULL) initFields(number=number)))
> Foo$new()
Error in function (value)  :
  invalid replacement for field ?number?, should be from class
?integer? or a subclass (was class ?NULL?)

(This used to work, with "number" being set to "integer(0)"). In fact
it is now extremely strict, not even allowing a double literal which
is equal to an integer:

> Foo$new(number=1)
Error in function (value)  :
  invalid replacement for field ?number?, should be from class
?integer? or a subclass (was class ?numeric?)

I don't see anything about this in the NEWS, so I was wondering if I
could get clarification on whether this is now the intended behaviour,
before I further modify the package. I must say that this will be a
bit of a pain to "correct"...

All the best,
Jon



[Rd] initFields() method no longer coerces arguments in R-devel
Jon Clayden