From 902b6c8b3dfc322b5f6e935fcc45c0ab2bc9e8ab Mon Sep 17 00:00:00 2001 From: Mark VanderVoord Date: Tue, 10 Jan 2023 15:35:54 -0500 Subject: [PATCH] Fix bug in parenthetical statements being misinterpreted as functions. (Issue #414) --- lib/cmock_header_parser.rb | 2 +- test/system/test_compilation/parsing.h | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/cmock_header_parser.rb b/lib/cmock_header_parser.rb index 8dd1f46..491e467 100644 --- a/lib/cmock_header_parser.rb +++ b/lib/cmock_header_parser.rb @@ -14,7 +14,7 @@ class CMockHeaderParser @c_calling_conventions = cfg.c_calling_conventions.uniq @treat_as_array = cfg.treat_as_array @treat_as_void = (['void'] + cfg.treat_as_void).uniq - @function_declaration_parse_base_match = '([\w\s\*\(\),\[\]]+??)\(([\w\s\*\(\),\.\[\]+\-\/]*)\)' + @function_declaration_parse_base_match = '([\w\s\*\(\),\[\]]*?\w[\w\s\*\(\),\[\]]*?)\(([\w\s\*\(\),\.\[\]+\-\/]*)\)' @declaration_parse_matcher = /#{@function_declaration_parse_base_match}$/m @standards = (%w[int short char long unsigned signed] + cfg.treat_as.keys).uniq @array_size_name = cfg.array_size_name diff --git a/test/system/test_compilation/parsing.h b/test/system/test_compilation/parsing.h index d4734f4..1c4bcd1 100644 --- a/test/system/test_compilation/parsing.h +++ b/test/system/test_compilation/parsing.h @@ -16,8 +16,8 @@ typedef struct _POINT_T int y; } POINT_T; -// typedef edge case; -// not ANSI C but it has been done and will break cmock if not handled +/* typedef edge case; + not ANSI C but it has been done and will break cmock if not handled */ typedef void VOID_TYPE_CRAZINESS; /* fun parsing & mock generation cases */ @@ -36,6 +36,9 @@ char int a, unsigned int b); +/* this isn't a function, despite the parenthesis */ +static const unsigned int foo = (1); + U16 *ptr_return1(int a); U16* ptr_return2(int a); U16 * ptr_return3(int a);