Changes in src/SymTab/FixFunction.cc [954ef5b:d53772d]
- File:
-
- 1 edited
-
src/SymTab/FixFunction.cc (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/SymTab/FixFunction.cc
r954ef5b rd53772d 30 30 // can't delete function type because it may contain assertions, so transfer ownership to new object 31 31 ObjectDecl *pointer = new ObjectDecl( functionDecl->name, functionDecl->get_storageClasses(), functionDecl->linkage, nullptr, new PointerType( Type::Qualifiers(), functionDecl->type ), nullptr, functionDecl->attributes ); 32 pointer->location = functionDecl->location; 32 33 functionDecl->attributes.clear(); 33 34 functionDecl->type = nullptr; … … 36 37 } 37 38 39 // xxx - this passes on void[], e.g. 40 // void foo(void [10]); 41 // does not cause an error 42 38 43 Type * FixFunction::postmutate(ArrayType *arrayType) { 39 44 // need to recursively mutate the base type in order for multi-dimensional arrays to work. 40 45 PointerType *pointerType = new PointerType( arrayType->get_qualifiers(), arrayType->base, arrayType->dimension, arrayType->isVarLen, arrayType->isStatic ); 46 pointerType->location = arrayType->location; 41 47 arrayType->base = nullptr; 42 48 arrayType->dimension = nullptr; … … 62 68 void FixFunction::premutate(ZeroType *) { visit_children = false; } 63 69 void FixFunction::premutate(OneType *) { visit_children = false; } 70 71 bool fixFunction( DeclarationWithType *& dwt ) { 72 PassVisitor<FixFunction> fixer; 73 dwt = dwt->acceptMutator( fixer ); 74 return fixer.pass.isVoid; 75 } 64 76 } // namespace SymTab 65 77
Note:
See TracChangeset
for help on using the changeset viewer.