[PATCH] D68436: [clang-scan-deps] Improve string/character literal skipping
    Duncan P. N. Exon Smith via Phabricator via cfe-commits 
    cfe-commits at lists.llvm.org
       
    Thu Oct  3 23:58:10 PDT 2019
    
    
  
dexonsmith accepted this revision.
dexonsmith added a comment.
This revision is now accepted and ready to land.
LGTM, with a few nitpicks about unnecessary nesting.
================
Comment at: clang/lib/Lex/DependencyDirectivesSourceMinimizer.cpp:205
+      return;
+    if (*First == '\\') {
+      if (++First == End)
----------------
kousikk wrote:
> Should you also check if the character right after a backslash is equal to Terminator and if it is, continue on without terminating? The case I'm thinking of is:
> 
> ```
> #define FOO "FOO \"doublequote\""
> ```
> 
> The testcase would be something like:
> 
> ```
> StringRef Source = "#define FOO \"FOO \\\"doublequote\\\"\"
> ... do rest
> ```
> 
Invert condition with early `continue`?
================
Comment at: clang/lib/Lex/DependencyDirectivesSourceMinimizer.cpp:206
+    if (*First == '\\') {
+      if (++First == End)
+        return;
----------------
> Should you also check if the character right after a backslash is equal to Terminator and if it is, continue on without terminating?
> 
@kousikk, that was handled before this patch.  This `++First` combined with the one in the loop increment handles skipping over an escaped terminator.
================
Comment at: clang/lib/Lex/DependencyDirectivesSourceMinimizer.cpp:208
+        return;
+      if (isWhitespace(*First)) {
+        const char *FirstAfterBackslashPastSpace = First;
----------------
Invert condition with early `continue`?
================
Comment at: clang/lib/Lex/DependencyDirectivesSourceMinimizer.cpp:215
+          First = FirstAfterBackslashPastSpace + NLSize - 1;
+          continue;
+        }
----------------
Is this `continue` needed?
Repository:
  rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D68436/new/
https://reviews.llvm.org/D68436
    
    
More information about the cfe-commits
mailing list