edyp87 marked an inline comment as done.
edyp87 added a comment.

1. Extended diff has been generated - sorry, I am new to Phabricator.
2. AST for this case looks like this:

> AST for crashing case:

> 

>   -VarDecl 0x2b27370 <line:96:1, col:28> col:19 function 'const char *const' 
> callinit

>    `-ImplicitCastExpr 0x2b274c0 <col:28> 'const char *' <ArrayToPointerDecay>

>      `-PredefinedExpr 0x2b27470 <col:28> 'const char [1]' lvalue __FUNCTION__

>        `-StringLiteral 0x2b27448 <col:28> 'const char [1]' lvalue ""

> 

> Valid case:

> 

>   -VarDecl 0x2b26660 <line:90:1, col:32> col:19 HexPrintable 'const char 
> *const' callinit

>    `-ImplicitCastExpr 0x2b26718 <col:32> 'const char *' <ArrayToPointerDecay>

>      `-StringLiteral 0x2b266b8 <col:32> 'const char [3]' lvalue "@\\"


For `StringExpr` whose parent is `PredefinedExpr` `Lexer::getSourceText` 
returns this expr literally (`__FUNCTION__`) instead of evaluated function 
name. 
I was wondering whether there is another case which results in such assert 
(lack of quote in string) but I could not came with an idea of such scenario.
Another approach would be just returning from `check()` method while evaluating 
"quote-less" string but I thought that it would be less elegant.


http://reviews.llvm.org/D19331



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

Reply via email to