Strange behaviour in preinit compiling of doers (a3Lite, of course)

in implementing a set of doers, I got a successful result, but with a strange “two-pass” behavior of preinit in handling the (admittely unusual) doer definition:

(warning: spoiler (actual names of a set of buttons) below)

the unusual output from t3make is this:

pigi@Duilio:~/if/wrk/tads3/isekai$ t3make -f isekai.t3m
TADS Compiler 3.1.3  Copyright 1999, 2012 Michael J. Roberts
	Files to build: 4
	symbol_export ilower.t -> obj/ilower.t3s
	compile ilower.t -> obj/ilower.t3o
	link -> isekai.t3p
	preinit -> isekai.t3
Error in Doer command phrase "feel
reuben|simeon|ephraim|judah|issachar|zebulun|dan|naphtali|gad|
asher|manasseh|benjamin": this command syntax doesn't match any known verb
grammar.Error in Doer command phrase "touch
reuben|simeon|ephraim|judah|issachar|zebulun|dan|naphtali|gad|
asher|manasseh|benjamin": this command syntax doesn't match any known verb
grammar.Error in Doer command phrase "push
reuben|simeon|ephraim|judah|issachar|zebulun|dan|naphtali|gad|
asher|manasseh|benjamin": the word "reuben" is not a known object or class
name. Each noun must be the source code name of an object or class.
pigi@Duilio:~/if/wrk/tads3/isekai$ t3make -f isekai.t3m
TADS Compiler 3.1.3  Copyright 1999, 2012 Michael J. Roberts
pigi@Duilio:~/if/wrk/tads3/isekai$ qtads isekai.t3

As one can note, the error is given in the first run of t3make, but compiles (and runs fine, and the doers works as designed & expected) after the 2nd run.

for the record, I have separated FEEL and TOUCH, but the file where the definition of FEEL and its separation from touch precedes the file where the doers lie (ilower.t)

if this can help, the doer(s) source is:

// doers handling single names
Doer 'feel reuben|simeon|ephraim|judah|issachar|zebulun|dan|naphtali|gad|
asher|manasseh|benjamin'   
    exec(curCmd)
    {
        doInstead(Feel, inactive);
    }
;

The other two doers have the same code, copypasted and appropriately edited.

Sincerely, it’s a strange behaviour, giving an error first, then compiling fine after…

Opinions/explanation of this rather unusual behaviour ?

Best regards from Italy,
dott. Piergiorgio.

1 Like