Skip to content

Commit 776ec6a

Browse files
committed
Back out conditional S4 extension handling
1 parent 3d23dc1 commit 776ec6a

2 files changed

Lines changed: 3 additions & 38 deletions

File tree

R/class-spec.R

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -331,7 +331,7 @@ class_extends <- function(child, parent) {
331331
} else if (is_S4_class(child) || is_S4_class(parent)) {
332332
is_S4_class(child) &&
333333
is_S4_class(parent) &&
334-
S4_extends_unconditionally(child, parent)
334+
S4_extends_simple(child, parent)
335335
} else if (is_class(parent) && parent@name == "S7_object") {
336336
is_class(child)
337337
} else {
@@ -395,14 +395,14 @@ union_contains_any <- function(x) {
395395
is_union(x) && any(vlapply(x$classes, is_class_any))
396396
}
397397

398-
S4_extends_unconditionally <- function(child, parent) {
398+
S4_extends_simple <- function(child, parent) {
399399
extension <- methods::extends(
400400
child@className,
401401
parent@className,
402402
fullInfo = TRUE
403403
)
404404
isTRUE(extension) ||
405-
(isS4(extension) && !methods::is(extension, "conditionalExtension"))
405+
(isS4(extension) && isTRUE(methods::slot(extension, "simple")))
406406
}
407407

408408
# Suppress @className false positive

tests/testthat/test-class.R

Lines changed: 0 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -122,41 +122,6 @@ describe("inheritance", {
122122
"must narrow"
123123
)
124124
})
125-
it("child properties can't narrow with conditional S4 extensions", {
126-
on.exit(S4_remove_classes(c(
127-
"S4PropertyConditionalChild",
128-
"S4PropertyConditionalParent"
129-
)))
130-
S4PropertyConditionalParent <- methods::setClass(
131-
"S4PropertyConditionalParent",
132-
slots = c(x = "numeric")
133-
)
134-
S4PropertyConditionalChild <- methods::setClass(
135-
"S4PropertyConditionalChild",
136-
slots = c(x = "numeric")
137-
)
138-
suppressWarnings(methods::setIs(
139-
"S4PropertyConditionalChild",
140-
"S4PropertyConditionalParent",
141-
test = function(object) length(object@x) > 0
142-
))
143-
144-
Parent <- new_class(
145-
"Parent",
146-
properties = list(x = S4PropertyConditionalParent),
147-
package = NULL
148-
)
149-
150-
expect_error(
151-
new_class(
152-
"Child",
153-
Parent,
154-
properties = list(x = S4PropertyConditionalChild),
155-
package = NULL
156-
),
157-
"must narrow"
158-
)
159-
})
160125
it("child properties can narrow parent unions that include any", {
161126
Parent <- new_class(
162127
"Parent",

0 commit comments

Comments
 (0)