Hello,
>From getS3method documentation, it is expected to be consistent with a call to >the generic function in the environment it is called from. > It is possible that which S3 method will be used may depend on where the > generic f is > called from: getS3method returns the method found if f were called from the > same environment." # the following code shows an inconsistency on R # tested on 4.5.1 (2025-06-13 ucrt) (x86_64-w64-mingw32/x64) local({ coef.lm=function(x, ...) {cat("new coef.lm function\n")} attach(environment(), name="test.env") }) mod = lm(I(1:3)~1) getS3method("coef", "lm")(mod) # uses the new coef.lm function coef(mod) # uses coef.default of package stats detach("test.env") I also tested the old versions of R I kept on my computer. R 4.0.3 : same behaviour as R 4.5.1 R 3.6.3 : both lines of code call the new coef.lm function When looking at old R release NEWS for R 4.0.0, I got a possible explanation: > S3 method lookup now by default skips the elements of the search path between > the global and base environments Therefore, it looks like R_LookupMethod() was updated in src/main/objects.c but not getS3method() in src/library/utils/R/objects.R I found the commit that seems to have caused the change in behaviour: https://github.com/wch/r-source/commit/753ceaea9854d0b4d7a363041f0176ecc1b036fb<https://astragale.chu-rouen.fr/https/chu-rouen/gw-chu-rouen-03/github.com/wch/r-source/commit/753ceaea9854d0b4d7a363041f0176ecc1b036fb> <https://astragale.chu-rouen.fr/https/chu-rouen/gw-chu-rouen-03/github.com/wch/r-source/commit/753ceaea9854d0b4d7a363041f0176ecc1b036fb> Actually, when launching R 4.0.3 with the _R_S3_METHOD_LOOKUP_BASEENV_AFTER_GLOBALENV_=FALSE system environment variable set, I can reproduce the old R 3.6.3 behaviour, but not in R 4.5.1, because this environment variable was completely removed: https://github.com/wch/r-source/commit/58a2da9d8e506c33f33c16a3a87584be0ab013d6<https://astragale.chu-rouen.fr/https/chu-rouen/gw-chu-rouen-03/github.com/wch/r-source/commit/58a2da9d8e506c33f33c16a3a87584be0ab013d6> Unless I miss something, getS3method() should be updated to be consistent with the actual method lookup mechanism. -- Sincerely Andr� GILLIBERT [[alternative HTML version deleted]]
______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel