aboutsummaryrefslogtreecommitdiff
path: root/include
AgeCommit message (Collapse)Author
2009-09-23return a bool value as a boolChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82613 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-23Produce detailed diagnostics when overloadFariborz Jahanian
resolution failed to select a candidate due to ambiguity in type conversion function selection. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82596 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-23Print the results of code-completion for overloading by displaying theDouglas Gregor
signature of the function with the current parameter highlighted as a placeholder. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82593 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-23Separate the code-completion results for call completion from theDouglas Gregor
results for other, textual completion. For call completion, we now produce enough information to show the function call argument that we are currently on. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82592 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-22When code-completion finds a declaration only because it is usable asDouglas Gregor
the start of a nested-name-specifier, add the "::" after the nested-name-specifier to the code-completion string. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82587 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-22Tweak the code-completion results ranking and formation, so thatDouglas Gregor
members found in base classes have the same ranking as members found in derived classes. However, we will introduce an informative note for members found in base classes, showing (as a nested-name-specifier) the qualification to name the base class, to make it clear which members are from bases. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82586 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-22Push "clang-is-production" logic up to tools/driver, and make it hittable byDaniel Dunbar
defining the CLANG_IS_PRODUCTION Makefile variable. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82583 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-22Add getDeclaration()/getKind() accessors to CodeCompleteConsumer::ResultDouglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82581 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-22In C++, a variadic function does not need an ellipsis prior to the comma. ↵Douglas Gregor
Parse it in both C and C++, but diagnose it as an error in C with a fix-it hint to add the comma. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82576 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-22Replace the -code-completion-dump option with Douglas Gregor
-code-completion-at=filename:line:column which performs code completion at the specified location by truncating the file at that position and enabling code completion. This approach makes it possible to run multiple tests from a single test file, and gives a more natural command-line interface. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82571 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-22Issue good ambiguity diagnostic when convesion fails.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82565 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-22- Implement support for various types of "refs" (initially to help test ↵Steve Naroff
clang_getCursor()). - Add missing prototypes for dispose functions. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82564 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-22Implement code completion within a function call, triggered after theDouglas Gregor
opening parentheses and after each comma. We gather the set of visible overloaded functions, perform "partial" overloading based on the set of arguments that we have thus far, and return the still-viable results sorted by the likelihood that they will be the best candidate. Most of the changes in this patch are a refactoring of the overloading routines for a function call, since we needed to separate out the notion of building an overload set (common to code-completion and normal semantic analysis) and then what to do with that overload set. As part of this change, I've pushed explicit template arguments into a few more subroutines. There is still much more work to do in this area. Function templates won't be handled well (unless we happen to deduce all of the template arguments before we hit the completion point), nor will overloaded function-call operators or calls to member functions. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82549 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-22Spell function pointer correctly.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82543 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-22Add StringLiteral::getString -> StringRef.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82514 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-22Store the set of indirect primary bases directly in the record layout builder.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82513 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-22Record layout builder cleanup.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82502 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-21Change all the Type::getAsFoo() methods to specializations of Type::getAs().John McCall
Several of the existing methods were identical to their respective specializations, and so have been removed entirely. Several more 'leaf' optimizations were introduced. The getAsFoo() methods which imposed extra conditions, like getAsObjCInterfacePointerType(), have been left in place. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82501 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-21Removed -fobjc-newgc-api option. clang now conforms toFariborz Jahanian
gcc-style write-barrier api only. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82493 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-21Another code-completion TODODouglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82482 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-21Code completion for ordinary names when we're starting a declaration, ↵Douglas Gregor
expression, or statement git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82481 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-21-fobjc-newgc-api is now the default.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82478 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-21Enhance "case" code completion in C++ to suggest qualified names forDouglas Gregor
enumerators when either the user intentionally wrote a qualified name (in which case we just use that nested-name-specifier to match the user's code) or when this is the first "case" statement and we need a qualified name to refer to an enumerator in a different scope. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82474 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-21Code completion for "case" statements within a switch on an expressionDouglas Gregor
of enumeration type, providing the various unused enumerators as options. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82467 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-21Refactor and simplify the CodeCompleteConsumer, so that all of theDouglas Gregor
real work is performed within Sema. Addresses Chris's comments, but still retains the heavyweight list-of-multimaps data structure. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82459 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-21Add missing PCH support for -fstack-protector.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82435 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-21Implement __builtin_unreachable(), a GCC 4.5 extension.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82433 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-21Change ASTUnit to take the Diagnostic as an argument, the client should have ↵Daniel Dunbar
control of this. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82430 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-21Add Diagnostic to Indexer, and have it keep its own FileManager instead of ↵Daniel Dunbar
taking an external reference (which was leaked in the case of the CIndex library). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82429 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-20switch command line 'parse' methods to use StringRef for efficiency, whichChris Lattner
is also required for an llvm-side change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82344 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-19Simplify code with a StringRef.Benjamin Kramer
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82308 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-18Reintroduce FoldingSet profiling for PathDiagnostics.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82299 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-18Introduce code completion strings, which describe how to *use* theDouglas Gregor
results of code completion, e.g., by providing function call syntax with placeholders for each of the parameters. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82293 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-18allow clearing this value.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82271 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-18C++ code completion after the "operator" keyword. Provide overloadedDouglas Gregor
operators, type specifiers, type names, and nested-name-specifiers. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82264 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-18Introduce four new code-completion hooks for C++:Douglas Gregor
- after "using", show anything that can be a nested-name-specifier. - after "using namespace", show any visible namespaces or namespace aliases - after "namespace", show any namespace definitions in the current scope - after "namespace identifier = ", show any visible namespaces or namespace aliases git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82251 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-18Don't perform name lookup into a given declaration context more than once ↵Douglas Gregor
during code completion git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82234 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-18For code completion in C++ member access expressions and tag names,Douglas Gregor
look into the current scope for anything that could start a nested-names-specifier. These results are ranked worse than any of the results actually found in the lexical scope. Perform a little more pruning of the result set, eliminating constructors, __va_list_tag, and any duplication of declarations in the result set. For the latter, implemented NamespaceDecl::getCanonicalDecl. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82231 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-18When gathering results for code completion, only include hiddenDouglas Gregor
results when there is some way to refer to them in the language, such as with a qualified name in C++. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82223 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-18Implement code completion for tags, e.g., code completion after "enum"Douglas Gregor
will provide the names of various enumerations currently visible. Introduced filtering of code-completion results when we build the result set, so that we can identify just the kinds of declarations we want. This implementation is incomplete for C++, since we don't consider that the token after the tag keyword could start a nested-name-specifier. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82222 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-18Revert most of r82198, which was causing a large number of crashesTed Kremenek
when running the analyzer on real projects. We'll keep the change to AnalysisManager.cpp in r82198 so that -fobjc-gc analyzes code correctly in both GC and non-GC modes, although this may emit two diagnostics for each bug in some cases (a better solution will come later). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82201 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-18Introduce caching of diagnostics in BugReporter. This provides extraTed Kremenek
pruning of diagnostics that may be emitted multiple times. This is accomplished by adding FoldingSet profiling support to PathDiagnostic, and then having BugReporter record what diagnostics have been issued. This was motived to a serious bug introduced by moving the 'divide-by-zero' checking outside of GRExprEngine into a separate 'Checker' class. When analyzing code using the '-fobjc-gc' option, a given function would be analyzed twice, but the second time various "internal checks" would be disabled to avoid emitting multiple diagnostics (e.g., "null dereference") for the same issue. The problem is that such checks also effect path pruning and don't just emit diagnostics. This resulted in an assertion failure involving a real divide-by-zero in some analyzed code where we would get an assertion failure in APInt because the 'DivZero' check was disabled and didn't prune the logic that resulted in the divide-by-zero in the analyzer. The implemented solution is somewhat of a hack, and may not perform extremely well. This will need to be cleaned up over time. As a regression test, 'misc-ps.m' has been modified so that its tests are run using -fobjc-gc to test this diagnostic pruning behavior. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82198 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-17Fix typo.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82170 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-17Initial implementation of a code-completion interface in Clang. InDouglas Gregor
essence, code completion is triggered by a magic "code completion" token produced by the lexer [*], which the parser recognizes at certain points in the grammar. The parser then calls into the Action object with the appropriate CodeCompletionXXX action. Sema implements the CodeCompletionXXX callbacks by performing minimal translation, then forwarding them to a CodeCompletionConsumer subclass, which uses the results of semantic analysis to provide code-completion results. At present, only a single, "printing" code completion consumer is available, for regression testing and debugging. However, the design is meant to permit other code-completion consumers. This initial commit contains two code-completion actions: one for member access, e.g., "x." or "p->", and one for nested-name-specifiers, e.g., "std::". More code-completion actions will follow, along with improved gathering of code-completion results for the various contexts. [*] In the current -code-completion-dump testing/debugging mode, the file is truncated at the completion point and EOF is translated into "code completion". git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82166 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-17Add a bunch of math builtins, #include <cmath> passes now.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82126 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-17Improve driver error message when only running the preprocessor and an input isDaniel Dunbar
already preprocessed. -- ddunbar@giles:tmp$ touch t.i ddunbar@giles:tmp$ gcc -E t.i ddunbar@giles:tmp$ clang -E t.i clang: warning: t.i: previously preprocessed input unused when '-E' is present ddunbar@giles:tmp$ -- <rdar://problem/6813375> [driver] driver prints confusing message when running -E on preprocessed file git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82120 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-17Initial support for code generation from .ast files.Daniel Dunbar
- Doesn't actually work yet because only module level asm's get correctly marked as externally visible in the PCH. - Other things like 'clang-cc foo.ast -ast-dump' now work, as well. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82107 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-16Improved representation and support for friend class templates. Angst about ↵John McCall
same. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82088 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-16Starting patch to generate more specific API for objc'sFariborz Jahanian
GC. Currently, new API will be generated under clang-cc's -fobjc-newgc-api flag which will eventually become the default. WIP. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82082 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-16fit in 80 colsChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82073 91177308-0d34-0410-b5e6-96231b3b80d8