WLSD does not upgrade types
|
|
Bugzilla Link |
558 |
Created on |
Aug 28, 2009 12:48 |
Version |
1.00beta |
OS |
Linux |
Architecture |
PC |
Attachments |
fold.sac |
Extended Description
Created an attachment (id=564)
Example code to produce error.
WLSD does not produce the most precise types possible for inner with3s this then affects RW3.
Problem happens when the set of with3s produce an akd but when sub with3s can produce aks.
int[.] _anonymous_2220 { } ;
int[.] res { } ;
res = with3 {
(0 <= _wlsd_2211 < _flat_843 in 1 (IDXS: _wlsd_2212) ) /* (BS: 0) */ {
...
_anonymous_2220 = with3 {
(0 <= _wlsd_2215 < 1 in 1 (IDXS: _wlsd_2216) ) /* (BS: 0) */ {
...
} : _flat_853;
} : ( genarray( [ 1 ] , genarray( [:int] ,_flat_849)));
} : _anonymous_2220;
...
} : ( genarray( [ _flat_842 ] , genarray( [:int] ,_flat_849)));
In the above example _anonymous_2220 should be [1] not [.]. This seems to stem from the type of _anonymous_2220 coming from res and not the with3 that it is defined from.