On 09/29/2011 05:21 PM, Dodji Seketeli wrote:
+     When the token is /not/ an argument for a macro, xI is the same
+     location as yI.  Otherwise, xI is either the virtual location of
+     that argument token if it comes from a macro expansion itself, or
+     its spelling location.

I think this could be a little clearer:

.... Otherwise, xI is the location of the token outside this macro expansion. If this macro was expanded from another macro expansion, xI is a virtual location representing the token in that macro expansion; otherwise, it is the spelling location of the token.

+  /* This is the location of the expansion point of the current macro
+     map.  That expansion point location is held by the map that was
+     current right before the current one. It could have been either
+     a macro or an ordinary map, depending on if we are in a
+     nested expansion context not.  */

This should clarify what location the expansion point is: is it the location of the macro name? the closing paren?

+source_location linemap_macro_map_loc_to_def_point (const struct line_map*,
+                                                   source_location);
+source_location linemap_macro_map_loc_unwind_toward_spelling (const struct line
_map*,
+                                                             source_location);
+source_location linemap_macro_map_loc_to_exp_point (const struct line_map*,
+                                                   source_location);

These should be static.

+const struct line_map *linemap_enter_macro (struct line_maps *,
+                                           struct cpp_hashnode*,
+                                           source_location,
+                                           unsigned int);
+source_location linemap_add_macro_token (const struct line_map *,
+                                        unsigned int,
+                                        source_location,
+                                        source_location);
+int linemap_get_expansion_line (struct line_maps *,
+                               source_location);
+const char* linemap_get_expansion_filename (struct line_maps *,
+                                           source_location);

And these should be declared in an internal header, not the public include/line-map.h.

+/* Expand source code location LOC and return a user readable source
+   code location.  */
+expanded_location linemap_expand_location (const struct line_map *,
+                                          source_location loc);
+
+/* Expand source code location LOC and return a user readable source
+   code location.  The LRK parameter is the same as for
+   linemap_resolve_location.  */
+
+expanded_location linemap_expand_location_full (struct line_maps *,

These comments should clarify that the first function only takes spelling locations, while the second also takes virtual locations.

-finish_declspecs (struct c_declspecs *specs)
+finish_declspecs (struct c_declspecs *specs,
+                 location_t where)

I'm not sure the beginning of the declspecs is a better place for these diagnostics than the beginning of the declarator. Why make this change?

Jason

Reply via email to