Changeset 17e0dc9
- Timestamp:
 - May 18, 2017, 8:38:57 PM (8 years ago)
 - Branches:
 - ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, deferred_resn, demangler, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, with_gc
 - Children:
 - fdca7c6
 - Parents:
 - ba2356b
 - File:
 - 
      
- 1 edited
 
- 
          
  src/tests/tuplePolymorphism.c (modified) (3 diffs)
 
 
Legend:
- Unmodified
 - Added
 - Removed
 
- 
      
src/tests/tuplePolymorphism.c
rba2356b r17e0dc9 9 9 // Author : Rob Schluntz 10 10 // Created On : Tue Nov 16 10:38:00 2016 11 // Last Modified By : Rob Schluntz12 // Last Modified On : T ue Nov 16 10:39:18 201613 // Update Count : 211 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu May 18 18:05:12 2017 13 // Update Count : 4 14 14 // 15 15 16 16 // packed is needed so that structs are not passed with the same alignment as function arguments 17 17 __attribute__((packed)) struct A { 18 double x;19 char y;20 double z;18 double x; 19 char y; 20 double z; 21 21 }; 22 22 23 23 __attribute__((packed)) struct B { 24 long long x;25 char y;26 long long z;24 long long x; 25 char y; 26 long long z; 27 27 }; 28 28 … … 39 39 40 40 int main() { 41 int x1 = 123, x3 = 456;42 double x2 = 999.123;41 int x1 = 123, x3 = 456; 42 double x2 = 999.123; 43 43 44 int i1 = 111, i3 = 222;45 double i2 = 333;44 int i1 = 111, i3 = 222; 45 double i2 = 333; 46 46 47 int d1 = 555, d3 = 444;48 double d2 = 666;47 int d1 = 555, d3 = 444; 48 double d2 = 666; 49 49 50 50 51 [i1, i2, i3] = ([x1, (int)x2, x3]) + ([9, 2, 3]);52 [d1, d2, d3] = ([x1, x2, x3]) + ([9, 2, 3]);53 printf("%d %g %d\n", i1, i2, i3);54 printf("%d %g %d\n", d1, d2, d3);51 [i1, i2, i3] = ([x1, (int)x2, x3]) + ([9, 2, 3]); 52 [d1, d2, d3] = ([x1, x2, x3]) + ([9, 2, 3]); 53 printf("%d %g %d\n", i1, i2, i3); 54 printf("%d %g %d\n", d1, d2, d3); 55 55 56 [double, double, double] zzz;57 zzz = [x1, x2, x3];58 printf("%g %g %g\n", zzz);59 [x1, x2, x3] = zzz+zzz;60 printf("%d %g %d\n", x1, x2, x3);56 [double, double, double] zzz; 57 zzz = [x1, x2, x3]; 58 printf("%g %g %g\n", zzz); 59 [x1, x2, x3] = zzz+zzz; 60 printf("%d %g %d\n", x1, x2, x3); 61 61 62 // ensure non-matching assertions are specialized correctly63 g((A){ 1.21, 'x', 10.21}, (B){ 1111LL, 'v', 54385938LL });62 // ensure non-matching assertions are specialized correctly 63 g((A){ 1.21, 'x', 10.21}, (B){ 1111LL, 'v', 54385938LL }); 64 64 } 65 65 … … 73 73 // tab-width: 4 // 74 74 // End: // 75  
  Note:
 See   TracChangeset
 for help on using the changeset viewer.