Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
72 commits
Select commit Hold shift + click to select a range
5957758
use isClassUnion() instead of direct class check
lawremi Jun 2, 2026
9f06302
pass className attribute directly to preserve package
lawremi Jun 2, 2026
5ac65d2
since proper S4 classes can extend old classes, be stricter when redu…
lawremi Jun 2, 2026
2f6b47d
fix is_oldClass() and use it in S4_to_S7_class()
lawremi Jun 3, 2026
2176a28
S7_class becomes a reserved attribute
lawremi Jun 2, 2026
a586453
initial implementation passing a simple test that does not depend on …
lawremi May 26, 2026
a33b706
route S4 class registration through S4_register() and setOldClass(); …
lawremi May 26, 2026
1f8bdc1
add a .lintr.R to allow for our symbol naming convention
lawremi May 26, 2026
96829df
S4-derived classes gain an initialize() method that mimics the defaul…
lawremi May 26, 2026
5ca0b48
call S4_register() automatically on S7 derivatives of S4 classes; fi…
lawremi May 26, 2026
d183442
add some detailed notes on S4 compatibility to docs
lawremi May 26, 2026
567ba1e
fix S7 inheritance checks after rebase
lawremi May 26, 2026
c9ce6df
drop the S7_object case from S4_register
lawremi May 27, 2026
244353e
docs: recommend use of initialize() when working with S7 derivatives …
lawremi May 27, 2026
c877686
clean up inheritance logic changes
lawremi May 27, 2026
b972a20
drop defining properties in the prototype S4Class=, because they're n…
lawremi May 27, 2026
4486495
cleanup
lawremi May 27, 2026
b233762
bring back initialize() because the default initialiaze, like most of…
lawremi May 27, 2026
022f9a7
just remove classes that exist instead of using try()
lawremi May 27, 2026
42fc09c
update the global variables for our use of @, which still confuses co…
lawremi May 27, 2026
5483702
clean up constructor generation
lawremi May 27, 2026
a99bf47
reformat with air
lawremi May 27, 2026
98dcffc
fix test guarding against extension of S4 classes
lawremi May 27, 2026
e6bbc09
allow abstract classes to inhert from virtual S4 classes
lawremi May 27, 2026
8083c4c
clean up S4 subclass setOldClass() registration; now supports more co…
lawremi May 28, 2026
a36b6c2
more tweaks to subclass registration
lawremi May 28, 2026
7a8362c
make S7_class_name robust to invocation at package build time
lawremi May 28, 2026
b336545
fix syntax error from merge
lawremi May 29, 2026
a73d8ea
reformat
lawremi May 29, 2026
bf64aa1
convert() falls back to methods::as()
lawremi May 29, 2026
a0b4ecb
correct S4 class name for 'to'
lawremi May 29, 2026
7926608
add test
lawremi May 29, 2026
a58300d
convert_up() can convert an S4-derived S7 object to an S4 object
lawremi May 29, 2026
ad57fa2
clean up and test restricted methods::as() fallback to convert()
lawremi May 29, 2026
548f96e
use setAs() to override the default upcast coercions to ensure full c…
lawremi May 30, 2026
a2efdbd
S4_register() returns the name of the class it registered, which can …
lawremi May 31, 2026
747cdcd
rename S4_transient_prototype_class to S4_register_prototype_class an…
lawremi May 31, 2026
ff69148
support class unions in S4_register()
lawremi May 31, 2026
dd51b48
make S4_class() return a methods-friendly class name and have it hand…
lawremi May 31, 2026
dce1561
support S4 classes extending S7 classes
lawremi May 31, 2026
95fa2a4
move away from do.call(setClass, ...); package is not needed on the p…
lawremi Jun 1, 2026
c33ae0d
revert unnecessary direct attr() access
lawremi Jun 1, 2026
e912f22
move a couple more S4 helpers from methods-register.R to S4.R
lawremi Jun 1, 2026
b0c67d6
S7 classes inherit S4 class unions from S4 parents directly, which s…
lawremi Jun 1, 2026
9f7f50c
avoid inherited slot conflicts in the S4->S7->S4 inheritance pattern
lawremi Jun 1, 2026
fbeb079
instead of forwarding S4 class unions into S7 classes, we enable S4_u…
lawremi Jun 1, 2026
0021b07
update test snapshot after rebase
lawremi Jun 1, 2026
5b46f88
represent inheritance from S7_object at the S4 level
lawremi Jun 2, 2026
fa0e37c
since @<- will dispatch to S7 setting even on S4 objects (derived fro…
lawremi Jun 2, 2026
5de2f8a
inherits2() in prop.c handles S4 object case where class attribute is…
lawremi Jun 2, 2026
26b7251
tweaks to validObject hooks to support additional inheritance patterns
lawremi Jun 2, 2026
18a5243
in obj_type(), isS4() takes precedence over has_S4_class(), since an …
lawremi Jun 2, 2026
24c1f3f
restore method-register-S4.R; got lost in the rebase shuffle
lawremi Jun 2, 2026
9634016
prop storage now uses the S4 sentinel for NULL for low-level compatib…
lawremi Jun 3, 2026
86f984e
push S4 validation guard down into validate() so that it works for va…
lawremi Jun 3, 2026
85f5552
Define S4 prototype on the ::S4Slots old class based on property defa…
lawremi Jun 3, 2026
672f9ba
mark the subclass old class as virtual, because there should never be…
lawremi Jun 4, 2026
e5eff99
add some explicit up cast coercions to avoid invalid slot stripping
lawremi Jun 4, 2026
791331b
give convert_up() a general as()-based fallback like convert()
lawremi Jun 4, 2026
46d384b
make the ::S4Slots class non-virtual to enable more convenient constr…
lawremi Jun 4, 2026
322e150
drop the up cast coercions (dead end) and instead ensure full slot re…
lawremi Jun 4, 2026
2520345
S3 method registration will also register an S4 method when the gener…
lawremi Jun 4, 2026
7416b07
abstract S7 classes deriving from S4 classes are represented as ordin…
lawremi Jun 4, 2026
393fef2
old classes were missing S7_class as a declared slot, which can cause…
lawremi Jun 4, 2026
4971aa9
shorten the S4 registration helper name
lawremi Jun 5, 2026
cd6a4cd
allow multi-argument signature on internal generics via S4 generic de…
lawremi Jun 5, 2026
a777258
S4_initialize sets slots that aren't properties using slot<-, not prop<-
lawremi Jun 5, 2026
319e617
@<- supports setting slots on S4 objects
lawremi Jun 5, 2026
22d8457
S4_validate_shim() does not try to validate objects from a "cousin" S…
lawremi Jun 7, 2026
13537ec
adapt validObject() call to S7 validate contract
lawremi Jun 7, 2026
6667ffc
eliminate S7_object::S4Slots from hierarchy to simplify inheritance; …
lawremi Jun 7, 2026
eb1092b
doc updates
lawremi Jun 7, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .Rbuildignore
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,4 @@
^[.]?air[.]toml$
^\.claude$
^\.git-blame-ignore-revs$
^\.lintr\.R$
6 changes: 6 additions & 0 deletions .lintr.R
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
linters <- lintr::linters_with_defaults(
object_name_linter = lintr::object_name_linter(
styles = "symbols",
regexes = c(symbols = "^(?:\\.)?[[:alnum:]]+(?:[._][[:alnum:]]+)*$")
)
)
1 change: 1 addition & 0 deletions NAMESPACE
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ export("method<-")
export("prop<-")
export("props<-")
export(S4_register)
export(S4_register_contains)
export(S7_class)
export(S7_class_desc)
export(S7_data)
Expand Down
Loading
Loading