llvm-project/clang
Douglas Gregor 29d907de03 When we run into an error parsing or type-checking the left-hand side
of a binary expression, continue on and parse the right-hand side of
the binary expression anyway, but don't call the semantic actions to
type-check. Previously, we would see the error and then, effectively,
skip tokens until the end of the statement. 

The result should be more useful recovery, both in the normal case
(we'll actually see errors beyond the first one in a statement), but
it also helps code completion do a much better job, because we do
"real" code completion on the right-hand side of an invalid binary
expression rather than completing with the recovery completion. For
example, given

  x = p->y

if there is no variable named "x", we can still complete after the p->
as a member expression. Along the recovery path, we would have
completed after the "->" as if we were in an expression context, which
is mostly useless.

llvm-svn: 114225
2010-09-17 22:25:06 +00:00
..
INPUTS
bindings/python Rename 'CIndex' to 'libclang', since it has basically become our stable public 2010-04-30 21:51:10 +00:00
clang.xcodeproj Static local variables don't result in global constructors being emitted. 2010-09-03 01:11:38 +00:00
docs Driver: Add a -stdlib= argument which can be used to select the C++ standard 2010-09-14 23:12:40 +00:00
examples Rename 'MaxLoop' to 'MaxVisit' in AnalysisManager to more correctly reflect that we aborted analysis may not necessarily be due to a loop. 2010-09-14 21:35:27 +00:00
include Driver: implement driver automagic support for -lcc_kext 2010-09-17 18:39:08 +00:00
lib When we run into an error parsing or type-checking the left-hand side 2010-09-17 22:25:06 +00:00
runtime build: Start sketching code to allow grafting libc++ build into LLVM/Clang build if 2010-09-15 03:53:45 +00:00
test When we run into an error parsing or type-checking the left-hand side 2010-09-17 22:25:06 +00:00
tools When traversing an InitListExpr, there may not be a syntactic form; 2010-09-17 20:26:51 +00:00
utils Fix typo in test program 2010-07-14 00:09:17 +00:00
www Update C++0x status 2010-09-17 21:37:49 +00:00
CMakeLists.txt Revert "CMake: Update to use standard CMake dependency tracking facilities instead" 2010-09-13 23:54:41 +00:00
INSTALL.txt
LICENSE.TXT 2010 is here. 2010-01-09 18:40:42 +00:00
Makefile Move lib/Runtime to runtime/, and build after everything else. 2010-06-30 22:10:38 +00:00
ModuleInfo.txt
NOTES.txt A Release-Asserts build is now called a Release build. 2010-07-07 07:49:17 +00:00
README.txt Fix typo (test commit) 2010-06-17 12:39:05 +00:00
TODO.txt switch -Werror/-Wfatal-errors error conditions to use diagnostics instead 2009-12-23 18:53:37 +00:00

README.txt

//===----------------------------------------------------------------------===//
// C Language Family Front-end
//===----------------------------------------------------------------------===//

Welcome to Clang.  This is a compiler front-end for the C family of languages
(C, C++, Objective-C, and Objective-C++) which is built as part of the LLVM
compiler infrastructure project.

Unlike many other compiler frontends, Clang is useful for a number of things
beyond just compiling code: we intend for Clang to be host to a number of
different source level tools.  One example of this is the Clang Static Analyzer.

If you're interested in more (including how to build Clang) it is best to read
the relevant web sites.  Here are some pointers:

Information on Clang:              http://clang.llvm.org/
Building and using Clang:          http://clang.llvm.org/get_started.html
Clang Static Analyzer:             http://clang-analyzer.llvm.org/
Information on the LLVM project:   http://llvm.org/

If you have questions or comments about Clang, a great place to discuss them is
on the Clang development mailing list:
  http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev

If you find a bug in Clang, please file it in the LLVM bug tracker:
  http://llvm.org/bugs/