@@ -319,8 +319,6 @@ class_extends <- function(child, parent) {
319319 } else if (is_union(child )) {
320320 # A union child extends `parent` only if every one of its members does.
321321 all(vlapply(child $ classes , class_extends , parent = parent ))
322- } else if (class_extends_implicit_base(child , parent )) {
323- TRUE
324322 } else if (is_union(parent )) {
325323 # A non-union child extends a union parent if it extends any of its members.
326324 any(vlapply(parent $ classes , class_extends , child = child ))
@@ -397,37 +395,6 @@ union_contains_any <- function(x) {
397395 is_union(x ) && any(vlapply(x $ classes , is_class_any ))
398396}
399397
400- class_extends_implicit_base <- function (child , parent ) {
401- base <- class_implicit_base(child )
402- ! is.null(base ) && class_extends(base , parent )
403- }
404-
405- class_implicit_base <- function (x ) {
406- switch (
407- class_type(x ),
408- S4 = S4_implicit_base(x ),
409- S7 = class_implicit_base(x @ parent ),
410- S7_S3 = bundled_S3_implicit_base(x ),
411- NULL
412- )
413- }
414-
415- S4_implicit_base <- function (x ) {
416- extensions <- methods :: extends(x , fullInfo = TRUE )
417- basic_classes <- S4_basic_base_classes()
418-
419- for (class in names(extensions )) {
420- if (
421- hasName(basic_classes , class ) &&
422- S4_extension_is_data_part(extensions [[class ]])
423- ) {
424- return (basic_classes [[class ]])
425- }
426- }
427-
428- NULL
429- }
430-
431398S4_extends_unconditionally <- function (child , parent ) {
432399 extension <- methods :: extends(
433400 child @ className ,
@@ -438,45 +405,5 @@ S4_extends_unconditionally <- function(child, parent) {
438405 (isS4(extension ) && ! methods :: is(extension , " conditionalExtension" ))
439406}
440407
441- S4_extension_is_data_part <- function (extension ) {
442- isS4(extension ) &&
443- isTRUE(methods :: slot(extension , " simple" )) &&
444- isTRUE(methods :: slot(extension , " dataPart" ))
445- }
446-
447- S4_basic_base_classes <- function () {
448- list (
449- logical = class_logical ,
450- integer = class_integer ,
451- double = class_double ,
452- numeric = class_numeric ,
453- character = class_character ,
454- complex = class_complex ,
455- raw = class_raw ,
456- list = class_list ,
457- expression = class_expression ,
458- vector = class_vector ,
459- `function` = class_function ,
460- environment = class_environment ,
461- name = class_name ,
462- call = class_call
463- )
464- }
465-
466- bundled_S3_implicit_base <- function (x ) {
467- # Arbitrary S3 classes do not declare a base contract; bundled classes do.
468- if (identical(x , class_factor )) {
469- class_integer
470- } else if (identical(x , class_Date ) || identical(x , class_POSIXct )) {
471- class_numeric
472- } else if (identical(x , class_POSIXlt ) || identical(x , class_data.frame )) {
473- class_list
474- } else if (identical(x , class_matrix ) || identical(x , class_array )) {
475- class_vector
476- } else {
477- NULL
478- }
479- }
480-
481408# Suppress @className false positive
482409globalVariables(" className" )
0 commit comments