Error in Disambiguation Control, using no suggestions (6L02)

From Floating Info, using version 8 of Disambiguation Control by Jon Ingold in 6L02 with the use option “use no parser suggestions” produces a Translating the Source Error. In fact, on a quickish check the error seems to happen using version 7 of the extension in 6G60. (But my copies of the extension have gotten a bit messed up in trying to keep my versions of Inform straight, so I could be wrong.)

The Progress/Report tab gives the following error:

followed by a bunch of other errors which makes me think the error is a missing #endif. And I think we can fix the problem by adding an #endif to this block:

[code]#ifdef NO_SUGGESTIONS;
ParserMessage(1);
if (context==CREATURE_TOKEN) ParserMessage(8); else ParserMessage(9);

#ifnot;

if (number_of_classes > TRUNCATE_LIST || (+list-outcomes+) == false) 
{		
		ParserMessage(1);
		if (context==CREATURE_TOKEN) ParserMessage(8); else ParserMessage(9);
		jump SkipWhichQuestionB;
}

else
{

	if (context==CREATURE_TOKEN) ParserMessage(2); else ParserMessage(3);

	PrintMatchClasses(match_list, number_of_classes, 0);

	ParserMessage(10);

}

.SkipWhichQuestionB;[/code]

before the .SkipWhichQuestionB label, here:

[code]#ifdef NO_SUGGESTIONS;
ParserMessage(1);
if (context==CREATURE_TOKEN) ParserMessage(8); else ParserMessage(9);

#ifnot;

if (number_of_classes > TRUNCATE_LIST || (+list-outcomes+) == false) 
{		
		ParserMessage(1);
		if (context==CREATURE_TOKEN) ParserMessage(8); else ParserMessage(9);
		jump SkipWhichQuestionB;
}

else
{

	if (context==CREATURE_TOKEN) ParserMessage(2); else ParserMessage(3);

	PrintMatchClasses(match_list, number_of_classes, 0);

	ParserMessage(10);

}

#endif;
.SkipWhichQuestionB;[/code]

But I basically don’t know what I’m doing in Inform 6, so I thought I’d put this out for comment.

That looks plausible (I’m surprised it can ever compile with a missing #endif, but apart from that).

jon