Changeset d18540f for src/GenPoly/Box.cc
- Timestamp:
- Dec 19, 2022, 4:44:03 PM (20 months ago)
- Branches:
- ADT, ast-experimental, master
- Children:
- 1afda5a2
- Parents:
- d0bdb18
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/GenPoly/Box.cc
rd0bdb18 rd18540f 9 9 // Author : Richard C. Bilson 10 10 // Created On : Mon May 18 07:44:20 2015 11 // Last Modified By : Peter A. Buhr12 // Last Modified On : Fri Dec 13 23:40:34 201913 // Update Count : 34 711 // Last Modified By : Andrew Beach 12 // Last Modified On : Mon Dec 19 16:36:00 2022 13 // Update Count : 348 14 14 // 15 15 … … 214 214 /// sizeof expressions of polymorphic types with the proper variable, 215 215 /// and strips fields from generic struct declarations. 216 struct Pass3 final : public BoxPass, public WithGuards { 217 template< typename DeclClass > 218 void handleDecl( DeclClass * decl, Type * type ); 219 216 struct Pass3 final { 220 217 void premutate( ObjectDecl * objectDecl ); 221 218 void premutate( FunctionDecl * functionDecl ); … … 223 220 void premutate( StructDecl * structDecl ); 224 221 void premutate( UnionDecl * unionDecl ); 225 void premutate( TypeDecl * typeDecl );226 void premutate( PointerType * pointerType );227 void premutate( FunctionType * funcType );228 222 }; 229 223 } // anonymous namespace … … 1886 1880 ////////////////////////////////////////// Pass3 //////////////////////////////////////////////////// 1887 1881 1888 template< typename DeclClass >1889 void Pass3::handleDecl( DeclClass * decl, Type * type ) {1890 GuardScope( scopeTyVars );1891 makeTyVarMap( type, scopeTyVars );1892 ScrubTyVars::scrubAll( decl );1893 }1894 1895 1882 void Pass3::premutate( ObjectDecl * objectDecl ) { 1896 handleDecl( objectDecl, objectDecl->type);1883 ScrubTyVars::scrubAll( objectDecl ); 1897 1884 } 1898 1885 1899 1886 void Pass3::premutate( FunctionDecl * functionDecl ) { 1900 handleDecl( functionDecl, functionDecl->type);1887 ScrubTyVars::scrubAll( functionDecl ); 1901 1888 } 1902 1889 1903 1890 void Pass3::premutate( TypedefDecl * typedefDecl ) { 1904 handleDecl( typedefDecl, typedefDecl->base);1891 ScrubTyVars::scrubAll( typedefDecl ); 1905 1892 } 1906 1893 1907 1894 /// Strips the members from a generic aggregate 1908 void stripGenericMembers(AggregateDecl * decl) {1895 static void stripGenericMembers( AggregateDecl * decl ) { 1909 1896 if ( ! decl->parameters.empty() ) decl->members.clear(); 1910 1897 } … … 1916 1903 void Pass3::premutate( UnionDecl * unionDecl ) { 1917 1904 stripGenericMembers( unionDecl ); 1918 }1919 1920 void Pass3::premutate( TypeDecl * typeDecl ) {1921 addToTyVarMap( typeDecl, scopeTyVars );1922 }1923 1924 void Pass3::premutate( PointerType * pointerType ) {1925 GuardScope( scopeTyVars );1926 makeTyVarMap( pointerType, scopeTyVars );1927 }1928 1929 void Pass3::premutate( FunctionType * functionType ) {1930 GuardScope( scopeTyVars );1931 makeTyVarMap( functionType, scopeTyVars );1932 1905 } 1933 1906 } // anonymous namespace … … 1939 1912 // compile-command: "make install" // 1940 1913 // End: // 1941
Note: See TracChangeset
for help on using the changeset viewer.