setClass("B", contains = "numeric") xx <- new("B", 1) stopifnot(is(tryCatch(names(xx) <- "A" , warning = function(e)e), "warning")) names(xx) <- "A" # after this should not warn stopifnot(is(tryCatch(names(xx) <- "B" , warning = function(e)e), "character")) setClass("A", representation(xx = "numeric")) a <- new("A", xx = 1) stopifnot(is(tryCatch(names(a) <- "A" , error = function(e)e), "error")) setClass("C", representation(xx = "numeric", names= "character")) c <- new("C", xx = 1, names = "A") c@names <- "B" stopifnot(is(tryCatch(names(c) <- "A" , error = function(e)e), "error")) setClass("D", contains = "numeric", representation(names = "character")) d <- new("D", 1) names(d) <- "A" stopifnot(identical(d@names, "A"))