|Anonymous | Login | Signup for a new account||2018-09-25 11:32 PDT|
|Main | My View | View Issues | Change Log | Roadmap|
|View Issue Details|
|ID||Project||Category||View Status||Date Submitted||Last Update|
|0000567||Core Inform||Properties||public||2011-02-16 12:15||2014-05-07 07:34|
|Target Version||Fixed in Version||6L02|
|Summary||0000567: Stating a fully-enumerated kind of value can be privately-named cause I6 errors|
|Description||Leaving 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 Information||The 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
|Tags||No tags attached.|
|Effect||(critical) Inform 6 compiler reports errors for valid code|
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.
|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|