Mantis Bug Tracker

View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0000567Core InformPropertiespublic2011-02-16 12:152014-05-07 07:34
Assigned Tograham 
Platformx86OSWindowsOS Version7
Product Version6G60 
Target VersionFixed in Version6L02 
Summary0000567: Stating a fully-enumerated kind of value can be privately-named cause I6 errors
DescriptionLeaving the second sentence commented out causes an understandable compilation error; the size of the class of values known as keywords is unspecified, so they can't be given an optional trait. But once the exact number of keywords has been specified, the trait "privately-named" clashes with the existing trait at the I6 level, since that is apparently only valid for things and rooms.
Minimal Source Text To Reproduce
That is a room.

A keyword is a kind of value. [The keywords are xyzzy, plugh.] A keyword can be privately-named.
Additional InformationThe I6 error messages are:

  The 21-word source text has successfully been translated into an intermediate
    description which can be run through Inform 6 to complete compilation.
    There were 1 room and 1 thing.
Inform 7 has finished.

C:\Program Files (x86)\Inform 7\Compilers\inform-632 \
    -wSDv5 +include_path=..\Source,.\ auto.inf output.z5
Inform 6.32 for Win32 (18th November 2010)
auto.inf(9352): Error: "privately_named" is a name already in use (with type Attribute) and may not be used as a property name too
> with privately_named
auto.inf(9352): Error: Expected 'with', 'has' or 'class' in object/class definition but found "KOVP_44_P17"
> with privately_named KOVP_44_P17
auto.inf(9355): Error: Expected directive, '[' or class name but found ;
> ;
Compiled with 3 errors and 1393 suppressed warnings (no output)

Compiler finished with code 1
TagsNo tags attached.
Effect(critical) Inform 6 compiler reports errors for valid code
Attached Files

- Relationships

-  Notes
graham (administrator)
2011-10-07 12:18

This was a tricky one. I7 compiles its properties to a complicated mixture of I6 "attributes" and "properties", trying at the same time to get the best run-time performance it can and also to lift I6's restrictions on the number of properties something can have. But this does mean that about three property names won't work like this (mentioned, privately-named, pushable between rooms). I could make them work, but only by incurring a small run-time performance hit, and in the end I think the best thing is just to enforce an illogical but very limited restriction. So Inform now produces the following problem message:

Problem. Sorry, but I'm going to have to disallow the sentence 'A keyword can be pushable between rooms', even though it asks for something reasonable. A very small number of either-or properties with meanings special to Inform, like 'pushable between rooms', are restricted so that only kinds of object can have them. Since a keyword isn't a kind of object, it can't be said to be pushable between rooms.

>--> Probably you only need to call the property something else. The built-in meaning would only make sense if it were a kind of object in any case, so nothing is lost. Sorry for the inconvenience, all the same; there are good implementation reasons.

- Issue History
Date Modified Username Field Change
2011-02-16 12:15 ChrisC New Issue
2011-02-22 16:10 jmcgrew Status new => acknowledged
2011-02-22 16:10 jmcgrew Category Kinds and type checking => Properties
2011-02-24 14:22 EmacsUser Status acknowledged => confirmed
2011-10-07 12:18 graham Note Added: 0001323
2011-10-07 12:18 graham Status confirmed => resolved
2011-10-07 12:18 graham Resolution open => fixed
2011-10-07 12:18 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