You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@royale.apache.org by GitBox <gi...@apache.org> on 2019/05/04 21:10:48 UTC

[GitHub] [royale-asjs] greg-dove opened a new issue #420: Problems with int and uint types.

greg-dove opened a new issue #420: Problems with int and uint types.
URL: https://github.com/apache/royale-asjs/issues/420
 
 
   (see also issue #273 )
   For int and uint types, specific uses cause compilation failures, and other
   specific uses cause incorrect results (e.g. myVal as int )
   
   The following serves as a set of comparisons to what works in AVM,
   that should work in royale/javascript (but does not):
   
   ```
           [Test]
           public function testNumerics():void
           {
               var val1:Number = 2.5;
               var val2:Number = 2;
               var var3:String = '';
               var var4:String = '0';
               var var5:String = '2';
               
               var clazz:Class = int;
               var intVal:int = (val1 as int);
               Assert.assertTrue('Unexpected int check', intVal == 0);
               
               intVal = (var3 as int);
               Assert.assertTrue('Unexpected int check', intVal == 0);
               intVal = (var4 as int);
               Assert.assertTrue('Unexpected int check', intVal == 0);
               intVal = (var5 as int);
               Assert.assertTrue('Unexpected int check', intVal == 0);
               
               intVal = int(var3);
               Assert.assertTrue('Unexpected int check', intVal == 0);
               intVal = int(var4);
               Assert.assertTrue('Unexpected int check', intVal == 0);
               intVal = int(var5);
               Assert.assertTrue('Unexpected int check', intVal == 2);
               
               intVal = new int(var3);
               Assert.assertTrue('Unexpected int check', intVal == 0);
               intVal = new int(var4);
               Assert.assertTrue('Unexpected int check', intVal == 0);
               intVal = new int(var5);
               Assert.assertTrue('Unexpected int check', intVal == 2);
               
               
               Assert.assertFalse('int check should be false', val1 is int);
               Assert.assertTrue('int check should be true', val2 is int);
               
               Assert.assertFalse('uint check should be false', val1 is uint);
               Assert.assertTrue('uint check should be true', val2 is uint);
               
               var dyn:* = new clazz();
               
               Assert.assertTrue('Unexpected int check', dyn == 0);
               Assert.assertTrue('Unexpected int check', dyn === 0);
               
               
               Assert.assertTrue('random check', int === int);
               
               Assert.assertTrue('Unexpected int check', new clazz(3.5) == 3);
               
               Assert.assertFalse('Unexpected int check', dyn !== 0);
               dyn = new clazz(3.5);
               intVal = dyn;
               Assert.assertTrue('Unexpected int check', intVal === 3);
               Assert.assertTrue('Unexpected int check', new clazz(3.5) === 3);
               
               //extra indirection
               var dynInt:* = var5;
               
               Assert.assertFalse('Unexpected int check', dynInt is clazz);
               Assert.assertNull('Unexpected int check', dynInt as clazz);
               Assert.assertTrue('Unexpected int check', clazz(dynInt) === 2);
           }
           
           
           [Test]
           public function testUntypedMath():void
           {
               var val:int = 30;
               var c:Class = int;
               var untyped:* = val;
               var untyped2:* = new c(30);
               var untyped3:Object = new c(30);
               Assert.assertTrue('Unexpected int check', untyped3 == 30);
               Assert.assertTrue('Unexpected int check', untyped3 === 30);
               
               val += 1.5;
               untyped += 1.5;
               untyped2 += 1.5;
               Assert.assertTrue('Unexpected int check', val == 31);
               Assert.assertTrue('Unexpected int check', val === 31);
               
               Assert.assertTrue('Unexpected int check', untyped == 31.5);
               Assert.assertTrue('Unexpected int check', untyped === 31.5);
               
               Assert.assertTrue('Unexpected int check', untyped2 == 31.5);
               Assert.assertTrue('Unexpected int check', untyped2 === 31.5);
               
               untyped = new Number(30);
               Assert.assertTrue('Unexpected Number check', untyped == 30);
               Assert.assertTrue('Unexpected Number check', untyped === 30);
               
               var numClass:Class = Number;
               untyped = new numClass(30);
               Assert.assertTrue('Unexpected Number check', untyped == 30);
               Assert.assertTrue('Unexpected Number check', untyped === 30);
               Assert.assertTrue('Unexpected Number check', 30 === untyped);
               
               untyped += 1.5;
               Assert.assertTrue('Unexpected Number check', untyped == 31.5);
               Assert.assertTrue('Unexpected Number check', untyped === 31.5);
               
           }
   ```
   		
   Many of these assertions fail currently,
   but it also will not compile in current develop branch with this full set of tests.

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services