From a182e33a9a719496ce9ad492864cec63c22cc867 Mon Sep 17 00:00:00 2001 From: WojciechJasko Date: Sun, 2 Apr 2017 20:31:02 +0200 Subject: [PATCH 1/2] Improve handling of braces in function definition --- lib/cmock_header_parser.rb | 3 +-- test/unit/cmock_header_parser_test.rb | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/lib/cmock_header_parser.rb b/lib/cmock_header_parser.rb index dc60a44..69ab323 100644 --- a/lib/cmock_header_parser.rb +++ b/lib/cmock_header_parser.rb @@ -94,8 +94,7 @@ class CMockHeaderParser end # remove nested pairs of braces because no function declarations will be inside of them (leave outer pair for function definition detection) - while source.gsub!(/\{[^\{\}]*\{[^\{\}]*\}[^\{\}]*\}/m, '{ }') - end + source.gsub!(/\{([^\{\}]*|\g<0>)*\}/m, '{ }') # remove function definitions by stripping off the arguments right now source.gsub!(/\([^\)]*\)\s*\{[^\}]*\}/m, ";") diff --git a/test/unit/cmock_header_parser_test.rb b/test/unit/cmock_header_parser_test.rb index 692741d..bf22f47 100644 --- a/test/unit/cmock_header_parser_test.rb +++ b/test/unit/cmock_header_parser_test.rb @@ -325,6 +325,18 @@ describe CMockHeaderParser, "Verify CMockHeaderParser Module" do "{\n" + " bar((unsigned int) a);\n" + " stripme(a);\n" + + "}\n" + + "uint32 func_with_decl_c(unsigned int);\n" + + "uint32 func_with_decl_c(unsigned int a)\n" + + "{\n" + + " if(a > 0)\n" + + " {\n" + + " return 1;\n" + + " }\n" + + " else\n"+ + " {\n" + + " return 2;\n" + + " }\n" + "}\n" expected = @@ -333,6 +345,8 @@ describe CMockHeaderParser, "Verify CMockHeaderParser Module" do "uint32 func_with_decl_a", #okay. it's not going to be interpretted as another function "uint32 func_with_decl_b(unsigned int)", "uint32 func_with_decl_b", #okay. it's not going to be interpretted as another function + "uint32 func_with_decl_c(unsigned int)", + "uint32 func_with_decl_c", #okay. it's not going to be interpretted as another function ] assert_equal(expected, @parser.import_source(source).map!{|s|s.strip}) From 648f3960ff5a72d58037827d390a0b0ce8c137f9 Mon Sep 17 00:00:00 2001 From: WojciechJasko Date: Sun, 2 Apr 2017 20:31:02 +0200 Subject: [PATCH 2/2] Improve handling of braces in function definition --- lib/cmock_header_parser.rb | 3 +-- test/unit/cmock_header_parser_test.rb | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/lib/cmock_header_parser.rb b/lib/cmock_header_parser.rb index dc60a44..69ab323 100644 --- a/lib/cmock_header_parser.rb +++ b/lib/cmock_header_parser.rb @@ -94,8 +94,7 @@ class CMockHeaderParser end # remove nested pairs of braces because no function declarations will be inside of them (leave outer pair for function definition detection) - while source.gsub!(/\{[^\{\}]*\{[^\{\}]*\}[^\{\}]*\}/m, '{ }') - end + source.gsub!(/\{([^\{\}]*|\g<0>)*\}/m, '{ }') # remove function definitions by stripping off the arguments right now source.gsub!(/\([^\)]*\)\s*\{[^\}]*\}/m, ";") diff --git a/test/unit/cmock_header_parser_test.rb b/test/unit/cmock_header_parser_test.rb index 692741d..bf22f47 100644 --- a/test/unit/cmock_header_parser_test.rb +++ b/test/unit/cmock_header_parser_test.rb @@ -325,6 +325,18 @@ describe CMockHeaderParser, "Verify CMockHeaderParser Module" do "{\n" + " bar((unsigned int) a);\n" + " stripme(a);\n" + + "}\n" + + "uint32 func_with_decl_c(unsigned int);\n" + + "uint32 func_with_decl_c(unsigned int a)\n" + + "{\n" + + " if(a > 0)\n" + + " {\n" + + " return 1;\n" + + " }\n" + + " else\n"+ + " {\n" + + " return 2;\n" + + " }\n" + "}\n" expected = @@ -333,6 +345,8 @@ describe CMockHeaderParser, "Verify CMockHeaderParser Module" do "uint32 func_with_decl_a", #okay. it's not going to be interpretted as another function "uint32 func_with_decl_b(unsigned int)", "uint32 func_with_decl_b", #okay. it's not going to be interpretted as another function + "uint32 func_with_decl_c(unsigned int)", + "uint32 func_with_decl_c", #okay. it's not going to be interpretted as another function ] assert_equal(expected, @parser.import_source(source).map!{|s|s.strip})