NoQ added inline comments.

================
Comment at: lib/StaticAnalyzer/Checkers/StdLibraryFunctionsChecker.cpp:509
@@ +508,3 @@
+  //    }
+  //  }
+  //}
----------------
dcoughlin wrote:
> I disagree about compactness being valuable here. I think it is more 
> important to intrinsically document the spec. These will be written once and 
> read frequently. When they are written, they will copied from a previous 
> example -- probably by someone who is not familiar with the code or the spec 
> format.
> 
> Another possibility (not sure if it is the right one here) is to use macro 
> tricks to define a simple DSL like Kulpreet did in the 
> LocalizationChecker.cpp.
> These will be written once and read frequently.

If only it was so :))

Hmm. What do you think of the following format? Macros mostly expand to empty 
or (argument), but it should be more readable than the `/*`...`*/` noise.


```
    SPEC {
      FOR_FUNCTION("isalnum"),
      SPEC_DATA {
        ARGUMENT_TYPES { IntTy },
        RETURN_TYPE(IntTy),
        INVALIDATION_APPROACH(EvalCallAsPure),
        BRANCHES {
          BRANCH { // Boils down to isupper() or islower() or isdigit()
            RANGE {
              ARG_NO(0), RANGE_KIND(WithinRange),
              SET { SEG('0', '9') U SEG('A', 'Z') U SEG('a', 'z') }
            },
            RANGE {
              RET_VAL, RANGE_KIND(OutOfRange),
              SET { SEG(0, 0) }
            }
          },
          BRANCH { // The locale-specific branch.
            RANGE {
              ARG_NO(0), RANGE_KIND(WithinRange),
              SET { SEG(128, 255) }
            }
          },
          BRANCH { // Other.
            RANGE {
              ARG_NO(0), RANGE_KIND(OutOfRange),
              SET { SEG('0', '9') U SEG('A', 'Z')
                                  U SEG('a', 'z') U SEG(128, 255)}
            },
            RANGE {
              RET_VAL, RANGE_KIND(WithinRange),
              SET { SEG(0, 0) }
            }
          }
        }
      }
    },
```


https://reviews.llvm.org/D20811



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to