summaryrefslogtreecommitdiffstats
path: root/clang/lib/Lex/LiteralSupport.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* In StringLiteralParser::init, make sure we emit an error whenArgyrios Kyrtzidis2012-05-031-14/+13
| | | | | | | | failing to lex the string, as suggested by Eli. Part of rdar://11305263. llvm-svn: 156081
* In StringLiteralParser::init(), fail gracefully if the string isArgyrios Kyrtzidis2012-05-031-1/+6
| | | | | | | | | not as we expect; it may be due to racing issue of a file coming from PCH changing after the PCH is loaded. rdar://11353109 llvm-svn: 156043
* Unify naming of LangOptions variable/get function across the Clang stack ↵David Blaikie2012-03-111-6/+6
| | | | | | | | | | (Lex to AST). The member variable is always "LangOpts" and the member function is always "getLangOpts". Reviewed by Chris Lattner llvm-svn: 152536
* Improve diagnostics for UCNs referring to control characters and members of theRichard Smith2012-03-091-24/+41
| | | | | | | | | | basic source character set in C++98. Add -Wc++98-compat diagnostics for same in literals in C++11. Extend such support to cover string literals as well as character literals, and mark N2170 as done. This seems too minor to warrant a release note to me. Let me know if you disagree. llvm-svn: 152444
* When checking the encoding of an 8-bit string literal, don't just check theRichard Smith2012-03-081-13/+8
| | | | | | | first codepoint! Also, don't reject empty raw string literals for spurious "encoding" issues. Also, don't rely on undefined behavior in ConvertUTF.c. llvm-svn: 152344
* Add support for cooked forms of user-defined-integer-literal andRichard Smith2012-03-081-3/+15
| | | | | | | user-defined-floating-literal. Support for raw forms of these literals to follow. llvm-svn: 152302
* User-defined literal support for character literals.Richard Smith2012-03-081-0/+3
| | | | llvm-svn: 152277
* Lexing support for user-defined literals. Currently these lex as the same tokenRichard Smith2012-03-051-5/+52
| | | | | | | kinds as the underlying string literals, and we silently drop the ud-suffix; those issues will be fixed by subsequent patches. llvm-svn: 152012
* Implement warning for non-wide string literals with an unexpected encoding. ↵Eli Friedman2012-02-111-15/+40
| | | | | | Downgrade error for non-wide character literals with an unexpected encoding to a warning for compatibility with gcc and older versions of clang. <rdar://problem/10837678>. llvm-svn: 150295
* Fixing hex floating literal support so that it handles 0x.2p2 properly.Aaron Ballman2012-02-081-6/+11
| | | | llvm-svn: 150072
* Hex literals without a significand no longer crash the lexer. Fixes bug 7910Aaron Ballman2012-02-071-0/+6
| | | | | | Patch by Eitan Adler llvm-svn: 149984
* Basic: import SmallString<> into clang namespaceDylan Noblesmith2012-02-051-2/+2
| | | | | | | (I was going to fix the TODO about DenseMap too, but that would break self-host right now. See PR11922.) llvm-svn: 149799
* stop claiming unicode escape sequences are too long in strings, because they ↵Seth Cantrell2012-01-181-2/+0
| | | | | | never are llvm-svn: 148391
* Improves support for Unicode in character literalsSeth Cantrell2012-01-181-64/+115
| | | | | | | | | | | | | | | | | | | | Updates ProcessUCNExcape() for C++. C++11 allows UCNs in character and string literals that represent control characters and basic source characters. Also C++03 allows UCNs that refer to surrogate codepoints. UTF-8 sequences in character literals are now handled as single c-chars. Added error for multiple characters in Unicode character literals. Added errors for when a the execution charset encoding of a c-char cannot be represented as a single code unit in the associated character type. Note that for the purposes of this error the asso- ciated character type for a narrow character literal is char, not int, even though in C narrow character literals have type int. llvm-svn: 148389
* Fix a regression in wide character codegen. See PR11369.Nico Weber2011-11-141-2/+2
| | | | llvm-svn: 144521
* Fix one last place where we weren't writing into a string literal consistently.Eli Friedman2011-11-051-2/+14
| | | | llvm-svn: 143769
* Use native endianness for writing out character escapes to the result buffer ↵Eli Friedman2011-11-021-20/+32
| | | | | | for string literal parsing. No functional change on little-endian architectures; should fix test failures on PPC. llvm-svn: 143585
* Perform proper conversion for strings encoded in the source file as UTF-8. ↵Eli Friedman2011-11-011-11/+44
| | | | | | | | | | (For now, we are assuming the source character set is always UTF-8; this can be easily extended if necessary.) Tests will be coming up in a subsequent commit. Patch by Seth Cantrell. llvm-svn: 143416
* We do parse hexfloats in C++11; make it actually work.Douglas Gregor2011-10-121-3/+0
| | | | llvm-svn: 141798
* When parsing a character literal, extract the characters from theDouglas Gregor2011-09-271-1/+1
| | | | | | | | buffer as an 'unsigned char', so that integer promotion doesn't sign-extend character values > 127 into oblivion. Fixes <rdar://problem/10188919>. llvm-svn: 140608
* Rename Diagnostic to DiagnosticsEngine as per issue 5397David Blaikie2011-09-251-3/+4
| | | | llvm-svn: 140478
* Fix missing includes for llvm_unreachableDavid Blaikie2011-09-231-0/+1
| | | | llvm-svn: 140368
* Switch assert(0/false) llvm_unreachable.David Blaikie2011-09-231-1/+1
| | | | llvm-svn: 140367
* Rename LangOptions::Microsoft to LangOptions::MicrosoftExt to make it clear ↵Francois Pichet2011-09-171-1/+1
| | | | | | | | that this flag must be used only for Microsoft extensions and not emulation; to avoid confusion with the new LangOptions::MicrosoftMode flag. Many of the code now under LangOptions::MicrosoftExt will eventually be moved under the LangOptions::MicrosoftMode flag. llvm-svn: 139987
* Allow C99 hexfloats in C++0x mode. This change resolves the standardsDouglas Gregor2011-08-301-4/+2
| | | | | | | | | collision between C99 hexfloats and C++0x user-defined literals by giving C99 hexfloats precedence. Also, warning about user-defined literals that conflict with hexfloats and those that have names that are reserved by the implementation. Fixes <rdar://problem/9940194>. llvm-svn: 138839
* Warn about and truncate UCNs that are too big for their character literal type.Craig Topper2011-08-191-5/+5
| | | | llvm-svn: 138031
* De-Unicode-ify.NAKAMURA Takumi2011-08-121-2/+2
| | | | llvm-svn: 137430
* Raw string followup. Pass a couple StringRefs by value.Craig Topper2011-08-111-1/+1
| | | | llvm-svn: 137301
* Add support for C++0x raw string literals.Craig Topper2011-08-111-74/+148
| | | | llvm-svn: 137298
* Fix comment (test commit)Craig Topper2011-08-081-1/+1
| | | | llvm-svn: 137039
* Add support for C++0x unicode string and character literals, from Craig Topper!Douglas Gregor2011-07-271-64/+93
| | | | llvm-svn: 136210
* remove unneeded llvm:: namespace qualifiers on some core types now that ↵Chris Lattner2011-07-231-6/+4
| | | | | | | | LLVM.h imports them into the clang namespace. llvm-svn: 135852
* Fix a nasty bug where inside StringLiteralParser:Argyrios Kyrtzidis2011-05-171-1/+18
| | | | | | | | | | | | | | | | 1. We would assume that the length of the string literal token was at least 2 2. We would allocate a buffer with size length-2 And when the stars aligned (one of which would be an invalid source location due to stale PCH) The length would be 0 and we would try to allocate a 4GB buffer. Add checks for this corner case and a bunch of asserts. (We really really should have had an assert for 1.). Note that there's no test case since I couldn't get one (it was major PITA to reproduce), maybe later. llvm-svn: 131492
* fix a bunch of comment typos found by codespell. Patch byChris Lattner2011-04-151-1/+1
| | | | | | Luis Felipe Strano Moraes! llvm-svn: 129559
* Microsoft integer suffix changes:Francois Pichet2011-01-111-7/+18
| | | | | | | | | i64 is like LL i32 is like L Also set isMicrosoftInteger to true only if the suffix is well formed. llvm-svn: 123230
* Fix diagnostic for reporting bad escape sequence.Ted Kremenek2010-12-031-1/+1
| | | | | | Patch by Paul Curtis! llvm-svn: 120759
* move getSpelling from Preprocessor to Lexer, which it is more conceptually ↵Chris Lattner2010-11-171-4/+4
| | | | | | related to. llvm-svn: 119479
* propagate preprocessor out of StringLiteralParser. It is nowChris Lattner2010-11-171-10/+18
| | | | | | possible to create one without a preprocessor. llvm-svn: 119476
* push the preprocessor out of EncodeUCNEscapeChris Lattner2010-11-171-21/+14
| | | | llvm-svn: 119475
* move AdvanceToTokenCharacter and getLocForEndOfToken fromChris Lattner2010-11-171-3/+5
| | | | | | Preprocessor to Lexer where they make more sense. llvm-svn: 119474
* add a static version of PP::AdvanceToTokenCharacter.Chris Lattner2010-11-171-10/+13
| | | | llvm-svn: 119472
* push use of Preprocessor out farther.Chris Lattner2010-11-171-22/+18
| | | | llvm-svn: 119471
* push use of Preprocessor out of getOffsetOfStringByte Chris Lattner2010-11-171-6/+5
| | | | llvm-svn: 119470
* add a static form of the efficient PP::getSpelling method.Chris Lattner2010-11-171-1/+4
| | | | llvm-svn: 119469
* refactor the interface to StringLiteralParser::getOffsetOfStringByte,Chris Lattner2010-11-171-32/+39
| | | | | | pushing the dependency on the preprocessor out a bit. llvm-svn: 119468
* allow I128 suffixes in msextensions mode just like i128 suffixes, patchChris Lattner2010-10-141-1/+1
| | | | | | by Martin Vejnar! llvm-svn: 116460
* Add support for UCNs for character literalsNico Weber2010-10-091-25/+55
| | | | llvm-svn: 116129
* Add support for 4-byte UCNs like \U12345678. Warn about UCNs in c90 mode.Nico Weber2010-10-061-9/+30
| | | | llvm-svn: 115743
* Prevent warning when built with assert off.Fariborz Jahanian2010-08-311-0/+1
| | | | llvm-svn: 112680
* Some support for unicode string constantsFariborz Jahanian2010-08-311-3/+18
| | | | | | in wide strings. radar 8360841. llvm-svn: 112672
OpenPOWER on IntegriCloud