Supporting such a prefix of course means that all section handling code ("var", "type", etc.) needs to respect the case of a "generic" token followed by "function", "procedure" or "class" and thus abort doing its own business.
Maybe I'll find the time somewhen in the future to rework the parser (plus scanner?) a bit so that code like this gets more easy to add and more importantly less ugly.
pdecsub.pas:
* extend parse_proc_dec() and parse_record_method_dec() so that they can be told that they are supposed to handle the to be parsed function/procedure/method header as a generic
pdecvar.pas:
+ new entry for tvar_dec_option named "vd_check_generic" to tell read_var_decls() and read_record_fields() to look out for "generic"
* extend read_var_decls() and read_record_fields() to check for "generic" if needed and to clean up correctly if it is encountered
pdecl.pas:
* the section handling procedures types_dec(), resourcestring_dec(), var_dec(), threadvar_dec() and consts_dec() all return whether they had encountered a "generic" token that was followed by one of $
pdecobj.pas:
* extend method_dec() to take a parameter that says whether the method is supposed to be a generic one
* parse_object_members: while read_record_fields() can handle "generic" we also need to handle the case of "generic" if no fields are allowed anymore
psub.pas:
* extend read_proc() by the possibility to tell it that the procedure/function to be parsed is supposed to be generic
* adjust read_declarations() and read_interface_declarations() to keep track of parsed "generic" tokens and to pass them on accordingly
ptype.pas:
* parse_record_members: same remark as for pdecobj.parse_object_members
git-svn-id: trunk@32380 -
assembler .obj module. Note that TASM modules aren't fully supported yet,
because our OMF internal linker doesn't support all features of the OMF object
format. This test works, because it's really simple. As more OMF features are
supported, this test will be extended.
git-svn-id: trunk@32353 -
1) Erroneously increased `pind` in `findmatch()` by the length of matched string instead of by pattern token length.
2) Erroneously increased `ind` and `pind` by 2 after processing `ampm` (localized AM/PM pattern token).
3) Not updated `pind` when doing recursive subpattern matching ("ddddd", "dddddd", "t", "tt").
4) Incorrect interpretation of "t" pattern token as `ShortDateFormat`, when it should be `ShortTimeFormat`.
5) Incorrect scanning for "y" pattern (2 digit year), max scanned digits was 1 while it should be 2.
6) Protect against buffer over-read of `p` variable in `findimatch()`.
git-svn-id: trunk@32348 -
location type 3 (fltFarPointer). This isn't generated by nasm, nor by the
internal object writer (yet), but may be generated by other
assemblers/compilers - TASM generates it (tested with it), MASM probably also
does.
git-svn-id: trunk@32346 -
an exception symtable (then the new def cannot be safely made reusable,
as the exception symtable may be freed before the module is completely
compiled)
git-svn-id: trunk@32340 -