Changes in src/Tests/Attributes.c [68cd1ce:b1d6dd5]
- File:
-
- 1 edited
-
src/Tests/Attributes.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
src/Tests/Attributes.c
r68cd1ce rb1d6dd5 1 // I Compile-time resolution2 // =========================3 //4 // 1. an isolated name, where the argument is implicitly determined by the result context5 //6 // @max7 //8 // 2. a direct application to a manifest type9 //10 // @max( int )11 //12 // 3. constraining a type variable; the application is implicitly performed at the call site as in (2)13 //14 // forall( type T | { T @max( T ); } ) T x( T t );15 //16 //17 // II Run-time resolution18 // ======================19 //20 // 1. an indirect reference, where the argument is implicitly determined by the result context21 //22 // attr_var = &@max;23 // x = (*attr_var);24 //25 // 2. an indirect application to a manifest type26 //27 // (*attr_var)( int )28 //29 // 3. a direct application to a type variable30 //31 // @max( T )32 //33 // Under what circumstances can this be done at compile/link time?34 //35 //36 // III Declaration forms37 // =====================38 //39 // 1. monomorphic with implicit argument40 //41 // int @max;42 //43 // 2. monomorphic with explicit argument44 //45 // int @max( int );46 //47 // 3. polymorphic48 //49 // forall( type T | constraint( T ) ) int @attr( T );50 51 1 int @max = 3; 52 2 53 3 int main() { 54 4 int x; 55 type @type(type t); // compiler intrinsic5 type @type(type t); // compiler intrinsic 56 6 type @widest(type t); 57 @type(x) *y; // gcc: typeof(x) *y;58 const @widest(double) *w; // gcc: const typeof(x) *w;59 * @type(3 + 4) z; // cfa declaration syntax7 @type(x) *y; // gcc: typeof(x) *y; 8 const @widest(double) *w; // gcc: const typeof(x) *w; 9 * @type(3 + 4) z; // cfa declaration syntax 60 10 y = @max; 61 11 z = @max(x) + @size(int);
Note:
See TracChangeset
for help on using the changeset viewer.