Branch: refs/heads/master Author: Jiří Techet techet@gmail.com Committer: Jiří Techet techet@gmail.com Date: Sun, 10 Apr 2022 12:34:15 UTC Commit: 0333c75a08cfc64b347c8780cc7cd3b9af8d94b1 https://github.com/geany/geany/commit/0333c75a08cfc64b347c8780cc7cd3b9af8d94...
Log Message: ----------- Add code verifying that all tag types for a language are mapped to some group
First, lang_types is constructed to contain all tag types used in map_LANGUAGE mapping, then, group_types is constructed to contain all tag types from group_LANGUAGE. Since some groups are used for more languages (e.g. group_C) and contain more tag types than tag types used for the given language, the check doesn't simply do
group_types != lang_types
but rather
(group_types & lang_types) != lang_types
to eliminate types from the group not used for the given language.
Modified Paths: -------------- src/tagmanager/tm_parser.c
Modified: src/tagmanager/tm_parser.c 10 lines changed, 10 insertions(+), 0 deletions(-) =================================================================== @@ -1148,6 +1148,8 @@ void tm_parser_verify_type_mappings(void) const gchar *kinds = tm_ctags_get_lang_kinds(lang); TMParserMap *map = &parser_map[lang]; gchar presence_map[256]; + TMTagType lang_types = 0; + TMTagType group_types = 0; guint i;
if (! map->entries || map->size < 1) @@ -1184,6 +1186,7 @@ void tm_parser_verify_type_mappings(void) kinds[i], tm_ctags_get_lang_name(lang));
presence_map[(unsigned char) map->entries[i].kind]++; + lang_types |= map->entries[i].type; }
for (i = 0; i < sizeof(presence_map); i++) @@ -1192,6 +1195,13 @@ void tm_parser_verify_type_mappings(void) g_error("Duplicate tag type '%c' found for %s", (gchar)i, tm_ctags_get_lang_name(lang)); } + + for (i = 0; i < map->group_num; i++) + group_types |= map->groups[i].types; + + if ((group_types & lang_types) != lang_types) + g_warning("Not all tag types mapped to symbol tree groups for %s", + tm_ctags_get_lang_name(lang)); } }
-------------- This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).