From 8229ec844865a23e365eaab407d0f9e42df5de7e Mon Sep 17 00:00:00 2001 From: mkarlesky Date: Thu, 23 Apr 2009 17:27:44 +0000 Subject: [PATCH] made new typedef void handling more better to ignore function pointer typedefs with void return type git-svn-id: http://cmock.svn.sourceforge.net/svnroot/cmock/trunk@90 bf332499-1b4d-0410-844d-d2d48d5cc64c --- lib/cmock_header_parser.rb | 2 +- test/unit/cmock_header_parser_test.rb | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/lib/cmock_header_parser.rb b/lib/cmock_header_parser.rb index 5037744..ca10559 100644 --- a/lib/cmock_header_parser.rb +++ b/lib/cmock_header_parser.rb @@ -27,7 +27,7 @@ class CMockHeaderParser # look for any edge cases of typedef'd void; # void must be void for cmock AndReturn calls to process properly. # to a certain extent, these replacements assume we're chewing on pre-processed header files - void_types = source.scan(/typedef\s+void\s+([^\s]+)\s*;/) + void_types = source.scan(/typedef\s+void\s+([\w\d]+)\s*;/) void_types.each {|type| source.gsub!(/#{type}/, 'void')} if void_types.size > 0 source.gsub!(/\s*\\\s*/m, ' ') # smush multiline into single line diff --git a/test/unit/cmock_header_parser_test.rb b/test/unit/cmock_header_parser_test.rb index 153a92f..976ed3e 100644 --- a/test/unit/cmock_header_parser_test.rb +++ b/test/unit/cmock_header_parser_test.rb @@ -115,10 +115,11 @@ class CMockHeaderParserTest < Test::Unit::TestCase source = "typedef void SILLY_VOID_TYPE1;\n" + - "typedef void SILLY_VOID_TYPE2 ;\n\n" + + "typedef void SILLY_VOID_TYPE2 ;\n" + + "typedef void (*FUNCPTR)(void);\n\n" + # do no substitution on type "SILLY_VOID_TYPE2 Foo(int a, unsigned int b);\n" + "void\n shiz(SILLY_VOID_TYPE1 *);\n" + - "void tat(void);\n" + "void tat(FUNCPTR);\n" @parser = CMockHeaderParser.new(source, @config) parsed_stuff = @parser.parse @@ -145,10 +146,10 @@ class CMockHeaderParserTest < Test::Unit::TestCase { :modifier => "", - :args_string => "void", + :args_string => "FUNCPTR cmock_arg1", :rettype => "void", :var_arg => nil, - :args => [], + :args => [{:type => "FUNCPTR", :name => "cmock_arg1"}], :name => "tat" } ]