Branch: refs/heads/master Author: Colomban Wendling ban@herbesfolles.org Committer: Colomban Wendling ban@herbesfolles.org Date: Sun, 23 Feb 2014 19:30:11 UTC Commit: 8930ba80eb7a5fb2c489772fa37fc269202ba2d3 https://github.com/geany/geany/commit/8930ba80eb7a5fb2c489772fa37fc269202ba2...
Log Message: ----------- Merge branch 'fortran/improvements'
Modified Paths: -------------- data/filetypes.fortran src/symbols.c tagmanager/ctags/fortran.c tests/ctags/Makefile.am tests/ctags/array-spec.f90.tags tests/ctags/auto.f.tags tests/ctags/block.f90 tests/ctags/block.f90.tags tests/ctags/bug565813.f90.tags tests/ctags/bug670433.f90.tags tests/ctags/bug726712.f90.tags tests/ctags/bug734933.f90.tags tests/ctags/bug858165.f90.tags tests/ctags/bug877956.f90.tags tests/ctags/byte.f.tags tests/ctags/common.f.tags tests/ctags/debian_432872.f90.tags tests/ctags/enum.f90 tests/ctags/enum.f90.tags tests/ctags/enumerators.f90 tests/ctags/enumerators.f90.tags tests/ctags/forall_module.f90.tags tests/ctags/fortran_associate.f90.tags tests/ctags/interfaces.f90 tests/ctags/interfaces.f90.tags tests/ctags/invalid_name.f90.tags tests/ctags/keyword_names.f90 tests/ctags/keyword_names.f90.tags tests/ctags/members.f90 tests/ctags/members.f90.tags tests/ctags/misc_types.f.tags tests/ctags/misc_types.f90.tags tests/ctags/namelist.f.tags tests/ctags/numlib.f90.tags tests/ctags/preprocessor.f90 tests/ctags/preprocessor.f90.tags tests/ctags/procedure_pointer_module.f90.tags tests/ctags/procpoint.f90.tags tests/ctags/qualified_types.f90 tests/ctags/qualified_types.f90.tags tests/ctags/recursive.f95.tags tests/ctags/square_parens.f90.tags tests/ctags/stdcall.f.tags tests/ctags/structure.f.tags tests/ctags/union.f.tags tests/ctags/value.f.tags
Modified: data/filetypes.fortran 2 files changed, 1 insertions(+), 1 deletions(-) =================================================================== @@ -3,7 +3,7 @@
[keywords] # all items must be in one line -primary=abstract access action advance all allstop allocatable allocate apostrophe assign assignment associate asynchronous backspace bind blank blockdata call case character class close codimension common complex concurrent contains contiguous continue critical cycle data deallocate decimal delim default dimension direct do dowhile double doubleprecision elemental else elseif elsewhere encoding end endassociate endblockdata endcritical enddo endfile endforall endfunction endif endinterface endmodule endprocedure endprogram endselect endsubmodule endsubroutine endtype endwhere entry enum enumerator eor equivalence err errmsg exist exit extends external file final flush fmt forall form format formatted function generic go goto id if images implicit import impure in include inout integer inquire intent interface intrinsic iomsg iolength iostat is kind len lock logical memory module name named namelist nextrec nml non_intrinsic non_overridable none nopass nullify number only open opened operator optional out pad parameter pass pause pending pointer pos position precision print private procedure program protected public quote pure read readwrite real rec recl recursive result return rewind save select selectcase selecttype sequential sign size stat status stop stream submodule subroutine sync syncall syncimages syncmemory target then to type unformatted unit unlock use value volatile wait where while write +primary=abstract access action advance all allstop allocatable allocate apostrophe assign assignment associate asynchronous backspace bind blank block blockdata call case character class close codimension common complex concurrent contains contiguous continue critical cycle data deallocate decimal delim default dimension direct do dowhile double doubleprecision elemental else elseif elsewhere encoding end endassociate endblock endblockdata endcritical enddo endfile endforall endfunction endif endinterface endmodule endprocedure endprogram endselect endsubmodule endsubroutine endtype endwhere entry enum enumerator eor equivalence err errmsg exist exit extends external file final flush fmt forall form format formatted function generic go goto id if images implicit import impure in include inout integer inquire intent interface intrinsic iomsg iolength iostat is kind len lock logical memory module name named namelist nextrec nml non_intrinsic non_overridable none nopass nullify number only open opened operator optional out pad parameter pass pause pending pointer pos position precision print private procedure program protected public quote pure read readwrite real rec recl recursive result return rewind save select selectcase selecttype sequential sign size stat status stop stream submodule subroutine sync syncall syncimages syncmemory target then to type unformatted unit unlock use value volatile wait where while write intrinsic_functions=abs achar acos acosd acosh adjustl adjustr aimag aimax0 aimin0 aint ajmax0 ajmin0 akmax0 akmin0 all allocated alog alog10 amax0 amax1 amin0 amin1 amod anint any asin asind asinh associated atan atan2 atan2d atand atanh atomic_define atomic_ref bessel_j0 bessel_j1 bessel_jn bessel_y0 bessel_y1 bessel_yn bge bgt bit_size bitest bitl bitlr bitrl bjtest bktest ble blt break btest c_associated c_f_pointer c_f_procpointer c_funloc c_loc c_sizeof cabs ccos cdabs cdcos cdexp cdlog cdsin cdsqrt ceiling cexp char clog cmplx command_argument_count conjg cos cosd cosh count cpu_time cshift csin csqrt dabs dacos dacosd dasin dasind datan datan2 datan2d datand date date_and_time dble dcmplx dconjg dcos dcosd dcosh dcotan ddim dexp dfloat dfloti dflotj dflotk digits dim dimag dint dlog dlog10 dmax1 dmin1 dmod dnint dot_product dprod dreal dshiftl dshiftr dsign dsin dsind dsinh dsqrt dtan dtand dtanh eoshift epsilon erf erfc erfc_scaled errsns execute_command_line exp exponent extends_type_of findloc float floati floatj floatk floor fraction free gamma get_command get_command_argument get_environment_variable huge hypot iabs iachar iall iand iany ibclr ibits ibset ichar idate idim idint idnint ieor ifix iiabs iiand iibclr iibits iibset iidim iidint iidnnt iieor iifix iint iior iiqint iiqnnt iishft iishftc iisign ilen image_index imax0 imax1 imin0 imin1 imod index inint inot int int1 int2 int4 int8 ior iparity iqint iqnint is_contiguous is_isostat_end is_isostat_eor ishft ishftc isign isnan izext jiand jibclr jibits jibset jidim jidint jidnnt jieor jifix jint jior jiqint jiqnnt jishft jishftc jisign jmax0 jmax1 jmin0 jmin1 jmod jnint jnot jzext kiabs kiand kibclr kibits kibset kidim kidint kidnnt kieor kifix kind kint kior kishft kishftc kisign kmax0 kmax1 kmin0 kmin1 kmod knint knot kzext lbound lcobound leadz len len_trim lge lgt lle llt log log10 log_gamma logical lshift malloc maskl maskr matmul max max0 max1 maxexponent maxloc maxval merge merge_bits min min0 min1 minexponent minloc minval mod modulo move_alloc mvbits nearest new_line nint norm2 not null num_images number_of_processors nworkers pack parity popcnt poppar precision present product radix random random_number random_seed range real repeat reshape rrspacing rshift same_type_as scale scan secnds selected_char_kind selected_int_kind selected_real_kind set_exponent shape shifta shiftl shiftr sign sin sind sinh size sizeof sngl snglq spacing spread sqrt storage_size sum system_clock tan tand tanh this_image tiny trailz transfer transpose trim ubound ucobound unpack verify user_functions=cdabs cdcos cdexp cdlog cdsin cdsqrt cotan cotand dcmplx dconjg dcotan dcotand decode dimag dll_export dll_import doublecomplex dreal dvchk encode find flen flush getarg getcharqq getcl getdat getenv gettim hfix ibchng identifier imag int1 int2 int4 intc intrup invalop iostat_msg isha ishc ishl jfix lacfar locking locnear map nargs nbreak ndperr ndpexc offset ovefl peekcharqq precfill prompt qabs qacos qacosd qasin qasind qatan qatand qatan2 qcmplx qconjg qcos qcosd qcosh qdim qexp qext qextd qfloat qimag qlog qlog10 qmax1 qmin1 qmod qreal qsign qsin qsind qsinh qsqrt qtan qtand qtanh ran rand randu rewrite segment setdat settim system timer undfl unlock union val virtual volatile zabs zcos zexp zlog zsin zsqrt
Modified: src/symbols.c 8 files changed, 5 insertions(+), 3 deletions(-) =================================================================== @@ -972,12 +972,14 @@ static void add_top_level_items(GeanyDocument *doc) { tag_list_add_groups(tag_store, &(tv_iters.tag_namespace), _("Module"), "classviewer-class", + &(tv_iters.tag_struct), _("Programs"), "classviewer-class", &(tv_iters.tag_interface), _("Interfaces"), "classviewer-struct", - &(tv_iters.tag_function), _("Functions"), "classviewer-method", - &(tv_iters.tag_member), _("Subroutines"), "classviewer-method", + &(tv_iters.tag_function), _("Functions / Subroutines"), "classviewer-method", &(tv_iters.tag_variable), _("Variables"), "classviewer-var", - &(tv_iters.tag_type), _("Types"), "classviewer-namespace", + &(tv_iters.tag_class), _("Types"), "classviewer-class", + &(tv_iters.tag_member), _("Components"), "classviewer-member", &(tv_iters.tag_macro), _("Blocks"), "classviewer-member", + &(tv_iters.tag_type), _("Enums"), "classviewer-struct", &(tv_iters.tag_other), _("Other"), "classviewer-other", NULL); break;
Modified: tagmanager/ctags/fortran.c 200 files changed, 152 insertions(+), 48 deletions(-) =================================================================== @@ -65,6 +65,7 @@ KEYWORD_assignment, KEYWORD_associate, KEYWORD_automatic, + KEYWORD_bind, KEYWORD_block, KEYWORD_byte, KEYWORD_cexternal, @@ -83,6 +84,8 @@ KEYWORD_elemental, KEYWORD_end, KEYWORD_entry, + KEYWORD_enum, + KEYWORD_enumerator, KEYWORD_equivalence, KEYWORD_extends, KEYWORD_external, @@ -97,6 +100,8 @@ KEYWORD_intent, KEYWORD_interface, KEYWORD_intrinsic, + KEYWORD_kind, + KEYWORD_len, KEYWORD_logical, KEYWORD_map, KEYWORD_module, @@ -178,6 +183,8 @@ TAG_SUBROUTINE, TAG_DERIVED_TYPE, TAG_VARIABLE, + TAG_ENUM, + TAG_ENUMERATOR, TAG_COUNT /* must be last */ } tagType;
@@ -203,6 +210,8 @@ static boolean FreeSourceForm = FALSE; static boolean ParsingString; static tokenInfo *Parent = NULL; +static boolean NewLine = TRUE; +static unsigned int contextual_fake_count = 0;
/* indexed by tagType */ static kindOption FortranKinds [] = { @@ -210,16 +219,18 @@ { TRUE, 'c', "macro", "common blocks"}, { TRUE, 'e', "entry", "entry points"}, { TRUE, 'f', "function", "functions"}, - { FALSE, 'i', "interface", "interface contents, generic names, and operators"}, - { TRUE, 'k', "component", "type and structure components"}, + { TRUE, 'i', "interface", "interface contents, generic names, and operators"}, + { TRUE, 'k', "member", "type and structure components"}, { TRUE, 'l', "label", "labels"}, { FALSE, 'L', "local", "local, common block, and namelist variables"}, { TRUE, 'm', "namespace", "modules"}, { TRUE, 'n', "namelist", "namelists"}, - { TRUE, 'p', "package", "programs"}, - { TRUE, 's', "member", "subroutines"}, - { TRUE, 't', "typedef", "derived types and structures"}, - { TRUE, 'v', "variable", "program (global) and module variables"} + { TRUE, 'p', "struct", "programs"}, + { TRUE, 's', "method", "subroutines"}, + { TRUE, 't', "class", "derived types and structures"}, + { TRUE, 'v', "variable", "program (global) and module variables"}, + { TRUE, 'E', "enum", "enumerations"}, + { TRUE, 'F', "enumerator", "enumeration values"}, };
/* For efinitions of Fortran 77 with extensions: @@ -236,6 +247,7 @@ { "assignment", KEYWORD_assignment }, { "associate", KEYWORD_associate }, { "automatic", KEYWORD_automatic }, + { "bind", KEYWORD_bind }, { "block", KEYWORD_block }, { "byte", KEYWORD_byte }, { "cexternal", KEYWORD_cexternal }, @@ -254,6 +266,8 @@ { "elemental", KEYWORD_elemental }, { "end", KEYWORD_end }, { "entry", KEYWORD_entry }, + { "enum", KEYWORD_enum }, + { "enumerator", KEYWORD_enumerator }, { "equivalence", KEYWORD_equivalence }, { "extends", KEYWORD_extends }, { "external", KEYWORD_external }, @@ -268,6 +282,8 @@ { "intent", KEYWORD_intent }, { "interface", KEYWORD_interface }, { "intrinsic", KEYWORD_intrinsic }, + { "kind", KEYWORD_kind }, + { "len", KEYWORD_len }, { "logical", KEYWORD_logical }, { "map", KEYWORD_map }, { "module", KEYWORD_module }, @@ -368,7 +384,7 @@ static const tokenInfo* ancestorScope (void) { tokenInfo *const token = Ancestors.list + i - 1; if (token->type == TOKEN_IDENTIFIER && - token->tag != TAG_UNDEFINED && token->tag != TAG_INTERFACE) + token->tag != TAG_UNDEFINED) result = token; } return result; @@ -445,6 +461,16 @@ static tokenInfo *newTokenFrom (tokenInfo *const token) return result; }
+static tokenInfo *newAnonTokenFrom (tokenInfo *const token, const char *type) +{ + char buffer[64]; + tokenInfo *result = newTokenFrom (token); + sprintf (buffer, "%s#%u", type, contextual_fake_count++); + vStringClear (result->string); + vStringCatS (result->string, buffer); + return result; +} + static void deleteToken (tokenInfo *const token) { if (token != NULL) @@ -500,7 +526,7 @@ static void makeFortranTag (tokenInfo *const token, tagType tag) e.extensionFields.scope [1] = vStringValue (scope->string); } } - if (! insideInterface () || includeTag (TAG_INTERFACE)) + if (! insideInterface () /*|| includeTag (TAG_INTERFACE)*/) makeTagEntry (&e); } } @@ -704,7 +730,6 @@ static int skipToNextLine (void)
static int getFreeFormChar (boolean inComment) { - static boolean newline = TRUE; boolean advanceLine = FALSE; int c = fileGetc ();
@@ -719,7 +744,7 @@ static int getFreeFormChar (boolean inComment) while (isspace (c) && c != '\n'); if (c == '\n') { - newline = TRUE; + NewLine = TRUE; advanceLine = TRUE; } else if (c == '!') @@ -730,16 +755,16 @@ static int getFreeFormChar (boolean inComment) c = '&'; } } - else if (newline && (c == '!' || c == '#')) + else if (NewLine && (c == '!' || c == '#')) advanceLine = TRUE; while (advanceLine) { while (isspace (c)) c = fileGetc (); - if (c == '!' || (newline && c == '#')) + if (c == '!' || (NewLine && c == '#')) { c = skipToNextLine (); - newline = TRUE; + NewLine = TRUE; continue; } if (c == '&') @@ -747,7 +772,7 @@ static int getFreeFormChar (boolean inComment) else advanceLine = FALSE; } - newline = (boolean) (c == '\n'); + NewLine = (boolean) (c == '\n'); return c; }
@@ -1144,6 +1169,7 @@ static boolean isTypeSpec (tokenInfo *const token) case KEYWORD_record: case KEYWORD_type: case KEYWORD_procedure: + case KEYWORD_enumerator: result = TRUE; break; default: @@ -1171,6 +1197,21 @@ static boolean isSubprogramPrefix (tokenInfo *const token) return result; }
+static void parseKindSelector (tokenInfo *const token) +{ + if (isType (token, TOKEN_PAREN_OPEN)) + skipOverParens (token); /* skip kind-selector */ + if (isType (token, TOKEN_OPERATOR) && + strcmp (vStringValue (token->string), "*") == 0) + { + readToken (token); + if (isType (token, TOKEN_PAREN_OPEN)) + skipOverParens (token); + else + readToken (token); + } +} + /* type-spec * is INTEGER [kind-selector] * or REAL [kind-selector] is ( etc. ) @@ -1208,14 +1249,7 @@ static void parseTypeSpec (tokenInfo *const token) case KEYWORD_real: case KEYWORD_procedure: readToken (token); - if (isType (token, TOKEN_PAREN_OPEN)) - skipOverParens (token); /* skip kind-selector */ - if (isType (token, TOKEN_OPERATOR) && - strcmp (vStringValue (token->string), "*") == 0) - { - readToken (token); - readToken (token); - } + parseKindSelector (token); break;
case KEYWORD_double: @@ -1246,6 +1280,10 @@ static void parseTypeSpec (tokenInfo *const token) parseDerivedTypeDef (token); break;
+ case KEYWORD_enumerator: + readToken (token); + break; + default: skipToToken (token, TOKEN_STATEMENT_END); break; @@ -1297,6 +1335,8 @@ static void parseQualifierSpecList (tokenInfo *const token) case KEYWORD_allocatable: case KEYWORD_external: case KEYWORD_intrinsic: + case KEYWORD_kind: + case KEYWORD_len: case KEYWORD_optional: case KEYWORD_private: case KEYWORD_pointer: @@ -1333,11 +1373,12 @@ static tagType variableTagType (void) const tokenInfo* const parent = ancestorTop (); switch (parent->tag) { - case TAG_MODULE: result = TAG_VARIABLE; break; - case TAG_DERIVED_TYPE: result = TAG_COMPONENT; break; - case TAG_FUNCTION: result = TAG_LOCAL; break; - case TAG_SUBROUTINE: result = TAG_LOCAL; break; - default: result = TAG_VARIABLE; break; + case TAG_MODULE: result = TAG_VARIABLE; break; + case TAG_DERIVED_TYPE: result = TAG_COMPONENT; break; + case TAG_FUNCTION: result = TAG_LOCAL; break; + case TAG_SUBROUTINE: result = TAG_LOCAL; break; + case TAG_ENUM: result = TAG_ENUMERATOR; break; + default: result = TAG_VARIABLE; break; } } return result; @@ -1568,25 +1609,27 @@ static void parseUnionStmt (tokenInfo *const token) */ static void parseStructureStmt (tokenInfo *const token) { - tokenInfo *name; + tokenInfo *name = NULL; Assert (isKeyword (token, KEYWORD_structure)); readToken (token); if (isType (token, TOKEN_OPERATOR) && strcmp (vStringValue (token->string), "/") == 0) { /* read structure name */ readToken (token); - if (isType (token, TOKEN_IDENTIFIER)) - makeFortranTag (token, TAG_DERIVED_TYPE); - name = newTokenFrom (token); + if (isType (token, TOKEN_IDENTIFIER) || isType (token, TOKEN_KEYWORD)) + { + name = newTokenFrom (token); + name->type = TOKEN_IDENTIFIER; + } skipPast (token, TOKEN_OPERATOR); } - else + if (name == NULL) { /* fake out anonymous structure */ - name = newToken (); + name = newAnonTokenFrom (token, "Structure"); name->type = TOKEN_IDENTIFIER; name->tag = TAG_DERIVED_TYPE; - vStringCopyS (name->string, "anonymous"); } + makeFortranTag (name, TAG_DERIVED_TYPE); while (isType (token, TOKEN_IDENTIFIER)) { /* read field names */ makeFortranTag (token, TAG_COMPONENT); @@ -1694,8 +1737,11 @@ static void parseDerivedTypeDef (tokenInfo *const token) parseQualifierSpecList (token); if (isType (token, TOKEN_DOUBLE_COLON)) readToken (token); - if (isType (token, TOKEN_IDENTIFIER)) + if (isType (token, TOKEN_IDENTIFIER) || isType (token, TOKEN_KEYWORD)) + { + token->type = TOKEN_IDENTIFIER; makeFortranTag (token, TAG_DERIVED_TYPE); + } ancestorPush (token); skipToNextStatement (token); if (isKeyword (token, KEYWORD_private) || @@ -1743,29 +1789,27 @@ static void parseInterfaceBlock (tokenInfo *const token) tokenInfo *name = NULL; Assert (isKeyword (token, KEYWORD_interface)); readToken (token); - if (isType (token, TOKEN_IDENTIFIER)) - { - makeFortranTag (token, TAG_INTERFACE); - name = newTokenFrom (token); - } - else if (isKeyword (token, KEYWORD_assignment) || - isKeyword (token, KEYWORD_operator)) + if (isKeyword (token, KEYWORD_assignment) || + isKeyword (token, KEYWORD_operator)) { readToken (token); if (isType (token, TOKEN_PAREN_OPEN)) readToken (token); if (isType (token, TOKEN_OPERATOR)) - { - makeFortranTag (token, TAG_INTERFACE); name = newTokenFrom (token); - } + } + else if (isType (token, TOKEN_IDENTIFIER) || isType (token, TOKEN_KEYWORD)) + { + name = newTokenFrom (token); + name->type = TOKEN_IDENTIFIER; } if (name == NULL) { - name = newToken (); + name = newAnonTokenFrom (token, "Interface"); name->type = TOKEN_IDENTIFIER; name->tag = TAG_INTERFACE; } + makeFortranTag (name, TAG_INTERFACE); ancestorPush (name); while (! isKeyword (token, KEYWORD_end)) { @@ -1791,6 +1835,56 @@ static void parseInterfaceBlock (tokenInfo *const token) deleteToken (name); }
+/* enum-block + * enum-stmt (is ENUM, BIND(C) [ :: type-alias-name ] + * or ENUM [ kind-selector ] [ :: ] [ type-alias-name ]) + * [ enum-body (is ENUMERATOR [ :: ] enumerator-list) ] + * end-enum-stmt (is END ENUM) + */ +static void parseEnumBlock (tokenInfo *const token) +{ + tokenInfo *name = NULL; + Assert (isKeyword (token, KEYWORD_enum)); + readToken (token); + if (isType (token, TOKEN_COMMA)) + { + readToken (token); + if (isType (token, TOKEN_KEYWORD)) + readToken (token); + if (isType (token, TOKEN_PAREN_OPEN)) + skipOverParens (token); + } + parseKindSelector (token); + if (isType (token, TOKEN_DOUBLE_COLON)) + readToken (token); + if (isType (token, TOKEN_IDENTIFIER) || isType (token, TOKEN_KEYWORD)) + { + name = newTokenFrom (token); + name->type = TOKEN_IDENTIFIER; + } + if (name == NULL) + { + name = newAnonTokenFrom (token, "Enum"); + name->type = TOKEN_IDENTIFIER; + name->tag = TAG_ENUM; + } + makeFortranTag (name, TAG_ENUM); + skipToNextStatement (token); + ancestorPush (name); + while (! isKeyword (token, KEYWORD_end)) + { + if (isTypeSpec (token)) + parseTypeDeclarationStmt (token); + else + skipToNextStatement (token); + } + readSubToken (token); + /* secondary token should be KEYWORD_enum token */ + skipToNextStatement (token); + ancestorPop (); + deleteToken (name); +} + /* entry-stmt is * ENTRY entry-name [ ( dummy-arg-list ) ] */ @@ -1872,6 +1966,7 @@ static boolean parseDeclarationConstruct (tokenInfo *const token) { case KEYWORD_entry: parseEntryStmt (token); break; case KEYWORD_interface: parseInterfaceBlock (token); break; + case KEYWORD_enum: parseEnumBlock (token); break; case KEYWORD_stdcall: readToken (token); break; /* derived type handled by parseTypeDeclarationStmt(); */
@@ -2022,8 +2117,11 @@ static void parseModule (tokenInfo *const token) { Assert (isKeyword (token, KEYWORD_module)); readToken (token); - if (isType (token, TOKEN_IDENTIFIER)) + if (isType (token, TOKEN_IDENTIFIER) || isType (token, TOKEN_KEYWORD)) + { + token->type = TOKEN_IDENTIFIER; makeFortranTag (token, TAG_MODULE); + } ancestorPush (token); skipToNextStatement (token); parseSpecificationPart (token); @@ -2079,6 +2177,7 @@ static boolean parseExecutionPart (tokenInfo *const token) case KEYWORD_end: readSubToken (token); if (isSecondaryKeyword (token, KEYWORD_do) || + isSecondaryKeyword (token, KEYWORD_enum) || isSecondaryKeyword (token, KEYWORD_if) || isSecondaryKeyword (token, KEYWORD_select) || isSecondaryKeyword (token, KEYWORD_where) || @@ -2102,8 +2201,11 @@ static void parseSubprogram (tokenInfo *const token, const tagType tag) isKeyword (token, KEYWORD_function) || isKeyword (token, KEYWORD_subroutine)); readToken (token); - if (isType (token, TOKEN_IDENTIFIER)) + if (isType (token, TOKEN_IDENTIFIER) || isType (token, TOKEN_KEYWORD)) + { + token->type = TOKEN_IDENTIFIER; makeFortranTag (token, tag); + } ancestorPush (token); skipToNextStatement (token); parseSpecificationPart (token); @@ -2207,7 +2309,9 @@ static boolean findFortranTags (const unsigned int passCount) Parent = newToken (); token = newToken (); FreeSourceForm = (boolean) (passCount > 1); + contextual_fake_count = 0; Column = 0; + NewLine = TRUE; exception = (exception_t) setjmp (Exception); if (exception == ExceptionEOF) retry = FALSE;
Modified: tests/ctags/Makefile.am 8 files changed, 8 insertions(+), 0 deletions(-) =================================================================== @@ -20,6 +20,7 @@ test_sources = \ attributes.cs \ auto.f \ bit_field.c \ + block.f90 \ bracematch.js \ bug1020715.cpp \ bug1020715.c \ @@ -121,7 +122,9 @@ test_sources = \ directives.c \ dopbl2.f \ enum.c \ + enum.f90 \ enum.java \ + enumerators.f90 \ events.cs \ extern_variable.h \ forall_module.f90 \ @@ -138,6 +141,7 @@ test_sources = \ initialization.f90 \ interface_indexers.cs \ interface_properties.cs \ + interfaces.f90 \ internal.cs \ intro_orig.tex \ intro.tex \ @@ -156,6 +160,7 @@ test_sources = \ keyword_implicit.cs \ keyword_interface.cs \ keyword_namespace.cs \ + keyword_names.f90 \ keyword_out.cs \ keyword_override.cs \ keyword_params.cs \ @@ -176,6 +181,7 @@ test_sources = \ matlab_backtracking.m \ matlab_test.m \ maze.erl \ + members.f90 \ misc_types.f90 \ misc_types.f \ mode.php \ @@ -192,12 +198,14 @@ test_sources = \ objectivec_protocol.mm \ Package.pm \ php5_5_class_kw.php \ + preprocessor.f90 \ procedure_pointer_module.f90 \ procpoint.f90 \ property.cs \ prototype.h \ pure_elem.f95 \ py_constructor_arglist.py \ + qualified_types.f90 \ random.sql \ readlob.sql \ readlong.sql \
Modified: tests/ctags/array-spec.f90.tags 6 files changed, 5 insertions(+), 1 deletions(-) =================================================================== @@ -1,3 +1,7 @@ # format=tagmanager -df_typeÌ4096Îinm_dfÖ0 +df_mb_dataÌ64Îdf_typeÖ0 +df_mb_timeÌ64Îdf_typeÖ0 +df_typeÌ1Îinm_dfÖ0 +df_wb_dataÌ64Îdf_typeÖ0 +df_wb_timeÌ64Îdf_typeÖ0 inm_dfÌ256Ö0
Modified: tests/ctags/auto.f.tags 2 files changed, 1 insertions(+), 1 deletions(-) =================================================================== @@ -1,5 +1,5 @@ # format=tagmanager -AUTO_TESTÌ512Ö0 +AUTO_TESTÌ2048Ö0 DÌ16384ÎAUTO_TESTÖ0 PÌ16384ÎAUTO_TESTÖ0 QÌ16384ÎAUTO_TESTÖ0
Modified: tests/ctags/block.f90 51 files changed, 51 insertions(+), 0 deletions(-) =================================================================== @@ -0,0 +1,51 @@ +module Blocks + implicit none + + integer :: i + +contains + + function MyFunc(thing) + integer, intent(in) :: thing + integer :: myfunc + + block + ! these obviously won't show up, because variables inside functions inside modules don't anyway + ! and that's fine + integer :: tempint + tempint = 1 + if (tempint == 1) then + tempint = 2 + end if + myfunc = tempint + end block + + end function MyFunc + +end module Blocks + +program Main + use Blocks + + implicit none + + ! these variable declarations should definitely show up in the symbol list + integer :: otherint, moreint + + otherint = 3 + + block + ! These shouldn't, because... + integer :: newtempint + + newtempint = 2 + block + ! ...the damn things can be arbitrarily nested! + integer :: newer_int + + newer_int = 3 + end block + newtempint = 2 * newtempint + end block + +end program Main
Modified: tests/ctags/block.f90.tags 7 files changed, 7 insertions(+), 0 deletions(-) =================================================================== @@ -0,0 +1,7 @@ +# format=tagmanager +BlocksÌ256Ö0 +MainÌ2048Ö0 +MyFuncÌ16ÎBlocksÖ0 +iÌ16384ÎBlocksÖ0 +moreintÌ16384ÎMainÖ0 +otherintÌ16384ÎMainÖ0
Modified: tests/ctags/bug565813.f90.tags 7 files changed, 4 insertions(+), 3 deletions(-) =================================================================== @@ -1,7 +1,8 @@ # format=tagmanager NÌ16384Îctags_bugÖ0 +barÌ64Îfoo_tÖ0 ctags_bugÌ256Ö0 foo_getbarÌ16Îctags_bugÖ0 -foo_set_barÌ64Îctags_bugÖ0 -foo_setbarÌ64Îctags_bugÖ0 -foo_tÌ4096Îctags_bugÖ0 +foo_set_barÌ128Îctags_bugÖ0 +foo_setbarÌ128Îctags_bugÖ0 +foo_tÌ1Îctags_bugÖ0
Modified: tests/ctags/bug670433.f90.tags 2 files changed, 1 insertions(+), 1 deletions(-) =================================================================== @@ -1,5 +1,5 @@ # format=tagmanager -barÌ64ÎfoobarÖ0 +barÌ128ÎfoobarÖ0 fÌ16ÎfooÖ0 fooÌ16ÎfoobarÖ0 foobarÌ256Ö0
Modified: tests/ctags/bug726712.f90.tags 6 files changed, 3 insertions(+), 3 deletions(-) =================================================================== @@ -1,4 +1,4 @@ # format=tagmanager -sub1Ì64Ö0 -sub2Ì64Ö0 -tagstest_ctrlÌ64Ö0 +sub1Ì128Ö0 +sub2Ì128Ö0 +tagstest_ctrlÌ128Ö0
Modified: tests/ctags/bug734933.f90.tags 11 files changed, 8 insertions(+), 3 deletions(-) =================================================================== @@ -1,12 +1,17 @@ # format=tagmanager -ADD_COMPONENTSÌ64ÎMDCOMPONENTSÖ0 +ADD_COMPONENTSÌ128ÎMDCOMPONENTSÖ0 COMPÌ16384ÎMDCOMPONENTSÖ0 -COMPONENTÌ4096ÎMDCOMPONENTSÖ0 +COMPONENTÌ1ÎMDCOMPONENTSÖ0 COMPONENTSÌ16384ÎMDCOMPONENTSÖ0 COMPONENTS_TMPÌ16384ÎMDCOMPONENTSÖ0 -COMPONENT_POINTERÌ4096ÎMDCOMPONENTSÖ0 +COMPONENT_POINTERÌ1ÎMDCOMPONENTSÖ0 COMP_TMPÌ16384ÎMDCOMPONENTSÖ0 LIM_COMPONENTSÌ16384ÎMDCOMPONENTSÖ0 MDCOMPONENTSÌ256Ö0 +MEMDEALLOCÌ32ÎMDCOMPONENTSÖ0 +NAMEÌ64ÎCOMPONENTÖ0 NCOMPÌ16384ÎMDCOMPONENTSÖ0 NUM_COMPONENTSÌ16384ÎMDCOMPONENTSÖ0 +NUM_PARTÌ64ÎCOMPONENTÖ0 +PÌ64ÎCOMPONENT_POINTERÖ0 +PART_LISTÌ64ÎCOMPONENTÖ0
Modified: tests/ctags/bug858165.f90.tags 2 files changed, 1 insertions(+), 1 deletions(-) =================================================================== @@ -3,4 +3,4 @@ a bÌ16384ÎtestÖ0 cÌ16384ÎtestÖ0 dÌ16384ÎtestÖ0 -testÌ512Ö0 +testÌ2048Ö0
Modified: tests/ctags/bug877956.f90.tags 2 files changed, 1 insertions(+), 1 deletions(-) =================================================================== @@ -1,4 +1,4 @@ # format=tagmanager c2Ì16384ÎtestÖ0 cm1Ì16384ÎtestÖ0 -testÌ512Ö0 +testÌ2048Ö0
Modified: tests/ctags/byte.f.tags 2 files changed, 1 insertions(+), 1 deletions(-) =================================================================== @@ -8,4 +8,4 @@ B2 CÌ16384Îbyte_testÖ0 C1Ì16384Îbyte_testÖ0 C2Ì16384Îbyte_testÖ0 -byte_testÌ512Ö0 +byte_testÌ2048Ö0
Modified: tests/ctags/common.f.tags 2 files changed, 1 insertions(+), 1 deletions(-) =================================================================== @@ -2,4 +2,4 @@ common1Ì65536ÎmainÖ0 common2Ì65536ÎmainÖ0 common3Ì65536ÎmainÖ0 -mainÌ512Ö0 +mainÌ2048Ö0
Modified: tests/ctags/debian_432872.f90.tags 2 files changed, 1 insertions(+), 1 deletions(-) =================================================================== @@ -1,3 +1,3 @@ # format=tagmanager FOOÌ256Ö0 -FOOÌ64ÎFOOÖ0 +FOOÌ128ÎFOOÖ0
Modified: tests/ctags/enum.f90 52 files changed, 52 insertions(+), 0 deletions(-) =================================================================== @@ -0,0 +1,52 @@ +module Constants + implicit none + + real, parameter :: pi = 4 * atan(1.0) + real, parameter :: E_e = 510998.91013 + + ! we now have enumerators in F2003/8, for the sake of interop with C + enum, bind(c) ! unnamed 1 + enumerator :: red =1, blue, black =5 + enumerator yellow + enumerator gold, silver, bronze + enumerator :: purple + enumerator :: pink, lavender + end enum + + enum ! unnamed 2 + enumerator :: a, b, c + end enum + + enum :: Named1 + enumerator :: x1, y1, z1 + end enum + + enum Named2 + enumerator :: x2, y2, z2 + end enum + + enum(8) Named3 + enumerator :: x3, y3, z3 + end enum + + enum*8 Named4 + enumerator :: x4, y4, z4 + end enum + + enum(8) :: Named5 + enumerator :: x5, y5, z5 + end enum + + enum*8 :: Named6 + enumerator :: x6, y6, z6 + end enum + + enum, bind(c) :: Named7 + enumerator :: x7, y7, z7 + end enum + + real, parameter :: hc = 12398.4193 + + public + +end module Constants
Modified: tests/ctags/enum.f90.tags 48 files changed, 48 insertions(+), 0 deletions(-) =================================================================== @@ -0,0 +1,48 @@ +# format=tagmanager +ConstantsÌ256Ö0 +E_eÌ16384ÎConstantsÖ0 +Enum#0Ì2ÎConstantsÖ0 +Enum#1Ì2ÎConstantsÖ0 +Named1Ì2ÎConstantsÖ0 +Named2Ì2ÎConstantsÖ0 +Named3Ì2ÎConstantsÖ0 +Named4Ì2ÎConstantsÖ0 +Named5Ì2ÎConstantsÖ0 +Named6Ì2ÎConstantsÖ0 +Named7Ì2ÎConstantsÖ0 +aÌ4ÎEnum#1Ö0 +bÌ4ÎEnum#1Ö0 +blackÌ4ÎEnum#0Ö0 +blueÌ4ÎEnum#0Ö0 +bronzeÌ4ÎEnum#0Ö0 +cÌ4ÎEnum#1Ö0 +goldÌ4ÎEnum#0Ö0 +hcÌ16384ÎConstantsÖ0 +lavenderÌ4ÎEnum#0Ö0 +piÌ16384ÎConstantsÖ0 +pinkÌ4ÎEnum#0Ö0 +purpleÌ4ÎEnum#0Ö0 +redÌ4ÎEnum#0Ö0 +silverÌ4ÎEnum#0Ö0 +x1Ì4ÎNamed1Ö0 +x2Ì4ÎNamed2Ö0 +x3Ì4ÎNamed3Ö0 +x4Ì4ÎNamed4Ö0 +x5Ì4ÎNamed5Ö0 +x6Ì4ÎNamed6Ö0 +x7Ì4ÎNamed7Ö0 +y1Ì4ÎNamed1Ö0 +y2Ì4ÎNamed2Ö0 +y3Ì4ÎNamed3Ö0 +y4Ì4ÎNamed4Ö0 +y5Ì4ÎNamed5Ö0 +y6Ì4ÎNamed6Ö0 +y7Ì4ÎNamed7Ö0 +yellowÌ4ÎEnum#0Ö0 +z1Ì4ÎNamed1Ö0 +z2Ì4ÎNamed2Ö0 +z3Ì4ÎNamed3Ö0 +z4Ì4ÎNamed4Ö0 +z5Ì4ÎNamed5Ö0 +z6Ì4ÎNamed6Ö0 +z7Ì4ÎNamed7Ö0
Modified: tests/ctags/enumerators.f90 55 files changed, 55 insertions(+), 0 deletions(-) =================================================================== @@ -0,0 +1,55 @@ +module Enums + real :: somevar + + ! we now have enumerators in F2003/8, for the sake of interop with C + enum, bind(c) ! unnamed 1 + enumerator :: red =1, blue + enumerator gold, silver, bronze + enumerator :: purple + end enum + + + ! here follow nonstandard enum declarations, which may become valid in a later standard + ! no real harm implementing these as long as valid stuff isn't broken + enum + enumerator :: no_c_binding + end enum + + enum :: Colons + enumerator :: r + end enum + + enum BodyPart + enumerator :: arm, leg + end enum + + enum(8) Paren_kind + enumerator :: b + end enum + + enum*8 Aster_kind + enumerator :: c + end enum + + enum(8) :: Paren_colon + enumerator :: d + end enum + + enum*8 :: Aster_colon + enumerator :: e + end enum + + enum, bind(c) :: Name_colon + enumerator :: d + end enum + + ! another entry to verify the parsing hasn't broken + real, parameter :: othervar + +contains + + function Func(arg) + ! ... + end function Func + +end module Enums
Modified: tests/ctags/enumerators.f90.tags 29 files changed, 29 insertions(+), 0 deletions(-) =================================================================== @@ -0,0 +1,29 @@ +# format=tagmanager +Aster_colonÌ2ÎEnumsÖ0 +Aster_kindÌ2ÎEnumsÖ0 +BodyPartÌ2ÎEnumsÖ0 +ColonsÌ2ÎEnumsÖ0 +Enum#0Ì2ÎEnumsÖ0 +Enum#1Ì2ÎEnumsÖ0 +EnumsÌ256Ö0 +FuncÌ16ÎEnumsÖ0 +Name_colonÌ2ÎEnumsÖ0 +Paren_colonÌ2ÎEnumsÖ0 +Paren_kindÌ2ÎEnumsÖ0 +armÌ4ÎBodyPartÖ0 +bÌ4ÎParen_kindÖ0 +blueÌ4ÎEnum#0Ö0 +bronzeÌ4ÎEnum#0Ö0 +cÌ4ÎAster_kindÖ0 +dÌ4ÎName_colonÖ0 +dÌ4ÎParen_colonÖ0 +eÌ4ÎAster_colonÖ0 +goldÌ4ÎEnum#0Ö0 +legÌ4ÎBodyPartÖ0 +no_c_bindingÌ4ÎEnum#1Ö0 +othervarÌ16384ÎEnumsÖ0 +purpleÌ4ÎEnum#0Ö0 +rÌ4ÎColonsÖ0 +redÌ4ÎEnum#0Ö0 +silverÌ4ÎEnum#0Ö0 +somevarÌ16384ÎEnumsÖ0
Modified: tests/ctags/forall_module.f90.tags 2 files changed, 1 insertions(+), 1 deletions(-) =================================================================== @@ -1,5 +1,5 @@ # format=tagmanager aÌ16384Îwith_forallÖ0 -sub_with_forallÌ64Îwith_forallÖ0 +sub_with_forallÌ128Îwith_forallÖ0 twoÌ16Îwith_forallÖ0 with_forallÌ256Ö0
Modified: tests/ctags/fortran_associate.f90.tags 2 files changed, 1 insertions(+), 1 deletions(-) =================================================================== @@ -1,5 +1,5 @@ # format=tagmanager aÌ16384Îwith_associateÖ0 -do_other_stuffÌ64Îwith_associateÖ0 +do_other_stuffÌ128Îwith_associateÖ0 do_stuffÌ16Îwith_associateÖ0 with_associateÌ256Ö0
Modified: tests/ctags/interfaces.f90 45 files changed, 45 insertions(+), 0 deletions(-) =================================================================== @@ -0,0 +1,45 @@ +module HasInterfaces + ! INTERFACE blocks can have names + ! usually only used for when overloading, but good practice anyway! + interface MyFunc + function Func1(arg) + integer :: arg + end function Func1 + + function Func2(arg) + integer :: arg + end function Func2 + end interface MyFunc + + ! without a name we just use a generic one + interface + subroutine CHEEV(...) + ! ... + end subroutine CHEEV + end interface + +contains + + function Func1(arg) + integer :: arg, func1 + func1 = arg + end function Func1 + + function Func2(arg) + integer :: arg, func2 + func2 = arg + end function Func2 + +end module HasInterfaces + +program Main + use HasInterfaces + + ! can also occur in PROGRAMs + interface MySubroutine + subroutine Sub1(arg) + ! ... + end subroutine Sub1 + end interface MySubroutine + +end program Main
Modified: tests/ctags/interfaces.f90.tags 8 files changed, 8 insertions(+), 0 deletions(-) =================================================================== @@ -0,0 +1,8 @@ +# format=tagmanager +Func1Ì16ÎHasInterfacesÖ0 +Func2Ì16ÎHasInterfacesÖ0 +HasInterfacesÌ256Ö0 +Interface#0Ì32ÎHasInterfacesÖ0 +MainÌ2048Ö0 +MyFuncÌ32ÎHasInterfacesÖ0 +MySubroutineÌ32ÎMainÖ0
Modified: tests/ctags/invalid_name.f90.tags 5 files changed, 4 insertions(+), 1 deletions(-) =================================================================== @@ -1,5 +1,8 @@ # format=tagmanager +ActivityÌ64ÎDetection_RecordÖ0 DR_FilenameÌ16384ÎTR_DetectionRecordingÖ0 DR_LunÌ16384ÎTR_DetectionRecordingÖ0 -Detection_RecordÌ4096ÎTR_DetectionRecordingÖ0 +Detection_RecordÌ1ÎTR_DetectionRecordingÖ0 +FaceÌ64ÎDetection_RecordÖ0 TR_DetectionRecordingÌ256Ö0 +TypeÌ64ÎDetection_RecordÖ0
Modified: tests/ctags/keyword_names.f90 28 files changed, 28 insertions(+), 0 deletions(-) =================================================================== @@ -0,0 +1,28 @@ +! For some reason, the Fortran standard does not prohibit this... + +module Program + + type Data + integer :: contents + end type Data + + integer :: i + + interface Program + function myFunc(arg) + !... + end function myFunc + end interface Program + +contains + + function MyFunc(arg) + ! ... + end function MyFunc + +end module Program + +program Interface + use Program + ! ... +end program Interface
Modified: tests/ctags/keyword_names.f90.tags 8 files changed, 8 insertions(+), 0 deletions(-) =================================================================== @@ -0,0 +1,8 @@ +# format=tagmanager +DataÌ1ÎProgramÖ0 +InterfaceÌ2048Ö0 +MyFuncÌ16ÎProgramÖ0 +ProgramÌ256Ö0 +ProgramÌ32ÎProgramÖ0 +contentsÌ64ÎDataÖ0 +iÌ16384ÎProgramÖ0
Modified: tests/ctags/members.f90 19 files changed, 19 insertions(+), 0 deletions(-) =================================================================== @@ -0,0 +1,19 @@ +module Members + implicit none + + type HasMembers + ! a "derived type" in Fortran is analagous to a "class" in other languages + integer, kind :: kind_member + integer, len :: len_member + integer :: member + contains + procedure :: MyMethod + end type HasMembers + +contains + + subroutine MySubroutine(arg) + ! ... + end subroutine MySubroutine + +end module Members
Modified: tests/ctags/members.f90.tags 8 files changed, 8 insertions(+), 0 deletions(-) =================================================================== @@ -0,0 +1,8 @@ +# format=tagmanager +HasMembersÌ1ÎMembersÖ0 +MembersÌ256Ö0 +MyMethodÌ64ÎHasMembersÖ0 +MySubroutineÌ128ÎMembersÖ0 +kind_memberÌ64ÎHasMembersÖ0 +len_memberÌ64ÎHasMembersÖ0 +memberÌ64ÎHasMembersÖ0
Modified: tests/ctags/misc_types.f.tags 2 files changed, 1 insertions(+), 1 deletions(-) =================================================================== @@ -1,4 +1,4 @@ # format=tagmanager INFOOBARÌ16384ÎspecsÖ0 MÌ16384ÎspecsÖ0 -specsÌ512Ö0 +specsÌ2048Ö0
Modified: tests/ctags/misc_types.f90.tags 6 files changed, 4 insertions(+), 2 deletions(-) =================================================================== @@ -1,5 +1,7 @@ # format=tagmanager +align_second_16Ì64Îmy_structÖ0 base_typeÌ16384ÎtestallocÖ0 +first_byteÌ64Îmy_structÖ0 iÌ16384ÎtestallocÖ0 i2Ì16384ÎtestallocÖ0 i3Ì16384ÎtestallocÖ0 @@ -9,7 +11,7 @@ i6 i7Ì16384ÎtestallocÖ0 i8Ì16384ÎtestallocÖ0 listÌ16384ÎtestallocÖ0 -my_structÌ4096ÎtestallocÖ0 +my_structÌ1ÎtestallocÖ0 statusÌ16384ÎtestallocÖ0 -testallocÌ512Ö0 +testallocÌ2048Ö0 the_structÌ16384ÎtestallocÖ0
Modified: tests/ctags/namelist.f.tags 2 files changed, 1 insertions(+), 1 deletions(-) =================================================================== @@ -1,2 +1,2 @@ # format=tagmanager -mainÌ512Ö0 +mainÌ2048Ö0
Modified: tests/ctags/numlib.f90.tags 1 files changed, 1 insertions(+), 0 deletions(-) =================================================================== @@ -1,2 +1,3 @@ # format=tagmanager +Interface#0Ì32Înumerical_librariesÖ0 numerical_librariesÌ256Ö0
Modified: tests/ctags/preprocessor.f90 17 files changed, 17 insertions(+), 0 deletions(-) =================================================================== @@ -0,0 +1,17 @@ +#include +! preprocessor directives on line 1 (and only line 1) cause breakage +module Invisible + + integer :: nope + +contains + + function SpillsOutside + ! ... + end function SpillsOutside + +end module Invisible + +program Main +! ... +end program Main
Modified: tests/ctags/preprocessor.f90.tags 5 files changed, 5 insertions(+), 0 deletions(-) =================================================================== @@ -0,0 +1,5 @@ +# format=tagmanager +InvisibleÌ256Ö0 +MainÌ2048Ö0 +SpillsOutsideÌ16ÎInvisibleÖ0 +nopeÌ16384ÎInvisibleÖ0
Modified: tests/ctags/procedure_pointer_module.f90.tags 2 files changed, 1 insertions(+), 1 deletions(-) =================================================================== @@ -2,4 +2,4 @@ aĚ16384Îproc_pointerÖ0 my_pointerĚ16384Îproc_pointerÖ0 proc_pointerĚ256Ö0 -subĚ64Îproc_pointerÖ0 +subĚ128Îproc_pointerÖ0
Modified: tests/ctags/procpoint.f90.tags 2 files changed, 1 insertions(+), 1 deletions(-) =================================================================== @@ -1,5 +1,5 @@ # format=tagmanager -MainÌ512Ö0 +MainÌ2048Ö0 MyOtherProcÌ16384ÎTestÖ0 MyProcÌ16384ÎTestÖ0 ProcOneÌ16ÎTestÖ0
Modified: tests/ctags/qualified_types.f90 12 files changed, 12 insertions(+), 0 deletions(-) =================================================================== @@ -0,0 +1,12 @@ +module test + implicit none + type goodtype(p1, p2, p3, p4) ! the stuff in brackets after the name of the type shouldn't appear in the type's name + ! this is already correctly handled, so that's fine + integer, kind :: p1, p3 + integer, len :: p2, p4 ! the question is whether or not these "kind" and "len"s should be shown as members + real(kind=p1) :: c1 + character(len=p2) :: c2 + complex :: c3(p3) + integer :: c4 = p1 +contains +end module test
Modified: tests/ctags/qualified_types.f90.tags 11 files changed, 11 insertions(+), 0 deletions(-) =================================================================== @@ -0,0 +1,11 @@ +# format=tagmanager +c1フ64ホgoodtypeヨ0 +c2フ64ホgoodtypeヨ0 +c3フ64ホgoodtypeヨ0 +c4フ64ホgoodtypeヨ0 +goodtypeフ1ホtestヨ0 +p1フ64ホgoodtypeヨ0 +p2フ64ホgoodtypeヨ0 +p3フ64ホgoodtypeヨ0 +p4フ64ホgoodtypeヨ0 +testフ256ヨ0
Modified: tests/ctags/recursive.f95.tags 2 files changed, 2 insertions(+), 0 deletions(-) =================================================================== @@ -1,4 +1,6 @@ # format=tagmanager +Interface#0Ì32ÎapproxÖ0 +Interface#1Ì32Îapprox2Ö0 approxÌ256Ö0 approx2Ì256Ö0 partsÌ16384ÎapproxÖ0
Modified: tests/ctags/square_parens.f90.tags 8 files changed, 5 insertions(+), 3 deletions(-) =================================================================== @@ -1,12 +1,14 @@ # format=tagmanager -SymmetryĚ4096ÎsquaretestÖ0 +SymmetryĚ1ÎsquaretestÖ0 assigneeĚ16384ÎsquaretestÖ0 -executeĚ64ÎsquaretestÖ0 +executeĚ128ÎsquaretestÖ0 invisibleĚ16384ÎsquaretestÖ0 invisible_fourĚ16384ÎsquaretestÖ0 invisible_threeĚ16384ÎsquaretestÖ0 invisible_twoĚ16384ÎsquaretestÖ0 -mainĚ512Ö0 +iterationsĚ64ÎSymmetryÖ0 +mainĚ2048Ö0 +matrixĚ64ÎSymmetryÖ0 squaretestĚ256Ö0 stateĚ16384ÎsquaretestÖ0 state_twoĚ16384ÎsquaretestÖ0
Modified: tests/ctags/stdcall.f.tags 4 files changed, 2 insertions(+), 2 deletions(-) =================================================================== @@ -1,6 +1,6 @@ # format=tagmanager D02CJWÌ16384Ö0 -FCNÌ64Ö0 +FCNÌ128Ö0 GÌ16Ö0 GÌ16384Ö0 HÌ16384Ö0 @@ -11,7 +11,7 @@ J KÌ16384Ö0 NÌ16384Ö0 NOUTÌ16384Ö0 -OUTÌ64Ö0 +OUTÌ128Ö0 PIÌ16384Ö0 RELABSÌ16384Ö0 TOLÌ16384Ö0
Modified: tests/ctags/structure.f.tags 24 files changed, 17 insertions(+), 7 deletions(-) =================================================================== @@ -1,10 +1,20 @@ # format=tagmanager -initialized_structureÌ512Ö0 +Structure#0Ì1ÎnestedÖ0 +aÌ64ÎStructure#0Ö0 +cloudsÌ64ÎweatherÖ0 +dayÌ64ÎweatherÖ0 +initialized_structureÌ2048Ö0 latestÌ16384Îinitialized_structureÖ0 latestÌ16384Îuninitialized_structureÖ0 -nestedÌ4096ÎtopÖ0 -nested_structureÌ512Ö0 -topÌ4096Înested_structureÖ0 -uninitialized_structureÌ512Ö0 -weatherÌ4096Îinitialized_structureÖ0 -weatherÌ4096Îuninitialized_structureÖ0 +level2Ì64ÎtopÖ0 +level3aÌ64ÎnestedÖ0 +level3bÌ64ÎnestedÖ0 +monthÌ64ÎweatherÖ0 +nestedÌ1ÎtopÖ0 +nested_structureÌ2048Ö0 +rainfallÌ64ÎweatherÖ0 +topÌ1Înested_structureÖ0 +uninitialized_structureÌ2048Ö0 +weatherÌ1Îinitialized_structureÖ0 +weatherÌ1Îuninitialized_structureÖ0 +yearÌ64ÎweatherÖ0
Modified: tests/ctags/union.f.tags 8 files changed, 6 insertions(+), 2 deletions(-) =================================================================== @@ -1,4 +1,8 @@ # format=tagmanager +dateÌ64ÎstartÖ0 +dayÌ64ÎstartÖ0 +monthÌ64ÎstartÖ0 sdateÌ16384ÎwritedateÖ0 -startÌ4096ÎwritedateÖ0 -writedateÌ512Ö0 +startÌ1ÎwritedateÖ0 +writedateÌ2048Ö0 +yearÌ64ÎstartÖ0
Modified: tests/ctags/value.f.tags 2 files changed, 1 insertions(+), 1 deletions(-) =================================================================== @@ -1,4 +1,4 @@ # format=tagmanager aaÌ16384ÎfigureÖ0 figÌ16384ÎfigureÖ0 -figureÌ512Ö0 +figureÌ2048Ö0
-------------- This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).