On 05/15/2012 07:18 AM, Dodji Seketeli wrote:
+paste_tokens (cpp_reader *pfile, source_location lhs_location,

If in the long run we want the location passed in to be the ## location, let's drop the "lhs" from the parameter name.

-      const cpp_token *result = cpp_get_token (pfile);
+      const cpp_token *result = cpp_get_token_with_location (pfile, NULL);

I find the difference between these two functions confusing, since you aren't passing in a pointer for the location to go into. I see that cpp_get_token_with_location sets pfile->set_invocation_location, which is documented to mean

  /* When expanding a macro at top-level, this is the location of the
     macro invocation.  */
  source_location invocation_location;

  /* True if this call to cpp_get_token should consider setting
     invocation_location.  */
  bool set_invocation_location;

But presumably get_token_no_padding isn't only called when we're starting to expand a top-level macro. And as far as I can tell the value of invocation_location is only used when we aren't tracking virtual locations anyway. So why does the change above fix the testcase?

Jason

Reply via email to