Changeset 2e02851
- Timestamp:
- Jul 13, 2018, 2:33:18 PM (6 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, no_list, persistent-indexer, pthread-emulation, qualifiedEnum
- Children:
- ad64520, b1672e1
- Parents:
- 610194e
- Location:
- src
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
src/Common/SemanticError.h
r610194e r2e02851 56 56 {"reference-conversion" , "rvalue to reference conversion of rvalue: %s" , Severity::Warn}, 57 57 {"qualifiers-zero_t-one_t", "questionable use of type qualifier %s with %s", Severity::Warn}, 58 {"aggregate-forward-decl" , "forward declaration of nested aggregate: %s" , Severity::Warn}, 58 59 }; 59 60 … … 62 63 RvalueToReferenceConversion, 63 64 BadQualifiersZeroOne, 65 AggrForwardDecl, 64 66 NUMBER_OF_WARNINGS, //This MUST be the last warning 65 67 }; -
src/Parser/DeclarationNode.cc
r610194e r2e02851 1003 1003 // }; 1004 1004 if ( ! (extracted && decl->name == "" && ! anon) ) { 1005 if (decl->name == "") { 1006 if ( DeclarationWithType * dwt = dynamic_cast<DeclarationWithType *>( decl ) ) { 1007 if ( ReferenceToType * aggr = dynamic_cast<ReferenceToType *>( dwt->get_type() ) ) { 1008 if ( aggr->name.find("anonymous") == std::string::npos ) { 1009 bool isInline = false; 1010 if (cur->type->kind == TypeData::Aggregate || cur->type->kind == TypeData::AggregateInst) { 1011 if (cur->type->kind == TypeData::Aggregate) { 1012 isInline = cur->type->aggregate.inLine; 1013 } else { 1014 isInline = cur->type->aggInst.inLine; 1015 if ( TypeData * aggr = cur->type->aggInst.aggregate ) { 1016 if ( aggr->kind == TypeData::Aggregate ) { 1017 isInline = isInline || aggr->aggregate.inLine; 1018 } 1019 } 1020 } 1021 } 1022 if (! isInline) { 1023 // temporary: warn about anonymous member declarations of named types, since this conflicts with the syntax for the forward declaration of an anonymous type 1024 SemanticWarning( cur->location, Warning::AggrForwardDecl, aggr->name.c_str() ); 1025 } 1026 } 1027 } 1028 } 1029 } 1005 1030 decl->location = cur->location; 1006 1031 * out++ = decl;
Note: See TracChangeset
for help on using the changeset viewer.