From 604e1b049ca97ba9ce4d45418086baed00287dfc Mon Sep 17 00:00:00 2001 From: Dianne Skoll Date: Wed, 24 Sep 2025 13:02:12 -0400 Subject: [PATCH] Add a warning to use SCANFROM with a moveable ADDOMIT. --- include/holidays/jp.rem | 26 +++++++++++++------------- include/holidays/nl.rem | 2 +- src/dorem.c | 7 +++++++ tests/test.cmp | 2 ++ 4 files changed, 23 insertions(+), 14 deletions(-) diff --git a/include/holidays/jp.rem b/include/holidays/jp.rem index dab90fca..a42ed42f 100644 --- a/include/holidays/jp.rem +++ b/include/holidays/jp.rem @@ -3,25 +3,25 @@ # Public Holidays in Japan, courtesy of Brandon Wilson. OMIT January 01 MSG 元日 -REM January 15 UNTIL December 31 1999 ADDOMIT MSG 成人の日 +REM January 15 UNTIL December 31 1999 SCANFROM -28 ADDOMIT MSG 成人の日 REM Second Monday in January SCANFROM -7 ADDOMIT SATISFY [$Ty >= 2000] MSG 成人の日 -REM February 11 ADDOMIT SATISFY [$Ty >= 1967] MSG 建国記念の日 -REM February 23 ADDOMIT SATISFY [$Ty >= 2020] MSG 天皇誕生日 +REM February 11 SCANFROM -28 ADDOMIT SATISFY [$Ty >= 1967] MSG 建国記念の日 +REM February 23 SCANFROM -28 ADDOMIT SATISFY [$Ty >= 2020] MSG 天皇誕生日 REM [datepart(soleq(0))] SCANFROM -7 ADDOMIT MSG 春分の日 -REM April 29 UNTIL December 31 2006 ADDOMIT SATISFY [$Ty >= 1989] MSG みどりの日 -REM April 29 ADDOMIT SATISFY [$Ty >= 2007] MSG 昭和の日 +REM April 29 UNTIL December 31 2006 SCANFROM -28 ADDOMIT SATISFY [$Ty >= 1989] MSG みどりの日 +REM April 29 SCANFROM -28 ADDOMIT SATISFY [$Ty >= 2007] MSG 昭和の日 OMIT May 03 MSG 憲法記念日 -REM May 4 ADDOMIT SATISFY [$Ty >= 2007] MSG みどりの日 +REM May 4 SCANFROM -28 ADDOMIT SATISFY [$Ty >= 2007] MSG みどりの日 OMIT May 05 MSG こどもの日 -REM July 20 UNTIL December 31 2002 ADDOMIT SATISFY [$Ty >= 1996] MSG 海の日 +REM July 20 UNTIL December 31 2002 SCANFROM -28 ADDOMIT SATISFY [$Ty >= 1996] MSG 海の日 REM Third Monday in July SCANFROM -7 ADDOMIT SATISFY [$Ty >= 2003] MSG 海の日 -REM August 11 ADDOMIT SATISFY [$Ty >= 2016] MSG 山の日 -REM September 15 UNTIL December 31 2002 ADDOMIT SATISFY [$Ty >= 1966] MSG 敬老の日 -REM Third Monday in September SCANFROM -7 ADDOMIT SATISFY [$Ty >= 2003] MSG 敬老の日 -REM [datepart(soleq(2))] SCANFROM -7 ADDOMIT MSG 秋分の日 -REM October 10 UNTIL December 31 1999 ADDOMIT SATISFY [$Ty >= 1966] MSG 体育の日 +REM August 11 SCANFROM -28 ADDOMIT SATISFY [$Ty >= 2016] MSG 山の日 +REM September 15 UNTIL December 31 2002 SCANFROM -28 ADDOMIT SATISFY [$Ty >= 1966] MSG 敬老の日 +REM Third Monday in September SCANFROM -28 ADDOMIT SATISFY [$Ty >= 2003] MSG 敬老の日 +REM [datepart(soleq(2))] SCANFROM -28 ADDOMIT MSG 秋分の日 +REM October 10 UNTIL December 31 1999 SCANFROM -28 ADDOMIT SATISFY [$Ty >= 1966] MSG 体育の日 REM Second Monday in October UNTIL December 31 2019 SCANFROM -7 ADDOMIT SATISFY [$Ty >= 2000] MSG 体育の日 REM Second Monday in October SCANFROM -7 ADDOMIT SATISFY [$Ty >= 2020] MSG スポーツの日 OMIT November 03 MSG 文化の日 OMIT November 23 MSG 勤労感謝の日 -REM December 23 UNTIL December 31 2018 ADDOMIT SATISFY [$Ty >= 1989] MSG 天皇の誕生日 +REM December 23 UNTIL December 31 2018 SCANFROM -28 ADDOMIT SATISFY [$Ty >= 1989] MSG 天皇の誕生日 diff --git a/include/holidays/nl.rem b/include/holidays/nl.rem index 60fb6ea1..54dd070f 100644 --- a/include/holidays/nl.rem +++ b/include/holidays/nl.rem @@ -23,4 +23,4 @@ REM [easterdate($Uy)-2] MSG Goede Vrijdag # Bevrijdingsdag is a holiday every 5th year. # Hence the two reminders below REM 5 May SATISFY [$Ty % 5 != 0] MSG Bevrijdingsdag -REM 5 May ADDOMIT SATISFY [$Ty % 5 == 0] MSG Bevrijdingsdag +REM 5 May ADDOMIT SCANFROM -28 SATISFY [$Ty % 5 == 0] MSG Bevrijdingsdag diff --git a/src/dorem.c b/src/dorem.c index b963c11e..da08e93b 100644 --- a/src/dorem.c +++ b/src/dorem.c @@ -1211,6 +1211,13 @@ int ParseRem(ParsePtr s, Trigger *trig, TimeTrig *tim) } /* Check for some warning conditions */ + if (trig->addomit) { + if (trig->y == NO_YR || trig->m == NO_MON || trig->d == NO_DAY || trig->rep != NO_REP) { + if (trig->scanfrom == NO_SCANFROM) { + Wprint(tr("Warning: Consider using SCANFROM with recurring ADDOMIT")); + } + } + } if (!s->nonconst_expr) { if (trig->y != NO_YR && trig->m != NO_MON && trig->d != NO_DAY && trig->until != NO_UNTIL) { if (DSE(trig->y, trig->m, trig->d) > trig->until) { diff --git a/tests/test.cmp b/tests/test.cmp index 02298b7b..a05c26b8 100644 --- a/tests/test.cmp +++ b/tests/test.cmp @@ -857,6 +857,7 @@ The tags are: # Test ADDOMIT REM Mon 15 Feb ADDOMIT MSG Family Day +../tests/test.rem(254): Warning: Consider using SCANFROM with recurring ADDOMIT ../tests/test.rem(254): Trig = Monday, 18 February, 1991 REM Feb 18 AFTER MSG Should trigger on Feb 19 ../tests/test.rem(255): Trig = Tuesday, 19 February, 1991 @@ -25126,6 +25127,7 @@ TRANSLATE "Unmatched PUSH-VARS at %s(%d)" "" TRANSLATE "Unrecognized command; interpreting as REM" "" TRANSLATE "User function `%s' defined in non-constant context makes expression non-constant" "" TRANSLATE "Variable assignment considered non-constant because of context" "" +TRANSLATE "Warning: Consider using SCANFROM with recurring ADDOMIT" "" TRANSLATE "Warning: Function name `%s...' truncated to `%s'" "" TRANSLATE "Warning: OMIT is ignored if you use OMITFUNC" "" TRANSLATE "Warning: SCANFROM is ignored in two-argument form of evaltrig()" ""