Skip to content

Commit fe86559

Browse files
authored
Merge pull request #4242 from masatake/fix-wrong-parser-version
Fix wrong parser versions
2 parents bc0f712 + b2b9624 commit fe86559

File tree

9 files changed

+26
-6
lines changed

9 files changed

+26
-6
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
1

Tmain/broken-version.d/run.sh

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
#!/bin/sh
2+
3+
# Copyright: 2025 Masatake YAMATO
4+
# License: GPL-2
5+
6+
CTAGS=$1
7+
8+
. ../utils.sh
9+
10+
is_feature_available "$CTAGS" debug
11+
${CTAGS} --quiet --options=NONE --langdef=BROKEN'{version=0.1}' --_force-quit=1
12+
exit $?
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
ctags: Warning: versionCurrent (0) must be either equal to or greater than versionAge (1): BROKEN

Tmain/json-output-format.d/stdout-expected.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@
8686
{"_type": "ptag", "name": "TAG_PARSER_VERSION", "parserName": "C", "path": "1.1", "pattern": "current.age"}
8787
{"_type": "ptag", "name": "TAG_PARSER_VERSION", "parserName": "Go", "path": "0.0", "pattern": "current.age"}
8888
{"_type": "ptag", "name": "TAG_PARSER_VERSION", "parserName": "Man", "path": "0.0", "pattern": "current.age"}
89-
{"_type": "ptag", "name": "TAG_PARSER_VERSION", "parserName": "Python", "path": "0.1", "pattern": "current.age"}
89+
{"_type": "ptag", "name": "TAG_PARSER_VERSION", "parserName": "Python", "path": "1.1", "pattern": "current.age"}
9090
{"_type": "ptag", "name": "TAG_PATTERN_LENGTH_LIMIT", "path": "96", "pattern": "0 for no limit"}
9191
{"_type": "ptag", "name": "TAG_PROGRAM_AUTHOR", "path": "Universal Ctags Team", "pattern": ""}
9292
{"_type": "ptag", "name": "TAG_PROGRAM_NAME", "path": "Universal Ctags", "pattern": "Derived from Exuberant Ctags"}

main/parse.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1983,6 +1983,12 @@ static void initializeParsingCommon (parserDefinition *def, bool is_builtin,
19831983
else
19841984
verbose ("Add optlib parser: %s\n", def->name);
19851985

1986+
if (! (def->versionCurrent >= def->versionAge))
1987+
error (WARNING, "versionCurrent (%u) must be either equal to or greater than versionAge (%u): %s",
1988+
def->versionCurrent, def->versionAge, def->name);
1989+
if (is_builtin)
1990+
Assert (def->versionCurrent >= def->versionAge);
1991+
19861992
def->id = LanguageCount++;
19871993
parser = LanguageTable + def->id;
19881994
parser->def = def;

parsers/clojure.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ extern parserDefinition *ClojureParser (void)
174174
def->aliases = aliases;
175175
def->parser = findClojureTags;
176176
def->useCork = CORK_QUEUE;
177-
def->versionCurrent = 0;
177+
def->versionCurrent = 1;
178178
def->versionAge = 1;
179179
return def;
180180
}

parsers/lisp.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -528,7 +528,7 @@ extern parserDefinition* LispParser (void)
528528
def->parser = findLispTags;
529529
def->selectLanguage = selectors;
530530
def->useCork = CORK_QUEUE;
531-
def->versionCurrent = 0;
531+
def->versionCurrent = 1;
532532
def->versionAge = 1;
533533
return def;
534534
}
@@ -551,7 +551,7 @@ extern parserDefinition* EmacsLispParser (void)
551551
def->aliases = aliases;
552552
def->parser = findEmacsLispTags;
553553
def->useCork = CORK_QUEUE;
554-
def->versionCurrent = 0;
554+
def->versionCurrent = 1;
555555
def->versionAge = 1;
556556
return def;
557557
}

parsers/python.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1874,7 +1874,7 @@ extern parserDefinition* PythonParser (void)
18741874
def->fieldCount = ARRAY_SIZE (PythonFields);
18751875
def->useCork = CORK_QUEUE;
18761876
def->requestAutomaticFQTag = true;
1877-
def->versionCurrent = 0;
1877+
def->versionCurrent = 1;
18781878
def->versionAge = 1;
18791879
return def;
18801880
}

parsers/scheme.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ extern parserDefinition* SchemeParser (void)
122122
def->aliases = aliases;
123123
def->parser = findSchemeTags;
124124
def->useCork = CORK_QUEUE;
125-
def->versionCurrent = 0;
125+
def->versionCurrent = 1;
126126
def->versionAge = 1;
127127
return def;
128128
}

0 commit comments

Comments
 (0)