Mantis Bug Tracker

View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0000491Core InformPhrases and functional programmingpublic2010-12-31 07:262014-05-07 07:34
ReporterEmacsUser 
Assigned Tograham 
PrioritynormalSeveritycriticalReproducibilityalways
StatusclosedResolutionfixed 
Platformx86OSMac OS XOS Version10.6
Product Version6G60 
Target VersionFixed in Version6L02 
Summary0000491: Phrase with too many locals, one of which is a parameter, and nested loops provokes internal error
DescriptionThe source yields

- - - -
Problem. You wrote 'repeat with xo running from zero to zero begin' : but there are too many temporarily-named values in this phrase, which may be a sign that it is complicated enough to need breaking up into smaller phrases making use of each other. For reasons to do with the construction of IF story files, there can never be more than 15 temporary values at a time, and that has to include both values created in the declaration of a phrase (e.g. the 'N' in 'To deduct (N - a number) points: ...', or the 'watcher' in 'Instead of taking something in the presence of a man (called the watcher): ...'), and also values created with 'let' or 'repeat' (each 'repeat' loop claiming two such values) - not to mention one or two values occasionally needed to work with Tables. Because of all this, it's best to keep the complexity to a minimum within any single phrase.
- - - -

which is correct, but then

- - - -
Problem. An internal error has occurred: i too low in scoping local. The current sentence is 'repeat with xp running from zero to zero begin' ; the error was detected at line 762 of "Chapter 22/Stack Frames.w". This should never happen, and I am now halting in abject failure.
- - - -
Minimal Source Text To Reproduce
There is a room.
To foo (X - a number):
	let xa be zero;
	let xb be zero;
	let xc be zero;
	let xd be zero;
	let xe be zero;
	let xf be zero;
	let xg be zero;
	let xh be zero;
	let xi be zero;
	let xj be zero;
	let xk be zero;
	let xl be zero;
	let xm be zero;
	let xn be zero;
	repeat with xo running from zero to zero:
		repeat with xp running from zero to zero:
			do nothing.
Additional InformationThe severity is misleading since Inform dispatches the proper problem message before it hits the internal error.
TagsNo tags attached.
Effect(critical) Compiler reports internal error
Attached Files

- Relationships

-  Notes
(0001304)
graham (administrator)
2011-10-02 13:13

Fixed.

- Issue History
Date Modified Username Field Change
2010-12-31 07:26 EmacsUser New Issue
2010-12-31 18:24 jmcgrew Status new => acknowledged
2011-01-10 12:00 jmcgrew Status acknowledged => confirmed
2011-10-02 13:13 graham Note Added: 0001304
2011-10-02 13:13 graham Status confirmed => resolved
2011-10-02 13:13 graham Resolution open => fixed
2011-10-02 13:13 graham Assigned To => graham
2014-05-07 07:34 jmcgrew Fixed in Version => 6L02
2014-05-07 07:34 jmcgrew Status resolved => closed


Copyright © 2000 - 2010 MantisBT Group
Powered by Mantis Bugtracker