Merge lp:~blueyed/ubuntu/natty/exuberant-ctags/upstream-snapshot into lp:ubuntu/natty/exuberant-ctags
- Natty (11.04)
- upstream-snapshot
- Merge into natty
Status: | Merged | ||||
---|---|---|---|---|---|
Merge reported by: | Colin Watson | ||||
Merged at revision: | not available | ||||
Proposed branch: | lp:~blueyed/ubuntu/natty/exuberant-ctags/upstream-snapshot | ||||
Merge into: | lp:ubuntu/natty/exuberant-ctags | ||||
Diff against target: | 36701 lines | ||||
To merge this branch: | bzr merge lp:~blueyed/ubuntu/natty/exuberant-ctags/upstream-snapshot | ||||
Related bugs: |
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Ubuntu branches | Pending | ||
Review via email: mp+52947@code.launchpad.net |
Commit message
Description of the change
Colin Watson (cjwatson) wrote : | # |
Colin Watson (cjwatson) wrote : | # |
Daniel, would you be offended if I did this separately in Debian and just made the results match up, but not necessarily the bzr history? (My Debian exuberant-ctags repository is still in Subversion, unfortunately ...)
- 17. By Daniel Hahler
-
Set version to '5.9~svn20110310' instead of 'Development'.
- 18. By Daniel Hahler
-
Add LP bug reference to LP: #554898.
- 19. By Daniel Hahler
-
Also fixes LP: #582347 (etags screw filenames starting with ./).
Daniel Hahler (blueyed) wrote : | # |
Yes, Colin, please do.
I hope you keep debian/changelog, but even without this my main intention is to get the bug fixes in. Please note the last three commits, which fix the version and add some more bug references.
Colin Watson (cjwatson) wrote : | # |
Yes, I'll preserve those parts of the changelog which make sense, attributing you. I'm going to do some things somewhat differently, though; in particular, I've generated a new .orig.tar.gz using upstream's maintainer.mak ('make -f maintainer.mak releases/
Colin Watson (cjwatson) wrote : | # |
Also, this is not a good form for changelog entries:
This includes a lot of fixes since the last release.
- Fixes LP: #554898, #582347
It's better to list actual changes alongside each bug, rather than "a lot of fixes" and bug numbers that you then have to look up. I'm going to rephrase this using upstream NEWS, commit messages, etc.
Colin Watson (cjwatson) wrote : | # |
Now effectively merged into Debian and Natty. Thanks again.
Preview Diff
1 | === added file '.gdbinit' |
2 | --- .gdbinit 1970-01-01 00:00:00 +0000 |
3 | +++ .gdbinit 2011-03-11 21:16:06 +0000 |
4 | @@ -0,0 +1,3 @@ |
5 | +define pst |
6 | + call ps(st) |
7 | +end |
8 | |
9 | === modified file 'EXTENDING.html' |
10 | --- EXTENDING.html 2007-09-08 09:16:38 +0000 |
11 | +++ EXTENDING.html 2011-03-11 21:16:06 +0000 |
12 | @@ -1,4 +1,4 @@ |
13 | -<!-- $Id: EXTENDING.html 198 2002-09-04 01:17:32Z darren $ --> |
14 | +<!-- $Id$ --> |
15 | <html> |
16 | <head> |
17 | <title>Exuberant Ctags: Adding support for a new language</title> |
18 | |
19 | === added directory 'Eiffel' |
20 | === added file 'Eiffel/Ace.ace' |
21 | --- Eiffel/Ace.ace 1970-01-01 00:00:00 +0000 |
22 | +++ Eiffel/Ace.ace 2011-03-11 21:16:06 +0000 |
23 | @@ -0,0 +1,40 @@ |
24 | +-- $Id$ |
25 | + |
26 | +system |
27 | + readtags |
28 | + |
29 | +root |
30 | + TAG_FILE_READER (root_cluster): "make" |
31 | + |
32 | +default |
33 | + assertion (all) |
34 | + multithreaded (no) |
35 | + console_application (yes) |
36 | + dynamic_runtime (yes) |
37 | + dead_code_removal (yes) |
38 | + profile (no) |
39 | + line_generation (yes) |
40 | + debug (yes) |
41 | + array_optimization (yes) |
42 | + inlining (yes) |
43 | + inlining_size ("4") |
44 | + |
45 | + precompiled ("$ISE_EIFFEL/precomp/spec/$ISE_PLATFORM/base") |
46 | + |
47 | +cluster |
48 | + |
49 | + root_cluster: "." |
50 | + |
51 | + -- EiffelBase |
52 | + all base: "$ISE_EIFFEL/library/base" |
53 | + exclude |
54 | + "desc";"table_eiffel3" |
55 | + end |
56 | + |
57 | +external |
58 | + |
59 | + include_path: "../../../.." |
60 | + |
61 | + object: "../../../readtags.o" |
62 | + |
63 | +end |
64 | |
65 | === added file 'Eiffel/external_addressing.e' |
66 | --- Eiffel/external_addressing.e 1970-01-01 00:00:00 +0000 |
67 | +++ Eiffel/external_addressing.e 2011-03-11 21:16:06 +0000 |
68 | @@ -0,0 +1,45 @@ |
69 | +indexing |
70 | + |
71 | + description: "Compiler-dependent external addressing of objects" |
72 | + revision: "$Revision$" |
73 | + date: "$Date$" |
74 | + copyright: "Copyright 2002 Darren Hiebert and others" |
75 | + license: "Eiffel Forum License, version 1" |
76 | + |
77 | +class EXTERNAL_ADDRESSING |
78 | + |
79 | +feature -- Access |
80 | + |
81 | + string_from_c (p: POINTER): STRING is |
82 | + -- A new string created from an external C string |
83 | + do |
84 | + if (p /= default_pointer) then |
85 | + create Result.make (0) |
86 | + Result.from_c (p) |
87 | + end |
88 | + end |
89 | + |
90 | + string_to_c (str: STRING): POINTER is |
91 | + -- The address of the first character of the string, or |
92 | + -- default_pointer if `str' is void. This in an inherently |
93 | + -- dangerous function, since the object referred to by the pointer |
94 | + -- could be moved by the garbage collector before the pointer is |
95 | + -- used. Caveat emptor! |
96 | + local |
97 | + a: ANY |
98 | + do |
99 | + if str = Void then |
100 | + a := ("").to_c |
101 | + else |
102 | + a := str.to_c |
103 | + end |
104 | + Result := c_address ($a) |
105 | + end |
106 | + |
107 | + c_address (p: POINTER): POINTER is |
108 | + -- The address passed in |
109 | + do |
110 | + Result := p |
111 | + end |
112 | + |
113 | +end |
114 | |
115 | === added file 'Eiffel/tag_entry.e' |
116 | --- Eiffel/tag_entry.e 1970-01-01 00:00:00 +0000 |
117 | +++ Eiffel/tag_entry.e 2011-03-11 21:16:06 +0000 |
118 | @@ -0,0 +1,187 @@ |
119 | +indexing |
120 | + |
121 | + description: "Describes a single entry in a tag file." |
122 | + revision: "$Revision$" |
123 | + date: "$Date$" |
124 | + copyright: "Copyright 2002 Darren Hiebert and others" |
125 | + license: "Eiffel Forum License, version 1" |
126 | + |
127 | +class TAG_ENTRY |
128 | + |
129 | +inherit |
130 | + |
131 | + ANY |
132 | + redefine |
133 | + out |
134 | + end |
135 | + |
136 | +creation |
137 | + |
138 | + make_from_c |
139 | + |
140 | +feature -- Initialization |
141 | + |
142 | + make_from_c (buffer: STRING) is |
143 | + -- Create from buffer containing C tagEntry structure |
144 | + require |
145 | + buffer_exists: buffer /= Void |
146 | + local |
147 | + p: POINTER |
148 | + do |
149 | + p := addressing.string_to_c (buffer) |
150 | + |
151 | + name := addressing.string_from_c (c_name (p)) |
152 | + file := addressing.string_from_c (c_file (p)) |
153 | + pattern := addressing.string_from_c (c_pattern (p)) |
154 | + line_number := c_line_number (p) |
155 | + kind := addressing.string_from_c (c_kind (p)) |
156 | + file_scoped := c_file_scope (p) |
157 | + |
158 | + if c_field_count (p) > 0 then |
159 | + create extension_fields.make_from_c (buffer) |
160 | + end |
161 | + end |
162 | + |
163 | +feature -- Access |
164 | + |
165 | + name: STRING |
166 | + -- Name of tag |
167 | + |
168 | + file: STRING |
169 | + -- Path of source file containing definition of tag |
170 | + |
171 | + pattern: STRING |
172 | + -- Pattern for locating source line (may be void) |
173 | + |
174 | + line_number: INTEGER |
175 | + -- Line number in source file of tag definition |
176 | + -- (may be zero if not known) |
177 | + |
178 | + kind: STRING |
179 | + -- Kind of tag (may by name, character, or void if not known) |
180 | + |
181 | + file_scoped: BOOLEAN |
182 | + -- Is tag of file-limited scope? |
183 | + |
184 | + extension_fields: TAG_EXTENSION_FIELDS |
185 | + -- Extension fields (may be void if not available) |
186 | + |
187 | +feature -- Output |
188 | + |
189 | + out: STRING is |
190 | + -- Printable representation of tag entry |
191 | + do |
192 | + create Result.make (name.count + 1 + file.count + 1 + pattern.count + 40) |
193 | + Result.append (name) |
194 | + Result.extend (Tab) |
195 | + Result.append (file) |
196 | + Result.extend (Tab) |
197 | + if pattern /= Void then |
198 | + Result.append (pattern) |
199 | + else |
200 | + Result.append_integer (line_number) |
201 | + end |
202 | + end |
203 | + |
204 | + out_full: STRING is |
205 | + -- Printable representation of tag entry with extension fields |
206 | + local |
207 | + sep: STRING |
208 | + do |
209 | + sep := ";%"" |
210 | + Result := out |
211 | + Result.copy (out) |
212 | + if kind /= Void then |
213 | + Result.append (sep); sep := Empty_string |
214 | + Result.extend (Tab) |
215 | + Result.append (Kind_key) |
216 | + Result.extend (Colon) |
217 | + Result.append (kind) |
218 | + end |
219 | + if file_scoped then |
220 | + Result.append (sep); sep := Empty_string |
221 | + Result.extend (Tab) |
222 | + Result.append (File_scope_key) |
223 | + Result.extend (Colon) |
224 | + end |
225 | + if extension_fields /= Void then |
226 | + Result.append (sep); sep := Empty_string |
227 | + Result.append (extension_fields.out) |
228 | + end |
229 | + end |
230 | + |
231 | +feature {NONE} -- Implementation |
232 | + |
233 | + Kind_key: STRING is "kind" |
234 | + -- Key used for "kind" of tag |
235 | + |
236 | + File_scope_key: STRING is "file" |
237 | + -- Key used for file scoping of tag |
238 | + |
239 | + Colon: CHARACTER is ':' |
240 | + -- Key-value separator |
241 | + |
242 | + Tab: CHARACTER is '%T' |
243 | + -- Field separator |
244 | + |
245 | + Empty_string: STRING is "" |
246 | + -- Empty string |
247 | + |
248 | + addressing: EXTERNAL_ADDRESSING is |
249 | + -- Access to external addressing features |
250 | + once |
251 | + create Result |
252 | + end |
253 | + |
254 | +feature {NONE} -- Externals |
255 | + |
256 | + c_name (p: POINTER): POINTER is |
257 | + external |
258 | + "C [struct %"readtags.h%"] (tagEntry): const char*" |
259 | + alias |
260 | + "name" |
261 | + end |
262 | + |
263 | + c_file (p: POINTER): POINTER is |
264 | + external |
265 | + "C [struct %"readtags.h%"] (tagEntry): const char*" |
266 | + alias |
267 | + "file" |
268 | + end |
269 | + |
270 | + c_pattern (p: POINTER): POINTER is |
271 | + external |
272 | + "C [struct %"readtags.h%"] (tagEntry): const char*" |
273 | + alias |
274 | + "address.pattern" |
275 | + end |
276 | + |
277 | + c_line_number (p: POINTER): INTEGER is |
278 | + external |
279 | + "C [struct %"readtags.h%"] (tagEntry): unsigned long" |
280 | + alias |
281 | + "address.lineNumber" |
282 | + end |
283 | + |
284 | + c_kind (p: POINTER): POINTER is |
285 | + external |
286 | + "C [struct %"readtags.h%"] (tagEntry): const char*" |
287 | + alias |
288 | + "kind" |
289 | + end |
290 | + |
291 | + c_file_scope (p: POINTER): BOOLEAN is |
292 | + external |
293 | + "C [struct %"readtags.h%"] (tagEntry): short" |
294 | + alias |
295 | + "fileScope" |
296 | + end |
297 | + |
298 | + c_field_count (p: POINTER): INTEGER is |
299 | + external |
300 | + "C [struct %"readtags.h%"] (tagEntry): unsigned short" |
301 | + alias |
302 | + "fields.count" |
303 | + end |
304 | + |
305 | +end |
306 | |
307 | === added file 'Eiffel/tag_extension_fields.e' |
308 | --- Eiffel/tag_extension_fields.e 1970-01-01 00:00:00 +0000 |
309 | +++ Eiffel/tag_extension_fields.e 2011-03-11 21:16:06 +0000 |
310 | @@ -0,0 +1,154 @@ |
311 | +indexing |
312 | + |
313 | + description: "Variable extension fields for tag file entry." |
314 | + revision: "$Revision$" |
315 | + date: "$Date$" |
316 | + copyright: "Copyright 2002 Darren Hiebert and others" |
317 | + license: "Eiffel Forum License, version 1" |
318 | + |
319 | +class TAG_EXTENSION_FIELDS |
320 | + |
321 | +inherit |
322 | + |
323 | + ARRAY [TUPLE [STRING, STRING]] |
324 | + rename |
325 | + item as array_item |
326 | + export |
327 | + {NONE} all |
328 | + redefine |
329 | + out |
330 | + end |
331 | + |
332 | +creation |
333 | + |
334 | + make_from_c |
335 | + |
336 | +feature -- Initialization |
337 | + |
338 | + make_from_c (buffer: STRING) is |
339 | + -- Create from buffer containing C tagEntry structure |
340 | + require |
341 | + buffer_exists: buffer /= Void |
342 | + local |
343 | + i: INTEGER |
344 | + field_count: INTEGER |
345 | + p, list: POINTER |
346 | + key: STRING |
347 | + value: STRING |
348 | + do |
349 | + from |
350 | + field_count := c_field_count (addressing.string_to_c (buffer)) |
351 | + make (1, field_count) |
352 | + list := c_extension_fields (addressing.string_to_c (buffer)) |
353 | + i := 0 |
354 | + until |
355 | + i >= field_count |
356 | + loop |
357 | + p := list + (i * tag_extension_field_size) |
358 | + key := addressing.string_from_c (c_key (p)) |
359 | + value := addressing.string_from_c (c_value (p)) |
360 | + put ([value, key], i + 1) |
361 | + i := i + 1 |
362 | + end |
363 | + end |
364 | + |
365 | +feature -- Access |
366 | + |
367 | + item (key: STRING): STRING is |
368 | + -- Value associated with `key' |
369 | + require |
370 | + non_void_key: key /= Void |
371 | + local |
372 | + i: INTEGER |
373 | + key_for_iteration: STRING |
374 | + do |
375 | + from |
376 | + i := lower |
377 | + until |
378 | + i > upper or Result /= Void |
379 | + loop |
380 | + key_for_iteration ?= array_item (i).item (2) |
381 | + check not_void: key_for_iteration /= Void end |
382 | + if key.is_equal (key_for_iteration) then |
383 | + Result ?= array_item (i).item (1) |
384 | + end |
385 | + end |
386 | + end |
387 | + |
388 | +feature -- Output |
389 | + |
390 | + out: STRING is |
391 | + -- Printable representation |
392 | + local |
393 | + key, value: STRING |
394 | + i: INTEGER |
395 | + do |
396 | + create Result.make (30) |
397 | + from |
398 | + i := lower |
399 | + until |
400 | + i > upper |
401 | + loop |
402 | + Result.extend (Tab) |
403 | + key ?= array_item (i).item (2) |
404 | + check key_exists: key /= Void end |
405 | + Result.append (key) |
406 | + Result.extend (Colon) |
407 | + value ?= array_item (i).item (1) |
408 | + if value /= Void then |
409 | + Result.append (value) |
410 | + end |
411 | + i := i + 1 |
412 | + end |
413 | + end |
414 | + |
415 | +feature {NONE} -- Implementation |
416 | + |
417 | + Colon: CHARACTER is ':' |
418 | + |
419 | + Tab: CHARACTER is '%T' |
420 | + |
421 | + addressing: EXTERNAL_ADDRESSING is |
422 | + -- Access to external addressing features |
423 | + once |
424 | + create Result |
425 | + end |
426 | + |
427 | +feature {NONE} -- Externals |
428 | + |
429 | + tag_extension_field_size: INTEGER is |
430 | + external |
431 | + "C [macro %"readtags.h%"] (): long" |
432 | + alias |
433 | + "sizeof (tagExtensionField)" |
434 | + end |
435 | + |
436 | + c_field_count (p: POINTER): INTEGER is |
437 | + external |
438 | + "C [struct %"readtags.h%"] (tagEntry): unsigned short" |
439 | + alias |
440 | + "fields.count" |
441 | + end |
442 | + |
443 | + c_extension_fields (p: POINTER): POINTER is |
444 | + external |
445 | + "C [struct %"readtags.h%"] (tagEntry): tagExtensionField" |
446 | + alias |
447 | + "fields.list" |
448 | + end |
449 | + |
450 | + c_key (p: POINTER): POINTER is |
451 | + external |
452 | + "C [struct %"readtags.h%"] (tagExtensionField): const char*" |
453 | + alias |
454 | + "key" |
455 | + end |
456 | + |
457 | + c_value (p: POINTER): POINTER is |
458 | + external |
459 | + "C [struct %"readtags.h%"] (tagExtensionField): const char*" |
460 | + alias |
461 | + "value" |
462 | + end |
463 | + |
464 | +end |
465 | |
466 | === added file 'Eiffel/tag_file.e' |
467 | --- Eiffel/tag_file.e 1970-01-01 00:00:00 +0000 |
468 | +++ Eiffel/tag_file.e 2011-03-11 21:16:06 +0000 |
469 | @@ -0,0 +1,481 @@ |
470 | +indexing |
471 | + |
472 | + description: "Abstraction of file containing tag records" |
473 | + revision: "$Revision$" |
474 | + date: "$Date$" |
475 | + copyright: "Copyright 2002 Darren Hiebert and others" |
476 | + license: "Eiffel Forum License, version 1" |
477 | + |
478 | +class TAG_FILE |
479 | + |
480 | +inherit |
481 | + |
482 | + TAG_FILE_FORMATS |
483 | + TAG_FILE_SORT_TYPES |
484 | + EXTERNAL_ADDRESSING |
485 | + export |
486 | + {NONE} all |
487 | + end |
488 | + |
489 | +creation |
490 | + |
491 | + make |
492 | + |
493 | +feature -- Initialization |
494 | + |
495 | + make (nm: STRING) is |
496 | + -- Create from name of existing tag file |
497 | + require |
498 | + name_not_empty: nm /= Void and then not nm.is_empty |
499 | + do |
500 | + format := Format_extended |
501 | + sort_type := Sort_case_sensitive |
502 | + create tag_file_info_struct.make_filled ('%U', tag_file_info_size) |
503 | + create tag_entry_struct.make_filled ('%U', tag_entry_size) |
504 | + handle := c_tags_open ( |
505 | + string_to_c (nm), string_to_c (tag_file_info_struct)) |
506 | + open := handle /= default_pointer |
507 | + if open then |
508 | + path := nm |
509 | + format := c_file_format (string_to_c (tag_file_info_struct)) |
510 | + sort_type := c_file_sort (string_to_c (tag_file_info_struct)) |
511 | + program_author := string_from_c ( |
512 | + c_program_author (string_to_c (tag_file_info_struct))) |
513 | + program_name := string_from_c ( |
514 | + c_program_name (string_to_c (tag_file_info_struct))) |
515 | + program_url := string_from_c ( |
516 | + c_program_url (string_to_c (tag_file_info_struct))) |
517 | + program_version := string_from_c ( |
518 | + c_program_version (string_to_c (tag_file_info_struct))) |
519 | + else |
520 | + error_number := c_file_error_number ( |
521 | + string_to_c (tag_file_info_struct)) |
522 | + error_description := string_from_c (c_strerror (error_number)) |
523 | + end |
524 | + ensure |
525 | + opened: open or else (error_number > 0 and error_description /= Void) |
526 | + end |
527 | + |
528 | +feature -- Access |
529 | + |
530 | + path: STRING |
531 | + -- Path of tag file |
532 | + |
533 | + program_author: STRING |
534 | + -- Name of author of generating program (may be null) |
535 | + |
536 | + program_name: STRING |
537 | + -- Name of program (may be void) |
538 | + |
539 | + program_url: STRING |
540 | + -- URL of distribution (may be void) |
541 | + |
542 | + program_version: STRING |
543 | + -- Program version (may be void) |
544 | + |
545 | + item: TAG_ENTRY |
546 | + -- Current tag |
547 | + |
548 | +feature -- Status report |
549 | + |
550 | + open: BOOLEAN |
551 | + -- Is the tag file open? If this is false, then the system "errno" |
552 | + -- variable may be examined to determine the cause. |
553 | + |
554 | + error_number: INTEGER |
555 | + -- Value of errno of O/S when creation of `Current' fails |
556 | + |
557 | + error_description: STRING |
558 | + -- Value of strerror(errno) of O/S when creation of `Current' fails |
559 | + |
560 | + off: BOOLEAN |
561 | + -- Is there another tag after this one? |
562 | + |
563 | + format: INTEGER |
564 | + -- Format of tag file |
565 | + |
566 | + sort_type: INTEGER |
567 | + -- Type of sorting used on file. |
568 | + |
569 | + partial_matching: BOOLEAN |
570 | + -- Should searches find tags whose whose leading characters match |
571 | + -- the supplied string? |
572 | + |
573 | + ignoring_case: BOOLEAN |
574 | + -- Should searches match without regard to case? |
575 | + |
576 | +feature -- Status setting |
577 | + |
578 | + set_sort_type (type: INTEGER) is |
579 | + -- Force sort type of file (in case automatic detection does not |
580 | + -- work). |
581 | + require |
582 | + open: open |
583 | + valid_sort_type: valid_sort_type (type) |
584 | + local |
585 | + return_code: INTEGER |
586 | + do |
587 | + return_code := c_tags_set_sort_type (handle, type) |
588 | + check no_error: return_code = Tag_success end |
589 | + sort_type := type |
590 | + ensure |
591 | + sort_type_overridden: sort_type = type |
592 | + end |
593 | + |
594 | + ignore_case is |
595 | + -- Disable recognition of case for searches |
596 | + require |
597 | + open: open |
598 | + do |
599 | + ignoring_case := True |
600 | + ensure |
601 | + searches_ignore_case: ignoring_case |
602 | + end |
603 | + |
604 | + observe_case is |
605 | + -- Enable recognition of case for searches |
606 | + require |
607 | + open: open |
608 | + do |
609 | + ignoring_case := False |
610 | + ensure |
611 | + searches_observe_case: not ignoring_case |
612 | + end |
613 | + |
614 | + match_partial is |
615 | + -- Enable partial matching for searches |
616 | + require |
617 | + open: open |
618 | + do |
619 | + partial_matching := True |
620 | + ensure |
621 | + searches_match_partial: partial_matching |
622 | + end |
623 | + |
624 | + match_full is |
625 | + -- Enable full matching for searches |
626 | + require |
627 | + open: open |
628 | + do |
629 | + partial_matching := False |
630 | + ensure |
631 | + searches_match_full: not partial_matching |
632 | + end |
633 | + |
634 | + start is |
635 | + -- Move to first tag in file |
636 | + require |
637 | + exists: open |
638 | + do |
639 | + read_tag (c_tags_first (handle, string_to_c (tag_entry_struct))) |
640 | + ensure |
641 | + item_found: not off implies item /= Void |
642 | + end |
643 | + |
644 | + forth is |
645 | + -- Advance to next tag in file |
646 | + require |
647 | + exists: open |
648 | + another_available: not off |
649 | + do |
650 | + read_tag (c_tags_next (handle, string_to_c (tag_entry_struct))) |
651 | + ensure |
652 | + item_found: not off implies item /= Void |
653 | + end |
654 | + |
655 | + search (name: STRING) is |
656 | + -- Search from beginning of file for tag matching `name'. |
657 | + -- Search affected by values of `partial_matching' and |
658 | + -- `ignoring_case'. |
659 | + require |
660 | + open: open |
661 | + name_supplied: name /= Void and then not name.is_empty |
662 | + do |
663 | + search_name := clone (name) |
664 | + read_tag (c_tags_find (handle, string_to_c (tag_entry_struct), |
665 | + string_to_c (name), search_options)) |
666 | + ensure |
667 | + match: |
668 | + not off implies (item /= Void and then not item.name.is_empty) |
669 | + non_partial_match: |
670 | + (not off and not partial_matching) |
671 | + implies item.name.count = name.count |
672 | + partial_match: |
673 | + (not off and partial_matching) |
674 | + implies item.name.count >= name.count |
675 | + case_match: |
676 | + (not off and not ignoring_case) implies |
677 | + name.is_equal (item.name.substring (1, name.count)) |
678 | + case_ignore_match: |
679 | + (not off and not ignoring_case) implies |
680 | + name.as_upper.is_equal ( |
681 | + item.name.substring (1, name.count).as_upper) |
682 | + end |
683 | + |
684 | + continue_search is |
685 | + -- Continue search initiated with `search' using same parameters |
686 | + -- and options. |
687 | + require |
688 | + open: open |
689 | + not off |
690 | + do |
691 | + read_tag (c_tags_find_next (handle, string_to_c (tag_entry_struct))) |
692 | + ensure |
693 | + match: |
694 | + not off implies (item /= Void and then not item.name.is_empty) |
695 | + non_partial_match: |
696 | + (not off and not partial_matching) |
697 | + implies item.name.count = search_name.count |
698 | + partial_match: |
699 | + (not off and partial_matching) |
700 | + implies item.name.count >= search_name.count |
701 | + case_match: |
702 | + (not off and not ignoring_case) implies |
703 | + search_name.is_equal ( |
704 | + item.name.substring (1, search_name.count)) |
705 | + case_ignore_match: |
706 | + (not off and not ignoring_case) implies |
707 | + search_name.as_upper.is_equal ( |
708 | + item.name.substring (1, search_name.count).as_upper) |
709 | + end |
710 | + |
711 | + close is |
712 | + -- Close tag file |
713 | + require |
714 | + open: open |
715 | + local |
716 | + return_code: INTEGER |
717 | + do |
718 | + return_code := c_tags_close (handle) |
719 | + check no_failure: return_code = Tag_success end |
720 | + handle := default_pointer |
721 | + ensure |
722 | + handle_reset: handle = default_pointer |
723 | + end |
724 | + |
725 | +feature {NONE} -- Implementation |
726 | + |
727 | + handle: POINTER |
728 | + -- Handle to tag file |
729 | + |
730 | + tag_file_info_struct: STRING |
731 | + -- Buffer for tagFileInfo C structure |
732 | + |
733 | + tag_entry_struct: STRING |
734 | + -- Buffer for tagEntry C structure |
735 | + |
736 | + search_name: STRING |
737 | + -- Name used in `search' |
738 | + |
739 | + search_options: INTEGER is |
740 | + -- Bit representation of search options |
741 | + do |
742 | + if partial_matching then |
743 | + Result := Tag_partial_match |
744 | + end |
745 | + if ignoring_case then |
746 | + Result := Result + Tag_ignore_case |
747 | + end |
748 | + end |
749 | + |
750 | + read_tag (return_code: INTEGER) is |
751 | + do |
752 | + if return_code = Tag_success then |
753 | + create item.make_from_c (tag_entry_struct) |
754 | + off := False |
755 | + else |
756 | + off := True |
757 | + item := Void |
758 | + end |
759 | + end |
760 | + |
761 | +feature {NONE} -- Externals |
762 | + |
763 | + c_strerror (errnum: INTEGER): POINTER is |
764 | + external |
765 | + "C (int): char* | <errno.h>" |
766 | + alias |
767 | + "strerror" |
768 | + end |
769 | + |
770 | + tag_file_info_size: INTEGER is |
771 | + external |
772 | + "C [macro %"readtags.h%"] (): long" |
773 | + alias |
774 | + "sizeof (tagFileInfo)" |
775 | + end |
776 | + |
777 | + tag_entry_size: INTEGER is |
778 | + external |
779 | + "C [macro %"readtags.h%"] (): long" |
780 | + alias |
781 | + "sizeof (tagEntry)" |
782 | + end |
783 | + |
784 | + Tag_success: INTEGER is |
785 | + external |
786 | + "C [macro %"readtags.h%"] (): int" |
787 | + alias |
788 | + "TagSuccess" |
789 | + end |
790 | + |
791 | + Tag_failure: INTEGER is |
792 | + external |
793 | + "C [macro %"readtags.h%"] (): int" |
794 | + alias |
795 | + "TagFailure" |
796 | + end |
797 | + |
798 | + Tag_unsorted: INTEGER is |
799 | + external |
800 | + "C [macro %"readtags.h%"] (): int" |
801 | + alias |
802 | + "TAG_UNSORTED" |
803 | + end |
804 | + |
805 | + Tag_sorted: INTEGER is |
806 | + external |
807 | + "C [macro %"readtags.h%"] (): int" |
808 | + alias |
809 | + "TAG_SORTED" |
810 | + end |
811 | + |
812 | + Tag_fold_sorted: INTEGER is |
813 | + external |
814 | + "C [macro %"readtags.h%"] (): int" |
815 | + alias |
816 | + "TAG_FOLDSORTED" |
817 | + end |
818 | + |
819 | + Tag_partial_match: INTEGER is |
820 | + external |
821 | + "C [macro %"readtags.h%"] (): int" |
822 | + alias |
823 | + "TAG_PARTIALMATCH" |
824 | + end |
825 | + |
826 | + Tag_ignore_case: INTEGER is |
827 | + external |
828 | + "C [macro %"readtags.h%"] (): int" |
829 | + alias |
830 | + "TAG_IGNORECASE" |
831 | + end |
832 | + |
833 | + c_tags_open (file_path, info: POINTER): POINTER is |
834 | + -- extern tagFile *tagsOpen (const char *filePath, |
835 | + -- tagFileInfo *info); |
836 | + external |
837 | + "C (const char*, tagFileInfo*): tagFile* | %"readtags.h%"" |
838 | + alias |
839 | + "tagsOpen" |
840 | + end |
841 | + |
842 | + c_tags_set_sort_type (h: POINTER; type: INTEGER): INTEGER is |
843 | + -- extern tagResult tagsSetSortType (tagFile *file, sortType type); |
844 | + external |
845 | + "C (tagFile*, sortType): tagResult | %"readtags.h%"" |
846 | + alias |
847 | + "tagsSetSortType" |
848 | + end |
849 | + |
850 | + c_tags_first (h, entry: POINTER): INTEGER is |
851 | + external |
852 | + "C (tagFile*, tagEntry*): tagResult | %"readtags.h%"" |
853 | + alias |
854 | + "tagsFirst" |
855 | + end |
856 | + |
857 | + c_tags_next (h, entry: POINTER): INTEGER is |
858 | + external |
859 | + "C (tagFile*, tagEntry*): tagResult | %"readtags.h%"" |
860 | + alias |
861 | + "tagsNext" |
862 | + end |
863 | + |
864 | + c_tags_find (h, entry, name: POINTER; options: INTEGER): INTEGER is |
865 | + -- extern tagResult tagsFind (tagFile *file, tagEntry *entry, |
866 | + -- const char *name, int options); |
867 | + external |
868 | + "C (tagFile*, tagEntry*, const char*, int): tagResult | %"readtags.h%"" |
869 | + alias |
870 | + "tagsFind" |
871 | + end |
872 | + |
873 | + c_tags_find_next (h, entry: POINTER): INTEGER is |
874 | + -- extern tagResult tagsFindNext (tagFile *file, tagEntry *entry); |
875 | + external |
876 | + "C (tagFile*, tagEntry*): tagResult | %"readtags.h%"" |
877 | + alias |
878 | + "tagsFindNext" |
879 | + end |
880 | + |
881 | + c_tags_close (h: POINTER): INTEGER is |
882 | + -- extern tagResult tagsClose (tagFile *file); |
883 | + external |
884 | + "C (tagFile*): tagResult | %"readtags.h%"" |
885 | + alias |
886 | + "tagsClose" |
887 | + end |
888 | + |
889 | + c_file_opened (p: POINTER): BOOLEAN is |
890 | + external |
891 | + "C [struct %"readtags.h%"] (tagFileInfo): int" |
892 | + alias |
893 | + "status.opened" |
894 | + end |
895 | + |
896 | + c_file_error_number (p: POINTER): INTEGER is |
897 | + external |
898 | + "C [struct %"readtags.h%"] (tagFileInfo): int" |
899 | + alias |
900 | + "status.error_number" |
901 | + end |
902 | + |
903 | + c_file_format (p: POINTER): INTEGER is |
904 | + external |
905 | + "C [struct %"readtags.h%"] (tagFileInfo): short" |
906 | + alias |
907 | + "file.format" |
908 | + end |
909 | + |
910 | + c_file_sort (p: POINTER): INTEGER is |
911 | + external |
912 | + "C [struct %"readtags.h%"] (tagFileInfo): short" |
913 | + alias |
914 | + "file.sort" |
915 | + end |
916 | + |
917 | + c_program_author (p: POINTER): POINTER is |
918 | + external |
919 | + "C [struct %"readtags.h%"] (tagFileInfo): const char*" |
920 | + alias |
921 | + "program.author" |
922 | + end |
923 | + |
924 | + c_program_name (p: POINTER): POINTER is |
925 | + external |
926 | + "C [struct %"readtags.h%"] (tagFileInfo): const char*" |
927 | + alias |
928 | + "program.name" |
929 | + end |
930 | + |
931 | + c_program_url (p: POINTER): POINTER is |
932 | + external |
933 | + "C [struct %"readtags.h%"] (tagFileInfo): const char*" |
934 | + alias |
935 | + "program.url" |
936 | + end |
937 | + |
938 | + c_program_version (p: POINTER): POINTER is |
939 | + external |
940 | + "C [struct %"readtags.h%"] (tagFileInfo): const char*" |
941 | + alias |
942 | + "program.version" |
943 | + end |
944 | + |
945 | +invariant |
946 | + |
947 | + valid_format: valid_format (format) |
948 | + valid_sort_type: valid_sort_type (sort_type) |
949 | + |
950 | +end |
951 | |
952 | === added file 'Eiffel/tag_file_formats.e' |
953 | --- Eiffel/tag_file_formats.e 1970-01-01 00:00:00 +0000 |
954 | +++ Eiffel/tag_file_formats.e 2011-03-11 21:16:06 +0000 |
955 | @@ -0,0 +1,30 @@ |
956 | +indexing |
957 | + |
958 | + description: "Constants describing defined tag file formats." |
959 | + revision: "$Revision$" |
960 | + date: "$Date$" |
961 | + copyright: "Copyright 2002 Darren Hiebert and others" |
962 | + license: "Eiffel Forum License, version 1" |
963 | + |
964 | +class TAG_FILE_FORMATS |
965 | + |
966 | +feature -- Access |
967 | + |
968 | + Format_original: INTEGER is 1 |
969 | + -- Original tag file format |
970 | + |
971 | + Format_extended: INTEGER is 2 |
972 | + -- Extended tag file format |
973 | + |
974 | +feature -- Status report |
975 | + |
976 | + valid_format (format: INTEGER): BOOLEAN is |
977 | + -- Is `format' a valid tag file format? |
978 | + do |
979 | + Result := format = Format_original or format = Format_extended |
980 | + ensure |
981 | + definition: Result implies |
982 | + (format = Format_original or format = Format_extended) |
983 | + end |
984 | + |
985 | +end |
986 | |
987 | === added file 'Eiffel/tag_file_reader.e' |
988 | --- Eiffel/tag_file_reader.e 1970-01-01 00:00:00 +0000 |
989 | +++ Eiffel/tag_file_reader.e 2011-03-11 21:16:06 +0000 |
990 | @@ -0,0 +1,236 @@ |
991 | +indexing |
992 | + |
993 | + description: "Demo program for TAG_FILE functionality." |
994 | + revision: "$Revision$" |
995 | + date: "$Date$" |
996 | + copyright: "Copyright 2002 Darren Hiebert and others" |
997 | + license: "Eiffel Forum License, version 1" |
998 | + |
999 | +class TAG_FILE_READER |
1000 | + |
1001 | +inherit |
1002 | + |
1003 | + TAG_FILE_SORT_TYPES |
1004 | + export |
1005 | + {NONE} all |
1006 | + end |
1007 | + |
1008 | +creation |
1009 | + |
1010 | + make |
1011 | + |
1012 | +feature -- Initialization |
1013 | + |
1014 | + make (args: ARRAY [STRING]) is |
1015 | + -- Root creation |
1016 | + do |
1017 | + set_program_name (args.item (0)) |
1018 | + if args.upper = 0 then |
1019 | + io.error.put_string (usage) |
1020 | + exceptions.die (1) |
1021 | + end |
1022 | + set_default_options |
1023 | + parse_command_line (args) |
1024 | + end |
1025 | + |
1026 | +feature {NONE} -- Implmentation |
1027 | + |
1028 | + program_name: STRING |
1029 | + -- Name by which program is executed |
1030 | + |
1031 | + tag_file_name: STRING |
1032 | + -- Name of tag file |
1033 | + |
1034 | + sort_type: INTEGER |
1035 | + -- Sort file override |
1036 | + |
1037 | + sort_override: BOOLEAN |
1038 | + -- Did the user override the sort method? |
1039 | + |
1040 | + showing_extension_fields: BOOLEAN |
1041 | + -- Did the user request extension fields in output? |
1042 | + |
1043 | + ignoring_case: BOOLEAN |
1044 | + -- Did the user request ignoring of case in searches? |
1045 | + |
1046 | + partial_matching: BOOLEAN |
1047 | + -- Did the user request partial matching? |
1048 | + |
1049 | + file: TAG_FILE |
1050 | + -- Tag file under consideration |
1051 | + |
1052 | + usage: STRING is |
1053 | + require |
1054 | + program_name_assigned: program_name /= Void |
1055 | + once |
1056 | + Result := |
1057 | + "Find tag file entries matching specified names.%N%NUsage: " |
1058 | + Result.append (program_name) |
1059 | + Result.append ( |
1060 | + " [-ilp] [-s[0|1]] [-t file] [name(s)]%N%N% |
1061 | + %Options:%N% |
1062 | + % -e Include extension fields in output.%N% |
1063 | + % -i Perform case-insensitive matching.%N% |
1064 | + % -l List all tags.%N% |
1065 | + % -p Perform partial matching.%N% |
1066 | + % -s[0|1|2] Override sort detection of tag file.%N% |
1067 | + % -t file Use specified tag file (default: %"tags%").%N% |
1068 | + %Note that options are acted upon as encountered, so order is significant.%N") |
1069 | + end |
1070 | + |
1071 | + set_program_name (name: STRING) is |
1072 | + -- Set the program name from path |
1073 | + require |
1074 | + name_supplied: name /= Void |
1075 | + local |
1076 | + slash: INTEGER |
1077 | + do |
1078 | + slash := name.last_index_of ('/', name.count) |
1079 | + if slash = 0 then |
1080 | + slash := name.last_index_of ('\', name.count) |
1081 | + end |
1082 | + program_name := clone (name) |
1083 | + if slash > 0 then |
1084 | + program_name.keep_tail (program_name.count - slash) |
1085 | + end |
1086 | + end |
1087 | + |
1088 | + set_default_options is |
1089 | + -- Set default options |
1090 | + do |
1091 | + tag_file_name := "tags" |
1092 | + end |
1093 | + |
1094 | + parse_command_line (args: ARRAY [STRING]) is |
1095 | + local |
1096 | + i, j: INTEGER |
1097 | + arg: STRING |
1098 | + action_supplied: BOOLEAN |
1099 | + do |
1100 | + from i := 1 until i > args.upper loop |
1101 | + arg := args.item (i) |
1102 | + if arg.item (1) /= '-' then |
1103 | + find_tag (arg) |
1104 | + action_supplied := True |
1105 | + else |
1106 | + from j := 2 until j > arg.count loop |
1107 | + inspect arg.item (j) |
1108 | + when 'e' then showing_extension_fields := True |
1109 | + when 'i' then ignoring_case := True |
1110 | + when 'p' then partial_matching := True |
1111 | + when 'l' then list_tags; action_supplied := True |
1112 | + when 't' then |
1113 | + if j < arg.count then |
1114 | + tag_file_name := arg.substring (j+1, arg.count) |
1115 | + j := arg.count |
1116 | + elseif i < args.upper then |
1117 | + i := i + 1 |
1118 | + tag_file_name := args.item (i) |
1119 | + else |
1120 | + io.error.put_string (usage) |
1121 | + exceptions.die (1) |
1122 | + end |
1123 | + when 's' then |
1124 | + sort_override := True |
1125 | + j := j + 1 |
1126 | + if j > arg.count then |
1127 | + sort_type := Sort_case_sensitive |
1128 | + elseif arg.item (j).is_digit then |
1129 | + sort_type := arg.item (j).code - ('0').code |
1130 | + else |
1131 | + io.error.put_string (usage) |
1132 | + exceptions.die (1) |
1133 | + end |
1134 | + else |
1135 | + report_unknown_option (arg.item (j)) |
1136 | + end |
1137 | + j := j + 1 |
1138 | + end |
1139 | + end |
1140 | + i := i + 1 |
1141 | + end |
1142 | + if not action_supplied then report_no_action end |
1143 | + end |
1144 | + |
1145 | + report_unknown_option (switch: CHARACTER) is |
1146 | + -- Report `switch' as unknown option |
1147 | + do |
1148 | + io.error.put_string (program_name) |
1149 | + io.error.put_string (": unknown option: ") |
1150 | + io.error.put_character (switch) |
1151 | + io.error.put_character ('%N') |
1152 | + exceptions.die (1) |
1153 | + end |
1154 | + |
1155 | + report_no_action is |
1156 | + -- Report `switch' as unknown option |
1157 | + do |
1158 | + io.error.put_string (program_name) |
1159 | + io.error.put_string ( |
1160 | + ": no action specified: specify tag name(s) or -l option%N") |
1161 | + exceptions.die (1) |
1162 | + end |
1163 | + |
1164 | + find_tag (name: STRING) is |
1165 | + -- Find tag matching `name' |
1166 | + do |
1167 | + from |
1168 | + open_tag_file |
1169 | + if ignoring_case then file.ignore_case end |
1170 | + if partial_matching then file.match_partial end |
1171 | + file.search (name) |
1172 | + until |
1173 | + file.off |
1174 | + loop |
1175 | + print_tag (file.item) |
1176 | + file.continue_search |
1177 | + end |
1178 | + file.close |
1179 | + end |
1180 | + |
1181 | + list_tags is |
1182 | + -- List all tags |
1183 | + do |
1184 | + open_tag_file |
1185 | + from file.start until file.off loop |
1186 | + print_tag (file.item) |
1187 | + file.forth |
1188 | + end |
1189 | + file.close |
1190 | + end |
1191 | + |
1192 | + open_tag_file is |
1193 | + -- Open tag file and check for errors |
1194 | + do |
1195 | + create file.make (tag_file_name) |
1196 | + if not file.open then |
1197 | + io.error.put_string (program_name) |
1198 | + io.error.put_string (": cannot open tag file: ") |
1199 | + io.error.put_string (file.error_description) |
1200 | + io.error.put_string (": ") |
1201 | + io.error.put_string (tag_file_name) |
1202 | + io.error.put_character ('%N') |
1203 | + exceptions.die (1) |
1204 | + end |
1205 | + if sort_override then file.set_sort_type (sort_type) end |
1206 | + end |
1207 | + |
1208 | + print_tag (tag: TAG_ENTRY) is |
1209 | + -- Print tag contents to standard output |
1210 | + require |
1211 | + tag_supplied: tag /= Void |
1212 | + do |
1213 | + if showing_extension_fields then |
1214 | + io.put_string (tag.out_full) |
1215 | + else |
1216 | + io.put_string (tag.out) |
1217 | + end |
1218 | + io.put_character ('%N') |
1219 | + end |
1220 | + |
1221 | + exceptions: EXCEPTIONS is |
1222 | + once |
1223 | + create Result |
1224 | + end |
1225 | + |
1226 | +end |
1227 | |
1228 | === added file 'Eiffel/tag_file_sort_types.e' |
1229 | --- Eiffel/tag_file_sort_types.e 1970-01-01 00:00:00 +0000 |
1230 | +++ Eiffel/tag_file_sort_types.e 2011-03-11 21:16:06 +0000 |
1231 | @@ -0,0 +1,36 @@ |
1232 | +indexing |
1233 | + |
1234 | + description: "Constants describing defined tag file sort types." |
1235 | + revision: "$Revision$" |
1236 | + date: "$Date$" |
1237 | + copyright: "Copyright 2002 Darren Hiebert and others" |
1238 | + license: "Eiffel Forum License, version 1" |
1239 | + |
1240 | +class TAG_FILE_SORT_TYPES |
1241 | + |
1242 | +feature |
1243 | + |
1244 | + Sort_none: INTEGER is 0 |
1245 | + -- Tag file is not sorted |
1246 | + |
1247 | + Sort_case_sensitive: INTEGER is 1 |
1248 | + -- Tag file is sorted in case-sensitive manner |
1249 | + |
1250 | + Sort_case_insensitive: INTEGER is 2 |
1251 | + -- Tag file is sorted in case-insensitive manner, with lower-case |
1252 | + -- folded onto upper case. |
1253 | + |
1254 | +feature -- Status report |
1255 | + |
1256 | + valid_sort_type (sort: INTEGER): BOOLEAN is |
1257 | + -- Is `sort' a valid tag file sort type? |
1258 | + do |
1259 | + Result := sort = Sort_none or |
1260 | + sort = Sort_case_sensitive or |
1261 | + sort = Sort_case_insensitive |
1262 | + ensure |
1263 | + definition: Result implies (sort = Sort_none or |
1264 | + sort = Sort_case_sensitive or sort = Sort_case_insensitive) |
1265 | + end |
1266 | + |
1267 | +end |
1268 | |
1269 | === modified file 'FAQ' |
1270 | --- FAQ 2004-03-30 11:56:40 +0000 |
1271 | +++ FAQ 2011-03-11 21:16:06 +0000 |
1272 | @@ -1,4 +1,4 @@ |
1273 | -Frequently Asked Questions |
1274 | +vberthoux@users.sourceforge.netFrequently Asked Questions |
1275 | ========================== |
1276 | |
1277 | * 1. Why do you call it "Exuberant Ctags"? |
1278 | @@ -354,7 +354,7 @@ |
1279 | |
1280 | And replace the configuration of step 3 with this: |
1281 | |
1282 | - :set tags=./tags,./../tags,./../../tags,./../../../tags,tags |
1283 | + :set tags=./tags;$HOME,tags |
1284 | |
1285 | As a caveat, it should be noted that step 2 builds a global tag file whose |
1286 | file names will be relative to the directory in which the global tag file |
1287 | |
1288 | === modified file 'Makefile.in' |
1289 | --- Makefile.in 2009-07-14 15:05:23 +0000 |
1290 | +++ Makefile.in 2011-03-11 21:16:06 +0000 |
1291 | @@ -1,4 +1,4 @@ |
1292 | -# $Id: Makefile.in 709 2009-07-04 05:29:28Z dhiebert $ |
1293 | +# $Id$ |
1294 | # |
1295 | # Makefile for UNIX-like platforms. |
1296 | # |
1297 | |
1298 | === modified file 'NEWS' |
1299 | --- NEWS 2009-07-14 15:05:23 +0000 |
1300 | +++ NEWS 2011-03-11 21:16:06 +0000 |
1301 | @@ -1,4 +1,14 @@ |
1302 | -Current Version: 5.8 |
1303 | +Current Version: @VERSION@ |
1304 | + |
1305 | +ctags-@VERSION@ (@DATE@) |
1306 | +* Added support for new "attached" and "detachable" keywords [Eiffel]. |
1307 | +* Fixed parsing of comments after import statements and other tags, contributed by Huandari Lopez to Geany [Python]. |
1308 | +* Fixed PHP parser to ignore keywords inside comments [PHP, Bug #1795926]. |
1309 | +* Fixed regular expressions for Ant so they won't span multiple tags [Ant]. |
1310 | +* Fixed infinite loop with malformed Makefiles, contributed by Martin Dorey [Make, Bug #2959889]. |
1311 | +* Fixed Verilog parameter parsing, contributed by Nicolas Vincent [Verilog, Patch #2747828]. |
1312 | +* Fixed error when parsing empty file [OCaml]. |
1313 | +* Enabled Large File System support. [Bug #3062068] |
1314 | |
1315 | ctags-5.8 (09 Jul 2009) |
1316 | * Removed ".ml" as a Lisp extension (now OCaml) [Lisp]. |
1317 | |
1318 | === added directory 'Test' |
1319 | === added file 'Test/1795612.js' |
1320 | --- Test/1795612.js 1970-01-01 00:00:00 +0000 |
1321 | +++ Test/1795612.js 2011-03-11 21:16:06 +0000 |
1322 | @@ -0,0 +1,27 @@ |
1323 | + |
1324 | +// This file should generate the following tags: |
1325 | +// methods |
1326 | +// Test.RPC.asyncMethod |
1327 | +// Test.RPC.asyncRequest |
1328 | +// properties |
1329 | +// Test.RPC.request_id |
1330 | +Test.RPC = |
1331 | +{ |
1332 | + request_id: 0, |
1333 | + |
1334 | + asyncRequest: function( |
1335 | + /* string */ uri, |
1336 | + /* object */ data, |
1337 | + /* object */ callback) |
1338 | + { |
1339 | + }, |
1340 | + |
1341 | + asyncMethod: function( |
1342 | + /* string */ uri, |
1343 | + /* string */ method, |
1344 | + /* array */ params, |
1345 | + /* object */ callback) |
1346 | + { |
1347 | + } |
1348 | +}; |
1349 | + |
1350 | |
1351 | === added file 'Test/1850914.js' |
1352 | --- Test/1850914.js 1970-01-01 00:00:00 +0000 |
1353 | +++ Test/1850914.js 2011-03-11 21:16:06 +0000 |
1354 | @@ -0,0 +1,25 @@ |
1355 | +// This file should generate the following tags: |
1356 | +// |
1357 | +// methods |
1358 | +// objectLiteral.objLiteralMethod |
1359 | +// properties |
1360 | +// objectLiteral.objLiteralProperty |
1361 | + |
1362 | + |
1363 | +/** |
1364 | +* This is an object literal |
1365 | +*/ |
1366 | +var objectLiteral = { |
1367 | +/** |
1368 | +* This is a literal object property |
1369 | +*/ |
1370 | +objLiteralProperty : 1, |
1371 | +/** |
1372 | +* This is a literal object method |
1373 | +*/ |
1374 | +objLiteralMethod : function(){} |
1375 | +} |
1376 | + |
1377 | +// When I run ctags on this (ctags -f - test.js) I get no output. I expect it |
1378 | +// to give me something for both "objectLiteral" and "objLiteralMethod". |
1379 | + |
1380 | |
1381 | === added file 'Test/1878155.js' |
1382 | --- Test/1878155.js 1970-01-01 00:00:00 +0000 |
1383 | +++ Test/1878155.js 2011-03-11 21:16:06 +0000 |
1384 | @@ -0,0 +1,11 @@ |
1385 | + |
1386 | +// This should handle the escaped quote |
1387 | +var RE={/foo\"/: "bar"}; |
1388 | + |
1389 | +// This should also handle the escaped quote |
1390 | +// A tag should be created for the global variable "foo". |
1391 | +var foo="foo \" some other stuff"; |
1392 | + |
1393 | +// A tag should be created for this function "my_function". |
1394 | +function my_function() { |
1395 | +} |
1396 | |
1397 | === added file 'Test/1880687.js' |
1398 | --- Test/1880687.js 1970-01-01 00:00:00 +0000 |
1399 | +++ Test/1880687.js 2011-03-11 21:16:06 +0000 |
1400 | @@ -0,0 +1,98 @@ |
1401 | + |
1402 | +// All these examples contain various forms of IF statements |
1403 | +// with missing semicolons. Each of these are valid and must |
1404 | +// be accommodated. |
1405 | +// |
1406 | +// After running ctags: ctags -f tags 1880687.js |
1407 | +// The following tags should be generated: |
1408 | +// functions |
1409 | +// a |
1410 | +// b |
1411 | +// c |
1412 | +// d |
1413 | +// e |
1414 | +// f |
1415 | +// g |
1416 | +// h |
1417 | +// i |
1418 | +// j |
1419 | +// k |
1420 | +// l |
1421 | +// m |
1422 | +// n |
1423 | + |
1424 | +function a(flag){ |
1425 | + if(flag) |
1426 | + test(1); |
1427 | + else |
1428 | + test(2) |
1429 | +} |
1430 | + |
1431 | +function b(){ |
1432 | + var b= 33; |
1433 | +} |
1434 | + |
1435 | +function c(flag){ |
1436 | + if(flag) |
1437 | + test(1); |
1438 | +} |
1439 | + |
1440 | +function d(){ |
1441 | + var b= 33; |
1442 | +} |
1443 | + |
1444 | +function e(flag){ |
1445 | + if(flag) |
1446 | + test(1) |
1447 | +} |
1448 | + |
1449 | +function f(){ |
1450 | + var b= 33; |
1451 | +} |
1452 | + |
1453 | +function g(flag){ |
1454 | + if(flag) { |
1455 | + test(1) |
1456 | + } |
1457 | +} |
1458 | + |
1459 | +function h(){ |
1460 | + var b= 33; |
1461 | +} |
1462 | + |
1463 | +function i(flag){ |
1464 | + if(flag) { |
1465 | + test(1); |
1466 | + } |
1467 | +} |
1468 | + |
1469 | +function j(){ |
1470 | + var b= 33; |
1471 | +} |
1472 | + |
1473 | +function k(flag){ |
1474 | + if(flag) { |
1475 | + test(1); |
1476 | + } |
1477 | + else |
1478 | + flag = false; |
1479 | +} |
1480 | + |
1481 | +function l(){ |
1482 | + var b= 33; |
1483 | +} |
1484 | + |
1485 | +function m(flag){ |
1486 | + if(flag) { |
1487 | + test(1); |
1488 | + } |
1489 | + else { |
1490 | + flag = false; |
1491 | + } |
1492 | +} |
1493 | + |
1494 | +function n(){ |
1495 | + var b= 33; |
1496 | +} |
1497 | + |
1498 | + |
1499 | |
1500 | === added file 'Test/2023624.js' |
1501 | --- Test/2023624.js 1970-01-01 00:00:00 +0000 |
1502 | +++ Test/2023624.js 2011-03-11 21:16:06 +0000 |
1503 | @@ -0,0 +1,15 @@ |
1504 | +/* |
1505 | + * Both functions should be tagged. |
1506 | + * The embedded quote was fixed in issue: |
1507 | + * [ 1878155 ] Javascript escaped quotation mark brakes output |
1508 | + * [ 2023712 ] parseString for javascript broken on embedded quote |
1509 | + * The fix will be part of the 5.8 release. |
1510 | + */ |
1511 | + |
1512 | +function f1() { |
1513 | +var str = 'This function will be listed.'; |
1514 | +} |
1515 | + |
1516 | +function f2() { |
1517 | +var str = 'This function won\'t.'; |
1518 | +} |
1519 | |
1520 | === added file 'Test/68hc11.asm' |
1521 | --- Test/68hc11.asm 1970-01-01 00:00:00 +0000 |
1522 | +++ Test/68hc11.asm 2011-03-11 21:16:06 +0000 |
1523 | @@ -0,0 +1,23 @@ |
1524 | +INTERRUPTS: |
1525 | +; |
1526 | +PORTD EQU $1008 |
1527 | +; |
1528 | +SP EQU $20 |
1529 | +; |
1530 | +TRAPP FCB CR,LF |
1531 | + FCB CR,LF |
1532 | + FCC ' ******** ILLEGAL OPCODE TRAP !!! ********' |
1533 | + FCB CR,LF |
1534 | + FCB 0 |
1535 | +PROMPT FCB CR,LF |
1536 | + FCC ' 68Mon V1.2 (C) 1992 Keith Vasilakes' |
1537 | + FCB CR,LF |
1538 | + FCB 0 |
1539 | +COLD LDS #STACK |
1540 | + LDAA #$20 |
1541 | + |
1542 | +; http://www.mekatronix.com/downloads/docs/as11_man.pdf |
1543 | +sym1 EQU 1 |
1544 | +sym2: EQU 2 |
1545 | +sym3: |
1546 | +sym4: bne sym3 |
1547 | |
1548 | === added file 'Test/Package.pm' |
1549 | --- Test/Package.pm 1970-01-01 00:00:00 +0000 |
1550 | +++ Test/Package.pm 2011-03-11 21:16:06 +0000 |
1551 | @@ -0,0 +1,57 @@ |
1552 | +# This file is intended to test package keyword support along with |
1553 | +# multi-line subroutine definitions, like this: |
1554 | +# sub |
1555 | +# |
1556 | +# somefunction |
1557 | +# {... |
1558 | + |
1559 | +package Test::One; |
1560 | + |
1561 | +package Test::One::Two; |
1562 | + |
1563 | +package Test; |
1564 | + |
1565 | +use strict; |
1566 | +use warnings; |
1567 | + |
1568 | +sub |
1569 | + |
1570 | + init { |
1571 | +} |
1572 | + |
1573 | +use constant |
1574 | +CONST => 1; |
1575 | + |
1576 | +=head2 quo |
1577 | + |
1578 | +This is 'quo' subroutine |
1579 | + |
1580 | +=cut |
1581 | + |
1582 | +sub quo; |
1583 | + |
1584 | +quo; |
1585 | + |
1586 | +Test::quo; |
1587 | + |
1588 | +sub quo { |
1589 | + goto END; |
1590 | + die; |
1591 | +END: |
1592 | +END2 : |
1593 | + print "END!\n"; |
1594 | + return; |
1595 | +} |
1596 | + |
1597 | +sub xuz :lvalue; |
1598 | + |
1599 | +sub xtz (&@;$) :lvalue; |
1600 | + |
1601 | +sub |
1602 | +# This should create a tag |
1603 | +dude |
1604 | +{ |
1605 | + 1; |
1606 | +} |
1607 | + |
1608 | +1; |
1609 | |
1610 | === added file 'Test/aliases.e' |
1611 | --- Test/aliases.e 1970-01-01 00:00:00 +0000 |
1612 | +++ Test/aliases.e 2011-03-11 21:16:06 +0000 |
1613 | @@ -0,0 +1,29 @@ |
1614 | +class ALIASES |
1615 | + |
1616 | +feature -- One |
1617 | + |
1618 | + attribute_a, attribute_b: INTEGER |
1619 | + |
1620 | + constant_a, constant_b: INTEGER is 1 |
1621 | + |
1622 | +feature -- Two |
1623 | + |
1624 | + function1a, function1b (one: DOUBLE): DOUBLE is |
1625 | + do |
1626 | + end |
1627 | + |
1628 | +feature -- Three |
1629 | + |
1630 | + procedure1a, procedure1b (one: DOUBLE) is |
1631 | + do |
1632 | + end |
1633 | + |
1634 | + a, infix "<", b (other: like Current): BOOLEAN is |
1635 | + do |
1636 | + end |
1637 | + |
1638 | + yor, infix "^", zor (other: like Current): INTEGER is |
1639 | + do |
1640 | + end |
1641 | + |
1642 | +end |
1643 | |
1644 | === added file 'Test/angle_bracket.cpp' |
1645 | --- Test/angle_bracket.cpp 1970-01-01 00:00:00 +0000 |
1646 | +++ Test/angle_bracket.cpp 2011-03-11 21:16:06 +0000 |
1647 | @@ -0,0 +1,16 @@ |
1648 | +static void foo (int nelem) |
1649 | +{ |
1650 | + int rsize = 2; |
1651 | + while (nelem < 0) { |
1652 | + rsize <<= 1; |
1653 | + } |
1654 | +} |
1655 | + |
1656 | +static void bar (int value) |
1657 | +{ |
1658 | + return value < 0 ? value : 3; |
1659 | +} |
1660 | + |
1661 | +static bar2 (void) |
1662 | +{ |
1663 | +} |
1664 | |
1665 | === added file 'Test/array-spec.f90' |
1666 | --- Test/array-spec.f90 1970-01-01 00:00:00 +0000 |
1667 | +++ Test/array-spec.f90 2011-03-11 21:16:06 +0000 |
1668 | @@ -0,0 +1,10 @@ |
1669 | + MODULE inm_df |
1670 | + IMPLICIT none |
1671 | + SAVE |
1672 | + TYPE df_type |
1673 | + REAL(8), POINTER :: & |
1674 | + df_mb_time(:), df_wb_time(:) |
1675 | + REAL(4), POINTER :: & |
1676 | + df_mb_data(:,:), df_wb_data(:,:) |
1677 | + END TYPE |
1678 | + END MODULE inm_df |
1679 | |
1680 | === added file 'Test/array_ref_and_out.cs' |
1681 | --- Test/array_ref_and_out.cs 1970-01-01 00:00:00 +0000 |
1682 | +++ Test/array_ref_and_out.cs 2011-03-11 21:16:06 +0000 |
1683 | @@ -0,0 +1,33 @@ |
1684 | +// Programmer's Reference: Passing Array Using ref and out |
1685 | +public static void MyMethod(out int[] arr) |
1686 | +{ |
1687 | + arr = new int[10]; // definite assignment of arr |
1688 | +} |
1689 | + |
1690 | +public static void MyMethod(ref int[] arr) |
1691 | +{ |
1692 | + arr = new int[10]; // arr initialized to a different array |
1693 | +} |
1694 | + |
1695 | +using System; |
1696 | +class TestOut |
1697 | +{ |
1698 | + static public void FillArray(out int[] myArray) |
1699 | + { |
1700 | + // Initialize the array: |
1701 | + myArray = new int[5] {1, 2, 3, 4, 5}; |
1702 | + } |
1703 | + |
1704 | + static public void Main() |
1705 | + { |
1706 | + int[] myArray; // Initialization is not required |
1707 | + |
1708 | + // Pass the array to the callee using out: |
1709 | + FillArray(out myArray); |
1710 | + |
1711 | + // Display the array elements: |
1712 | + Console.WriteLine("Array elements are:"); |
1713 | + for (int i=0; i < myArray.Length; i++) |
1714 | + Console.WriteLine(myArray[i]); |
1715 | + } |
1716 | +} |
1717 | |
1718 | === added file 'Test/array_spec.f90' |
1719 | --- Test/array_spec.f90 1970-01-01 00:00:00 +0000 |
1720 | +++ Test/array_spec.f90 2011-03-11 21:16:06 +0000 |
1721 | @@ -0,0 +1,15 @@ |
1722 | +! Bug reported by Jim Chen on 31 Dec 2002 |
1723 | +module Global_Variables |
1724 | +implicit none |
1725 | + |
1726 | +! Example of array-spec in entity-decl |
1727 | +real*8, save :: & |
1728 | +H (NDIM, NDIM) = 0.D0, & |
1729 | +H0(NDIM, NDIM), & |
1730 | +H1(NDIM, NDIM) = 0.D0, & |
1731 | +H2(NDIM, NDIM) = 0.D0, & |
1732 | +H3(NDIM, NDIM) = 0.D0, & |
1733 | +H4(NDIM, NDIM) = 0.D0, & |
1734 | +H5(NDIM, NDIM) = 0.D0 |
1735 | + |
1736 | +end module Global_Variables |
1737 | |
1738 | === added file 'Test/attributes.cs' |
1739 | --- Test/attributes.cs 1970-01-01 00:00:00 +0000 |
1740 | +++ Test/attributes.cs 2011-03-11 21:16:06 +0000 |
1741 | @@ -0,0 +1,22 @@ |
1742 | +[DllImport] public class MyDllimportClass {} |
1743 | + |
1744 | +[DllImport("user32.dll", SetLastError=false, ExactSpelling=false)] |
1745 | +[DllImport("user32.dll", ExactSpelling=false, SetLastError=false)] |
1746 | +[DllImport("user32.dll")] |
1747 | + |
1748 | +[Conditional("DEBUG"), Conditional("TEST1")] void TraceMethod() {} |
1749 | + |
1750 | +using System; |
1751 | +[AttributeUsage(AttributeTargets.Class|AttributeTargets.Struct)] |
1752 | +public class Author : Attribute |
1753 | +{ |
1754 | + public Author(string name) { this.name = name; version = 1.0; } |
1755 | + public double version; |
1756 | + string name; |
1757 | +} |
1758 | + |
1759 | +[AttributeUsage(AttributeTargets.Class|AttributeTargets.Struct, |
1760 | + AllowMultiple=true)] // multiuse attribute |
1761 | +public class Author : Attribute |
1762 | +{ |
1763 | +} |
1764 | |
1765 | === added file 'Test/attributes.e' |
1766 | --- Test/attributes.e 1970-01-01 00:00:00 +0000 |
1767 | +++ Test/attributes.e 2011-03-11 21:16:06 +0000 |
1768 | @@ -0,0 +1,31 @@ |
1769 | +expanded class ATTRIBUTES |
1770 | + |
1771 | +feature |
1772 | + |
1773 | + one: INTEGER |
1774 | + -- Header comment |
1775 | + |
1776 | + two: ARRAY [STRING] |
1777 | + -- Header comment |
1778 | + |
1779 | + three: HASH_TABLE [ARRAY [DOUBLE], STRING] |
1780 | + -- Header comment |
1781 | + |
1782 | + four: DOUBLE |
1783 | + -- Header comment |
1784 | + |
1785 | + five, six: INTEGER is unique |
1786 | + -- Header comment |
1787 | + |
1788 | + seven: INTEGER is 1 |
1789 | + -- Header comment |
1790 | + |
1791 | + eight: DOUBLE is 2.0 |
1792 | + -- Header comment |
1793 | + |
1794 | + nine: STRING is "abc" |
1795 | + -- Header comment |
1796 | + |
1797 | + anchored: like one |
1798 | + |
1799 | +end |
1800 | |
1801 | === added file 'Test/auto.f' |
1802 | --- Test/auto.f 1970-01-01 00:00:00 +0000 |
1803 | +++ Test/auto.f 2011-03-11 21:16:06 +0000 |
1804 | @@ -0,0 +1,7 @@ |
1805 | +! Provided by Brian Helsinki, 7 March 2003 |
1806 | + program AUTO_TEST |
1807 | + AUTOMATIC A, B, C |
1808 | + AUTOMATIC REAL P, D, Q |
1809 | + !IMPLICIT AUTOMATIC REAL (X-Z) |
1810 | + END |
1811 | + |
1812 | |
1813 | === added file 'Test/bd32.s' |
1814 | --- Test/bd32.s 1970-01-01 00:00:00 +0000 |
1815 | +++ Test/bd32.s 2011-03-11 21:16:06 +0000 |
1816 | @@ -0,0 +1,43 @@ |
1817 | +* From: http://www.programmersheaven.com/zone5/cat462/3642.htm |
1818 | +* For 68000 assembler manual, see http://www.ece.iit.edu/ftp/242/Asm.doc |
1819 | +* |
1820 | +* test driver for BD32 programming command |
1821 | +* Scott Howard February 1992 |
1822 | +* Format: TEST <parameter 1> [<parameter 2> ...] |
1823 | +* simply echoes the command line parameters back to the user |
1824 | + |
1825 | + opt nol |
1826 | + include ipd.inc |
1827 | + opt l |
1828 | + dc.l TEST execution address |
1829 | +signon dc.b 'TEST PROGRAM for BD32 programming drivers' |
1830 | +CRLF dc.b 13,10,0 <cr>, <lf>, null |
1831 | + even |
1832 | + |
1833 | +* following is the mainline routine for the driver |
1834 | + |
1835 | +TEST move.l a0,a1 get argv in a1 |
1836 | + move.l d0,d2 get argc |
1837 | + lea.l signon(PC),a0 print signon string |
1838 | + moveq.l #BD_PUTS,d0 use 'putstring' function in BD32 |
1839 | + bgnd |
1840 | + cmpi.l #2,d2 arg count < 2? |
1841 | + bcc test_1 |
1842 | + moveq.l #1,d1 bail out - error code 1 |
1843 | + bra test_error |
1844 | +test_1 moveq.l #BD_PUTS,d0 puts () system call |
1845 | + movea.l (a1)+,a0 point to next string |
1846 | + bgnd |
1847 | + moveq.l #' ',d1 print space between each one |
1848 | + moveq.l #BD_PUTCHAR,d0 |
1849 | + bgnd |
1850 | + subq #1,d2 |
1851 | + bne test_1 loop till done |
1852 | + lea.l CRLF(PC),a0 point to <cr> <lf> string |
1853 | + moveq.l #BD_PUTS,d0 display it on user screen |
1854 | + bgnd |
1855 | + clr.l d1 indicate 'no error' to BD32 |
1856 | +test_error moveq.l #BD_QUIT,d0 all done - quit |
1857 | + bgnd |
1858 | + |
1859 | + END TEST |
1860 | |
1861 | === added file 'Test/bit_field.c' |
1862 | --- Test/bit_field.c 1970-01-01 00:00:00 +0000 |
1863 | +++ Test/bit_field.c 2011-03-11 21:16:06 +0000 |
1864 | @@ -0,0 +1,35 @@ |
1865 | +struct bit_fields { |
1866 | + unsigned int a: 1; |
1867 | + unsigned int b: 1; |
1868 | + unsigned int c: 2; |
1869 | +}; |
1870 | + |
1871 | +struct { |
1872 | + unsigned sign : 1; |
1873 | + unsigned exp : _FP_EXPBITS_D; |
1874 | + unsigned frac1 : _FP_FRACBITS_D - (_FP_IMPLBIT_D != 0) - _FP_W_TYPE_SIZE; |
1875 | + unsigned frac0 : _FP_W_TYPE_SIZE; |
1876 | +}; |
1877 | + |
1878 | +struct shortname_info { |
1879 | + unsigned char lower:1, |
1880 | + upper:1, |
1881 | + valid:1; |
1882 | +}; |
1883 | + |
1884 | +// Problem reported by Michael Brown on 23 October 2001. |
1885 | +typedef struct |
1886 | +{ |
1887 | + BYTE public: 1; |
1888 | + BYTE bad2: 1; |
1889 | + BYTE group: 1; |
1890 | + BYTE personal: 1; |
1891 | +} bitfield_flags; |
1892 | + |
1893 | +typedef struct |
1894 | +{ |
1895 | + BYTE this; |
1896 | + BYTE public; |
1897 | + BYTE private; |
1898 | + BYTE that; |
1899 | +} mystruct; |
1900 | |
1901 | === added file 'Test/bug1020715.c' |
1902 | --- Test/bug1020715.c 1970-01-01 00:00:00 +0000 |
1903 | +++ Test/bug1020715.c 2011-03-11 21:16:06 +0000 |
1904 | @@ -0,0 +1,52 @@ |
1905 | +/* |
1906 | +Bugs item #1020715, was opened at 2004-09-01 22:42 |
1907 | +Message generated for change (Tracker Item Submitted) made by Item Submitter |
1908 | +You can respond by visiting: |
1909 | +https://sourceforge.net/tracker/?func=detail&atid=106556&aid=1020715&group_id=6556 |
1910 | + |
1911 | +Category: None |
1912 | +Group: None |
1913 | +Status: Open |
1914 | +Resolution: None |
1915 | +Priority: 5 |
1916 | +Submitted By: Arne Georg Gleditsch (argggh) |
1917 | +Assigned to: Nobody/Anonymous (nobody) |
1918 | +Summary: Strange parsing of C code |
1919 | + |
1920 | +Initial Comment: |
1921 | +Running ctags 5.5.4 like this |
1922 | + |
1923 | +/usr/local/bin/ctags --fields=+S --excmd=number -f - --c-types=+l /usr/src/source/2.6.6/drivers/scsi/aha152x.c | grep ^done |
1924 | + |
1925 | +returns a bogus entry for the function "done" on line |
1926 | +1745 with a wacky signature. The file aha152x.c is |
1927 | +from Linux 2.6.6, but is appended for convenience. |
1928 | +*/ |
1929 | +/* |
1930 | +Date: 2007-08-14 01:00 |
1931 | +Sender: elliotth |
1932 | +Hide |
1933 | + |
1934 | +i don't really understand why the other lines in the test case were |
1935 | +necessary to exercise the bug, but changing parseParens to call |
1936 | +processAngleBracket instead of just skipToMatch("<>") fixes this bug. i've |
1937 | +committed that since it causes no regressions. |
1938 | + |
1939 | + |
1940 | +Date: 2007-08-14 00:34 |
1941 | +Sender: elliotth |
1942 | +Hide |
1943 | + |
1944 | +i've come up with a minimal test case, and committed it. it's pretty |
1945 | +weird: |
1946 | +*/ |
1947 | +void f() { |
1948 | + done(a<<1); |
1949 | + a->a; |
1950 | + if (a->a) { |
1951 | + } |
1952 | +} |
1953 | +/* |
1954 | +change just about anything and the bizarre "done" tag goes away. you can't |
1955 | +even switch from '->' to '.', which seems odd. |
1956 | +*/ |
1957 | |
1958 | === added file 'Test/bug1020715.cpp' |
1959 | --- Test/bug1020715.cpp 1970-01-01 00:00:00 +0000 |
1960 | +++ Test/bug1020715.cpp 2011-03-11 21:16:06 +0000 |
1961 | @@ -0,0 +1,6 @@ |
1962 | +void f() { |
1963 | + done(a<<1); |
1964 | + a->a; |
1965 | + if (a->a) { |
1966 | + } |
1967 | +} |
1968 | |
1969 | === added file 'Test/bug1085585.c' |
1970 | --- Test/bug1085585.c 1970-01-01 00:00:00 +0000 |
1971 | +++ Test/bug1085585.c 2011-03-11 21:16:06 +0000 |
1972 | @@ -0,0 +1,37 @@ |
1973 | +/* |
1974 | +Bugs item #1085585, was opened at 2004-12-14 20:55 |
1975 | +Message generated for change (Tracker Item Submitted) made by Item Submitter |
1976 | +You can respond by visiting: |
1977 | +https://sourceforge.net/tracker/?func=detail&atid=106556&aid=1085585&group_id=6556 |
1978 | + |
1979 | +Category: None |
1980 | +Group: None |
1981 | +Status: Open |
1982 | +Resolution: None |
1983 | +Priority: 5 |
1984 | +Submitted By: boisterous (yadavnav) |
1985 | +Assigned to: Nobody/Anonymous (nobody) |
1986 | +Summary: ctags 5.5.4 doesn't work correctly on some files |
1987 | + |
1988 | +Initial Comment: |
1989 | +Hi, |
1990 | + |
1991 | +I ran exuberant ctags on the following file |
1992 | + |
1993 | +FreeBSD kernel : src/sys/crypto/des/des_setkey.c |
1994 | + |
1995 | +If I run the 5.5.4 ctags on version 1.3 of the above |
1996 | +file then it doesn't produce all the tags |
1997 | + |
1998 | +The version 1.3 is at: |
1999 | + |
2000 | +http://www.freebsd.org/cgi/cvsweb.cgi/src/sys/crypto/des/des_setkey.c?rev=1.3&content-type=text/x-cvsweb-markup |
2001 | + |
2002 | +[...] |
2003 | + |
2004 | +Why does ctags fail on the 1.3 version of the file ? |
2005 | +*/ |
2006 | + |
2007 | +/* relevant portion from file */ |
2008 | +static int check_parity(des_cblock (*key)); |
2009 | +int des_check_key=0; |
2010 | |
2011 | === added file 'Test/bug1086609.c' |
2012 | --- Test/bug1086609.c 1970-01-01 00:00:00 +0000 |
2013 | +++ Test/bug1086609.c 2011-03-11 21:16:06 +0000 |
2014 | @@ -0,0 +1,41 @@ |
2015 | +/* |
2016 | +Bugs item #1086609, was opened at 2004-12-16 13:07 |
2017 | +Message generated for change (Tracker Item Submitted) made by Item Submitter |
2018 | +You can respond by visiting: |
2019 | +https://sourceforge.net/tracker/?func=detail&atid=106556&aid=1086609&group_id=6556 |
2020 | + |
2021 | +Category: None |
2022 | +Group: None |
2023 | +Status: Open |
2024 | +Resolution: None |
2025 | +Priority: 5 |
2026 | +Submitted By: Mikhail Kruk (meshko) |
2027 | +Assigned to: Nobody/Anonymous (nobody) |
2028 | +Summary: ctags getting confused by #if 0 |
2029 | + |
2030 | +Initial Comment: |
2031 | +Here is a sample C program which confuses ctags. I |
2032 | +think every line in it is significant. Dropping any of |
2033 | +the #ifdefs or the #define makes the problem go away: |
2034 | +*/ |
2035 | +#if 0 |
2036 | +#define __PROC__ |
2037 | +int func1( |
2038 | +#if 0 |
2039 | +#endif |
2040 | +) |
2041 | +{ |
2042 | +} |
2043 | +#endif |
2044 | + |
2045 | +int func2(int a) |
2046 | +{ |
2047 | +} |
2048 | +/* |
2049 | +Somehow the opening brace from line 3 doesn't get |
2050 | +ignored and the closing brace does get ignored and |
2051 | +ctags drops out on "int func2(int a)" line with "failed |
2052 | +to find match for '(' at line 11" error. |
2053 | +Granted, having #if 0 in the middle of args list is |
2054 | +weird, but perfeclty legal. |
2055 | +*/ |
2056 | |
2057 | === added file 'Test/bug1093123.cpp' |
2058 | --- Test/bug1093123.cpp 1970-01-01 00:00:00 +0000 |
2059 | +++ Test/bug1093123.cpp 2011-03-11 21:16:06 +0000 |
2060 | @@ -0,0 +1,7 @@ |
2061 | +#include <iostream> |
2062 | + |
2063 | +int main() { |
2064 | +using namespace std; |
2065 | +cout << 0 << endl; |
2066 | +int m; |
2067 | +} |
2068 | |
2069 | === added file 'Test/bug1111214-j-chan.v' |
2070 | --- Test/bug1111214-j-chan.v 1970-01-01 00:00:00 +0000 |
2071 | +++ Test/bug1111214-j-chan.v 2011-03-11 21:16:06 +0000 |
2072 | @@ -0,0 +1,8 @@ |
2073 | +/* |
2074 | +* |
2075 | +**/ |
2076 | +module top(outsig, insig); |
2077 | +output outsig; |
2078 | +input insig; |
2079 | +assign outsig = insig; |
2080 | +endmodule |
2081 | |
2082 | === added file 'Test/bug1111214.v' |
2083 | --- Test/bug1111214.v 1970-01-01 00:00:00 +0000 |
2084 | +++ Test/bug1111214.v 2011-03-11 21:16:06 +0000 |
2085 | @@ -0,0 +1,17 @@ |
2086 | +// File example.v |
2087 | +// |
2088 | +// Below is an example of a comment that is mis-parsed by exuberant ctags. |
2089 | +// It uses the multi-line comment format, i.e. /* ... */ except that in |
2090 | +// this case, the character sequence immediately preceeding the closing |
2091 | +// delimiter is an asterisk. (Any even number of asterisks would have the |
2092 | +// same problem. |
2093 | +// The line immediately afterwards is used to demonstrate the problem. |
2094 | +// the module name 'wahoo' isn't recognised, because the parser mistakenly |
2095 | +// thinks we are still in a multi-line comment. |
2096 | +/* |
2097 | + * I am a multi-line comment |
2098 | + * I happen to end in a strange |
2099 | + * (but legal) way: **/ |
2100 | +module wahoo () |
2101 | +begin |
2102 | +end |
2103 | |
2104 | === added file 'Test/bug1187505.cpp' |
2105 | --- Test/bug1187505.cpp 1970-01-01 00:00:00 +0000 |
2106 | +++ Test/bug1187505.cpp 2011-03-11 21:16:06 +0000 |
2107 | @@ -0,0 +1,5 @@ |
2108 | +MY_MACRO(qwerty < 1); |
2109 | + |
2110 | +class Abra : public Kadabra |
2111 | +{ |
2112 | +}; |
2113 | |
2114 | === added file 'Test/bug1201689.c' |
2115 | --- Test/bug1201689.c 1970-01-01 00:00:00 +0000 |
2116 | +++ Test/bug1201689.c 2011-03-11 21:16:06 +0000 |
2117 | @@ -0,0 +1,35 @@ |
2118 | +/* |
2119 | +Bugs item #1201689, was opened at 2005-05-13 18:18 |
2120 | +Message generated for change (Tracker Item Submitted) made by Item Submitter |
2121 | +You can respond by visiting: |
2122 | +https://sourceforge.net/tracker/?func=detail&atid=106556&aid=1201689&group_id=6556 |
2123 | + |
2124 | +Category: None |
2125 | +Group: None |
2126 | +Status: Open |
2127 | +Resolution: None |
2128 | +Priority: 5 |
2129 | +Submitted By: Scott Ferguson (shf301) |
2130 | +Assigned to: Nobody/Anonymous (nobody) |
2131 | +Summary: Variable Length Argument Lists in K&R Style not Parsed |
2132 | + |
2133 | +Initial Comment: |
2134 | +A function with a K&R style parameter list that has a |
2135 | +variable length argument list will not be added to the tags file. |
2136 | + |
2137 | +For example create a file, say test.c with the following code |
2138 | +*/ |
2139 | +void test(a, ...) |
2140 | +char a; |
2141 | +{ |
2142 | + return; |
2143 | +} |
2144 | +/* |
2145 | +Run ctags test.c. the tags file with only contain the line: |
2146 | + a test.c /^char a;$/;" v |
2147 | + |
2148 | +This occurs with ctags 5.3 and 5.5.4. |
2149 | + |
2150 | +Variable length argument lists work fine if the function is in |
2151 | +ANSI style, void test(char a, ...) will work fine. |
2152 | +*/ |
2153 | |
2154 | === added file 'Test/bug1324663.sql' |
2155 | --- Test/bug1324663.sql 1970-01-01 00:00:00 +0000 |
2156 | +++ Test/bug1324663.sql 2011-03-11 21:16:06 +0000 |
2157 | @@ -0,0 +1,4 @@ |
2158 | +-- The sql parser would go into an endless loop with the open but no closing comment. |
2159 | +-- ctags -f - --format=2 --excmd=pattern --fields=nks --sort=no --sql-types=cdfFlLPprstTvieURDVnxy bug1324663.sql |
2160 | +-- |
2161 | +'\'/*' |
2162 | |
2163 | === added file 'Test/bug1428714.sql' |
2164 | --- Test/bug1428714.sql 1970-01-01 00:00:00 +0000 |
2165 | +++ Test/bug1428714.sql 2011-03-11 21:16:06 +0000 |
2166 | @@ -0,0 +1,4 @@ |
2167 | +-- The sql parser would go into an endless loop with the open but no closing comment. |
2168 | +-- ctags -f - --format=2 --excmd=pattern --fields=nks --sort=no --sql-types=cdfFlLPprstTvieURDVnxy bug1428714.sql |
2169 | +-- |
2170 | +/* |
2171 | |
2172 | === added file 'Test/bug1447756.java' |
2173 | --- Test/bug1447756.java 1970-01-01 00:00:00 +0000 |
2174 | +++ Test/bug1447756.java 2011-03-11 21:16:06 +0000 |
2175 | @@ -0,0 +1,9 @@ |
2176 | +// Java 1.5 generic interfaces appear to be tagged on the |
2177 | +// parameterized type name instead of the interface name, |
2178 | +// e.g., |
2179 | + |
2180 | + public interface Foo<T> { |
2181 | + public T bar(); |
2182 | + } |
2183 | + |
2184 | +// is tagged on 'T' instead of 'Foo'. |
2185 | |
2186 | === added file 'Test/bug1458930.c' |
2187 | --- Test/bug1458930.c 1970-01-01 00:00:00 +0000 |
2188 | +++ Test/bug1458930.c 2011-03-11 21:16:06 +0000 |
2189 | @@ -0,0 +1,3 @@ |
2190 | +// test with --c-kinds=+p |
2191 | +char x(); |
2192 | +wchar_t y(); |
2193 | |
2194 | === added file 'Test/bug1466117.c' |
2195 | --- Test/bug1466117.c 1970-01-01 00:00:00 +0000 |
2196 | +++ Test/bug1466117.c 2011-03-11 21:16:06 +0000 |
2197 | @@ -0,0 +1,10 @@ |
2198 | +typedef struct mystruct { |
2199 | + int a; |
2200 | + int b; |
2201 | +}; |
2202 | + |
2203 | +typedef struct { |
2204 | + int a; |
2205 | + int b; |
2206 | +} mystruct; |
2207 | + |
2208 | |
2209 | === added file 'Test/bug1491666.c' |
2210 | --- Test/bug1491666.c 1970-01-01 00:00:00 +0000 |
2211 | +++ Test/bug1491666.c 2011-03-11 21:16:06 +0000 |
2212 | @@ -0,0 +1,13 @@ |
2213 | +typedef struct { |
2214 | + int |
2215 | + x; |
2216 | + |
2217 | + float |
2218 | + y; |
2219 | +} my_struct; |
2220 | + |
2221 | +void main (void) { |
2222 | + my_struct var1; |
2223 | + my_struct |
2224 | + var2; |
2225 | +} |
2226 | |
2227 | === added file 'Test/bug1515910.cs' |
2228 | --- Test/bug1515910.cs 1970-01-01 00:00:00 +0000 |
2229 | +++ Test/bug1515910.cs 2011-03-11 21:16:06 +0000 |
2230 | @@ -0,0 +1,15 @@ |
2231 | +// Simple generic classes. |
2232 | +public class MyGenericClass1<T> { } |
2233 | + |
2234 | +// Derived enums. |
2235 | +enum Enum1 : byte { |
2236 | + Value1, Values |
2237 | +} |
2238 | + |
2239 | +// Verbatim strings. |
2240 | +public class C { |
2241 | + private string str1 = @"abc\"; |
2242 | + private int int1 = 123; |
2243 | + private string str2 = @"abc\"; |
2244 | + private string str3 = "abc"; |
2245 | +} |
2246 | |
2247 | === added file 'Test/bug1548443.cpp' |
2248 | --- Test/bug1548443.cpp 1970-01-01 00:00:00 +0000 |
2249 | +++ Test/bug1548443.cpp 2011-03-11 21:16:06 +0000 |
2250 | @@ -0,0 +1,9 @@ |
2251 | +union TestUnion |
2252 | +{ |
2253 | +int _number; |
2254 | +}; |
2255 | + |
2256 | +struct TestStruct |
2257 | +{ |
2258 | +int _number; |
2259 | +}; |
2260 | |
2261 | === added file 'Test/bug1563476.cpp' |
2262 | --- Test/bug1563476.cpp 1970-01-01 00:00:00 +0000 |
2263 | +++ Test/bug1563476.cpp 2011-03-11 21:16:06 +0000 |
2264 | @@ -0,0 +1,16 @@ |
2265 | +int g() { |
2266 | +} |
2267 | + |
2268 | +template< typename Accessor, typename bEnable = void > |
2269 | +struct IntroduceBitDef; |
2270 | + |
2271 | +template< typename Accessor > |
2272 | +struct IntroduceBitDef< Accessor, typename |
2273 | +boost::enable_if_c< CoreConfig::VERSION <= 3 >::type > |
2274 | +{ |
2275 | + |
2276 | +// class body here |
2277 | +// anything after this point is not parsed by ctags |
2278 | + int f() { } |
2279 | + |
2280 | +}; |
2281 | |
2282 | === added file 'Test/bug1570779.sql' |
2283 | --- Test/bug1570779.sql 1970-01-01 00:00:00 +0000 |
2284 | +++ Test/bug1570779.sql 2011-03-11 21:16:06 +0000 |
2285 | @@ -0,0 +1,14 @@ |
2286 | +-- This should find the "address" column when --sql-types=r is used |
2287 | +-- ctags -f - --format=2 --excmd=pattern --fields=nks --sort=no --sql-types=cdfFlLPprstTvieURDVnxy bug1570779.sql |
2288 | +-- employees bug1570779.sql /^CREATE TABLE employees ($/;" t line:2 |
2289 | +-- employees.id bug1570779.sql /^ id integer NOT NULL,$/;" F line:3 |
2290 | +-- employees.name bug1570779.sql /^ name varchar(20),$/;" F line:4 |
2291 | +-- employees.address bug1570779.sql /^ address varchar(50),$/;" F line:5 |
2292 | + |
2293 | +CREATE TABLE employees ( |
2294 | + id integer NOT NULL, |
2295 | + name varchar(20), |
2296 | + address varchar(50), |
2297 | + primary key (id) |
2298 | +); |
2299 | + |
2300 | |
2301 | === added file 'Test/bug1575055.cpp' |
2302 | --- Test/bug1575055.cpp 1970-01-01 00:00:00 +0000 |
2303 | +++ Test/bug1575055.cpp 2011-03-11 21:16:06 +0000 |
2304 | @@ -0,0 +1,4 @@ |
2305 | +namespace TheNamespace { |
2306 | + class MyClass { }; |
2307 | + int variable; |
2308 | +} |
2309 | |
2310 | === added file 'Test/bug1585745.cpp' |
2311 | --- Test/bug1585745.cpp 1970-01-01 00:00:00 +0000 |
2312 | +++ Test/bug1585745.cpp 2011-03-11 21:16:06 +0000 |
2313 | @@ -0,0 +1,8 @@ |
2314 | +// Despite the weird whitespace, all these destructors should be recognized and tagged. |
2315 | +Class1::~Class1() { } |
2316 | +Class2::~ Class2() { } |
2317 | +Class3:: ~Class3() { } |
2318 | +Class4:: ~ Class4() { } |
2319 | +class Class5 { |
2320 | + public: ~ Class5() { } |
2321 | +}; |
2322 | |
2323 | === added file 'Test/bug1611054.cs' |
2324 | --- Test/bug1611054.cs 1970-01-01 00:00:00 +0000 |
2325 | +++ Test/bug1611054.cs 2011-03-11 21:16:06 +0000 |
2326 | @@ -0,0 +1,8 @@ |
2327 | +class C { |
2328 | + public String a() { |
2329 | + return @"c:\"; |
2330 | + } |
2331 | + // this tag is missing in ctags 5.6 |
2332 | + public void b() { |
2333 | + } |
2334 | +} |
2335 | |
2336 | === added file 'Test/bug1691412.java' |
2337 | --- Test/bug1691412.java 1970-01-01 00:00:00 +0000 |
2338 | +++ Test/bug1691412.java 2011-03-11 21:16:06 +0000 |
2339 | @@ -0,0 +1,17 @@ |
2340 | +public class C { |
2341 | + @NonNull |
2342 | + @CheckReturnValue(explanation = "When this function returns, the caller can get the Cipher name selected by the user in the Dialog.") |
2343 | + public static DefaultCipherDialog newInstance() { |
2344 | + DefaultCipherDialog instance = new DefaultCipherDialog(); |
2345 | + instance.init(); |
2346 | + return instance; |
2347 | + } |
2348 | + |
2349 | + @Override |
2350 | + public String toString() { return "hello"; } |
2351 | +} |
2352 | + |
2353 | +@Target(ElementType.METHOD) |
2354 | +@Retention(RetentionPolicy.SOURCE) |
2355 | +public @interface CustomAnnotation { |
2356 | +} |
2357 | |
2358 | === added file 'Test/bug1742588.rb' |
2359 | --- Test/bug1742588.rb 1970-01-01 00:00:00 +0000 |
2360 | +++ Test/bug1742588.rb 2011-03-11 21:16:06 +0000 |
2361 | @@ -0,0 +1,7 @@ |
2362 | +class A |
2363 | + def a() |
2364 | + super(" do ") |
2365 | + end |
2366 | + def b() |
2367 | + end |
2368 | +end |
2369 | |
2370 | === added file 'Test/bug1743330.v' |
2371 | --- Test/bug1743330.v 1970-01-01 00:00:00 +0000 |
2372 | +++ Test/bug1743330.v 2011-03-11 21:16:06 +0000 |
2373 | @@ -0,0 +1,5 @@ |
2374 | +// somewhat contrived, but i came across a real-life file that caused this |
2375 | +// crash. |
2376 | +value= |
2377 | +hello/ |
2378 | +world; |
2379 | |
2380 | === added file 'Test/bug1764143.h' |
2381 | --- Test/bug1764143.h 1970-01-01 00:00:00 +0000 |
2382 | +++ Test/bug1764143.h 2011-03-11 21:16:06 +0000 |
2383 | @@ -0,0 +1,27 @@ |
2384 | +static inline void omap1_arch_reset(char mode) |
2385 | +{ |
2386 | + /* |
2387 | + * Workaround for 5912/1611b bug mentioned in sprz209d.pdf p. 28 |
2388 | + * "Global Software Reset Affects Traffic Controller Frequency". |
2389 | + */ |
2390 | + if (cpu_is_omap5912()) { |
2391 | + omap_writew(omap_readw(DPLL_CTL) & ~(1 << 4), |
2392 | + DPLL_CTL); |
2393 | + omap_writew(0x8, ARM_RSTCT1); |
2394 | + } |
2395 | + |
2396 | + if (machine_is_voiceblue()) |
2397 | + voiceblue_reset(); |
2398 | + else |
2399 | + omap_writew(1, ARM_RSTCT1); |
2400 | +} |
2401 | + |
2402 | +static inline void arch_reset(char mode) |
2403 | +{ |
2404 | + if (!cpu_is_omap24xx()) |
2405 | + omap1_arch_reset(mode); |
2406 | + else |
2407 | + omap_prcm_arch_reset(mode); |
2408 | +} |
2409 | + |
2410 | +#endif |
2411 | |
2412 | === added file 'Test/bug1764148' |
2413 | --- Test/bug1764148 1970-01-01 00:00:00 +0000 |
2414 | +++ Test/bug1764148 2011-03-11 21:16:06 +0000 |
2415 | @@ -0,0 +1,2 @@ |
2416 | +#!/usr/bin/python |
2417 | +def PyFunc(msg): print msg |
2418 | |
2419 | === added file 'Test/bug1770479.cpp' |
2420 | --- Test/bug1770479.cpp 1970-01-01 00:00:00 +0000 |
2421 | +++ Test/bug1770479.cpp 2011-03-11 21:16:06 +0000 |
2422 | @@ -0,0 +1,17 @@ |
2423 | +#include <sstream> |
2424 | + |
2425 | +int main (int argc, char **argv) |
2426 | +{ |
2427 | + std::ostringstream a; |
2428 | + a << "a"; |
2429 | + |
2430 | + std::ostringstream b; |
2431 | + b << "b"; |
2432 | + |
2433 | + return 0; |
2434 | +} |
2435 | + |
2436 | +int foo (int i) |
2437 | +{ |
2438 | + return i; |
2439 | +} |
2440 | |
2441 | === added file 'Test/bug1773926.cpp' |
2442 | --- Test/bug1773926.cpp 1970-01-01 00:00:00 +0000 |
2443 | +++ Test/bug1773926.cpp 2011-03-11 21:16:06 +0000 |
2444 | @@ -0,0 +1,12 @@ |
2445 | +#include <stdio.h> |
2446 | + |
2447 | +#define ERROR_HAPPENED |
2448 | 50 |
2449 | |
2450 | |
2451 | |
2452 | +#define OK 2 |
2453 | +#define NEXT_DEFINE 3 |
2454 | + |
2455 | +int main(int argc, char* argv[]) |
2456 | +{ |
2457 | + printf("Hello world\n"); |
2458 | + return 0; |
2459 | +} |
2460 | + |
2461 | |
2462 | === added file 'Test/bug1777340.java' |
2463 | --- Test/bug1777340.java 1970-01-01 00:00:00 +0000 |
2464 | +++ Test/bug1777340.java 2011-03-11 21:16:06 +0000 |
2465 | @@ -0,0 +1,4 @@ |
2466 | +public @interface bug1777340 { |
2467 | + String n() default "ninjas; monkeys!"; |
2468 | + String m(); |
2469 | +} |
2470 | |
2471 | === added file 'Test/bug1777344.java' |
2472 | --- Test/bug1777344.java 1970-01-01 00:00:00 +0000 |
2473 | +++ Test/bug1777344.java 2011-03-11 21:16:06 +0000 |
2474 | @@ -0,0 +1,7 @@ |
2475 | +import java.util.*; |
2476 | +public class bug1777344<K, V> { |
2477 | + private HashMap<K,V> map1; |
2478 | + private HashMap<K,V> map2 = new HashMap<K,V>(), map3; |
2479 | + private boolean b = (1 < 3), c; |
2480 | + private boolean d = 1 < 3, e; |
2481 | +} |
2482 | |
2483 | === added file 'Test/bug1799340.cpp' |
2484 | --- Test/bug1799340.cpp 1970-01-01 00:00:00 +0000 |
2485 | +++ Test/bug1799340.cpp 2011-03-11 21:16:06 +0000 |
2486 | @@ -0,0 +1,3 @@ |
2487 | +std::string & f1() {} |
2488 | +const std::string & f2() {} |
2489 | +std::string const & f3() {} |
2490 | |
2491 | === added file 'Test/bug1799343-1.cpp' |
2492 | --- Test/bug1799343-1.cpp 1970-01-01 00:00:00 +0000 |
2493 | +++ Test/bug1799343-1.cpp 2011-03-11 21:16:06 +0000 |
2494 | @@ -0,0 +1,10 @@ |
2495 | +#include <iostream> |
2496 | +struct C { int x; }; |
2497 | +struct D : ::C { |
2498 | + D() { x = 123; } |
2499 | + ~D() { std::cout << x << std::endl; } |
2500 | +}; |
2501 | +int main(void) { |
2502 | + D d; |
2503 | + return 0; |
2504 | +} |
2505 | |
2506 | === added file 'Test/bug1799343-2.cpp' |
2507 | --- Test/bug1799343-2.cpp 1970-01-01 00:00:00 +0000 |
2508 | +++ Test/bug1799343-2.cpp 2011-03-11 21:16:06 +0000 |
2509 | @@ -0,0 +1,27 @@ |
2510 | +class P { |
2511 | + protected: |
2512 | + int x; |
2513 | +}; |
2514 | + |
2515 | +namespace A { |
2516 | + class P { |
2517 | + protected: |
2518 | + int x; |
2519 | + }; |
2520 | + class Q { |
2521 | + int y; |
2522 | + }; |
2523 | + |
2524 | + namespace C { |
2525 | + class R: ::P, A::Q { |
2526 | + int z; |
2527 | + int f (int v) { return v + x; } |
2528 | + }; |
2529 | + } |
2530 | +} |
2531 | + |
2532 | +namespace B { |
2533 | + class S : A::C::R { |
2534 | + int t; |
2535 | + }; |
2536 | +} |
2537 | |
2538 | === added file 'Test/bug1800065.cs' |
2539 | --- Test/bug1800065.cs 1970-01-01 00:00:00 +0000 |
2540 | +++ Test/bug1800065.cs 2011-03-11 21:16:06 +0000 |
2541 | @@ -0,0 +1,5 @@ |
2542 | +using Gtk; |
2543 | +public class C { |
2544 | + private Gtk.Window window; |
2545 | + private string title; |
2546 | +} |
2547 | |
2548 | === added file 'Test/bug1809024.py' |
2549 | --- Test/bug1809024.py 1970-01-01 00:00:00 +0000 |
2550 | +++ Test/bug1809024.py 2011-03-11 21:16:06 +0000 |
2551 | @@ -0,0 +1,10 @@ |
2552 | + def detach (self): |
2553 | + |
2554 | + model = self.view.props.model |
2555 | + sort_id, sort_order = tree_sortable_get_sort_column_id (model) |
2556 | + if sort_id >= 0: |
2557 | + self.app.state.sort_column = self.find_item_class (id = sort_id) |
2558 | + if sort_order == gtk.SORT_ASCENDING: |
2559 | + self.app.state.sort_order = "ascending" |
2560 | + else: |
2561 | + self.app.state.sort_order = "descending" |
2562 | |
2563 | === added file 'Test/bug1830343.cs' |
2564 | --- Test/bug1830343.cs 1970-01-01 00:00:00 +0000 |
2565 | +++ Test/bug1830343.cs 2011-03-11 21:16:06 +0000 |
2566 | @@ -0,0 +1,8 @@ |
2567 | +class ForEachTest { |
2568 | + static void Main(string[] args) { |
2569 | + int[] fibarray = new int[] { 0, 1, 2, 3, 5, 8, 13 }; |
2570 | + foreach (int i in fibarray) { |
2571 | + System.Console.WriteLine(i); |
2572 | + } |
2573 | + } |
2574 | +} |
2575 | |
2576 | === added file 'Test/bug1830344.cs' |
2577 | --- Test/bug1830344.cs 1970-01-01 00:00:00 +0000 |
2578 | +++ Test/bug1830344.cs 2011-03-11 21:16:06 +0000 |
2579 | @@ -0,0 +1,10 @@ |
2580 | +public class C { |
2581 | + public void m() { |
2582 | + bool flagCheck = true; |
2583 | + if (flagCheck == true) { |
2584 | + Console.WriteLine("true"); |
2585 | + } else { |
2586 | + Console.WriteLine("false"); |
2587 | + } |
2588 | + } |
2589 | +} |
2590 | |
2591 | === added file 'Test/bug1856363.py' |
2592 | --- Test/bug1856363.py 1970-01-01 00:00:00 +0000 |
2593 | +++ Test/bug1856363.py 2011-03-11 21:16:06 +0000 |
2594 | @@ -0,0 +1,9 @@ |
2595 | +#!/usr/bin/python |
2596 | + |
2597 | +def main(): |
2598 | + # A broken ctags will see a function "initely_not_a_function" here. |
2599 | + definitely_not_a_function = 0 |
2600 | + return |
2601 | + |
2602 | +if __name__ == 'main': |
2603 | + main() |
2604 | |
2605 | === added file 'Test/bug1906062.py' |
2606 | --- Test/bug1906062.py 1970-01-01 00:00:00 +0000 |
2607 | +++ Test/bug1906062.py 2011-03-11 21:16:06 +0000 |
2608 | @@ -0,0 +1,4 @@ |
2609 | +include_file = ''' |
2610 | +class (b) |
2611 | +''' |
2612 | + |
2613 | |
2614 | === added file 'Test/bug1907083.cpp' |
2615 | --- Test/bug1907083.cpp 1970-01-01 00:00:00 +0000 |
2616 | +++ Test/bug1907083.cpp 2011-03-11 21:16:06 +0000 |
2617 | @@ -0,0 +1,5 @@ |
2618 | +// All of these should have "class:C", but m2-m4 have "class C::C" with ctags 5.7. |
2619 | +C::T * C::m1() {} |
2620 | +C::T * const C::m2() {} |
2621 | +C::T const * C::m3() {} |
2622 | +C::T const * const C::m4() {} |
2623 | |
2624 | === added file 'Test/bug1924919.cpp' |
2625 | --- Test/bug1924919.cpp 1970-01-01 00:00:00 +0000 |
2626 | +++ Test/bug1924919.cpp 2011-03-11 21:16:06 +0000 |
2627 | @@ -0,0 +1,5 @@ |
2628 | +#include <string> |
2629 | +namespace mud { |
2630 | + std::string MajorVersion; |
2631 | + std::string MinorVersion; |
2632 | +}; |
2633 | |
2634 | === added file 'Test/bug1938565.sql' |
2635 | --- Test/bug1938565.sql 1970-01-01 00:00:00 +0000 |
2636 | +++ Test/bug1938565.sql 2011-03-11 21:16:06 +0000 |
2637 | @@ -0,0 +1,18 @@ |
2638 | +CREATE OR REPLACE PACKAGE demo_pkg |
2639 | +IS |
2640 | + |
2641 | +FUNCTION func1_proto( value in varchar ) RETURNS number; |
2642 | +FUNCTION func2_proto( value in varchar ) RETURN number; |
2643 | + |
2644 | +FUNCTION func1( value in varchar ) RETURNS number IS |
2645 | +BEGIN |
2646 | + RETURN 1; |
2647 | +END func1; |
2648 | + |
2649 | +FUNCTION func2( value in varchar ) RETURN number IS |
2650 | +BEGIN |
2651 | + RETURN 2; |
2652 | +END func2; |
2653 | + |
2654 | +END demo_pkg; |
2655 | +/ |
2656 | |
2657 | === added file 'Test/bug1944150.sql' |
2658 | --- Test/bug1944150.sql 1970-01-01 00:00:00 +0000 |
2659 | +++ Test/bug1944150.sql 2011-03-11 21:16:06 +0000 |
2660 | @@ -0,0 +1,7 @@ |
2661 | +CREATE TRIGGER [tr_d_cash_trade_comment] ON dbo.cash_trade_comment |
2662 | +FOR DELETE |
2663 | +AS |
2664 | +BEGIN |
2665 | +END |
2666 | +GO |
2667 | + |
2668 | |
2669 | === added file 'Test/bug1950327.js' |
2670 | --- Test/bug1950327.js 1970-01-01 00:00:00 +0000 |
2671 | +++ Test/bug1950327.js 2011-03-11 21:16:06 +0000 |
2672 | @@ -0,0 +1,41 @@ |
2673 | +// I've attached the simple test case as bugDemo.js. Trigger the bug by |
2674 | +// uncommenting line 8. Attached are tags files with line 21 commented/not |
2675 | +// commented. This is the current tip, svn r663. |
2676 | +// |
2677 | +// When the container.dirtyTab line is uncommented you see these methods: |
2678 | +// TabChrome.createTabTile |
2679 | +// TabChrome.init |
2680 | +// |
2681 | +// When the container.dirtyTab line is commented you see these methods: |
2682 | +// TabChrome.createTabTile |
2683 | +// TabChrome.destroyTabTile |
2684 | +// TabChrome.init |
2685 | +// |
2686 | +TabChrome.prototype = { |
2687 | + init: function() |
2688 | + { |
2689 | + this.browserMap = new Object(); |
2690 | + }, |
2691 | + createTabTile: function(browser) |
2692 | + { |
2693 | + //container.dirtyTab = {'url': false, 'title':false, 'snapshot':false, '*': false} |
2694 | + return container; |
2695 | + }, |
2696 | + destroyTabTile: function(tile) |
2697 | + { |
2698 | + } |
2699 | +} |
2700 | +Different.prototype = { |
2701 | + init: function() |
2702 | + { |
2703 | + this.browserMap = new Object(); |
2704 | + }, |
2705 | + createTabTile: function(browser) |
2706 | + { |
2707 | + container.dirtyTab = {'url': false, 'title':false, 'snapshot':false, '*': false} |
2708 | + return container; |
2709 | + }, |
2710 | + destroyTabTile: function(tile) |
2711 | + { |
2712 | + } |
2713 | +} |
2714 | |
2715 | === added file 'Test/bug1988026.py' |
2716 | --- Test/bug1988026.py 1970-01-01 00:00:00 +0000 |
2717 | +++ Test/bug1988026.py 2011-03-11 21:16:06 +0000 |
2718 | @@ -0,0 +1,9 @@ |
2719 | + |
2720 | +class testClass: |
2721 | + my_var = 0 |
2722 | + def main(): |
2723 | + pass |
2724 | + |
2725 | +if __name__ == '__main__': testClass.main() |
2726 | + def im_a_function(): |
2727 | + pass |
2728 | |
2729 | === added file 'Test/bug1988027.py' |
2730 | --- Test/bug1988027.py 1970-01-01 00:00:00 +0000 |
2731 | +++ Test/bug1988027.py 2011-03-11 21:16:06 +0000 |
2732 | @@ -0,0 +1,9 @@ |
2733 | +#!/usr/bin/env python |
2734 | +# encoding: utf-8 |
2735 | + |
2736 | + |
2737 | +""" |
2738 | +bla |
2739 | +#""" |
2740 | + |
2741 | +"""make a tarball with all the sources in it; return (distdirname, tarballname)""" |
2742 | |
2743 | === added file 'Test/bug1988130.py' |
2744 | --- Test/bug1988130.py 1970-01-01 00:00:00 +0000 |
2745 | +++ Test/bug1988130.py 2011-03-11 21:16:06 +0000 |
2746 | @@ -0,0 +1,7 @@ |
2747 | +def testFunc(): |
2748 | + print 'The following works now' + '"""' |
2749 | + |
2750 | +def main(): |
2751 | + print 'nothing' |
2752 | + print 'This is another quoted triple string: """.' |
2753 | + return 0 |
2754 | |
2755 | === added file 'Test/bug2049723.java' |
2756 | --- Test/bug2049723.java 1970-01-01 00:00:00 +0000 |
2757 | +++ Test/bug2049723.java 2011-03-11 21:16:06 +0000 |
2758 | @@ -0,0 +1,6 @@ |
2759 | +import javax.annotation.Nonnull; |
2760 | + |
2761 | +public class bug2049723 { |
2762 | + public void m1(String arg) {} |
2763 | + public void m2(@Nonnull String arg) {} |
2764 | +} |
2765 | |
2766 | === added file 'Test/bug2117073.java' |
2767 | --- Test/bug2117073.java 1970-01-01 00:00:00 +0000 |
2768 | +++ Test/bug2117073.java 2011-03-11 21:16:06 +0000 |
2769 | @@ -0,0 +1,12 @@ |
2770 | +public class AAssignmentExp { |
2771 | + public AAssignmentExp(@SuppressWarnings("hiding") TAssign _token_, |
2772 | + @SuppressWarnings("hiding") PLvalue _lvalue_, |
2773 | + @SuppressWarnings("hiding") PExp _exp_) { |
2774 | + setToken(_token_); |
2775 | + setLvalue(_lvalue_); |
2776 | + setExp(_exp_); |
2777 | + } |
2778 | + |
2779 | + @Override void removeChild(@SuppressWarnings("unused") Node child) { |
2780 | + } |
2781 | +} |
2782 | |
2783 | === added file 'Test/bug2374109.vhd' |
2784 | --- Test/bug2374109.vhd 1970-01-01 00:00:00 +0000 |
2785 | +++ Test/bug2374109.vhd 2011-03-11 21:16:06 +0000 |
2786 | @@ -0,0 +1,9 @@ |
2787 | +function Pow2( N, Exp : integer ) return mylib.myinteger is |
2788 | + Variable Result : integer := 1; |
2789 | + |
2790 | +begin |
2791 | + for i in 1 to Exp loop |
2792 | + Result := Result * N; |
2793 | + end loop; |
2794 | + return( Result ); |
2795 | +end Pow; |
2796 | |
2797 | === added file 'Test/bug2411878.cs' |
2798 | --- Test/bug2411878.cs 1970-01-01 00:00:00 +0000 |
2799 | +++ Test/bug2411878.cs 2011-03-11 21:16:06 +0000 |
2800 | @@ -0,0 +1,3 @@ |
2801 | +public class C { |
2802 | + private System.String m_name; |
2803 | +} |
2804 | |
2805 | === added file 'Test/bug2747828.v' |
2806 | --- Test/bug2747828.v 1970-01-01 00:00:00 +0000 |
2807 | +++ Test/bug2747828.v 2011-03-11 21:16:06 +0000 |
2808 | @@ -0,0 +1,1 @@ |
2809 | +parameter ramaddr_0 = {1'b1,9'd0}; |
2810 | |
2811 | === added file 'Test/bug2777310.js' |
2812 | --- Test/bug2777310.js 1970-01-01 00:00:00 +0000 |
2813 | +++ Test/bug2777310.js 2011-03-11 21:16:06 +0000 |
2814 | @@ -0,0 +1,4 @@ |
2815 | +var x = 1; |
2816 | +var z = {}; |
2817 | +var y = []; |
2818 | + |
2819 | |
2820 | === added file 'Test/bug2886870.tex' |
2821 | --- Test/bug2886870.tex 1970-01-01 00:00:00 +0000 |
2822 | +++ Test/bug2886870.tex 2011-03-11 21:16:06 +0000 |
2823 | @@ -0,0 +1,351 @@ |
2824 | +Sample LaTeX file |
2825 | +The name of this file is intro.tex. |
2826 | + |
2827 | +\documentclass[12pt]{article} |
2828 | + |
2829 | +\usepackage{amsmath} % need for subequations |
2830 | +\usepackage{graphicx} % need for figures |
2831 | +\usepackage{verbatim} % useful for program listings |
2832 | +\usepackage{color} % use if color is used in text |
2833 | +\usepackage{subfigure} % use for side-by-side figures |
2834 | +\usepackage{hyperref} % use for hypertext links, including those to external documents and URLs |
2835 | + |
2836 | +% don't need the following. simply use defaults |
2837 | +\setlength{\baselineskip}{16.0pt} % 16 pt usual spacing between lines |
2838 | + |
2839 | +\setlength{\parskip}{3pt plus 2pt} |
2840 | +\setlength{\parindent}{20pt} |
2841 | +\setlength{\oddsidemargin}{0.5cm} |
2842 | +\setlength{\evensidemargin}{0.5cm} |
2843 | +\setlength{\marginparsep}{0.75cm} |
2844 | +\setlength{\marginparwidth}{2.5cm} |
2845 | +\setlength{\marginparpush}{1.0cm} |
2846 | +\setlength{\textwidth}{150mm} |
2847 | + |
2848 | +\begin{comment} |
2849 | +\pagestyle{empty} % use if page numbers not wanted |
2850 | +\end{comment} |
2851 | + |
2852 | +% above is the preamble |
2853 | + |
2854 | +\begin{document} |
2855 | + |
2856 | +\begin{center} |
2857 | +{\large Introduction to \LaTeX} \\ % \\ = new line |
2858 | +\copyright 2006 by Harvey Gould \\ |
2859 | +December 5, 2006 |
2860 | +\end{center} |
2861 | + |
2862 | +\section{Introduction} |
2863 | +\TeX\ looks more difficult than it is. It is |
2864 | +almost as easy as $\pi$. See how easy it is to make special |
2865 | +symbols such as $\alpha$, |
2866 | +$\beta$, $\gamma$, |
2867 | +$\delta$, $\sin x$, $\hbar$, $\lambda$, $\ldots$ We also can make |
2868 | +subscripts |
2869 | +$A_{x}$, $A_{xy}$ and superscripts, $e^x$, $e^{x^2}$, and |
2870 | +$e^{a^b}$. We will use \LaTeX, which is based on \TeX\ and has |
2871 | +many higher-level commands (macros) for formatting, making |
2872 | +tables, etc. More information can be found in Ref.~\cite{latex}. |
2873 | + |
2874 | +We just made a new paragraph. Extra lines and spaces make no |
2875 | +difference. Note that all formulas are enclosed by |
2876 | +\$ and occur in \textit{math mode}. |
2877 | + |
2878 | +The default font is Computer Modern. It includes \textit{italics}, |
2879 | +\textbf{boldface}, |
2880 | +\textsl{slanted}, and \texttt{monospaced} fonts. |
2881 | + |
2882 | +\section{Equations} |
2883 | +Let us see how easy it is to write equations. |
2884 | +\begin{equation} |
2885 | +\Delta =\sum_{i=1}^N w_i (x_i - \bar{x})^2 . |
2886 | +\end{equation} |
2887 | +It is a good idea to number equations, but we can have a |
2888 | +equation without a number by writing |
2889 | +\begin{equation} |
2890 | +P(x) = \frac{x - a}{b - a} , \nonumber |
2891 | +\end{equation} |
2892 | +and |
2893 | +\begin{equation} |
2894 | +g = \frac{1}{2} \sqrt{2\pi} . \nonumber |
2895 | +\end{equation} |
2896 | + |
2897 | +We can give an equation a label so that we can refer to it later. |
2898 | +\begin{equation} |
2899 | +\label{eq:ising} |
2900 | +E = -J \sum_{i=1}^N s_i s_{i+1} , |
2901 | +\end{equation} |
2902 | +Equation~\eqref{eq:ising} expresses the energy of a configuration |
2903 | +of spins in the Ising model.\footnote{It is necessary to process (typeset) a |
2904 | +file twice to get the counters correct.} |
2905 | + |
2906 | +We can define our own macros to save typing. For example, suppose |
2907 | +that we introduce the macros: |
2908 | +\begin{verbatim} |
2909 | + \newcommand{\lb}{{\langle}} |
2910 | + \newcommand{\rb}{{\rangle}} |
2911 | +\end{verbatim} |
2912 | +\newcommand{\lb}{{\langle}} |
2913 | +\newcommand{\rb}{{\rangle}} |
2914 | +Then we can write the average value of $x$ as |
2915 | +\begin{verbatim} |
2916 | +\begin{equation} |
2917 | +\lb x \rb = 3 |
2918 | +\end{equation} |
2919 | +\end{verbatim} |
2920 | +The result is |
2921 | +\begin{equation} |
2922 | +\lb x \rb = 3 . |
2923 | +\end{equation} |
2924 | + |
2925 | +Examples of more complicated equations: |
2926 | +\begin{equation} |
2927 | +I = \! \int_{-\infty}^\infty f(x)\,dx \label{eq:fine}. |
2928 | +\end{equation} |
2929 | +We can do some fine tuning by adding small amounts of horizontal |
2930 | +spacing: |
2931 | +\begin{verbatim} |
2932 | + \, small space \! negative space |
2933 | +\end{verbatim} |
2934 | +as is done in Eq.~\eqref{eq:fine}. |
2935 | + |
2936 | +We also can align several equations: |
2937 | +\begin{align} |
2938 | +a & = b \\ |
2939 | +c &= d , |
2940 | +\end{align} |
2941 | +or number them as subequations: |
2942 | +\begin{subequations} |
2943 | +\begin{align} |
2944 | +a & = b \\ |
2945 | +c &= d . |
2946 | +\end{align} |
2947 | +\end{subequations} |
2948 | + |
2949 | +We can also have different cases: |
2950 | +\begin{equation} |
2951 | +\label{eq:mdiv} |
2952 | +m(T) = |
2953 | +\begin{cases} |
2954 | +0 & \text{$T > T_c$} \\ |
2955 | +\bigl(1 - [\sinh 2 \beta J]^{-4} \bigr)^{\! 1/8} & \text{$T < T_c$} |
2956 | +\end{cases} |
2957 | +\end{equation} |
2958 | +write matrices |
2959 | +\begin{align} |
2960 | +\textbf{T} &= |
2961 | +\begin{pmatrix} |
2962 | +T_{++} \hfill & T_{+-} \\ |
2963 | +T_{-+} & T_{--} \hfill |
2964 | +\end{pmatrix} , \nonumber \\ |
2965 | +& = |
2966 | +\begin{pmatrix} |
2967 | +e^{\beta (J + B)} \hfill & e^{-\beta J} \hfill \\ |
2968 | +e^{-\beta J} \hfill & e^{\beta (J - B)} \hfill |
2969 | +\end{pmatrix}. |
2970 | +\end{align} |
2971 | +and |
2972 | +\newcommand{\rv}{\textbf{r}} |
2973 | +\begin{equation} |
2974 | +\sum_i \vec A \cdot \vec B = -P\!\int\! \rv \cdot |
2975 | +\hat{\mathbf{n}}\, dA = P\!\int \! {\vec \nabla} \cdot \rv\, dV. |
2976 | +\end{equation} |
2977 | + |
2978 | +\section{Tables} |
2979 | +Tables are a little more difficult. TeX |
2980 | +automatically calculates the width of the columns. |
2981 | + |
2982 | +\begin{table}[h] |
2983 | +\begin{center} |
2984 | +\begin{tabular}{|l|l|r|l|} |
2985 | +\hline |
2986 | +lattice & $d$ & $q$ & $T_{\rm mf}/T_c$ \\ |
2987 | +\hline |
2988 | +square & 2 & 4 & 1.763 \\ |
2989 | +\hline |
2990 | +triangular & 2 & 6 & 1.648 \\ |
2991 | +\hline |
2992 | +diamond & 3 & 4 & 1.479 \\ |
2993 | +\hline |
2994 | +simple cubic & 3 & 6 & 1.330 \\ |
2995 | +\hline |
2996 | +bcc & 3 & 8 & 1.260 \\ |
2997 | +\hline |
2998 | +fcc & 3 & 12 & 1.225 \\ |
2999 | +\hline |
3000 | +\end{tabular} |
3001 | +\caption{\label{tab:5/tc}Comparison of the mean-field predictions |
3002 | +for the critical temperature of the Ising model with exact results |
3003 | +and the best known estimates for different spatial dimensions $d$ |
3004 | +and lattice symmetries.} |
3005 | +\end{center} |
3006 | +\end{table} |
3007 | + |
3008 | +\section{Lists} |
3009 | + |
3010 | +Some example of formatted lists include the |
3011 | +following: |
3012 | + |
3013 | +\begin{enumerate} |
3014 | + |
3015 | +\item bread |
3016 | + |
3017 | +\item cheese |
3018 | + |
3019 | +\end{enumerate} |
3020 | + |
3021 | +\begin{itemize} |
3022 | + |
3023 | +\item Tom |
3024 | + |
3025 | +\item Dick |
3026 | + |
3027 | +\end{itemize} |
3028 | + |
3029 | +\section{Figures} |
3030 | + |
3031 | +We can make figures bigger or smaller by scaling them. Figure~\ref{fig:lj} |
3032 | +has been scaled by 60\%. |
3033 | + |
3034 | +\begin{figure}[h] |
3035 | +\begin{center} |
3036 | +\includegraphics{figures/sine} |
3037 | +\caption{\label{fig:typical}Show me a sine.} |
3038 | +\end{center} |
3039 | +\end{figure} |
3040 | + |
3041 | +\begin{figure}[h] |
3042 | +\begin{center} |
3043 | +\scalebox{0.6}{\includegraphics{figures/lj}} |
3044 | +\caption{\label{fig:lj}Plot of the |
3045 | +Lennard-Jones potential |
3046 | +$u(r)$. The potential is characterized by a length |
3047 | +$\sigma$ and an energy |
3048 | +$\epsilon$.} |
3049 | +\end{center} |
3050 | +\end{figure} |
3051 | + |
3052 | +\section{Literal text} |
3053 | +It is desirable to print program code exactly as it is typed in a |
3054 | +monospaced font. Use \verb \begin{verbatim} and |
3055 | +\verb \end{verbatim} as in the following example: |
3056 | +\begin{verbatim} |
3057 | +double y0 = 10; // example of declaration and assignment statement |
3058 | +double v0 = 0; // initial velocity |
3059 | +double t = 0; // time |
3060 | +double dt = 0.01; // time step |
3061 | +double y = y0; |
3062 | +\end{verbatim} |
3063 | +The command \verb \verbatiminput{programs/Square.java}\ allows |
3064 | +you to list the file \texttt{Square.java} in the directory |
3065 | +programs. |
3066 | + |
3067 | +\section{Special Symbols} |
3068 | + |
3069 | +\subsection{Common Greek letters} |
3070 | + |
3071 | +These commands may be used only in math mode. Only the most common |
3072 | +letters are included here. |
3073 | + |
3074 | +$\alpha, |
3075 | +\beta, \gamma, \Gamma, |
3076 | +\delta,\Delta, |
3077 | +\epsilon, \zeta, \eta, \theta, \Theta, \kappa, |
3078 | +\lambda, \Lambda, \mu, \nu, |
3079 | +\xi, \Xi, |
3080 | +\pi, \Pi, |
3081 | +\rho, |
3082 | +\sigma, |
3083 | +\tau, |
3084 | +\phi, \Phi, |
3085 | +\chi, |
3086 | +\psi, \Psi, |
3087 | +\omega, \Omega$ |
3088 | +\subsubsection{Test for ctags} |
3089 | +\subsection{Special symbols} |
3090 | + |
3091 | +The derivative is defined as |
3092 | +\begin{equation} |
3093 | +\frac{dy}{dx} = \lim_{\Delta x \to 0} \frac{\Delta y} |
3094 | +{\Delta x} |
3095 | +\end{equation} |
3096 | +\begin{equation} |
3097 | +f(x) \to y \quad \mbox{as} \quad x \to |
3098 | +x_{0} |
3099 | +\end{equation} |
3100 | +\begin{equation} |
3101 | +f(x) \mathop {\longrightarrow} |
3102 | +\limits_{x \to x_0} y |
3103 | +\end{equation} |
3104 | + |
3105 | +\noindent Order of magnitude: |
3106 | +\begin{equation} |
3107 | +\log_{10}f \simeq n |
3108 | +\end{equation} |
3109 | +\begin{equation} |
3110 | +f(x)\sim 10^{n} |
3111 | +\end{equation} |
3112 | +Approximate equality: |
3113 | +\begin{equation} |
3114 | +f(x)\simeq g(x) |
3115 | +\end{equation} |
3116 | +\LaTeX\ is simple if we keep everything in proportion: |
3117 | +\begin{equation} |
3118 | +f(x) \propto x^3 . |
3119 | +\end{equation} |
3120 | + |
3121 | +Finally we can skip some space by using commands such as |
3122 | +\begin{verbatim} |
3123 | +\bigskip \medskip \smallskip \vspace{1pc} |
3124 | +\end{verbatim} |
3125 | +The space can be negative. |
3126 | + |
3127 | +\section{\color{red}Use of Color} |
3128 | + |
3129 | +{\color{blue}{We can change colors for emphasis}}, |
3130 | +{\color{green}{but}} {\color{cyan}{who is going pay for the ink?}} |
3131 | + |
3132 | +\section{\label{morefig}Subfigures} |
3133 | + |
3134 | +As soon as many students start becoming comfortable using \LaTeX, they want |
3135 | +to use some of its advanced features. So we now show how to place two |
3136 | +figures side by side. |
3137 | + |
3138 | +\begin{figure}[h!] |
3139 | +\begin{center} |
3140 | +\subfigure[Real and imaginary.]{ |
3141 | +\includegraphics[scale=0.5]{figures/reim}} |
3142 | +\subfigure[Amplitude and phase.]{ |
3143 | +\includegraphics[scale=0.5]{figures/phase}} |
3144 | +\caption{\label{fig:qm/complexfunctions} Two representations of complex |
3145 | +wave functions.} |
3146 | +\end{center} |
3147 | +\end{figure} |
3148 | + |
3149 | +We first have to include the necessary package, |
3150 | +\verb+\usepackage{subfigure}+, which has to go in the preamble (before |
3151 | +\verb+\begin{document}+). It sometimes can be difficult to place a figure in |
3152 | +the desired place. |
3153 | + |
3154 | +Your LaTeX document can be easily modified to make a poster or a screen |
3155 | +presentation similar to (and better than) PowerPoint. Conversion to HTML is |
3156 | +straightforward. Comments on this tutorial are appreciated. |
3157 | + |
3158 | +\begin{thebibliography}{5} |
3159 | + |
3160 | +\bibitem{latex}Helmut Kopka and Patrick W. Daly, \textsl{A Guide to |
3161 | +\LaTeX: Document Preparation for Beginners and Advanced Users}, |
3162 | +fourth edition, Addison-Wesley (2004). |
3163 | + |
3164 | +\bibitem{website}Some useful links are |
3165 | +given at \url{}. |
3166 | + |
3167 | +\end{thebibliography} |
3168 | + |
3169 | +{\small \noindent Updated 5 December 2006.} |
3170 | +\end{document} |
3171 | + |
3172 | +Updated 6 February 2006. |
3173 | + |
3174 | + |
3175 | |
3176 | === added file 'Test/bug2888482.js' |
3177 | --- Test/bug2888482.js 1970-01-01 00:00:00 +0000 |
3178 | +++ Test/bug2888482.js 2011-03-11 21:16:06 +0000 |
3179 | @@ -0,0 +1,12 @@ |
3180 | +function scrollEditBox() { |
3181 | + var editBoxEl = document.getElementById("wpTextbox1"); |
3182 | + var scrollTopEl = document.getElementById("wpScrolltop"); |
3183 | + var editFormEl = document.getElementById("editform"); |
3184 | + |
3185 | + if (editBoxEl && scrollTopEl) { |
3186 | + if (scrollTopEl.value) editBoxEl.scrollTop = scrollTopEl.value; |
3187 | + editFormEl.onsubmit = function() { |
3188 | + document.getElementById("wpScrolltop").value = document.getElementById("wpTextbox1").scrollTop; |
3189 | + } |
3190 | + } |
3191 | +} |
3192 | |
3193 | === added file 'Test/bug2959889.mak' |
3194 | --- Test/bug2959889.mak 1970-01-01 00:00:00 +0000 |
3195 | +++ Test/bug2959889.mak 2011-03-11 21:16:06 +0000 |
3196 | @@ -0,0 +1,1 @@ |
3197 | +{ |
3198 | \ No newline at end of file |
3199 | |
3200 | === added file 'Test/bug2961855.sql' |
3201 | --- Test/bug2961855.sql 1970-01-01 00:00:00 +0000 |
3202 | +++ Test/bug2961855.sql 2011-03-11 21:16:06 +0000 |
3203 | @@ -0,0 +1,19 @@ |
3204 | +// When it should be demo_pkg.test_func and demo_pkg.test_var |
3205 | +// Tags are created for: |
3206 | +// packages |
3207 | +// demo_pkg |
3208 | +// variables |
3209 | +// test_var |
3210 | +// |
3211 | +// But no tags for the function. |
3212 | +// |
3213 | +// |
3214 | +create or replace package demo_pkg is |
3215 | +test_var number; |
3216 | + |
3217 | +function test_func return varchar2; |
3218 | +function more.test_func2 return varchar2; |
3219 | +function test_func3 return varchar2; |
3220 | + |
3221 | +end demo_pkg; |
3222 | + |
3223 | |
3224 | === added file 'Test/bug3032253.vim' |
3225 | --- Test/bug3032253.vim 1970-01-01 00:00:00 +0000 |
3226 | +++ Test/bug3032253.vim 2011-03-11 21:16:06 +0000 |
3227 | @@ -0,0 +1,5 @@ |
3228 | +" ctags will hang when it attempts to process this line |
3229 | + command. |
3230 | + command!. |
3231 | + comma!. |
3232 | + comma! ThisIsValid |
3233 | |
3234 | === added file 'Test/bug507864.c' |
3235 | --- Test/bug507864.c 1970-01-01 00:00:00 +0000 |
3236 | +++ Test/bug507864.c 2011-03-11 21:16:06 +0000 |
3237 | @@ -0,0 +1,2 @@ |
3238 | +FUNCSTS func1(ENTSEQNO(seq)) {} |
3239 | +FUNCSTS func2 (MEMTXT(form_msg), MEMTXT (text), MEMTXT (mail)) {} |
3240 | |
3241 | === added file 'Test/bug538629.asm' |
3242 | --- Test/bug538629.asm 1970-01-01 00:00:00 +0000 |
3243 | +++ Test/bug538629.asm 2011-03-11 21:16:06 +0000 |
3244 | @@ -0,0 +1,1 @@ |
3245 | + MYMACRO EQU 01234h |
3246 | |
3247 | === added file 'Test/bug556645.c' |
3248 | --- Test/bug556645.c 1970-01-01 00:00:00 +0000 |
3249 | +++ Test/bug556645.c 2011-03-11 21:16:06 +0000 |
3250 | @@ -0,0 +1,39 @@ |
3251 | +/* |
3252 | +From noreply@sourceforge.net Wed May 29 23:11:25 2002 |
3253 | +Date: Wed, 15 May 2002 23:25:52 -0700 |
3254 | +From: noreply@sourceforge.net |
3255 | +To: noreply@sourceforge.net |
3256 | +Subject: [ ctags-Bugs-556645 ] Some typedef can not be tagged in C code |
3257 | + |
3258 | +Bugs item #556645, was opened at 2002-05-16 14:25 |
3259 | +You can respond by visiting: |
3260 | +http://sourceforge.net/tracker/?func=detail&atid=106556&aid=556645&group_id=6556 |
3261 | + |
3262 | +Category: None |
3263 | +Group: None |
3264 | +Status: Open |
3265 | +Resolution: None |
3266 | +Priority: 5 |
3267 | +Submitted By: Howard Wu (howardhbwu) |
3268 | +Assigned to: Nobody/Anonymous (nobody) |
3269 | +Summary: Some typedef can not be tagged in C code |
3270 | + |
3271 | +Initial Comment: |
3272 | +My Ctags version:5.2.3 |
3273 | + |
3274 | +The typedef of "Qtype" as the following, |
3275 | + |
3276 | +*/ |
3277 | +#define A1(_type, _length) \ |
3278 | +struct { \ |
3279 | + unsigned int head; \ |
3280 | + unsigned int tail; \ |
3281 | + bool is_full; \ |
3282 | + _type queue[_length]; \ |
3283 | + } |
3284 | + |
3285 | +typedef A1(ilm_struct, 1) Qtype; |
3286 | + |
3287 | +/* |
3288 | +As using ctags, the "Qtype" can not be tagged by it. |
3289 | +*/ |
3290 | |
3291 | === added file 'Test/bug556646.c' |
3292 | --- Test/bug556646.c 1970-01-01 00:00:00 +0000 |
3293 | +++ Test/bug556646.c 2011-03-11 21:16:06 +0000 |
3294 | @@ -0,0 +1,42 @@ |
3295 | +/* |
3296 | +Bugs item #556646, was opened at 2002-05-16 14:36 |
3297 | +You can respond by visiting: |
3298 | +http://sourceforge.net/tracker/?func=detail&atid=106556&aid=556646&group_id=6556 |
3299 | + |
3300 | +Category: None |
3301 | +Group: None |
3302 | +Status: Open |
3303 | +Resolution: None |
3304 | +Priority: 5 |
3305 | +Submitted By: Howard Wu (howardhbwu) |
3306 | +Assigned to: Nobody/Anonymous (nobody) |
3307 | +Summary: Some typedef can not be tagged in C code |
3308 | + |
3309 | +Initial Comment: |
3310 | +My Ctags version: 5.2.3 |
3311 | +*/ |
3312 | +typedef enum{ |
3313 | + INDX_NIL = 0x00, |
3314 | + INDX_P, |
3315 | + INDX_S, |
3316 | + INDX_M, |
3317 | + INDX_S1, |
3318 | + INDX_S2, |
3319 | + INDX_S3, |
3320 | + INDX_C1, |
3321 | + INDX_C2, |
3322 | + INDX_S4, |
3323 | + INDX_T, |
3324 | + INDX_L, |
3325 | + INDX_R, |
3326 | + INDX_R2, |
3327 | + INDX_IM1, |
3328 | + INDX_IM2, |
3329 | + INDX_L2, |
3330 | + INDX_T2, |
3331 | + A = INDX_T2 |
3332 | +} task_indx_type; |
3333 | + |
3334 | +/* |
3335 | +"task_indx_type" can not be tagged with Ctags |
3336 | +*/ |
3337 | |
3338 | === added file 'Test/bug565813.f90' |
3339 | --- Test/bug565813.f90 1970-01-01 00:00:00 +0000 |
3340 | +++ Test/bug565813.f90 2011-03-11 21:16:06 +0000 |
3341 | @@ -0,0 +1,42 @@ |
3342 | +module ctags_bug |
3343 | + |
3344 | + implicit none |
3345 | + private |
3346 | + save |
3347 | + |
3348 | + type :: foo_t |
3349 | + integer :: bar |
3350 | + end type foo_t |
3351 | + |
3352 | + integer, parameter :: N = 1000 |
3353 | + |
3354 | + public :: foo_t |
3355 | + public :: foo_setbar |
3356 | + public :: foo_set_bar |
3357 | + public :: foo_getbar |
3358 | + |
3359 | +contains |
3360 | + |
3361 | + subroutine foo_setbar (f,b) |
3362 | + type(foo_t), intent(out) :: f |
3363 | + integer, intent(in) :: b |
3364 | + |
3365 | + f%bar = b |
3366 | + end subroutine foo_setbar |
3367 | + |
3368 | + |
3369 | + pure subroutine foo_set_bar (f,b) |
3370 | + type(foo_t), intent(out) :: f |
3371 | + integer, intent(in) :: b |
3372 | + |
3373 | + f%bar = b |
3374 | + end subroutine foo_set_bar |
3375 | + |
3376 | + |
3377 | + integer function foo_getbar (f) |
3378 | + type(foo_t), intent(in) :: f |
3379 | + |
3380 | + foo_getbar = f%bar |
3381 | + end function foo_getbar |
3382 | + |
3383 | +end module ctags_bug |
3384 | |
3385 | === added file 'Test/bug612019.pas' |
3386 | --- Test/bug612019.pas 1970-01-01 00:00:00 +0000 |
3387 | +++ Test/bug612019.pas 2011-03-11 21:16:06 +0000 |
3388 | @@ -0,0 +1,33 @@ |
3389 | +(* |
3390 | +Bugs item #612019, was opened at 2002-09-20 15:29 |
3391 | +You can respond by visiting: |
3392 | +https://sourceforge.net/tracker/?func=detail&atid=106556&aid=612019&group_id=6556 |
3393 | + |
3394 | +Category: None |
3395 | +Group: None |
3396 | +Status: Open |
3397 | +Resolution: None |
3398 | +Priority: 5 |
3399 | +Submitted By: Konstantin Stupnik (xecutor) |
3400 | +Assigned to: Nobody/Anonymous (nobody) |
3401 | +Summary: pascal parser |
3402 | + |
3403 | +Initial Comment: |
3404 | +In attached sample there are some lines from tags file |
3405 | +generated for object pascal sources. |
3406 | +There are some problems with this lines. |
3407 | +Generaly speaking they are parsed incorrectly. |
3408 | +*) |
3409 | +unit a; |
3410 | + |
3411 | +interface |
3412 | +type |
3413 | + TTest=class |
3414 | + procedure Test1; |
3415 | + procedure Test2; |
3416 | + procedure Test3; |
3417 | + end; |
3418 | + |
3419 | +implementation |
3420 | + |
3421 | +end. |
3422 | |
3423 | === added file 'Test/bug612621.pl' |
3424 | --- Test/bug612621.pl 1970-01-01 00:00:00 +0000 |
3425 | +++ Test/bug612621.pl 2011-03-11 21:16:06 +0000 |
3426 | @@ -0,0 +1,57 @@ |
3427 | +=pod |
3428 | +Bugs item #612621, was opened at 2002-09-21 21:23 |
3429 | +You can respond by visiting: |
3430 | +https://sourceforge.net/tracker/?func=detail&atid=106556&aid=612621&group_id=6556 |
3431 | + |
3432 | +Category: None |
3433 | +Group: None |
3434 | +Status: Open |
3435 | +Resolution: None |
3436 | +Priority: 5 |
3437 | +Submitted By: Richard Donkin (rdonkin) |
3438 | +Assigned to: Nobody/Anonymous (nobody) |
3439 | +Summary: Perl POD syntax -> incomplete tags file |
3440 | + |
3441 | +Initial Comment: |
3442 | +In the following test file, ctags 5.2.3 (compiled from |
3443 | +source on Cygwin) only adds the first subroutine (bar) to |
3444 | +the tags file, when run using: |
3445 | + |
3446 | +ctags --totals -- |
3447 | +language-force=perl temp |
3448 | + |
3449 | +----------------- |
3450 | +=cut |
3451 | +sub bar() |
3452 | +{ |
3453 | + |
3454 | + print "blah\n"; |
3455 | + |
3456 | +=for |
3457 | + print "blah2\n"; |
3458 | + # |
3459 | +Note: next line has trailing space |
3460 | +=cut |
3461 | + |
3462 | + |
3463 | +} |
3464 | + |
3465 | +sub foo { |
3466 | + print "hello\n"; |
3467 | +} |
3468 | +=pod |
3469 | +The |
3470 | +tags file looks like |
3471 | +this: |
3472 | +!_TAG_FILE_FORMAT 2 /extended format; -- format=1 will not append ;" to lines/ |
3473 | +!_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted/ |
3474 | +!_TAG_PROGRAM_AUTHOR Darren Hiebert /dhiebert@users.sourceforge.net/ |
3475 | +!_TAG_PROGRAM_NAME Exuberant Ctags // |
3476 | +!_TAG_PROGRAM_URL http://ctags.sourceforge.net /official site/ |
3477 | +!_TAG_PROGRAM_VERSION 5.2.3 // |
3478 | +bar temp /^sub bar() {$/;" s |
3479 | + |
3480 | +The workaround is to delete the |
3481 | +trailing space at the end of the '=cut' line. |
3482 | + |
3483 | +=cut |
3484 | |
3485 | === added file 'Test/bug620288.f' |
3486 | --- Test/bug620288.f 1970-01-01 00:00:00 +0000 |
3487 | +++ Test/bug620288.f 2011-03-11 21:16:06 +0000 |
3488 | @@ -0,0 +1,98 @@ |
3489 | +C Bugs item #620288, was opened at 2002-10-08 08:15 |
3490 | +C You can respond by visiting: |
3491 | +C https://sourceforge.net/tracker/?func=detail&atid=106556&aid=620288&group_id=6556 |
3492 | +C |
3493 | +C Category: None |
3494 | +C Group: None |
3495 | +C Status: Open |
3496 | +C Resolution: None |
3497 | +C Priority: 5 |
3498 | +C Submitted By: Nobody/Anonymous (nobody) |
3499 | +C Assigned to: Nobody/Anonymous (nobody) |
3500 | +C Summary: fortran function definition |
3501 | +C |
3502 | +C Initial Comment: |
3503 | +C |
3504 | +C System Information: |
3505 | +C -------------- |
3506 | +C ctags version: |
3507 | +C Exuberant Ctags 5.3.1, Copyright (C) 1996-2002 Darren |
3508 | +C Hiebert |
3509 | +C Compiled: Sep 12 2002, 10:22:42 |
3510 | +C Addresses: <dhiebert@users.sourceforge.net>, |
3511 | +C http://ctags.sourceforge.net |
3512 | +C Optional compiled features: +wildcards, +regex |
3513 | +C |
3514 | +C Unix: |
3515 | +C HP-UX B.11.00 A 9000/800 551726527 |
3516 | +C -------------- |
3517 | +C |
3518 | +C Symptoms: |
3519 | +C -------------- |
3520 | +C I have a fortran file that has a single function. This |
3521 | +C function has a |
3522 | +C return type of double precision. I type $ctags bar.f . |
3523 | +C This produces the expected |
3524 | +C tags file. However, tags does not contain the function |
3525 | +C definition. |
3526 | +C |
3527 | +C This does not occur when the same function's return |
3528 | +C type has been changed to |
3529 | +C a integer or character data return type. |
3530 | +C -------------- |
3531 | +C |
3532 | +C |
3533 | +C Examples in which I can repeat the experience with their |
3534 | +C respective tags files: |
3535 | +C -------------- |
3536 | +C |
3537 | +C |
3538 | +C foo.f |
3539 | +C -------------- |
3540 | + integer function foo(a) |
3541 | + |
3542 | + integer a |
3543 | + foo = a |
3544 | + end |
3545 | +C -------------- |
3546 | +C |
3547 | +C |
3548 | +C tags |
3549 | +C -------------- |
3550 | +C !_TAG_FILE_FORMAT 2 /extended |
3551 | +C format; --format=1 will not append ;" to lines/ |
3552 | +C !_TAG_FILE_SORTED 1 |
3553 | +C /0=unsorted, 1=sorted, 2=foldcase/ |
3554 | +C !_TAG_PROGRAM_AUTHOR Darren Hiebert |
3555 | +C /dhiebert@users.sourceforge.net/ |
3556 | +C !_TAG_PROGRAM_NAME Exuberant Ctags // |
3557 | +C !_TAG_PROGRAM_URL |
3558 | +C http://ctags.sourceforge.net /official site/ |
3559 | +C !_TAG_PROGRAM_VERSION 5.3.1 // |
3560 | +C foo foo.f /^ integer function foo(/;" f |
3561 | +C -------------- |
3562 | +C |
3563 | +C |
3564 | +C |
3565 | +C bar.f |
3566 | +C --------------- |
3567 | + double precision function bar(a) |
3568 | + |
3569 | + double precision a |
3570 | + bar = a |
3571 | + end |
3572 | +C -------------- |
3573 | +C |
3574 | +C tags |
3575 | +C --------------- |
3576 | +C !_TAG_FILE_FORMAT 2 /extended |
3577 | +C format; --format=1 will not append ;" to lines/ |
3578 | +C !_TAG_FILE_SORTED 1 |
3579 | +C /0=unsorted, 1=sorted, 2=foldcase/ |
3580 | +C !_TAG_PROGRAM_AUTHOR Darren Hiebert |
3581 | +C /dhiebert@users.sourceforge.net/ |
3582 | +C !_TAG_PROGRAM_NAME Exuberant Ctags // |
3583 | +C !_TAG_PROGRAM_URL |
3584 | +C http://ctags.sourceforge.net /official site/ |
3585 | +C !_TAG_PROGRAM_VERSION 5.3.1 // |
3586 | +C --------------- |
3587 | |
3588 | === added file 'Test/bug629115.sql' |
3589 | --- Test/bug629115.sql 1970-01-01 00:00:00 +0000 |
3590 | +++ Test/bug629115.sql 2011-03-11 21:16:06 +0000 |
3591 | @@ -0,0 +1,5 @@ |
3592 | +/***/ |
3593 | +DECLARE |
3594 | + variable CLOB; |
3595 | +BEGIN |
3596 | +END; |
3597 | |
3598 | === added file 'Test/bug639639.h' |
3599 | --- Test/bug639639.h 1970-01-01 00:00:00 +0000 |
3600 | +++ Test/bug639639.h 2011-03-11 21:16:06 +0000 |
3601 | @@ -0,0 +1,46 @@ |
3602 | +/* |
3603 | +Date: Sun, 17 Nov 2002 04:41:42 -0800 |
3604 | +Subject: [ ctags-Bugs-639639 ] incorrect enum field for C++ header |
3605 | + |
3606 | +Bugs item #639639, was opened at 2002-11-17 13:41 |
3607 | +You can respond by visiting: |
3608 | +https://sourceforge.net/tracker/?func=detail&atid=106556&aid=639639&group_id=6556 |
3609 | + |
3610 | +Category: None |
3611 | +Group: None |
3612 | +Status: Open |
3613 | +Resolution: None |
3614 | +Priority: 5 |
3615 | +Submitted By: Matthias S. Benkmann (mbenkmann) |
3616 | +Assigned to: Nobody/Anonymous (nobody) |
3617 | +Summary: incorrect enum field for C++ header |
3618 | + |
3619 | +Initial Comment: |
3620 | +----------- temp2.h ------------- |
3621 | +*/ |
3622 | +namespace Namespace1 |
3623 | +{ |
3624 | + int function2(char* str); |
3625 | +} |
3626 | + |
3627 | +enum {anon2=1000}; |
3628 | +---------------------------- |
3629 | +/* |
3630 | +> ctags --excmd=number --fields=+kKmnsSz |
3631 | +--file-scope=no -f - temp2.h |
3632 | + |
3633 | +Namespace1 temp2.h 1;" kind:namespace line:1 |
3634 | +anon2 temp2.h 6;" kind:enumerator line:6 |
3635 | +enum:Namespace1 |
3636 | + |
3637 | + |
3638 | +As you can see ctags thinks that anon2 belongs to enum |
3639 | +Namespace1 which it obviously doesn't (Namespace1 is |
3640 | +not even an enum). It should be enum:<anonymous>. |
3641 | + |
3642 | + |
3643 | +---------------------------------------------------------------------- |
3644 | + |
3645 | +You can respond by visiting: |
3646 | +https://sourceforge.net/tracker/?func=detail&atid=106556&aid=639639&group_id=6556 |
3647 | +*/ |
3648 | |
3649 | === added file 'Test/bug639644.h' |
3650 | --- Test/bug639644.h 1970-01-01 00:00:00 +0000 |
3651 | +++ Test/bug639644.h 2011-03-11 21:16:06 +0000 |
3652 | @@ -0,0 +1,41 @@ |
3653 | +/* |
3654 | +Date: Sun, 17 Nov 2002 04:57:43 -0800 |
3655 | +Subject: [ ctags-Bugs-639644 ] anonymous namespaces in headers |
3656 | + |
3657 | +Bugs item #639644, was opened at 2002-11-17 13:57 |
3658 | +You can respond by visiting: |
3659 | +https://sourceforge.net/tracker/?func=detail&atid=106556&aid=639644&group_id=6556 |
3660 | + |
3661 | +Category: None |
3662 | +Group: None |
3663 | +Status: Open |
3664 | +Resolution: None |
3665 | +Priority: 5 |
3666 | +Submitted By: Matthias S. Benkmann (mbenkmann) |
3667 | +Assigned to: Nobody/Anonymous (nobody) |
3668 | +Summary: anonymous namespaces in headers |
3669 | + |
3670 | +Initial Comment: |
3671 | +--------------------temp3.h---------------- |
3672 | +*/ |
3673 | +namespace |
3674 | +{ |
3675 | + int foo; |
3676 | +} |
3677 | +/* |
3678 | +--------------------------------------------- |
3679 | + |
3680 | +> ctags -f - temp3.h |
3681 | + |
3682 | +foo temp3.h /^ int foo;$/;" m namespace: |
3683 | + |
3684 | +That last field should be "namespace:<anonymous>" |
3685 | +and the kind field should be variable, not member. |
3686 | + |
3687 | + |
3688 | + |
3689 | +---------------------------------------------------------------------- |
3690 | + |
3691 | +You can respond by visiting: |
3692 | +https://sourceforge.net/tracker/?func=detail&atid=106556&aid=639644&group_id=6556 |
3693 | +*/ |
3694 | |
3695 | === added file 'Test/bug665086.cpp' |
3696 | --- Test/bug665086.cpp 1970-01-01 00:00:00 +0000 |
3697 | +++ Test/bug665086.cpp 2011-03-11 21:16:06 +0000 |
3698 | @@ -0,0 +1,32 @@ |
3699 | +/* |
3700 | +Bugs item #665086, was opened at 2003-01-09 15:30 |
3701 | +You can respond by visiting: |
3702 | +https://sourceforge.net/tracker/?func=detail&atid=106556&aid=665086&group_id=6556 |
3703 | + |
3704 | +Category: None |
3705 | +Group: None |
3706 | +Status: Open |
3707 | +Resolution: None |
3708 | +Priority: 5 |
3709 | +Submitted By: Welti Marco (cider101) |
3710 | +Assigned to: Nobody/Anonymous (nobody) |
3711 | +Summary: nested namespaces |
3712 | + |
3713 | +Initial Comment: |
3714 | +hi |
3715 | + |
3716 | +it seems that ctags has ommits the scope for nested |
3717 | +namespaces. |
3718 | +*/ |
3719 | +namespace N1 |
3720 | +{ |
3721 | + namespace N2 |
3722 | + { |
3723 | + class C12{} |
3724 | + } |
3725 | +} |
3726 | +/* |
3727 | +N1 test.h /^namespace N1$/;" namespace line:1 |
3728 | +N2 test.h /^namespace N2$/;" namespace line:3 |
3729 | +C12 test.h /^ class C12{};$/;" class line:5 namespace:N1::N2 |
3730 | +*/ |
3731 | |
3732 | === added file 'Test/bug670433.f90' |
3733 | --- Test/bug670433.f90 1970-01-01 00:00:00 +0000 |
3734 | +++ Test/bug670433.f90 2011-03-11 21:16:06 +0000 |
3735 | @@ -0,0 +1,40 @@ |
3736 | +! Bugs item #670443, was opened at 2003-01-18 22:44 |
3737 | +! You can respond by visiting: |
3738 | +! https://sourceforge.net/tracker/?func=detail&atid=106556&aid=670443&group_id=6556 |
3739 | +! |
3740 | +! Category: None |
3741 | +! Group: None |
3742 | +! Status: Open |
3743 | +! Resolution: None |
3744 | +! Priority: 5 |
3745 | +! Submitted By: Erik Edelmann (fanerier) |
3746 | +! Assigned to: Nobody/Anonymous (nobody) |
3747 | +! Summary: Fortran: Internal procedures causes trouble |
3748 | +! |
3749 | +! Initial Comment: |
3750 | +! If a function in a module has an internal procedure |
3751 | +! (after a CONTAINS-statement), everything in the module |
3752 | +! after the parent function will be skipped. I.e. in the |
3753 | +! attached file, the subroutine 'bar' will not be listed |
3754 | +! in the 'tags' file. Note that this problem arises only |
3755 | +! when the parent procedure is a function, if it is a |
3756 | +! subroutine everything works fine. |
3757 | + |
3758 | +module foobar |
3759 | + |
3760 | +contains |
3761 | + |
3762 | + integer function foo (i) |
3763 | + |
3764 | + contains |
3765 | + |
3766 | + real function f(x) |
3767 | + end function f |
3768 | + |
3769 | + end function foo |
3770 | + |
3771 | + |
3772 | + subroutine bar (n) |
3773 | + end subroutine bar |
3774 | + |
3775 | +end module foobar |
3776 | |
3777 | === added file 'Test/bug681824.php' |
3778 | --- Test/bug681824.php 1970-01-01 00:00:00 +0000 |
3779 | +++ Test/bug681824.php 2011-03-11 21:16:06 +0000 |
3780 | @@ -0,0 +1,31 @@ |
3781 | +// Bugs item #681824, was opened at 2003-02-06 18:14 |
3782 | +// You can respond by visiting: |
3783 | +// https://sourceforge.net/tracker/?func=detail&atid=106556&aid=681824&group_id=6556 |
3784 | +// |
3785 | +// Category: None |
3786 | +// Group: None |
3787 | +// Status: Open |
3788 | +// Resolution: None |
3789 | +// Priority: 5 |
3790 | +// Submitted By: Thomi Dammann (thomi35) |
3791 | +// Assigned to: Nobody/Anonymous (nobody) |
3792 | +// Summary: Comments disturb ctags (v. 5.4) scaning a PHP-file? |
3793 | +// |
3794 | +// Initial Comment: |
3795 | +// If I have (correct) statements like |
3796 | +// |
3797 | + function db_query |
3798 | + ($pDB, // connection handle |
3799 | + $pQuery) // query string |
3800 | + { |
3801 | +... |
3802 | +} |
3803 | +// |
3804 | +// it seems that ctags used with vim doesn't find the |
3805 | +// function names anymore. I think that either the |
3806 | +// comments or the distribution on more than one line |
3807 | +// disturb the parser. |
3808 | +// |
3809 | +// Regards |
3810 | +// |
3811 | +// Thomi |
3812 | |
3813 | === added file 'Test/bug699171.py' |
3814 | --- Test/bug699171.py 1970-01-01 00:00:00 +0000 |
3815 | +++ Test/bug699171.py 2011-03-11 21:16:06 +0000 |
3816 | @@ -0,0 +1,8 @@ |
3817 | +# Test for Bug #699171. |
3818 | +# Extracted from http://txt2tags.sourceforge.net/src/txt2tags-1.4.tar.gz |
3819 | + |
3820 | +HEADER_TEMPLATE = { |
3821 | +r"""Multiline raw string |
3822 | +""" |
3823 | +} |
3824 | +def Quit(msg, exitcode=0): print msg ; sys.exit(exitcode) |
3825 | |
3826 | === added file 'Test/bug722501.sql' |
3827 | --- Test/bug722501.sql 1970-01-01 00:00:00 +0000 |
3828 | +++ Test/bug722501.sql 2011-03-11 21:16:06 +0000 |
3829 | @@ -0,0 +1,24 @@ |
3830 | +/* |
3831 | +The PL/SQL parser (v1.6) does not parse a standalone |
3832 | +procedure or function (i.e., not part of a package) when |
3833 | +the SQL is in the form |
3834 | +*/ |
3835 | +CREATE OR REPLACE PROCEDURE foo |
3836 | +AS /* or IS*/ |
3837 | + BEGIN |
3838 | + DECLARE |
3839 | + l_foo NUMBER; |
3840 | + BEGIN |
3841 | + l_foo := 1; |
3842 | + END; |
3843 | + END; |
3844 | +/* |
3845 | +When this is processed the only tag reported is |
3846 | +Procedure foo. If you remove the line with AS, the |
3847 | +variable l_foo is seen, but then the procedure will not |
3848 | +compile in Oracle. |
3849 | + |
3850 | +Functions seem to have similar problems in that the |
3851 | +parser will not see inside the function, but removing the |
3852 | +IS or AS does not remedy the problem for a function. |
3853 | +*/ |
3854 | |
3855 | === added file 'Test/bug726712.f90' |
3856 | --- Test/bug726712.f90 1970-01-01 00:00:00 +0000 |
3857 | +++ Test/bug726712.f90 2011-03-11 21:16:06 +0000 |
3858 | @@ -0,0 +1,72 @@ |
3859 | +! Bugs item #726712, was opened at 2003-04-24 08:36 |
3860 | +! Message generated for change (Comment added) made by schubidu |
3861 | +! You can respond by visiting: |
3862 | +! https://sourceforge.net/tracker/?func=detail&atid=106556&aid=726712&group_id=6556 |
3863 | +! |
3864 | +! Category: None |
3865 | +! Group: None |
3866 | +! Status: Open |
3867 | +! Resolution: None |
3868 | +! Priority: 5 |
3869 | +! Submitted By: sandra schrödter (schubidu) |
3870 | +! Assigned to: Darren Hiebert (dhiebert) |
3871 | +! Summary: ctags 5.5 and f90: "endsubroutine" not recognized |
3872 | +! |
3873 | +! Initial Comment: |
3874 | +! Dear Ctags'ers. :) |
3875 | +! |
3876 | +! First of all: good tool! :) I stumbled across ctags for |
3877 | +! my gvim6, wanted to use the nice plugin taglist. |
3878 | +! |
3879 | +! My System: HP-Unix and ctags 5.5 |
3880 | +! |
3881 | +! My problem is the following. The command: |
3882 | +! |
3883 | +! "ctags tagstest.f90" |
3884 | +! |
3885 | +! builds a tagsfile that lacks 1 of the declared 3 |
3886 | +! subroutines. |
3887 | +! The problem disappears when the declaration of the |
3888 | +! subroutine ends in "end subroutine" and not in |
3889 | +! "endsubroutine", although "endsubroutine" is correct |
3890 | +! Fortran90 syntax, AFAIK. |
3891 | +! |
3892 | +! Is there a chance to get this corrected? |
3893 | +! |
3894 | +! |
3895 | +! The example file tagstest.f90: |
3896 | + |
3897 | + subroutine tagstest_ctrl() |
3898 | + real :: a |
3899 | + a = 0.0 |
3900 | + call sub1( a) |
3901 | + call sub2( a) |
3902 | + endsubroutine tagstest_ctrl |
3903 | + |
3904 | + subroutine sub1( a) |
3905 | + real,intent( inout) ::a |
3906 | + a = 1.1 |
3907 | + endsubroutine sub1 |
3908 | + |
3909 | + subroutine sub2( a) |
3910 | + real,intent( inout) ::a |
3911 | + a = 2.2 |
3912 | + endsubroutine sub2 |
3913 | + |
3914 | +! ---------------------------------------------------------------------- |
3915 | +! |
3916 | +! Comment By: sandra schrödter (schubidu) |
3917 | +! Date: 2003-05-28 13:17 |
3918 | +! |
3919 | +! Message: |
3920 | +! Logged In: YES |
3921 | +! user_id=763447 |
3922 | +! |
3923 | +! I realized that there are also problems when a subroutine |
3924 | +! ends only with the keyword |
3925 | +! end |
3926 | +! |
3927 | +! The following subroutine is listed but cannot be selected |
3928 | +! (that is, the cursor wont go there) |
3929 | +! |
3930 | +! ---------------------------------------------------------------------- |
3931 | |
3932 | === added file 'Test/bug726875.f90' |
3933 | --- Test/bug726875.f90 1970-01-01 00:00:00 +0000 |
3934 | +++ Test/bug726875.f90 2011-03-11 21:16:06 +0000 |
3935 | @@ -0,0 +1,28 @@ |
3936 | +! Bugs item #726875, was opened at 2003-04-24 15:30 |
3937 | +! Message generated for change (Tracker Item Submitted) made by Item Submitter |
3938 | +! You can respond by visiting: |
3939 | +! https://sourceforge.net/tracker/?func=detail&atid=106556&aid=726875&group_id=6556 |
3940 | +! |
3941 | +! Category: None |
3942 | +! Group: None |
3943 | +! Status: Open |
3944 | +! Resolution: None |
3945 | +! Priority: 5 |
3946 | +! Submitted By: sandra schrödter (schubidu) |
3947 | +! Assigned to: Nobody/Anonymous (nobody) |
3948 | +! Summary: ctags 5.5 and f90: common and ! |
3949 | +! |
3950 | +! Initial Comment: |
3951 | +! ctags won't add a common-block definition to the tags |
3952 | +! file when the following occurs: |
3953 | + |
3954 | + common /coma/ a,b,!foobar |
3955 | + + c,d |
3956 | + |
3957 | + common /comb/ e,f |
3958 | + |
3959 | + common /comc/ g,h |
3960 | + |
3961 | +! The problem seems to be based on the fact that the |
3962 | +! comment "! foobar" is followed by a continuation line |
3963 | +! ("+" in column 6 shows that) |
3964 | |
3965 | === added file 'Test/bug734933.f90' |
3966 | --- Test/bug734933.f90 1970-01-01 00:00:00 +0000 |
3967 | +++ Test/bug734933.f90 2011-03-11 21:16:06 +0000 |
3968 | @@ -0,0 +1,39 @@ |
3969 | + MODULE MDCOMPONENTS |
3970 | + |
3971 | + USE kindef |
3972 | + USE memory |
3973 | + |
3974 | + IMPLICIT NONE |
3975 | + |
3976 | + SAVE |
3977 | + |
3978 | + INTEGER (INT4), PARAMETER :: LIM_COMPONENTS = 1000; |
3979 | + INTEGER (INT4) :: NUM_COMPONENTS = 0, NCOMP; |
3980 | + TYPE COMPONENT |
3981 | + CHARACTER (LEN=30) :: NAME |
3982 | + INTEGER (INT4) :: NUM_PART |
3983 | + REAL (REAL8), DIMENSION(:), POINTER :: PART_LIST |
3984 | + END TYPE |
3985 | + |
3986 | + TYPE COMPONENT_POINTER |
3987 | + TYPE (COMPONENT), POINTER :: P |
3988 | + END TYPE |
3989 | + |
3990 | + TYPE (COMPONENT), POINTER :: COMP |
3991 | + TYPE (COMPONENT_POINTER) :: COMP_TMP |
3992 | + TYPE (COMPONENT_POINTER), DIMENSION(LIM_COMPONENTS) :: COMPONENTS, COMPONENTS_TMP |
3993 | + |
3994 | + INTERFACE MEMDEALLOC |
3995 | + MODULE PROCEDURE MEMDEALLOC_COMPONENTS_PTR |
3996 | + END INTERFACE |
3997 | + |
3998 | + CONTAINS |
3999 | + |
4000 | + SUBROUTINE ADD_COMPONENTS |
4001 | + |
4002 | + NUM_COMPONENTS = NUM_COMPONENTS + 1 |
4003 | + CALL MEMALLOC (COMPONENTS(NUM_COMPONENTS)%P, IDALL999) |
4004 | + |
4005 | + END SUBROUTINE ADD_COMPONENTS |
4006 | + |
4007 | + END MODULE MDCOMPONENTS |
4008 | |
4009 | === added file 'Test/bug762027.v' |
4010 | --- Test/bug762027.v 1970-01-01 00:00:00 +0000 |
4011 | +++ Test/bug762027.v 2011-03-11 21:16:06 +0000 |
4012 | @@ -0,0 +1,27 @@ |
4013 | +/* |
4014 | +Bugs item #762027, was opened at 2003-06-27 18:32 |
4015 | +Message generated for change (Tracker Item Submitted) made by Item Submitter |
4016 | +You can respond by visiting: |
4017 | +https://sourceforge.net/tracker/?func=detail&atid=106556&aid=762027&group_id=6556 |
4018 | + |
4019 | +Category: None |
4020 | +Group: None |
4021 | +Status: Open |
4022 | +Resolution: None |
4023 | +Priority: 5 |
4024 | +Submitted By: cdic (cdic) |
4025 | +Assigned to: Nobody/Anonymous (nobody) |
4026 | +Summary: multi-line definition w/o back-slash will be missing |
4027 | + |
4028 | +Initial Comment: |
4029 | +There is a small bug (language verilog): |
4030 | +*/ |
4031 | + wire N_84, N_83; // is ok. |
4032 | + |
4033 | + wire N_84, |
4034 | + N_83; // then N_83 will be missing in tags. |
4035 | +/* |
4036 | +Thanks for fixing it. |
4037 | + |
4038 | +cdic |
4039 | +*/ |
4040 | |
4041 | === added file 'Test/bug814263.java' |
4042 | --- Test/bug814263.java 1970-01-01 00:00:00 +0000 |
4043 | +++ Test/bug814263.java 2011-03-11 21:16:06 +0000 |
4044 | @@ -0,0 +1,6 @@ |
4045 | +import java.util.Map; |
4046 | + |
4047 | +public class bug814263 { |
4048 | + protected java.util.Map map1; |
4049 | + protected Map map2; |
4050 | +} |
4051 | |
4052 | === added file 'Test/bug816636.sml' |
4053 | --- Test/bug816636.sml 1970-01-01 00:00:00 +0000 |
4054 | +++ Test/bug816636.sml 2011-03-11 21:16:06 +0000 |
4055 | @@ -0,0 +1,26 @@ |
4056 | +(* |
4057 | +Bugs item #816636, was opened at 2003-10-02 11:01 |
4058 | +Message generated for change (Tracker Item Submitted) made by Item Submitter |
4059 | +You can respond by visiting: |
4060 | +https://sourceforge.net/tracker/?func=detail&atid=106556&aid=816636&group_id=6556 |
4061 | + |
4062 | +Category: None |
4063 | +Group: None |
4064 | +Status: Open |
4065 | +Resolution: None |
4066 | +Priority: 5 |
4067 | +Submitted By: Rahul Chaudhry (rahuldotc) |
4068 | +Assigned to: Nobody/Anonymous (nobody) |
4069 | +Summary: sml (standard ML) tag support |
4070 | + |
4071 | +Initial Comment: |
4072 | +The program does not handle the "and" keyword of ML. |
4073 | + |
4074 | +e.g. on the following code: |
4075 | +*) |
4076 | +fun f x = 1 + g x |
4077 | + |
4078 | +and g x = 2 + f 0; |
4079 | +(* |
4080 | +ctags generates a tag for function "f" but not for function "g". |
4081 | +*) |
4082 | |
4083 | === added file 'Test/bug823000.sql' |
4084 | --- Test/bug823000.sql 1970-01-01 00:00:00 +0000 |
4085 | +++ Test/bug823000.sql 2011-03-11 21:16:06 +0000 |
4086 | @@ -0,0 +1,80 @@ |
4087 | +/* |
4088 | +Bugs item #823000, was opened at 2003-10-13 21:56 |
4089 | +Message generated for change (Tracker Item Submitted) made by Item Submitter |
4090 | +You can respond by visiting: |
4091 | +https://sourceforge.net/tracker/?func=detail&atid=106556&aid=823000&group_id=6556 |
4092 | + |
4093 | +Category: None |
4094 | +Group: None |
4095 | +Status: Open |
4096 | +Resolution: None |
4097 | +Priority: 5 |
4098 | +Submitted By: Jozsef Nagy (brutal) |
4099 | +Assigned to: Nobody/Anonymous (nobody) |
4100 | +Summary: PL/SQL functions and procedures |
4101 | + |
4102 | +Initial Comment: |
4103 | +I've tried to use ctags (version 5.5.2) to navigate |
4104 | +PL/SQL source codes in vim but jumping to |
4105 | +function/procedure definitions worked not properly. I |
4106 | +figured out that the problem was that I've defined |
4107 | +these functions/procedures in multiline format, for |
4108 | +example: |
4109 | + |
4110 | +test.pkb: |
4111 | +*/ |
4112 | +CREATE OR REPLACE PACKAGE TEST IS |
4113 | + |
4114 | +PROCEDURE TestFunc1 |
4115 | +( |
4116 | + arg1 IN NUMBER, |
4117 | + arg2 IN NUMBER |
4118 | +) |
4119 | +IS |
4120 | +BEGIN |
4121 | + NULL; |
4122 | +END TestFunc1; |
4123 | + |
4124 | +PROCEDURE TestFunc2 |
4125 | +( |
4126 | + arg1 IN NUMBER, |
4127 | + arg2 IN NUMBER |
4128 | +) |
4129 | +IS |
4130 | +BEGIN |
4131 | + NULL; |
4132 | +END TestFunc2; |
4133 | + |
4134 | +END TEST; |
4135 | +/ |
4136 | +/* |
4137 | +ctags creates a regexp type pattern for my |
4138 | +functions/procedures but unfortunately the pattern was |
4139 | +/^IS$/ for each function/procedure, that's why the |
4140 | +jumping method worked really crappy. (see the output of |
4141 | +ctags 5.5.2 on this example code below) |
4142 | + |
4143 | +ctags -f - --language-force=sql test.pkb |
4144 | +TEST test.pkb /^CREATE OR REPLACE PACKAGE |
4145 | +TEST IS$/;" P |
4146 | +TestFunc1 test.pkb /^IS$/;" p |
4147 | +TestFunc2 test.pkb /^IS$/;" p |
4148 | + |
4149 | +I've looked into the ctags source code and I saw that |
4150 | +in parseSubProgram() in sql.c called makeSqlTag() only |
4151 | +when KEYWORD_is reached. I have modified this function |
4152 | + so that makeSqlTag() is called immediately after a |
4153 | +function/procedure keyword and name is read (I have |
4154 | +attached the output of diff sql.c.5.5.2 sql.c). I don't |
4155 | +know much of ctags internals so I am not sure if this |
4156 | +is the best solution but it worked for me. (see the |
4157 | +output of my modified ctags below) |
4158 | + |
4159 | +ctags -f - --language-force=sql test.pkb |
4160 | +TEST test.pkb /^CREATE OR REPLACE PACKAGE |
4161 | +TEST IS$/;" P |
4162 | +TestFunc1 test.pkb /^PROCEDURE |
4163 | +TestFunc1$/;" p |
4164 | +TestFunc2 test.pkb /^PROCEDURE |
4165 | +TestFunc2$/;" p |
4166 | +*/ |
4167 | |
4168 | === added file 'Test/bug842077.pl' |
4169 | --- Test/bug842077.pl 1970-01-01 00:00:00 +0000 |
4170 | +++ Test/bug842077.pl 2011-03-11 21:16:06 +0000 |
4171 | @@ -0,0 +1,33 @@ |
4172 | +# Bugs item #842077, was opened at 2003-11-14 10:57 |
4173 | +# Message generated for change (Tracker Item Submitted) made by Item Submitter |
4174 | +# You can respond by visiting: |
4175 | +# https://sourceforge.net/tracker/?func=detail&atid=106556&aid=842077&group_id=6556 |
4176 | + |
4177 | +# Category: None |
4178 | +# Group: None |
4179 | +# Status: Open |
4180 | +# Resolution: None |
4181 | +# Priority: 5 |
4182 | +# Submitted By: Christian Reis (kiko_async) |
4183 | +# Assigned to: Nobody/Anonymous (nobody) |
4184 | +# Summary: wrong precedence applied to perl POD and "here document" |
4185 | + |
4186 | +# Initial Comment: |
4187 | +# Basically, ctags stops parsing when it reaches code |
4188 | +# with the syntax below: |
4189 | + |
4190 | +# ... |
4191 | +$this->print_log(<<EOM); |
4192 | +== Tinderbox Info |
4193 | +... |
4194 | +== End Tinderbox Client Info |
4195 | +EOM |
4196 | +# ... |
4197 | + |
4198 | +sub test { |
4199 | +# This subroutine is missed when bug is present. |
4200 | +} |
4201 | + |
4202 | +# It sounds to me like ctags thinks it's a POD comment |
4203 | +# when it |
4204 | +# isn't--wrong precedence of POD vs. here document. |
4205 | |
4206 | === added file 'Test/bug849591.cpp' |
4207 | --- Test/bug849591.cpp 1970-01-01 00:00:00 +0000 |
4208 | +++ Test/bug849591.cpp 2011-03-11 21:16:06 +0000 |
4209 | @@ -0,0 +1,56 @@ |
4210 | +/* |
4211 | +Bugs item #849591, was opened at 2003-11-26 11:35 |
4212 | +Message generated for change (Tracker Item Submitted) made by Item Submitter |
4213 | +You can respond by visiting: |
4214 | +https://sourceforge.net/tracker/?func=detail&atid=106556&aid=849591&group_id=6556 |
4215 | + |
4216 | +Category: None |
4217 | +Group: None |
4218 | +Status: Open |
4219 | +Resolution: None |
4220 | +Priority: 5 |
4221 | +Submitted By: Igor Proskuriakov (proskig) |
4222 | +Assigned to: Nobody/Anonymous (nobody) |
4223 | +Summary: C++ Member templates |
4224 | + |
4225 | +Initial Comment: |
4226 | +Hi, |
4227 | +There seems to be a problem with how ctags treats C++ |
4228 | +member templates. Example: |
4229 | +*/ |
4230 | +void MainClass< ParamClass1&, ParamClass2>::Foo() |
4231 | +{ |
4232 | + exit(0); |
4233 | +}; |
4234 | +/* |
4235 | +Generates erroneous tag |
4236 | +ParamClass1 test.cpp /^void MainClass< ParamClass1&, ParamClass2>::Foo()$/;" v |
4237 | + |
4238 | +Full ctags file: |
4239 | +!_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/ |
4240 | +!_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/ |
4241 | +!_TAG_PROGRAM_AUTHOR Darren Hiebert /dhiebert@users.sourceforge.net/ |
4242 | +!_TAG_PROGRAM_NAME Exuberant Ctags // |
4243 | +!_TAG_PROGRAM_URL http://ctags.sourceforge.net /official site/ |
4244 | +!_TAG_PROGRAM_VERSION 5.5.2 // |
4245 | +Foo test.cpp /^void MainClass< const ParamClass1&, ParamClass2>::Foo()$/;" f class:ParamClass2 |
4246 | +ParamClass1 test.cpp /^void MainClass< ParamClass1&, ParamClass2>::Foo()$/;" v |
4247 | + |
4248 | +----- |
4249 | + |
4250 | +Removing space after first angle bracket: |
4251 | +*/ |
4252 | +void MainClass<ParamClass1&, ParamClass2>::Foo() |
4253 | +{ |
4254 | + exit(0); |
4255 | +}; |
4256 | +/* |
4257 | +makes ctags to drop first letter from parameter class |
4258 | +name: |
4259 | + |
4260 | +aramClass1 test.cpp /^void MainClass<ParamClass1&, ParamClass2>::Foo()$/;" v |
4261 | + |
4262 | + |
4263 | +Let me know if you need any clarification with this issue. |
4264 | +Many thanks in advance! |
4265 | +*/ |
4266 | |
4267 | === added file 'Test/bug852368.cpp' |
4268 | --- Test/bug852368.cpp 1970-01-01 00:00:00 +0000 |
4269 | +++ Test/bug852368.cpp 2011-03-11 21:16:06 +0000 |
4270 | @@ -0,0 +1,34 @@ |
4271 | +/* |
4272 | +Bugs item #852368, was opened at 2003-12-01 23:20 |
4273 | +Message generated for change (Tracker Item Submitted) made by Item Submitter |
4274 | +You can respond by visiting: |
4275 | +https://sourceforge.net/tracker/?func=detail&atid=106556&aid=852368&group_id=6556 |
4276 | + |
4277 | +Category: None |
4278 | +Group: None |
4279 | +Status: Open |
4280 | +Resolution: None |
4281 | +Priority: 5 |
4282 | +Submitted By: Welti Marco (cider101) |
4283 | +Assigned to: Nobody/Anonymous (nobody) |
4284 | +Summary: c/c++ unabalanced template brackets in signature |
4285 | + |
4286 | +Initial Comment: |
4287 | +hi, |
4288 | + |
4289 | +ctags 5.5x generates unbalanced tempalte brackets in |
4290 | +the method/function signature if a funtion parameter |
4291 | +is a template. |
4292 | + |
4293 | +i.e. |
4294 | +*/ |
4295 | +void foo(std::vector<float> &); |
4296 | +/* |
4297 | +generates the following signature |
4298 | +signature:void (std::vector<<float>&) |
4299 | + |
4300 | +let me know if you need more details. |
4301 | + |
4302 | +regards |
4303 | +cider |
4304 | +*/ |
4305 | |
4306 | === added file 'Test/bug858165.f90' |
4307 | --- Test/bug858165.f90 1970-01-01 00:00:00 +0000 |
4308 | +++ Test/bug858165.f90 2011-03-11 21:16:06 +0000 |
4309 | @@ -0,0 +1,25 @@ |
4310 | +! Bugs item #858165, was opened at 2003-12-11 10:09 |
4311 | +! Message generated for change (Tracker Item Submitted) made by Item Submitter |
4312 | +! You can respond by visiting: |
4313 | +! https://sourceforge.net/tracker/?func=detail&atid=106556&aid=858165&group_id=6556 |
4314 | +! |
4315 | +! Category: None |
4316 | +! Group: None |
4317 | +! Status: Open |
4318 | +! Resolution: None |
4319 | +! Priority: 5 |
4320 | +! Submitted By: Blazej Krzeminski (blazk) |
4321 | +! Assigned to: Nobody/Anonymous (nobody) |
4322 | +! Summary: Fortran90: comment line after continuation character & |
4323 | +! |
4324 | +! Initial Comment: |
4325 | +program test |
4326 | + |
4327 | +integer :: a, & !comment on variable a |
4328 | + b, & !comment on variable b |
4329 | + !more comment on variable b, CTAGS STOPS HERE |
4330 | + c, & !comment on variable c |
4331 | + d !comment on variable d |
4332 | +end program test |
4333 | + |
4334 | +! ctags will index program test, a,b but not c,d |
4335 | |
4336 | === added file 'Test/bug872494.cpp' |
4337 | --- Test/bug872494.cpp 1970-01-01 00:00:00 +0000 |
4338 | +++ Test/bug872494.cpp 2011-03-11 21:16:06 +0000 |
4339 | @@ -0,0 +1,43 @@ |
4340 | +/* |
4341 | +Bugs item #872494, was opened at 2004-01-07 16:33 |
4342 | +Message generated for change (Tracker Item Submitted) made by Item Submitter |
4343 | +You can respond by visiting: |
4344 | +https://sourceforge.net/tracker/?func=detail&atid=106556&aid=872494&group_id=6556 |
4345 | + |
4346 | +Category: None |
4347 | +Group: None |
4348 | +Status: Open |
4349 | +Resolution: None |
4350 | +Priority: 5 |
4351 | +Submitted By: Igor Proskuriakov (proskig) |
4352 | +Assigned to: Nobody/Anonymous (nobody) |
4353 | +Summary: C++ class template specialization |
4354 | + |
4355 | +Initial Comment: |
4356 | +Hi, |
4357 | +some time ago I posted a bug related to C++ member |
4358 | +template, which was fixed using patch bug849591.diff. |
4359 | +Many thanks - it really fixed the problem ! |
4360 | +Now about a different one. |
4361 | +When parsing C++ file ctags seems to ignore template |
4362 | +specialization, but I think that it maybe useful to add it |
4363 | +as a configurable feature. Another problem is that |
4364 | +template specialization seems to confuse patched |
4365 | +version of ctags (patch bug849591.diff). When running a |
4366 | +patched version against the following file |
4367 | +*/ |
4368 | +template<class T> class TemplClass { double i;}; |
4369 | + |
4370 | +template<> class TemplClass< char* > { int i;}; |
4371 | + |
4372 | +class FooClass2{}; |
4373 | +/* |
4374 | +it does not generate tag for FooClass2 while ctags 5.5.2 |
4375 | +does generate tag for FooClass2. Neither of them |
4376 | +generate tag for specialization TemplClass<char *>. |
4377 | + |
4378 | +thanks in advance and let me know should you need |
4379 | +more info! |
4380 | + |
4381 | +Igor |
4382 | +*/ |
4383 | |
4384 | === added file 'Test/bug877956.f90' |
4385 | --- Test/bug877956.f90 1970-01-01 00:00:00 +0000 |
4386 | +++ Test/bug877956.f90 2011-03-11 21:16:06 +0000 |
4387 | @@ -0,0 +1,54 @@ |
4388 | +! Bugs item #877956, was opened at 2004-01-15 17:59 |
4389 | +! Message generated for change (Tracker Item Submitted) made by Item Submitter |
4390 | +! You can respond by visiting: |
4391 | +! https://sourceforge.net/tracker/?func=detail&atid=106556&aid=877956&group_id=6556 |
4392 | +! |
4393 | +! Category: None |
4394 | +! Group: None |
4395 | +! Status: Open |
4396 | +! Resolution: None |
4397 | +! Priority: 5 |
4398 | +! Submitted By: Randy Hood (randy762) |
4399 | +! Assigned to: Nobody/Anonymous (nobody) |
4400 | +! Summary: Broken Fortran variable listing after =-1 |
4401 | +! |
4402 | +! Initial Comment: |
4403 | +! When I run ctags v5.5.2 on Redhat Linux 9 with the command |
4404 | +! |
4405 | +! ctags --Fortran-kinds=v -x test.f90 |
4406 | +! |
4407 | +! where test.f90 is |
4408 | +! ---------------------------------- |
4409 | +PROGRAM test |
4410 | + |
4411 | + IMPLICIT NONE |
4412 | + INTEGER :: cm1 =-1, c2 = 2 |
4413 | + |
4414 | +END PROGRAM test |
4415 | +! ------------------------------------- |
4416 | +! |
4417 | +! I only get this one line of output |
4418 | +! |
4419 | +! cm1 variable 4 test.f90 INTEGER :: cm1 =-1, c2 = 2 |
4420 | +! |
4421 | +! If I change one line of test.f90 so that it is now |
4422 | +! ---------------------------------------- |
4423 | +PROGRAM test |
4424 | + |
4425 | + IMPLICIT NONE |
4426 | + INTEGER :: cm1 = -1, c2 = 2 |
4427 | + |
4428 | +END PROGRAM test |
4429 | +! ----------------------------------------- |
4430 | +! and run the command |
4431 | +! |
4432 | +! ctags --Fortran-kinds=v -x test.f90 |
4433 | +! |
4434 | +! I get this correct output |
4435 | +! |
4436 | +! c2 variable 4 test.f90 INTEGER :: cm1 = -1, c2 = 2 |
4437 | +! cm1 variable 4 test.f90 INTEGER :: cm1 = -1, c2 = 2 |
4438 | +! |
4439 | +! ---------------------------------------------------------------------- |
4440 | +! You can respond by visiting: |
4441 | +! https://sourceforge.net/tracker/?func=detail&atid=106556&aid=877956&group_id=6556 |
4442 | |
4443 | === added file 'Test/bug960316.v' |
4444 | --- Test/bug960316.v 1970-01-01 00:00:00 +0000 |
4445 | +++ Test/bug960316.v 2011-03-11 21:16:06 +0000 |
4446 | @@ -0,0 +1,53 @@ |
4447 | +/************************************************************************** |
4448 | +**** |
4449 | +* test task one |
4450 | +* the line below has 53 asteriks |
4451 | +*****************************************************/ |
4452 | +task pass_task_1; |
4453 | +begin |
4454 | +end |
4455 | +endtask |
4456 | + |
4457 | +/************************************************************************** |
4458 | +**** |
4459 | +* test task one |
4460 | +* the line below has 54 asteriks |
4461 | +******************************************************/ |
4462 | +task fail_task_2; |
4463 | +begin |
4464 | +end |
4465 | +endtask |
4466 | + |
4467 | +/************************************************************************** |
4468 | +**** |
4469 | +* test function one |
4470 | +* the line below has 53 asteriks |
4471 | +*****************************************************/ |
4472 | +function pass_func_1; |
4473 | +begin |
4474 | +end |
4475 | +endfunction |
4476 | + |
4477 | +/************************************************************************** |
4478 | +**** |
4479 | +* test function two |
4480 | +* the line below has 54 asteriks |
4481 | +******************************************************/ |
4482 | +function fail_func_2; |
4483 | +begin |
4484 | +end |
4485 | +endfunction |
4486 | + |
4487 | +/************************************************************************** |
4488 | +**** |
4489 | +* test function one |
4490 | +* the line below has 53 asteriks |
4491 | +*****************************************************/ |
4492 | +`define pass_define_1 1'b1; |
4493 | + |
4494 | +/************************************************************************** |
4495 | +**** |
4496 | +* test function two |
4497 | +* the line below has 54 asteriks |
4498 | +******************************************************/ |
4499 | +`define fail_define_2 1'b1; |
4500 | |
4501 | === added file 'Test/bug961001.v' |
4502 | --- Test/bug961001.v 1970-01-01 00:00:00 +0000 |
4503 | +++ Test/bug961001.v 2011-03-11 21:16:06 +0000 |
4504 | @@ -0,0 +1,26 @@ |
4505 | +/* |
4506 | + * In Verilog, the following two lines are both valid syntax: |
4507 | + * |
4508 | + * `define GUEST |
4509 | + * `define GUEST <value> |
4510 | + * |
4511 | + * The first defines "GUEST" as existing, but with no assigned |
4512 | + * value. The second defines "GUEST" as existing with an |
4513 | + * assigned value. Ctags55 correctly handles both cases, but |
4514 | + * Ctags551 - Ctags554 only handles the `define with value |
4515 | + * correctly. Here is some test code to demonstrate this: |
4516 | + */ |
4517 | +`define HOSTA |
4518 | +`define HOSTB |
4519 | +`define HOSTC |
4520 | +`define HOSTD |
4521 | + |
4522 | +`define GUESTA 1 |
4523 | +`define GUESTB 2 |
4524 | +`define GUESTC 3 |
4525 | +`define GUESTD 4 |
4526 | +/* |
4527 | + * Ctags55 correctly generates a tag for all `defines in the |
4528 | + * code, but Ctags554 does not generate tags for "HOSTB" |
4529 | + * or "HOSTD". |
4530 | + */ |
4531 | |
4532 | === added file 'Test/build.xml' |
4533 | --- Test/build.xml 1970-01-01 00:00:00 +0000 |
4534 | +++ Test/build.xml 2011-03-11 21:16:06 +0000 |
4535 | @@ -0,0 +1,102 @@ |
4536 | +<?xml version="1.0" encoding="UTF-8" ?> |
4537 | + |
4538 | +<project name="MyProject" default="deploy" basedir="."> |
4539 | + |
4540 | + <target name="init"> |
4541 | + <property environment="envvars" /> |
4542 | + <property name="rootDir" value="." /> |
4543 | + <property name="srcDir" value="${rootDir}/src" /> |
4544 | + |
4545 | + <path id="base.classpath"> |
4546 | + <pathelement location="${buildDir}" /> |
4547 | + </path> |
4548 | + </target> |
4549 | + |
4550 | + <target name="clean" depends="init"> |
4551 | + <delete dir="${buildDir}" |
4552 | + verbose="false" |
4553 | + quiet="false" |
4554 | + /> |
4555 | + </target> |
4556 | + |
4557 | + <target name="compile_something" depends="init"> |
4558 | + <mkdir dir="${buildDir}" /> |
4559 | + <mkdir dir="${buildDir}/images" /> |
4560 | + <javac srcdir="${javaDir}" |
4561 | + destdir="${buildDir}" |
4562 | + debug="on" |
4563 | + optimize="off" |
4564 | + verbose="no" |
4565 | + listfiles="yes" |
4566 | + deprecation="no" |
4567 | + classpathref="base.classpath" |
4568 | + /> |
4569 | + |
4570 | + <copy toDir="${buildDir}/images"> |
4571 | + <fileset dir="${javaImagesDir}" includes="*.*" /> |
4572 | + </copy> |
4573 | + |
4574 | + </target> |
4575 | + |
4576 | + <!--target name="generate_h_from_java" depends="compile_something"> |
4577 | + <exec executable="javah" dir="${buildDir}"> |
4578 | + </exec> |
4579 | + </target--> |
4580 | + |
4581 | + <target name="generate_h_from_java" depends="compile_something"> |
4582 | + <javah destdir="${ulgateDir}" classpath="${buildDir}"> |
4583 | + </javah> |
4584 | + </target> |
4585 | + |
4586 | + <target name="javadoc"> |
4587 | + <delete dir="${javaDocDir}" |
4588 | + verbose="false" |
4589 | + quiet="false" |
4590 | + /> |
4591 | + <mkdir dir="${javaDocDir}" /> |
4592 | + <javadoc destdir="${javaDocDir}" |
4593 | + classpathref="base.classpath" |
4594 | + link="http://java.sun.com/j2se/1.4.1/docs/api/" |
4595 | + verbose="no" |
4596 | + additionalparam="-breakiterator" |
4597 | + > |
4598 | + <fileset dir="${javaDir}" /> |
4599 | + </javadoc> |
4600 | + </target> |
4601 | + |
4602 | + <target name="deploy" depends="compile_something, generate_h_from_java"> |
4603 | + |
4604 | + <delete dir="${deployDir}" |
4605 | + verbose="false" |
4606 | + quiet="false" |
4607 | + /> |
4608 | + <mkdir dir="${deployDir}" /> |
4609 | + <mkdir dir="${deployDir}/client" /> |
4610 | + <mkdir dir="${deployDir}/server" /> |
4611 | + |
4612 | + <jar jarfile="${deployDir}/server/something.jar"> |
4613 | + <fileset dir="${buildDir}" |
4614 | + includes="images/**" |
4615 | + /> |
4616 | + </jar> |
4617 | + |
4618 | + <copy toDir="${deployDir}/client" verbose="Yes" > |
4619 | + <fileset dir="${binDir}" includes="startClient.cmd" /> |
4620 | + <fileset dir="${binDir}" includes="killProcess.vbs" /> |
4621 | + </copy> |
4622 | + |
4623 | + <copy toDir="${deployDir}/server/sql" verbose="Yes" > |
4624 | + <fileset dir="${sqlDir}" includes="*.sql" /> |
4625 | + </copy> |
4626 | + |
4627 | + <copy toDir="${deployDir}/server/samples"> |
4628 | + <fileset dir="${samplesDir}" includes="**/*.*" /> |
4629 | + </copy> |
4630 | + |
4631 | + <copy toDir="${deployDir}/doc"> |
4632 | + <fileset dir="${docDir}" includes="**/*.*" /> |
4633 | + </copy> |
4634 | + |
4635 | + </target> |
4636 | + |
4637 | +</project> |
4638 | |
4639 | === added file 'Test/byte.f' |
4640 | --- Test/byte.f 1970-01-01 00:00:00 +0000 |
4641 | +++ Test/byte.f 2011-03-11 21:16:06 +0000 |
4642 | @@ -0,0 +1,7 @@ |
4643 | +! Provided by Brian Helsinki, 7 March 2003 |
4644 | + program byte_test |
4645 | + BYTE A, B, C |
4646 | + BYTE A1, B1, C1(10) |
4647 | + BYTE A2 /'x'/, B2 /255/, C2(10) |
4648 | + END |
4649 | + |
4650 | |
4651 | === added file 'Test/char-selector.f90' |
4652 | --- Test/char-selector.f90 1970-01-01 00:00:00 +0000 |
4653 | +++ Test/char-selector.f90 2011-03-11 21:16:06 +0000 |
4654 | @@ -0,0 +1,19 @@ |
4655 | +! Test for bug in parsing of char-selector |
4656 | + MODULE OUT_RD5 |
4657 | + USE inmdmx |
4658 | + IMPLICIT NONE |
4659 | + SAVE |
4660 | + |
4661 | + CHARACTER*(MXPATHLNGTH) temp |
4662 | + PRIVATE :: temp |
4663 | + INTEGER(4), PRIVATE, PARAMETER :: MXDDI=45 |
4664 | + CHARACTER*40 titles(MXDDI) |
4665 | + PRIVATE :: titles |
4666 | + CHARACTER*12 units(MXDDI) |
4667 | + PRIVATE :: units |
4668 | + INTEGER(4), PRIVATE, DIMENSION (MXDDI+1) :: list |
4669 | + CHARACTER(1024) :: fpshape |
4670 | + INTEGER(4), PRIVATE :: nout |
4671 | + CHARACTER*(1024) :: fpshape2 |
4672 | + INTEGER(4), PRIVATE :: last |
4673 | + END MODULE OUT_RD5 |
4674 | |
4675 | === added file 'Test/class.e' |
4676 | --- Test/class.e 1970-01-01 00:00:00 +0000 |
4677 | +++ Test/class.e 2011-03-11 21:16:06 +0000 |
4678 | @@ -0,0 +1,72 @@ |
4679 | +indexing |
4680 | + |
4681 | + description: "Try everything" |
4682 | + |
4683 | +deferred class UBER_CLASS [G -> CONSTRAINT] obsolete "message" |
4684 | + |
4685 | +inherit |
4686 | + |
4687 | + ANY |
4688 | + rename |
4689 | + generator as my_generator, |
4690 | + generating_type as my_generating_type, |
4691 | + infix "/" as infix "//" |
4692 | + export |
4693 | + {NONE} my_generator, my_generating_type; |
4694 | + {ANY} same_type |
4695 | + undefine |
4696 | + is_equal |
4697 | + redefine |
4698 | + conforms_to |
4699 | + select |
4700 | + consitent |
4701 | + end |
4702 | + |
4703 | + LINKED_LIST [G] |
4704 | + export {NONE} |
4705 | + all |
4706 | + end |
4707 | + |
4708 | +creation |
4709 | + |
4710 | + make, make2 |
4711 | + |
4712 | +create {SOMETHING} |
4713 | + |
4714 | + make3 |
4715 | + |
4716 | +feature -- Initialization |
4717 | + |
4718 | + make is |
4719 | + do |
4720 | + end |
4721 | + |
4722 | + make2 is |
4723 | + do |
4724 | + end |
4725 | + |
4726 | + make3 is |
4727 | + do |
4728 | + end |
4729 | + |
4730 | +feature {ANY, NONE} -- Feature clause comment |
4731 | + |
4732 | + procedure_full is |
4733 | + require else |
4734 | + local |
4735 | + do |
4736 | + ensure then |
4737 | + rescue |
4738 | + end |
4739 | + |
4740 | + guard: INTEGER |
4741 | + |
4742 | +invariant |
4743 | + |
4744 | + invariant: condition |
4745 | + |
4746 | +indexing |
4747 | + |
4748 | + license: "May not be used for any purpose" |
4749 | + |
4750 | +end |
4751 | |
4752 | === added file 'Test/common.f' |
4753 | --- Test/common.f 1970-01-01 00:00:00 +0000 |
4754 | +++ Test/common.f 2011-03-11 21:16:06 +0000 |
4755 | @@ -0,0 +1,4 @@ |
4756 | + PROGRAM main |
4757 | + COMMON /common1/ c1a, c1b |
4758 | + COMMON /common2/ c2a (1:3), c2b /common3/ c3a, c3b |
4759 | + END |
4760 | |
4761 | === added file 'Test/complex_decl.c' |
4762 | --- Test/complex_decl.c 1970-01-01 00:00:00 +0000 |
4763 | +++ Test/complex_decl.c 2011-03-11 21:16:06 +0000 |
4764 | @@ -0,0 +1,2 @@ |
4765 | +/* Complex declarations */ |
4766 | +static void (* const(ScanAction[5][5]))(void *)= {}; |
4767 | |
4768 | === added file 'Test/continuation.f90' |
4769 | --- Test/continuation.f90 1970-01-01 00:00:00 +0000 |
4770 | +++ Test/continuation.f90 2011-03-11 21:16:06 +0000 |
4771 | @@ -0,0 +1,6 @@ |
4772 | +! Problem reported by Jim on 7 Jul 2002 |
4773 | +module test |
4774 | +real*8 :: & |
4775 | +para_a, & ! para_a is ... |
4776 | +para_b, & ! para_b is ... |
4777 | +para_c ! para_c is ... |
4778 | |
4779 | === added file 'Test/countall.sql' |
4780 | --- Test/countall.sql 1970-01-01 00:00:00 +0000 |
4781 | +++ Test/countall.sql 2011-03-11 21:16:06 +0000 |
4782 | @@ -0,0 +1,43 @@ |
4783 | +rem ----------------------------------------------------------------------- |
4784 | +rem URL: http://www.orafaq.com/scripts/plsql/countall.txt |
4785 | +rem Filename: countall.sql |
4786 | +rem Purpose: Count the number of rows for ALL tables in current schema |
4787 | +rem using PL/SQL |
4788 | +rem Date: 15-Apr-2000 |
4789 | +rem Author: Eberhardt, Roberto (Bolton) (reberhar@husky.ca) |
4790 | +rem ----------------------------------------------------------------------- |
4791 | + |
4792 | +set serveroutput on size 1000000 |
4793 | + |
4794 | +DECLARE |
4795 | + t_c1_tname user_tables.table_name%TYPE; |
4796 | + t_command varchar2(200); |
4797 | + t_cid integer; |
4798 | + t_total_records number(10); |
4799 | + stat integer; |
4800 | + row_count integer; |
4801 | + t_limit integer := 0; -- Only show tables with more rows |
4802 | + cursor c1 is select table_name from user_tables order by table_name; |
4803 | +BEGIN |
4804 | + t_limit := 0; |
4805 | + open c1; |
4806 | + loop |
4807 | + fetch c1 into t_c1_tname; |
4808 | + exit when c1%NOTFOUND; |
4809 | + t_command := 'SELECT COUNT(0) FROM '||t_c1_tname; |
4810 | + t_cid := DBMS_SQL.OPEN_CURSOR; |
4811 | + DBMS_SQL.PARSE(t_cid,t_command,dbms_sql.native); |
4812 | + DBMS_SQL.DEFINE_COLUMN(t_cid,1,t_total_records); |
4813 | + stat := DBMS_SQL.EXECUTE(t_cid); |
4814 | + row_count := DBMS_SQL.FETCH_ROWS(t_cid); |
4815 | + DBMS_SQL.COLUMN_VALUE(t_cid,1,t_total_records); |
4816 | + if t_total_records > t_limit then |
4817 | + DBMS_OUTPUT.PUT_LINE(rpad(t_c1_tname,55,' ')|| |
4818 | + to_char(t_total_records,'99999999')||' record(s)'); |
4819 | + |
4820 | + end if; |
4821 | + DBMS_SQL.CLOSE_CURSOR(t_cid); |
4822 | + end loop; |
4823 | + close c1; |
4824 | +END; |
4825 | +/ |
4826 | |
4827 | === added file 'Test/cpp_destructor.cpp' |
4828 | --- Test/cpp_destructor.cpp 1970-01-01 00:00:00 +0000 |
4829 | +++ Test/cpp_destructor.cpp 2011-03-11 21:16:06 +0000 |
4830 | @@ -0,0 +1,6 @@ |
4831 | +A::~A() { } |
4832 | + |
4833 | +B:: ~B () { } |
4834 | + |
4835 | +// bug 1585745 |
4836 | +C:: ~ C () { } |
4837 | |
4838 | === added file 'Test/cython_sample.pyx' |
4839 | --- Test/cython_sample.pyx 1970-01-01 00:00:00 +0000 |
4840 | +++ Test/cython_sample.pyx 2011-03-11 21:16:06 +0000 |
4841 | @@ -0,0 +1,46 @@ |
4842 | +# -*- cython-mode -*- |
4843 | +# test code for python/cython functionality |
4844 | + |
4845 | +python_var = 1 |
4846 | + |
4847 | +cdef int i = 2 # cython identifiers are not indexed |
4848 | +cdef : |
4849 | + int j = 3 |
4850 | +cdef k = 4 # no type here |
4851 | + |
4852 | +cdef int int_identity(int i) : return i |
4853 | + |
4854 | +# here is a long one |
4855 | +cdef object int2string(int i) : |
4856 | + return str(i) |
4857 | + |
4858 | +# a cdef class |
4859 | +cdef class CDefClass : |
4860 | + def __init__(self) : |
4861 | + pass |
4862 | + def standard_method(self,i) : |
4863 | + return i |
4864 | + cdef int c_method(self,int i) : |
4865 | + return i |
4866 | + |
4867 | +# a python function |
4868 | +def identity(x) : |
4869 | + return x |
4870 | + |
4871 | +# a python class |
4872 | +class StdClass : |
4873 | + def return_me(self) : |
4874 | + return "me" |
4875 | + |
4876 | +cdef CDefClass cdefObj = CDefClass() |
4877 | +stdObj = StdClass() |
4878 | + |
4879 | +print "cython_sample: testing to make sure this file compiles and runs..." |
4880 | +print "i is: ", i |
4881 | +print "j is: ", j |
4882 | +print "i via identity: ", int_identity(i) |
4883 | +print "i via int2string: ", int2string(i) |
4884 | +print "cdefObj: ", cdefObj.c_method(i) |
4885 | +print "k via py identity", identity(k) |
4886 | +print "py method call:", stdObj.return_me() |
4887 | + |
4888 | |
4889 | === added file 'Test/db-trig.sql' |
4890 | --- Test/db-trig.sql 1970-01-01 00:00:00 +0000 |
4891 | +++ Test/db-trig.sql 2011-03-11 21:16:06 +0000 |
4892 | @@ -0,0 +1,31 @@ |
4893 | +rem ----------------------------------------------------------------------- |
4894 | +rem URL: http://www.orafaq.com/scripts/plsql/db-trig.txt |
4895 | +rem Filename: db-trig.sql |
4896 | +rem Purpose: Demonstrate database triggers (available from Oracle 8i) |
4897 | +rem Need DBA or CREATE ANY TRIGGER privs |
4898 | +rem Date: 28-Aug-1998 |
4899 | +rem Author: Frank Naude (frank@ibi.co.za) |
4900 | +rem ----------------------------------------------------------------------- |
4901 | + |
4902 | +create or replace trigger restrict_login |
4903 | + after logon on database |
4904 | +declare |
4905 | + flag number := 0; |
4906 | +begin |
4907 | + select 1 into flag from sys.v_$session where program like '%sqlplus%'; |
4908 | + if flag = 1 then |
4909 | + raise_application_error(-20000, 'No access from sqlplus'); |
4910 | + end if; |
4911 | +end; |
4912 | +/ |
4913 | +show errors |
4914 | + |
4915 | + |
4916 | +CREATE OR REPLACE TRIGGER startup_db |
4917 | +after startup on database |
4918 | +begin |
4919 | + dbms_shared_pool.keep ('SYS.STANDARD','P'); |
4920 | + dbms_shared_pool.keep ('SYS.DBMS_STANDARD','P'); |
4921 | +end; |
4922 | +/ |
4923 | +show errors |
4924 | |
4925 | === added file 'Test/debian_432872.f90' |
4926 | --- Test/debian_432872.f90 1970-01-01 00:00:00 +0000 |
4927 | +++ Test/debian_432872.f90 2011-03-11 21:16:06 +0000 |
4928 | @@ -0,0 +1,8 @@ |
4929 | +! { dg-do compile } |
4930 | +! PR18923 segfault after subroutine name confusion. |
4931 | +module FOO |
4932 | +contains |
4933 | + subroutine FOO ! { dg-error "conflicts with PROCEDURE" } |
4934 | + character(len=selected_int_kind(0)) :: C ! { dg-error "data declaration statement" } |
4935 | + end subroutine ! { dg-error "Expecting END MODULE statement" } |
4936 | +end ! { dg-warning "CONTAINS statement without FUNCTION" } |
4937 | \ No newline at end of file |
4938 | |
4939 | === added file 'Test/directives.c' |
4940 | --- Test/directives.c 1970-01-01 00:00:00 +0000 |
4941 | +++ Test/directives.c 2011-03-11 21:16:06 +0000 |
4942 | @@ -0,0 +1,69 @@ |
4943 | +/* Test simple cases */ |
4944 | +#define VARIABLE_LIKE some_value |
4945 | +#define FUNCTION_LIKE(a,b) (a + b) |
4946 | +#pragma weak WeakSymbol = StrongSymbol |
4947 | + |
4948 | +#define with_long_comment /* line 1 |
4949 | + line 2 */ |
4950 | + |
4951 | +/* Test usual case */ |
4952 | +#ifdef MY_MACRO |
4953 | +# define MACRO_TO_SEE1 1 |
4954 | +int a; |
4955 | +#elif YOUR_MACRO |
4956 | +# define MACRO_TO_SEE2 2 |
4957 | +int b; |
4958 | +#elif defined (THEIR_MACRO) |
4959 | +# define MACRO_TO_SEE3 3 |
4960 | +int c; |
4961 | +#else |
4962 | +# define MACRO_TO_SEE4 4 |
4963 | +int d; |
4964 | +#endif |
4965 | + |
4966 | +/* Test commented-out case */ |
4967 | +#if 0 |
4968 | +#define IGNORE_MACRO |
4969 | +int e; |
4970 | +# if 0 |
4971 | +# define ANOTHER_IGNORE_MACRO |
4972 | +int f; |
4973 | +# else |
4974 | +# define YAIM |
4975 | +# endif |
4976 | +#else |
4977 | +# define SEE_THIS_MACRO 1 |
4978 | +int g; |
4979 | +#endif |
4980 | + |
4981 | +/* Test path selection algorithm */ |
4982 | +#ifdef OK |
4983 | +#define PATH1 |
4984 | +int foo1 (void) |
4985 | +{ |
4986 | +#elif defined (OK) |
4987 | +#define PATH2 |
4988 | +int foo2 (void) |
4989 | +{ |
4990 | +#else |
4991 | +#define PATH3 |
4992 | +int foo3 (void) |
4993 | +{ |
4994 | +#endif |
4995 | +} |
4996 | + |
4997 | +int bar1 (void) |
4998 | +{ |
4999 | +#ifdef OK |
5000 | +#define PATH1b |
Patch pilots, please hold off on this; I'd like to look at this in Debian.