Mantis Bug Tracker

View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0001106Core InformRelationspublic2013-04-19 20:472014-05-07 07:33
ReporterEmacsUser 
Assigned Tograham 
PrioritynormalSeveritymildReproducibilityalways
StatusclosedResolutionfixed 
Platformx86OSLinuxOS VersionAny
Product Version6G60 
Target VersionFixed in Version6L02 
Summary0001106: Callings accepted after kind arguments
DescriptionThe attached source compiles, but does not write to ``bar'' because ``list of texts'' is a kind argument to the relates-to phrase and does not correspond to a free variable in a description.
Minimal Source Text To Reproduce
There is a room.
Foo relates a person to a list of texts.
When play begins:
	now the foo relation relates yourself to { "" };
	showme whether or not yourself relates to a list of texts (called bar) by the foo relation;
	say "[bar]."
Additional InformationOriginally filed under the summary ``Variable not set by calling in relation test''.
TagsNo tags attached.
Effect(mild) Compiler accepts invalid code
Attached Files

- Relationships

-  Notes
(0002028)
zarf (developer)
2013-04-20 09:03

I think this is *not* valid code, and the bug is that the compiler is failing to reject it.

The test is invoking a phrase:

To decide whether (X - K) relates to (name of kind of value L) by (R - relation of values of kind K to Ls):

The second argument is the name of a kind, and I don't see how a phrase invocation can capture that. (The implementation of this phrase works by finding an instance of the kind, but in general that may not be true.)
(0002029)
zarf (developer)
2013-04-20 09:04

Simpler example, avoiding lists and the custom relation:


There is a room.

The player carries a key.

When play begins:
if the key relates to a thing (called baz) by the carrying relation:
say "Yes, baz is [baz].";
(0002030)
zarf (developer)
2013-04-20 09:16

An even simpler example that avoids relations entirely. Here we define a phrase that is universally true, so no "thing" is ever picked out. The compiler should reject the "(called baz)".


There is a room.

To decide whether (X - K) is-or-is-not a (name of kind of value K):
decide yes.

When play begins:
if the player is-or-is-not a thing (called baz):
say "Yes, baz is [baz].";
(0002041)
EmacsUser (manager)
2013-04-20 17:32

I've adjusted the report. It would be nice if this source were made valid, though I could see how that might be a lot of work.
(0002566)
graham (administrator)
2014-03-16 05:18

I'm with Zarf; this is not legal, and it's now rejected.

- Issue History
Date Modified Username Field Change
2013-04-19 20:47 EmacsUser New Issue
2013-04-20 09:03 zarf Note Added: 0002028
2013-04-20 09:03 zarf Status new => confirmed
2013-04-20 09:04 zarf Note Added: 0002029
2013-04-20 09:16 zarf Note Added: 0002030
2013-04-20 17:32 EmacsUser Effect (serious/mild) Game compiles but misbehaves => (mild) Compiler accepts invalid code
2013-04-20 17:32 EmacsUser Note Added: 0002041
2013-04-20 17:32 EmacsUser Severity serious => mild
2013-04-20 17:32 EmacsUser Summary Variable not set by calling in relation test => Callings accepted after kind arguments
2013-04-20 17:32 EmacsUser Description Updated View Revisions
2013-04-20 17:32 EmacsUser Additional Information Updated View Revisions
2014-03-16 05:18 graham Note Added: 0002566
2014-03-16 05:18 graham Status confirmed => resolved
2014-03-16 05:18 graham Resolution open => fixed
2014-03-16 05:18 graham Assigned To => graham
2014-05-07 07:32 jmcgrew Fixed in Version => 6L02
2014-05-07 07:33 jmcgrew Status resolved => closed


Copyright © 2000 - 2010 MantisBT Group
Powered by Mantis Bugtracker