[Rd] Bug in new() or validObject() in methods package (PR#7922)

From: <murdoch_at_stats.uwo.ca>
Date: Mon 06 Jun 2005 - 20:08:20 GMT


Something in new() or validObject() in the methods package is messing up. This happens in both 2.1.0 and R-devel in Windows.

I'd like to have an empty expression for a slot in a class. An empty expression is an expression:

> is.expression(expression())

[1] TRUE
>
> is(expression(), "expression")

[1] TRUE
> class(expression())

[1] "expression"

However, when I try to use this as the initial value, I get an error thrown back at me:

> setClass("foo", representation(bar = "expression"))
[1] "foo"
>
> new("foo", bar = expression())

Error in validObject(.Object) : invalid class "foo" object: invalid object for slot "bar" in class "foo": got class "NULL", should be or extend class "expression"

Is it doing an extra eval or something? It looks like it:

> x <- expression()
> x

expression()
> eval(x)

NULL
>

> x <- quote(expression())
> x


expression()
> eval(x)

expression()
> eval(eval(x))

NULL However, it doesn't always happen:

> new("foo", bar = expression(1+1))

An object of class "foo"
Slot "bar":
expression(1 + 1)

> x <- expression(1+1)
> x

expression(1 + 1)
> eval(x)

[1] 2

Duncan Murdoch



R-devel@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel Received on Tue Jun 07 06:11:21 2005

This archive was generated by hypermail 2.1.8 : Mon 20 Feb 2006 - 03:21:06 GMT