[6L38] Weird compiler error

I’m currently trying to update PataNoir to compile in I7 6L38. The I7 compiler now compiles the code, but the I6 compiler returns a bunch of weird errors of the form "Array BC_1640 --> 0 (101449728) STORED_ACTION_TY MAX_POSITIVE_NUMBER ...etc auto.inf(98914): Error: Expected constant but found <expression>" The full console message is included below:

[spoiler][code]Inform 7 build 6L38 has started.
I’ve now read your source text, which is 43701 words long.
I’ve also read Standard Rules by Graham Nelson, which is 42616 words long.
I’ve also read English Language by Graham Nelson, which is 2288 words long.
I’ve also read Basic Help Menu by Emily Short, which is 2368 words long.
I’ve also read Quip-Based Conversation by Michael Martin, which is 2483 words long.
I’ve also read Punctuation Removal by Emily Short, which is 906 words long.
I’ve also read Unicode Full Character Names by Graham Nelson, which is 118361 words long.
I’ve also read Interactive Tutorial by Jimmy Maher, which is 2614 words long.
I’ve also read Menus by Emily Short, which is 2001 words long.
I’ve also read Reactable Quips by Michael Martin, which is 2575 words long.
I’ve also read Basic Screen Effects by Emily Short, which is 2218 words long.

The 43701-word source text has successfully been translated into an
intermediate description which can be run through Inform 6 to complete
compilation. There were 31 rooms and 191 things.
Inform 7 has finished.

C:\Program Files (x86)\Inform 7\Compilers\inform6
-wSDG +include_path=…\Source,.\ auto.inf output.ulx
Inform 6.33N for Win32 (20th August 2014)
auto.inf(98913): Error: Expected constant but found

Array BC_1640 → 0 (101449728) STORED_ACTION_TY MAX_POSITIVE_NUMBER …etc
auto.inf(98914): Error: Expected constant but found
Array BC_1641 → 0 (101449728) STORED_ACTION_TY MAX_POSITIVE_NUMBER …etc
auto.inf(98915): Error: Expected constant but found
Array BC_1642 → 0 (101449728) STORED_ACTION_TY MAX_POSITIVE_NUMBER …etc
auto.inf(98916): Error: Expected constant but found
Array BC_1643 → 0 (101449728) STORED_ACTION_TY MAX_POSITIVE_NUMBER …etc
auto.inf(98917): Error: Expected constant but found
Array BC_1644 → 0 (101449728) STORED_ACTION_TY MAX_POSITIVE_NUMBER …etc
auto.inf(98918): Error: Expected constant but found
Array BC_1645 → 0 (101449728) STORED_ACTION_TY MAX_POSITIVE_NUMBER …etc
auto.inf(98919): Error: Expected constant but found
Array BC_1646 → 0 (101449728) STORED_ACTION_TY MAX_POSITIVE_NUMBER …etc
auto.inf(98920): Error: Expected constant but found
Array BC_1647 → 0 (101449728) STORED_ACTION_TY MAX_POSITIVE_NUMBER …etc
auto.inf(98921): Error: Expected constant but found
Array BC_1648 → 0 (101449728) STORED_ACTION_TY MAX_POSITIVE_NUMBER …etc
auto.inf(98922): Error: Expected constant but found
Array BC_1649 → 0 (101449728) STORED_ACTION_TY MAX_POSITIVE_NUMBER …etc
auto.inf(98923): Error: Expected constant but found
Array BC_1650 → 0 (101449728) STORED_ACTION_TY MAX_POSITIVE_NUMBER …etc
auto.inf(98924): Error: Expected constant but found
Array BC_1651 → 0 (101449728) STORED_ACTION_TY MAX_POSITIVE_NUMBER …etc
auto.inf(98925): Error: Expected constant but found
Array BC_1652 → 0 (101449728) STORED_ACTION_TY MAX_POSITIVE_NUMBER …etc
auto.inf(98926): Error: Expected constant but found
Array BC_1653 → 0 (101449728) STORED_ACTION_TY MAX_POSITIVE_NUMBER …etc
auto.inf(98927): Error: Expected constant but found
Array BC_1654 → 0 (101449728) STORED_ACTION_TY MAX_POSITIVE_NUMBER …etc
auto.inf(98928): Error: Expected constant but found
Array BC_1655 → 0 (101449728) STORED_ACTION_TY MAX_POSITIVE_NUMBER …etc
auto.inf(98929): Error: Expected constant but found
Array BC_1656 → 0 (101449728) STORED_ACTION_TY MAX_POSITIVE_NUMBER …etc
auto.inf(98930): Error: Expected constant but found
Array BC_1657 → 0 (101449728) STORED_ACTION_TY MAX_POSITIVE_NUMBER …etc
auto.inf(98931): Error: Expected constant but found
Array BC_1658 → 0 (101449728) STORED_ACTION_TY MAX_POSITIVE_NUMBER …etc
auto.inf(98932): Error: Expected constant but found
Array BC_1659 → 0 (101449728) STORED_ACTION_TY MAX_POSITIVE_NUMBER …etc
auto.inf(98933): Error: Expected constant but found
Array BC_1660 → 0 (101449728) STORED_ACTION_TY MAX_POSITIVE_NUMBER …etc
auto.inf(98934): Error: Expected constant but found
Array BC_1661 → 0 (101449728) STORED_ACTION_TY MAX_POSITIVE_NUMBER …etc
auto.inf(98935): Error: Expected constant but found
Array BC_1662 → 0 (101449728) STORED_ACTION_TY MAX_POSITIVE_NUMBER …etc
In: 1 source code files 117402 syntactic lines
98990 textual lines 4025407 characters (ISO 8859-1 Latin1)
Allocated:
14274 symbols (maximum 20000) 14810106 bytes of memory
Out: Glulx story file 5.141126 (1161K long):
24 classes (maximum 200) 268 objects (maximum 640)
231 global vars (maximum 512) 125387 variable/array space (maximum 180000)
141 verbs (maximum 255) 854 dictionary entries (maximum 2000)
255 grammar lines (version 2) 369 grammar tokens (unlimited)
133 actions (maximum 200) 48 attributes (maximum 56)
40 common props (maximum 256) 51 individual props (unlimited)
340032 characters used in text 238786 bytes compressed (rate 0.702)
0 abbreviations (maximum 64) 4569 routines (unlimited)
116056 instructions of code 73365 sequence points
242432 bytes writable memory used 945920 bytes read-only memory used
1188352 bytes used in machine 1072553472 bytes free in machine
Compiled with 23 errors and 2863 suppressed warnings (no output)
Completed in 0 seconds

Compiler finished with code 1
[/code][/spoiler]
Does anyone have any idea how to deal with this?

Can you post the entirety of line 98914 from the generated auto.inf?

Array BC_1641 --> 0 (101449728) STORED_ACTION_TY MAX_POSITIVE_NUMBER ##Examine I175_drawer 0 player 0 0; Here you are.

It would appear that the problem originates with Jimmy Maher’s tutorial extension, which unfortunately isn’t publicly available. If I remove the tutorial, the game compiles successfully. After compiling without the tutorial, no line containing the phrase “STORED_ACTION_TY MAX_POSITIVE_NUMBER” appears anywhere. I guess I’ll have to talk to Jimmy.

It would seem that there is a bug with storing actions in tables. If you try to store an action of the form “someone doing something”, you get an I6 compiler error. For example, the following code reproduces the error:

[code]The Test Room is a room.

The Desk is in the test room.

Table of Test Actions
Commands
the player examining the desk[/code]
If “the player” is omitted, the code compiles correctly.

Interesting. The underlying problem is that a stored action must have constant arguments. So “yourself examining the desk” is a legal action, and “examining the desk” is an abbrevation for that, but “player” is a variable and can’t go in there.

(You could add “the action of the player examining the desk” to the table during play, but the argument would be resolved immediately to the current player.)

The compiler should detect this error rather than choking, of course.