Changeset caf06aa
- Timestamp:
- Jun 20, 2023, 3:59:33 PM (17 months ago)
- Branches:
- master
- Children:
- 132e4c1, da0edec
- Parents:
- 70d8e2f2
- Files:
-
- 2 added
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/Validate/GenericParameter.cpp
r70d8e2f2 rcaf06aa 120 120 } 121 121 122 struct ValidateGenericParamsCore : public ast::WithCodeLocation { 122 bool isSizedPolymorphic( const ast::AggregateDecl * decl ) { 123 for ( const auto & param : decl->params ) { 124 if ( param->sized ) return true; 125 } 126 return false; 127 } 128 129 struct ValidateGenericParamsCore : 130 public ast::WithCodeLocation, public ast::WithGuards { 131 // Generic parameter filling and checks: 123 132 const ast::StructInstType * previsit( const ast::StructInstType * type ) { 124 133 assert( location ); … … 129 138 assert( location ); 130 139 return validateGeneric( *location, type ); 140 } 141 142 // Check parameter and bitfield combinations: 143 bool insideSized = false; 144 void previsit( const ast::StructDecl * decl ) { 145 if ( isSizedPolymorphic( decl ) && !insideSized ) { 146 GuardValue( insideSized ) = true; 147 } 148 } 149 150 void previsit( const ast::UnionDecl * decl ) { 151 if ( isSizedPolymorphic( decl ) && !insideSized ) { 152 GuardValue( insideSized ) = true; 153 } 154 } 155 156 void previsit( const ast::ObjectDecl * decl ) { 157 if ( insideSized && decl->bitfieldWidth ) { 158 SemanticError( decl->location, decl, 159 "Cannot have bitfields inside a sized polymorphic structure." ); 160 } 131 161 } 132 162 };
Note: See TracChangeset
for help on using the changeset viewer.