<!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:20:34 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>0002139: Forbid partial values in initializers - 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">0002139</td><td class="print">Part 01: TTCN-3 Core Language</td><td class="print">Technical</td><td class="print">public</td><td class="print">12-10-2007 16:14</td><td class="print">12-03-2008 10:27</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">Roland Gecse</td><td class="print" colspan="4">&#160;</td></tr><tr class="print"><td class="print-category">Assigned To</td><td class="print">Thomas DeiÃŸ</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">N/A</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">won't fix</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">v3.2.1 (published 2007-02)</td><td class="print" colspan="4">&#160;</td></tr><tr><td class="print-category">Target Version</td><td class="print">v3.3.2  (published 2008-04)</td><td class="print-category">Fixed in Version</td><td class="print">v3.3.2  (published 2008-04)</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, C.29</td></tr><tr class="print"><td class="print-category">Source  (company  - Author)</td><td class="print" colspan="4">L.M.Ericsson</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">0002139: Forbid partial values in initializers</td></tr><tr class="print"><td class="print-category">Description</td><td class="print" colspan="5">TTCN-3 allows for leaving certain elements of structured type values undefined at initialization. There are three cases when this can happen:<br />
<br />
1) Excluding certain elements when using the value assignment notation, e.g.:<br />
<br />
type record r { integer i optional, boolean b };<br />
var r v_r1 := { b := true }; <br />
<br />
2) Explicitly marking the omission of some elements using the not used symbol in value assignment notation, e.g.:<br />
<br />
var r v_r2 := { a := -, b := true };<br />
<br />
3) Specifying undefined elements with the not used symbol in value list notation, e.g.: <br />
<br />
var r v_r3 := { -, true };<br />
<br />
Cases 1-3 result partial values, which are incomplete because these contain an unbound element.<br />
<br />
The recommendation is to forbid users to create partial values deliberately. Partial values should only be accepted as a consequence of some operations (e.g. indexing, assignment).<br />
<br />
Reasoning:<br />
<br />
A) De-referring a partial value is illegal and should cause error. For successful execution the missing unbound element must be set to contain some valid value anyway. The entire value content could be set at that time w/o the need of a partially pre-initialized value.<br />
<br />
B) If using partial value cannot be avoided -- with serious doubts if this could happen at all -- the user could still use assignments to set those fields, which need to have some value. E.g.:<br />
<br />
var r v_r4;<br />
v_r4.b := true; // partial value as consequence of assignment -&gt; ok<br />
<br />
C) Incomplete values raise some issues related to other language constructions, such as sizeof, too. According to section C.29 the unbound value at the end of a record of/set of value does not count into the length, e.g.:<br />
<br />
type record of integer roi;<br />
var roi v1 := {1}, v2 := {1,-}, v3 := {1,-,-};<br />
<br />
What is the relationship between v1, v2 and v3? Are these all equal?<br />
Yes? Why do we have the not used symbols at the end?<br />
No? Don't these all have the same length and elements?<br />
<br />
I believe it would be very beneficial to cut this feature from TTCN-3 as it contributes to bad programming practices.</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"></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"></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">12-10-2007 16:14</td><td class="print"><a href="http://oldforge.etsi.org/mantis/view_user_page.php?id=262">Roland Gecse</a></td><td class="print">New Issue</td><td class="print"></td></tr><tr class="print"><td class="print">12-10-2007 16:14</td><td class="print"><a href="http://oldforge.etsi.org/mantis/view_user_page.php?id=262">Roland Gecse</a></td><td class="print">Clause Reference(s)</td><td class="print"> =&gt; 6.2, C.29</td></tr><tr class="print"><td class="print">12-10-2007 16:14</td><td class="print"><a href="http://oldforge.etsi.org/mantis/view_user_page.php?id=262">Roland Gecse</a></td><td class="print">Source  (company  - Author)</td><td class="print"> =&gt; L.M.Ericsson</td></tr><tr class="print"><td class="print">13-10-2007 19:03</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">new =&gt; assigned</td></tr><tr class="print"><td class="print">13-10-2007 19:03</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"> =&gt; developer_u</td></tr><tr class="print"><td class="print">17-10-2007 12:41</td><td class="print"><font STYLE="text-decoration: line-through">user10</font></td><td class="print">Assigned To</td><td class="print">developer_u =&gt; Thomas DeiÃŸ</td></tr><tr class="print"><td class="print">18-10-2007 12:09</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 3.3.1 (not yet published)</td></tr><tr class="print"><td class="print">03-12-2007 12:38</td><td class="print"><a href="http://oldforge.etsi.org/mantis/view_user_page.php?id=82">Jens Grabowski</a></td><td class="print">Note Added: 0004228</td><td class="print"></td></tr><tr class="print"><td class="print">04-12-2007 16:59</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">assigned =&gt; closed</td></tr><tr class="print"><td class="print">04-12-2007 16:59</td><td class="print"><a href="http://oldforge.etsi.org/mantis/view_user_page.php?id=112">Thomas DeiÃŸ</a></td><td class="print">Resolution</td><td class="print">open =&gt; won't fix</td></tr><tr class="print"><td class="print">12-03-2008 10:27</td><td class="print"><font STYLE="text-decoration: line-through">user10</font></td><td class="print">Fixed in Version</td><td class="print"> =&gt; Edition 3.3.2 (not yet published)</td></tr><tr class="print"><td class="print">12-03-2008 10:27</td><td class="print"><font STYLE="text-decoration: line-through">user10</font></td><td class="print">Target Version</td><td class="print">Edition 3.3.1 --will not be published, see 3.3.2 =&gt; Edition 3.3.2 (not yet published)</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">
				(0004228)
			</td>
		</tr>
		<tr>
			<td class="print">
				<a href="http://oldforge.etsi.org/mantis/view_user_page.php?id=82">Jens Grabowski</a>&#160;&#160;&#160;
			</td>
		</tr>
		<tr>
			<td class="print">
				03-12-2007 12:38&#160;&#160;&#160;
							</td>
		</tr>
		</table>
	</td>
	<td class="nopad" valign="top" width="85%">
		<table class="hide" cellspacing="1">
		<tr>
			<td class="print">
				Nothing shall change. The CR will be rejected.			</td>
		</tr>
		</table>
	</td>
</tr>
</table>
</body>
</html>
