Changeset 86f852b
- Timestamp:
- Oct 19, 2017, 11:15:35 AM (7 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:
- 84733c1
- Parents:
- b93a3de
- git-author:
- Rob Schluntz <rschlunt@…> (10/13/17 16:44:00)
- git-committer:
- Rob Schluntz <rschlunt@…> (10/19/17 11:15:35)
- Location:
- src
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
src/CodeGen/GenType.cc
rb93a3de r86f852b 210 210 211 211 std::string GenType::handleGeneric( ReferenceToType * refType ) { 212 if ( ! refType-> get_parameters().empty() ) {212 if ( ! refType->parameters.empty() ) { 213 213 std::ostringstream os; 214 214 PassVisitor<CodeGenerator> cg( os, pretty, genC, lineMarks ); 215 215 os << "("; 216 cg.pass.genCommaList( refType-> get_parameters().begin(), refType->get_parameters().end() );216 cg.pass.genCommaList( refType->parameters.begin(), refType->parameters.end() ); 217 217 os << ") "; 218 218 return os.str(); -
src/tests/ctor-autogen.c
rb93a3de r86f852b 32 32 }; 33 33 34 // dtype-static generic type is otype 35 forall(dtype T) 36 struct DtypeStaticStruct { 37 T * data; 38 short size; 39 }; 40 41 forall(dtype T) 42 union DtypeStaticUnion { 43 T * data; 44 short size; 45 }; 46 47 // dynamic generic type is otype 48 forall(otype T) 49 struct DynamicStruct { 50 T x; 51 }; 52 53 forall(otype T) 54 union DynamicUnion { 55 T x; 56 }; 57 58 // struct/union that contains a generic type is 59 struct GenericContainingStruct { 60 DynamicStruct(int) dsi; 61 DynamicStruct(double) dsd; 62 DynamicUnion(int) dui; 63 DynamicUnion(double) dud; 64 DtypeStaticStruct(int) dssi; 65 DtypeStaticStruct(float) dssf; 66 DtypeStaticUnion(int) dsui; 67 DtypeStaticUnion(float) dsuf; 68 }; 69 70 union GenericContainingUnion { 71 DynamicStruct(int) dsi; 72 DynamicStruct(double) dsd; 73 DynamicUnion(int) dui; 74 DynamicUnion(double) dud; 75 DtypeStaticStruct(int) dssi; 76 DtypeStaticStruct(float) dssf; 77 DtypeStaticUnion(int) dsui; 78 DtypeStaticUnion(float) dsuf; 79 }; 80 81 82 forall(otype T) 83 T identity(T x) { return x; } 84 85 // can identity e if only sized or only the assertion, but the combination breaks... 86 // forall(dtype T | sized(T) | { void ?{}(T &); }) 87 // void identity(T x) { } 88 89 #if ERR1 34 90 // managed type - defines a constructor - can't use field constructors 35 91 struct Managed { … … 44 100 }; 45 101 46 forall(otype T) 47 T identity(T x) { return x; } 102 Managed x = { 123 }; // error 103 Managed y; // okay 48 104 49 // can identity e if only sized or only the assertion, but the combination breaks... 50 // forall(dtype T | sized(T) | { void ?{}(T &); }) 51 // void identity(T x) { } 105 InheritManaged z = { y }; // error? 106 #endif 52 107 53 108 int main() { … … 56 111 Color e; 57 112 58 // identity(R); // Color should be anotype59 // identity((Color)e);113 // identity(R); Color constant should be Color which is otype 114 identity(e); // Color should be an otype 60 115 identity(u); // U should be an otype 61 116 identity(s); // S should be an otype … … 73 128 identity(pu); // should recursively be an otype 74 129 75 #if ERR1 76 Managed x = { 123 }; // error 77 Managed y; // okay 130 DynamicStruct(int) dsi; 131 DynamicStruct(double) dsd; 132 DynamicUnion(int) dui; 133 DynamicUnion(double) dud; 134 DtypeStaticStruct(int) dssi; 135 DtypeStaticStruct(float) dssf; 136 DtypeStaticUnion(int) dsui; 137 DtypeStaticUnion(float) dsuf; 78 138 79 InheritManaged z = { y }; // error? 80 #endif 139 identity(dsi); 140 identity(dsd); 141 // identity(dui); // xxx - codegen errors in generated thunk _temp3 (Box-pass-generated assignment return-temporary) 142 // identity(dud); 143 identity(dssi); 144 identity(dssf); 145 identity(dsui); 146 identity(dsuf); 81 147 148 GenericContainingStruct gcs; 149 GenericContainingUnion gcu; 150 151 identity(gcs); 152 identity(gcu); 82 153 }
Note: See TracChangeset
for help on using the changeset viewer.