<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
	<link rel="stylesheet" type="text/css" href="http://oldforge.etsi.org/mantis/css/default.css" />
	<script type="text/javascript"><!--
		if(document.layers) {document.write("<style>td{padding:0px;}<\/style>")}
	// --></script>
	<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
	<meta http-equiv="Pragma" content="no-cache" />
	<meta http-equiv="Cache-Control" content="no-cache" />
	<meta http-equiv="Pragma-directive" content="no-cache" />
	<meta http-equiv="Cache-Directive" content="no-cache" />
	<meta http-equiv="Expires" content="Tue, 17 Dec 2024 09:19:31 GMT" />
	<link rel="shortcut icon" href="/mantis/images/favicon.ico" type="image/x-icon" />
	<link rel="search" type="application/opensearchdescription+xml" title="MantisBT: Text Search" href="http://oldforge.etsi.org/mantis/browser_search_plugin.php?type=text" />	<link rel="search" type="application/opensearchdescription+xml" title="MantisBT: Issue Id" href="http://oldforge.etsi.org/mantis/browser_search_plugin.php?type=id" />	<title>0003783: Recursive references of record and set types shall be optional - ETSI's Bug Tracker</title>
<script type="text/javascript" src="/mantis/javascript/min/common.js"></script>
<script type="text/javascript">var loading_lang = "Loading...";</script><script type="text/javascript" src="/mantis/javascript/min/ajax.js"></script>
</head>
<body>
<br /><table class="width100" cellspacing="1"><tr><td class="form-title" colspan="6"><div class="center">ETSI's Bug Tracker - Part 01: TTCN-3 Core Language</div></td></tr><tr><td class="form-title" colspan="6">View Issue Details</td></tr><tr><td class="print-spacer" colspan="6"><hr size="1" /></td></tr><tr class="print-category"><td class="print" width="16%">ID</td><td class="print" width="16%">Project</td><td class="print" width="16%">Category</td><td class="print" width="16%">View Status</td><td class="print" width="16%">Date Submitted</td><td class="print" width="16%">Last Update</td></tr><tr class="print"><td class="print">0003783</td><td class="print">Part 01: TTCN-3 Core Language</td><td class="print">Technical</td><td class="print">public</td><td class="print">17-07-2008 10:43</td><td class="print">09-07-2009 10:43</td></tr><tr><td class="print-spacer" colspan="6"><hr size="1" /></td></tr><tr class="print"><td class="print-category">Reporter</td><td class="print">Gyorgy Rethy</td><td class="print" colspan="4">&#160;</td></tr><tr class="print"><td class="print-category">Assigned To</td><td class="print">Ina Schieferdecker</td><td class="print" colspan="4">&#160;</td></tr><tr class="print"><td class="print-category">Priority</td><td class="print">normal</td><td class="print-category">Severity</td><td class="print">minor</td><td class="print-category">Reproducibility</td><td class="print">have not tried</td></tr><tr class="print"><td class="print-category">Status</td><td class="print">closed</td><td class="print-category">Resolution</td><td class="print">fixed</td><td class="print" colspan="2">&#160;</td></tr><tr class="print"><td class="print-category">Platform</td><td class="print"></td><td class="print-category">OS</td><td class="print"></td><td class="print-category">OS Version</td><td class="print"></td></tr><tr class="print"><td class="print-category">Product Version</td><td class="print"></td><td class="print" colspan="4">&#160;</td></tr><tr><td class="print-category">Target Version</td><td class="print">v4.2.1 (published 2010-07)</td><td class="print-category">Fixed in Version</td><td class="print">v4.2.1 (published 2010-07)</td><td class="print" colspan="2">&#160;</td></tr><tr class="print"><td class="print-category">Clause Reference(s)</td><td class="print" colspan="4">6.2.1.2, 6.2.2.2</td></tr><tr class="print"><td class="print-category">Source  (company  - Author)</td><td class="print" colspan="4">&#160;&#160;&#160;&#160;&#160;</td></tr><tr><td class="print-spacer" colspan="6"><hr size="1" /></td></tr><tr class="print"><td class="print-category">Summary</td><td class="print" colspan="5">0003783: Recursive references of record and set types shall be optional</td></tr><tr class="print"><td class="print-category">Description</td><td class="print" colspan="5">Recursive references are not specified. such fields shall be optional for records and sets, otherwise no legal value can be written for the type.<br />
</td></tr><tr class="print"><td class="print-category">Steps To Reproduce</td><td class="print" colspan="5"></td></tr><tr class="print"><td class="print-category">Additional Information</td><td class="print" colspan="5">Proposed:<br />
Add a sentence to 6.2.1.2 and 6.2.2.2:<br />
Fields containing recursive reference, i.e. referencing to its type,  shall be optional.<br />
EXAMPLE 2:&lt;for the record clause only&gt;<br />
&#160;&#160;&#160;&#160;type record MyType <br />
&#160;&#160;&#160;&#160;{	<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;FieldType1	field1,<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;MyType 	        field2	optional,<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;:		<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;FieldTypeN 	fieldN <br />
&#160;&#160;&#160;&#160;}</td></tr><tr class="print"><td class="print-category">Tags</td><td class="print" colspan="5">No tags attached.</td></tr><tr class="print"><td class="print-category">Relationships</td><td class="print" colspan="5"></td></tr><tr class="print"><td class="print-category">Attached Files</td><td class="print" colspan="5"><img src="http://oldforge.etsi.org/mantis/images/fileicons/doc.gif" alt="doc" />&#160;CR-3783-Recursive-references-Resolution-V1.doc (150,528) <span class="italic">16-12-2008 12:53</span><br />http://oldforge.etsi.org/mantis/file_download.php?file_id=1901&amp;type=bug<br /><img src="http://oldforge.etsi.org/mantis/images/fileicons/doc.gif" alt="doc" />&#160;CR3783_RecursiveReference_RecordSet_v2.doc (143,360) <span class="italic">08-07-2009 10:45</span><br />http://oldforge.etsi.org/mantis/file_download.php?file_id=2183&amp;type=bug<br /><img src="http://oldforge.etsi.org/mantis/images/fileicons/doc.gif" alt="doc" />&#160;CR3783_RecursiveReference_RecordSet_v3.doc (144,384) <span class="italic">08-07-2009 11:12</span><br />http://oldforge.etsi.org/mantis/file_download.php?file_id=2186&amp;type=bug<br /><img src="http://oldforge.etsi.org/mantis/images/fileicons/doc.gif" alt="doc" />&#160;CR3783_RecursiveReference_RecordSet_v4.doc (146,944) <span class="italic">09-07-2009 10:37</span><br />http://oldforge.etsi.org/mantis/file_download.php?file_id=2199&amp;type=bug</td></tr><tr><td class="print-spacer" colspan="6"><hr size="1" /></td></tr><tr><td class="form-title">Issue History</td></tr><tr class="print-category"><td class="row-category-history">Date Modified</td><td class="row-category-history">Username</td><td class="row-category-history">Field</td><td class="row-category-history">Change</td></tr><tr class="print"><td class="print">17-07-2008 10:43</td><td class="print"><a href="http://oldforge.etsi.org/mantis/view_user_page.php?id=127">Gyorgy Rethy</a></td><td class="print">New Issue</td><td class="print"></td></tr><tr class="print"><td class="print">17-07-2008 10:43</td><td class="print"><a href="http://oldforge.etsi.org/mantis/view_user_page.php?id=127">Gyorgy Rethy</a></td><td class="print">Status</td><td class="print">new =&gt; assigned</td></tr><tr class="print"><td class="print">17-07-2008 10:43</td><td class="print"><a href="http://oldforge.etsi.org/mantis/view_user_page.php?id=127">Gyorgy Rethy</a></td><td class="print">Assigned To</td><td class="print"> =&gt; Ina Schieferdecker</td></tr><tr class="print"><td class="print">17-07-2008 10:43</td><td class="print"><a href="http://oldforge.etsi.org/mantis/view_user_page.php?id=127">Gyorgy Rethy</a></td><td class="print">Clause Reference(s)</td><td class="print"> =&gt; 6.2.1.2, 6.2.2.2</td></tr><tr class="print"><td class="print">17-07-2008 10:43</td><td class="print"><a href="http://oldforge.etsi.org/mantis/view_user_page.php?id=127">Gyorgy Rethy</a></td><td class="print">Source  (company  - Author)</td><td class="print"> =&gt;      </td></tr><tr class="print"><td class="print">18-07-2008 11:22</td><td class="print"><a href="http://oldforge.etsi.org/mantis/view_user_page.php?id=81">Ina Schieferdecker</a></td><td class="print">Assigned To</td><td class="print">Ina Schieferdecker =&gt; Jens Grabowski</td></tr><tr class="print"><td class="print">17-08-2008 09:14</td><td class="print"><a href="http://oldforge.etsi.org/mantis/view_user_page.php?id=81">Ina Schieferdecker</a></td><td class="print">Target Version</td><td class="print"> =&gt; Edition 4.1.1 (not yet published)</td></tr><tr class="print"><td class="print">27-11-2008 12:45</td><td class="print"><a href="http://oldforge.etsi.org/mantis/view_user_page.php?id=112">Thomas DeiÃŸ</a></td><td class="print">Note Added: 0007469</td><td class="print"></td></tr><tr class="print"><td class="print">16-12-2008 12:53</td><td class="print"><a href="http://oldforge.etsi.org/mantis/view_user_page.php?id=82">Jens Grabowski</a></td><td class="print">File Added: CR-3783-Recursive-references-Resolution-V1.doc</td><td class="print"></td></tr><tr class="print"><td class="print">16-12-2008 12:54</td><td class="print"><a href="http://oldforge.etsi.org/mantis/view_user_page.php?id=82">Jens Grabowski</a></td><td class="print">Assigned To</td><td class="print">Jens Grabowski =&gt; Thomas DeiÃŸ</td></tr><tr class="print"><td class="print">16-12-2008 12:54</td><td class="print"><a href="http://oldforge.etsi.org/mantis/view_user_page.php?id=82">Jens Grabowski</a></td><td class="print">Status</td><td class="print">assigned =&gt; resolved</td></tr><tr class="print"><td class="print">16-12-2008 14:09</td><td class="print"><a href="http://oldforge.etsi.org/mantis/view_user_page.php?id=112">Thomas DeiÃŸ</a></td><td class="print">Note Added: 0007717</td><td class="print"></td></tr><tr class="print"><td class="print">16-12-2008 14:09</td><td class="print"><a href="http://oldforge.etsi.org/mantis/view_user_page.php?id=112">Thomas DeiÃŸ</a></td><td class="print">Assigned To</td><td class="print">Thomas DeiÃŸ =&gt; Jens Grabowski</td></tr><tr class="print"><td class="print">16-12-2008 14:09</td><td class="print"><a href="http://oldforge.etsi.org/mantis/view_user_page.php?id=112">Thomas DeiÃŸ</a></td><td class="print">Status</td><td class="print">resolved =&gt; assigned</td></tr><tr class="print"><td class="print">17-12-2008 09:35</td><td class="print"><a href="http://oldforge.etsi.org/mantis/view_user_page.php?id=81">Ina Schieferdecker</a></td><td class="print">Note Added: 0007728</td><td class="print"></td></tr><tr class="print"><td class="print">17-12-2008 09:35</td><td class="print"><a href="http://oldforge.etsi.org/mantis/view_user_page.php?id=81">Ina Schieferdecker</a></td><td class="print">Target Version</td><td class="print">Edition 4.1.1 (not yet published) =&gt; Edition 4.2.1 (not yet published)</td></tr><tr class="print"><td class="print">20-04-2009 12:01</td><td class="print"><a href="http://oldforge.etsi.org/mantis/view_user_page.php?id=81">Ina Schieferdecker</a></td><td class="print">Assigned To</td><td class="print">Jens Grabowski =&gt; Tibor CsÃ¶ndes</td></tr><tr class="print"><td class="print">08-07-2009 10:45</td><td class="print"><a href="http://oldforge.etsi.org/mantis/view_user_page.php?id=530">Tibor CsÃ¶ndes</a></td><td class="print">File Added: CR3783_RecursiveReference_RecordSet_v2.doc</td><td class="print"></td></tr><tr class="print"><td class="print">08-07-2009 10:51</td><td class="print"><a href="http://oldforge.etsi.org/mantis/view_user_page.php?id=530">Tibor CsÃ¶ndes</a></td><td class="print">Note Added: 0008863</td><td class="print"></td></tr><tr class="print"><td class="print">08-07-2009 10:51</td><td class="print"><a href="http://oldforge.etsi.org/mantis/view_user_page.php?id=530">Tibor CsÃ¶ndes</a></td><td class="print">Assigned To</td><td class="print">Tibor CsÃ¶ndes =&gt; Gyorgy Rethy</td></tr><tr class="print"><td class="print">08-07-2009 11:12</td><td class="print"><a href="http://oldforge.etsi.org/mantis/view_user_page.php?id=127">Gyorgy Rethy</a></td><td class="print">File Added: CR3783_RecursiveReference_RecordSet_v3.doc</td><td class="print"></td></tr><tr class="print"><td class="print">08-07-2009 11:13</td><td class="print"><a href="http://oldforge.etsi.org/mantis/view_user_page.php?id=127">Gyorgy Rethy</a></td><td class="print">Note Added: 0008865</td><td class="print"></td></tr><tr class="print"><td class="print">08-07-2009 11:13</td><td class="print"><a href="http://oldforge.etsi.org/mantis/view_user_page.php?id=127">Gyorgy Rethy</a></td><td class="print">Assigned To</td><td class="print">Gyorgy Rethy =&gt; Ina Schieferdecker</td></tr><tr class="print"><td class="print">08-07-2009 11:38</td><td class="print"><a href="http://oldforge.etsi.org/mantis/view_user_page.php?id=530">Tibor CsÃ¶ndes</a></td><td class="print">Note Added: 0008866</td><td class="print"></td></tr><tr class="print"><td class="print">09-07-2009 10:36</td><td class="print"><a href="http://oldforge.etsi.org/mantis/view_user_page.php?id=81">Ina Schieferdecker</a></td><td class="print">Note Added: 0008880</td><td class="print"></td></tr><tr class="print"><td class="print">09-07-2009 10:37</td><td class="print"><a href="http://oldforge.etsi.org/mantis/view_user_page.php?id=81">Ina Schieferdecker</a></td><td class="print">File Added: CR3783_RecursiveReference_RecordSet_v4.doc</td><td class="print"></td></tr><tr class="print"><td class="print">09-07-2009 10:43</td><td class="print"><a href="http://oldforge.etsi.org/mantis/view_user_page.php?id=81">Ina Schieferdecker</a></td><td class="print">Resolution</td><td class="print">open =&gt; fixed</td></tr><tr class="print"><td class="print">09-07-2009 10:43</td><td class="print"><a href="http://oldforge.etsi.org/mantis/view_user_page.php?id=81">Ina Schieferdecker</a></td><td class="print">Status</td><td class="print">assigned =&gt; resolved</td></tr><tr class="print"><td class="print">09-07-2009 10:43</td><td class="print"><a href="http://oldforge.etsi.org/mantis/view_user_page.php?id=81">Ina Schieferdecker</a></td><td class="print">Fixed in Version</td><td class="print"> =&gt; Edition 4.2.1 (not yet published)</td></tr><tr class="print"><td class="print">09-07-2009 10:43</td><td class="print"><a href="http://oldforge.etsi.org/mantis/view_user_page.php?id=81">Ina Schieferdecker</a></td><td class="print">Status</td><td class="print">resolved =&gt; closed</td></tr></table>
<br />
<table class="width100" cellspacing="1">
<tr>
	<td class="form-title" colspan="2">
		Notes	</td>
</tr>
<tr>
	<td class="print-spacer" colspan="2">
		<hr size="1" />
	</td>
</tr>
<tr>
	<td class="nopad" valign="top" width="20%">
		<table class="hide" cellspacing="1">
		<tr>
			<td class="print">
				(0007469)
			</td>
		</tr>
		<tr>
			<td class="print">
				<a href="http://oldforge.etsi.org/mantis/view_user_page.php?id=112">Thomas DeiÃŸ</a>&#160;&#160;&#160;
			</td>
		</tr>
		<tr>
			<td class="print">
				27-11-2008 12:45&#160;&#160;&#160;
							</td>
		</tr>
		</table>
	</td>
	<td class="nopad" valign="top" width="85%">
		<table class="hide" cellspacing="1">
		<tr>
			<td class="print">
				The recursion might involve several definitions, in this case it remains open which field should be optional.<br />
<br />
Also, there is the possibility to break the recursion by using a union type.<br />
Also, for a recursive record of type the recursion could stop with an empty record.<br />
<br />
It will become difficult to guarantee that the recursion can be broken via syntactical constraints.			</td>
		</tr>
		</table>
	</td>
</tr>
<tr>
	<td class="print-spacer" colspan="2">
		<hr size="1" />
	</td>
</tr>
<tr>
	<td class="nopad" valign="top" width="20%">
		<table class="hide" cellspacing="1">
		<tr>
			<td class="print">
				(0007717)
			</td>
		</tr>
		<tr>
			<td class="print">
				<a href="http://oldforge.etsi.org/mantis/view_user_page.php?id=112">Thomas DeiÃŸ</a>&#160;&#160;&#160;
			</td>
		</tr>
		<tr>
			<td class="print">
				16-12-2008 14:09&#160;&#160;&#160;
							</td>
		</tr>
		</table>
	</td>
	<td class="nopad" valign="top" width="85%">
		<table class="hide" cellspacing="1">
		<tr>
			<td class="print">
				The text as such is ok for record and set.<br />
<br />
For unions it should be stated that there has to be an alternative with a different type.<br />
The unions U1 and U2 should not be allowed<br />
type union U1 {U1 u1}<br />
type union U2 {U2 v1, U2 v2}<br />
<br />
Nevertheless, for me it is still open whether we should have such a requirement at all. There are quite a number of recursive type definitions that do not have the restrictions stated, but still allow finite values. And therefore would be valid type definitions. Is it really worth to exclude a few cases that do not allow finite values?			</td>
		</tr>
		</table>
	</td>
</tr>
<tr>
	<td class="print-spacer" colspan="2">
		<hr size="1" />
	</td>
</tr>
<tr>
	<td class="nopad" valign="top" width="20%">
		<table class="hide" cellspacing="1">
		<tr>
			<td class="print">
				(0007728)
			</td>
		</tr>
		<tr>
			<td class="print">
				<a href="http://oldforge.etsi.org/mantis/view_user_page.php?id=81">Ina Schieferdecker</a>&#160;&#160;&#160;
			</td>
		</tr>
		<tr>
			<td class="print">
				17-12-2008 09:35&#160;&#160;&#160;
							</td>
		</tr>
		</table>
	</td>
	<td class="nopad" valign="top" width="85%">
		<table class="hide" cellspacing="1">
		<tr>
			<td class="print">
				This CR requires more discussion and hence moved to v4.2.1			</td>
		</tr>
		</table>
	</td>
</tr>
<tr>
	<td class="print-spacer" colspan="2">
		<hr size="1" />
	</td>
</tr>
<tr>
	<td class="nopad" valign="top" width="20%">
		<table class="hide" cellspacing="1">
		<tr>
			<td class="print">
				(0008863)
			</td>
		</tr>
		<tr>
			<td class="print">
				<a href="http://oldforge.etsi.org/mantis/view_user_page.php?id=530">Tibor CsÃ¶ndes</a>&#160;&#160;&#160;
			</td>
		</tr>
		<tr>
			<td class="print">
				08-07-2009 10:51&#160;&#160;&#160;
							</td>
		</tr>
		</table>
	</td>
	<td class="nopad" valign="top" width="85%">
		<table class="hide" cellspacing="1">
		<tr>
			<td class="print">
				New version uploaded based on the previous comments. In case of record and set types to avoid the infinite recursions the suggestion is the optional field, for union types minimum one filed with different type (no recursion). Examples included for record and union types.			</td>
		</tr>
		</table>
	</td>
</tr>
<tr>
	<td class="print-spacer" colspan="2">
		<hr size="1" />
	</td>
</tr>
<tr>
	<td class="nopad" valign="top" width="20%">
		<table class="hide" cellspacing="1">
		<tr>
			<td class="print">
				(0008865)
			</td>
		</tr>
		<tr>
			<td class="print">
				<a href="http://oldforge.etsi.org/mantis/view_user_page.php?id=127">Gyorgy Rethy</a>&#160;&#160;&#160;
			</td>
		</tr>
		<tr>
			<td class="print">
				08-07-2009 11:13&#160;&#160;&#160;
							</td>
		</tr>
		</table>
	</td>
	<td class="nopad" valign="top" width="85%">
		<table class="hide" cellspacing="1">
		<tr>
			<td class="print">
				CR3783_RecursiveReference_RecordSet_v3.doc:<br />
OK with me, to be agreed with a wider audience			</td>
		</tr>
		</table>
	</td>
</tr>
<tr>
	<td class="print-spacer" colspan="2">
		<hr size="1" />
	</td>
</tr>
<tr>
	<td class="nopad" valign="top" width="20%">
		<table class="hide" cellspacing="1">
		<tr>
			<td class="print">
				(0008866)
			</td>
		</tr>
		<tr>
			<td class="print">
				<a href="http://oldforge.etsi.org/mantis/view_user_page.php?id=530">Tibor CsÃ¶ndes</a>&#160;&#160;&#160;
			</td>
		</tr>
		<tr>
			<td class="print">
				08-07-2009 11:38&#160;&#160;&#160;
							</td>
		</tr>
		</table>
	</td>
	<td class="nopad" valign="top" width="85%">
		<table class="hide" cellspacing="1">
		<tr>
			<td class="print">
				I found a mistype:<br />
// Mistype<br />
type record MyRecord1<br />
&#160;&#160;&#160;&#160;{ <br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;FieldType1  field1,<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;MyRecord1    field2 optional,        FieldType3  field3 <br />
&#160;&#160;&#160;&#160;}<br />
// Correct<br />
type record MyRecord1<br />
&#160;&#160;&#160;&#160;{ <br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;FieldType1  field1,<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;MyRecord1   field2 optional,       <br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;FieldType3  field3 <br />
&#160;&#160;&#160;&#160;}<br />
<br />
Example 6 and 7 should be merged, as it is in Example 5.			</td>
		</tr>
		</table>
	</td>
</tr>
<tr>
	<td class="print-spacer" colspan="2">
		<hr size="1" />
	</td>
</tr>
<tr>
	<td class="nopad" valign="top" width="20%">
		<table class="hide" cellspacing="1">
		<tr>
			<td class="print">
				(0008880)
			</td>
		</tr>
		<tr>
			<td class="print">
				<a href="http://oldforge.etsi.org/mantis/view_user_page.php?id=81">Ina Schieferdecker</a>&#160;&#160;&#160;
			</td>
		</tr>
		<tr>
			<td class="print">
				09-07-2009 10:36&#160;&#160;&#160;
							</td>
		</tr>
		</table>
	</td>
	<td class="nopad" valign="top" width="85%">
		<table class="hide" cellspacing="1">
		<tr>
			<td class="print">
				as proposed with some editorial changes			</td>
		</tr>
		</table>
	</td>
</tr>
</table>
</body>
</html>
