Changes in src/InitTweak/InitTweak.cc [6cf27a07:cad355a]
- File:
-
- 1 edited
-
src/InitTweak/InitTweak.cc (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/InitTweak/InitTweak.cc
r6cf27a07 rcad355a 57 57 (objDecl->get_init() == NULL || 58 58 ( objDecl->get_init() != NULL && objDecl->get_init()->get_maybeConstructed() )) && 59 ! isDesignated( objDecl->get_init() ) 60 && objDecl->get_storageClass() != DeclarationNode::Extern; 59 ! isDesignated( objDecl->get_init() ); 61 60 } 62 61 … … 161 160 else return NULL; 162 161 } 163 164 class ConstExprChecker : public Visitor {165 public:166 ConstExprChecker() : isConstExpr( true ) {}167 168 virtual void visit( ApplicationExpr *applicationExpr ) { isConstExpr = false; }169 virtual void visit( UntypedExpr *untypedExpr ) { isConstExpr = false; }170 virtual void visit( NameExpr *nameExpr ) { isConstExpr = false; }171 virtual void visit( CastExpr *castExpr ) { isConstExpr = false; }172 virtual void visit( LabelAddressExpr *labAddressExpr ) { isConstExpr = false; }173 virtual void visit( UntypedMemberExpr *memberExpr ) { isConstExpr = false; }174 virtual void visit( MemberExpr *memberExpr ) { isConstExpr = false; }175 virtual void visit( VariableExpr *variableExpr ) { isConstExpr = false; }176 virtual void visit( ConstantExpr *constantExpr ) { /* bottom out */ }177 // these might be okay?178 // virtual void visit( SizeofExpr *sizeofExpr );179 // virtual void visit( AlignofExpr *alignofExpr );180 // virtual void visit( UntypedOffsetofExpr *offsetofExpr );181 // virtual void visit( OffsetofExpr *offsetofExpr );182 // virtual void visit( OffsetPackExpr *offsetPackExpr );183 // virtual void visit( AttrExpr *attrExpr );184 // virtual void visit( CommaExpr *commaExpr );185 // virtual void visit( LogicalExpr *logicalExpr );186 // virtual void visit( ConditionalExpr *conditionalExpr );187 virtual void visit( TupleExpr *tupleExpr ) { isConstExpr = false; }188 virtual void visit( SolvedTupleExpr *tupleExpr ) { isConstExpr = false; }189 virtual void visit( TypeExpr *typeExpr ) { isConstExpr = false; }190 virtual void visit( AsmExpr *asmExpr ) { isConstExpr = false; }191 virtual void visit( UntypedValofExpr *valofExpr ) { isConstExpr = false; }192 virtual void visit( CompoundLiteralExpr *compLitExpr ) { isConstExpr = false; }193 194 bool isConstExpr;195 };196 197 bool isConstExpr( Expression * expr ) {198 if ( expr ) {199 ConstExprChecker checker;200 expr->accept( checker );201 return checker.isConstExpr;202 }203 return true;204 }205 206 bool isConstExpr( Initializer * init ) {207 if ( init ) {208 ConstExprChecker checker;209 init->accept( checker );210 return checker.isConstExpr;211 } // if212 // for all intents and purposes, no initializer means const expr213 return true;214 }215 216 162 }
Note:
See TracChangeset
for help on using the changeset viewer.