summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema
Commit message (Collapse)AuthorAgeFilesLines
* When suggesting a typo correction for an @implementation without aDouglas Gregor2010-01-061-1/+7
| | | | | | | | | | corresponding @interface, provide a note showing which interface we're referring to. This note has the fix-it hint on it. Also, don't automatically apply fix-it hints for notes. They're meant to express fix-its that would change semantics. llvm-svn: 92870
* Move the allocation of designators in DesignatedInitExpr to theDouglas Gregor2010-01-061-1/+1
| | | | | | ASTContext. Fixes <rdar://problem/7495428>. llvm-svn: 92867
* Don't assert when dealing with unsigned casts of lvalues. Fixes PR5961.John McCall2010-01-061-6/+11
| | | | llvm-svn: 92866
* Derive tighter ranges for & and >> in the conversion-checking code.John McCall2010-01-061-6/+38
| | | | llvm-svn: 92862
* Fix a bug when property is redeclared in multipleFariborz Jahanian2010-01-061-0/+26
| | | | | | | continuation classes and its original declaration is imported from a protocol. This fixes radar 7509234. llvm-svn: 92856
* Fix marking of virtual members for nested classes whose first non-pure ↵Douglas Gregor2010-01-061-5/+31
| | | | | | virtual function has a body inlined in the class llvm-svn: 92855
* Make sure that the key-function computation produces the correctDouglas Gregor2010-01-061-10/+27
| | | | | | | | result for a nested class whose first non-pure virtual member function has an inline body. Previously, we were checking for the key function before we had seen the (delayed) inline body. llvm-svn: 92839
* Improve the diagnostics used to report implicitly-generated class membersJohn McCall2010-01-064-13/+52
| | | | | | | | | as parts of overload sets. Also, refer to constructors as 'constructors' rather than functions. Adjust a lot of tests. llvm-svn: 92832
* Significantly rework the calculation of effective integer-expression rangesJohn McCall2010-01-061-176/+221
| | | | | | | | | | | | for -Wsign-compare and -Wconversion, and use that coordinated logic to drive both diagnostics. The new logic works more transparently with implicit conversions, conditional operators, etc., as well as bringing -Wconversion's ability to deal with pseudo-closed operations (e.g. arithmetic on shorts) to -Wsign-compare. Fixes PRs 5887, 5937, 5938, and 5939. llvm-svn: 92823
* Make our marking of virtual members functions in a class beDouglas Gregor2010-01-064-56/+36
| | | | | | | | | | | | | | | | | | | | | deterministic and work properly with templates. Once a class that needs a vtable has been defined, we now do one if two things: - If the class has no key function, we place the class on a list of classes whose virtual functions will need to be "marked" at the end of the translation unit. The delay until the end of the translation unit is needed because we might see template specializations of these virtual functions. - If the class has a key function, we do nothing; when the key function is defined, the class will be placed on the aforementioned list. At the end of the translation unit, we "mark" all of the virtual functions of the classes on the list as used, possibly causing template instantiation and other classes to be added to the list. This gets LLVM's lib/Support/CommandLine.cpp compiling again. llvm-svn: 92821
* Per offline discussion with Doug, don't perform typo correction when we have ↵Ted Kremenek2010-01-061-0/+4
| | | | | | encountered a fatal error. On some files that are woefully wrong (missing headers) this can cause a 3x slowdown in some cases when parsing the file. It makes sense not to perform typo correction in this case because after a fatal error diagnostics will either be suppressed or not really make any sense. llvm-svn: 92809
* Do not diagnose method disguised as property setterFariborz Jahanian2010-01-061-2/+5
| | | | | | for a 'readonly' property. Fixes radar 7427072. llvm-svn: 92808
* Improve key-function computation for templates. In particular:Douglas Gregor2010-01-052-11/+23
| | | | | | | | | | | | | | | | - All classes can have a key function; templates don't change that. non-template classes when computing the key function. - We always mark all of the virtual member functions of class template instantiations. - The vtable for an instantiation of a class template has weak linkage. We could probably use available_externally linkage for vtables of classes instantiated by explicit instantiation declarations (extern templates), but GCC doesn't do this and I'm not 100% that the ABI permits it. llvm-svn: 92753
* Disallow captured arrays in blocks as well. Radar 7438948.Mike Stump2010-01-051-0/+6
| | | | llvm-svn: 92677
* Disallow capturing vlas inside blocks.Mike Stump2010-01-051-0/+6
| | | | llvm-svn: 92676
* Remove stale comment. We already do format string checking for functions ↵Ted Kremenek2010-01-051-3/+0
| | | | | | with the format attribute. llvm-svn: 92553
* Move the -Wconversion logic into SemaChecking.cpp. There's a fair amount ofJohn McCall2010-01-043-314/+315
| | | | | | | overlap between this and -Wsign-compare, which is why I want them in the same place. llvm-svn: 92543
* Move the -Wsign-compare logic into SemaChecking.cpp.John McCall2010-01-042-78/+81
| | | | llvm-svn: 92541
* Avoid warnings for functions that return a value using MS-style inlineMike Stump2010-01-041-0/+8
| | | | | | | | | | | | | assembly code. This avoids changing the bahvior when normal asm("") statements are used. The type of code affected would be: void* t4(void) { __asm mov eax, fs:[0x10] } I hope people like this version, if not, let me know. llvm-svn: 92531
* Remember if the AsmStmt came from Microsoft-style inline assembly code.Mike Stump2010-01-042-5/+7
| | | | llvm-svn: 92526
* -Wsign-compare shouldn't warn when the signed operand is a conditional operatorJohn McCall2010-01-041-20/+24
| | | | | | | whose operands are non-negative integer constant expressions. This comes up in LLVM in a few places. llvm-svn: 92525
* Make sure to use ASTContext::getAs*ArrayType() when decomposing arrayDouglas Gregor2010-01-041-2/+2
| | | | | | types. Fixes APFloat.cpp compilation failure. llvm-svn: 92523
* When declaring an Objective-C implementation without a correspondingDouglas Gregor2010-01-041-4/+18
| | | | | | | | | | | | | | | | | | | | | | interface, suggest correction of typos. For example, given: @interface NSString @end @implementation NSstring @end we'll warn with: t.m:4:19: warning: cannot find interface declaration for 'NSstring'; did you mean 'NSString'? @implementation NSstring ^ However, since this is just a warning, we don't provide a fix-it hint. Good idea, Ted! llvm-svn: 92488
* Implement typo correction for a variety of Objective-C-specificDouglas Gregor2010-01-036-13/+183
| | | | | | | | | | | | | | constructs: - Instance variable lookup ("foo->ivar" and, in instance methods, "ivar") - Property name lookup ("foo.prop") - Superclasses - Various places where a class name is required - Protocol names (e.g., id<proto>) This seems to cover many of the common places where typos could occur. llvm-svn: 92449
* Fix minor oversight for increment/decrement of complex int. Add tests forEli Friedman2010-01-031-1/+1
| | | | | | coverage. llvm-svn: 92433
* Get rid of more unnecessary code.Eli Friedman2010-01-021-77/+6
| | | | llvm-svn: 92429
* Get rid of some unnecessary code.Eli Friedman2010-01-022-120/+0
| | | | llvm-svn: 92428
* Eliminate dead code.Eli Friedman2010-01-024-83/+0
| | | | llvm-svn: 92424
* Make sure that the search for visible declarations looks into the semantic ↵Douglas Gregor2010-01-011-2/+1
| | | | | | parents of out-of-line function contexts llvm-svn: 92397
* When typo correction for an id-expression finds a type (or Objective-CDouglas Gregor2010-01-011-12/+32
| | | | | | | | | | | | | | | | class), provide a suggestion for the type or class found. However, since we can't recover properly in this case, don't provide a fix-it hint. Example: test/FixIt/typo.m:8:3: error: use of undeclared identifier 'NSstring'; did you mean 'NSString'? NSstring *str = @"A string"; ... ^ 1 diagnostic generated. llvm-svn: 92379
* Typo correction for C99 designated field initializers, e.g.,Douglas Gregor2010-01-011-15/+53
| | | | | | | | | | test/FixIt/typo.c:19:4: error: field designator 'bunds' does not refer to any field in type 'struct Window'; did you mean 'bounds'? .bunds. ^~~~~ bounds llvm-svn: 92376
* It's OK for a return type to be incomplete if it's being defined.Anders Carlsson2009-12-311-3/+6
| | | | llvm-svn: 92367
* Make sure that an overriding return type is complete before checking if it's ↵Anders Carlsson2009-12-311-0/+9
| | | | | | covariant. Fixes PR5920. llvm-svn: 92365
* Typo correction for C++ base and member initializers, e.g.,Douglas Gregor2009-12-311-32/+88
| | | | | | | | | | | | | | | test/FixIt/typo.cpp:41:15: error: initializer 'base' does not name a non-static data member or base class; did you mean the base class 'Base'? Derived() : base(), ^~~~ Base test/FixIt/typo.cpp:42:15: error: initializer 'ember' does not name a non-static data member or base class; did you mean the member 'member'? ember() { } ^~~~~ member llvm-svn: 92355
* Typo correction for identifiers within nested name specifiers, e.g.,Douglas Gregor2009-12-311-0/+22
| | | | | | | | | | typo.cpp:18:1: error: use of undeclared identifier 'other_std'; did you mean 'otherstd'? other_std::strng str1; ^~~~~~~~~ otherstd llvm-svn: 92350
* Typo correction for template names, e.g.,Douglas Gregor2009-12-311-1/+25
| | | | | | | | | | typo.cpp:27:8: error: no template named 'basic_sting' in namespace 'std'; did you mean 'basic_string'? std::basic_sting<char> b2; ~~~~~^~~~~~~~~~~ basic_string llvm-svn: 92348
* Typo correction for member access into classes/structs/unions, e.g.,Douglas Gregor2009-12-313-4/+31
| | | | | | s.fnd("hello") llvm-svn: 92345
* Implement typo correction for id-expressions, e.g.,Douglas Gregor2009-12-314-22/+54
| | | | | | | | | | | | | typo.cpp:22:10: error: use of undeclared identifier 'radious'; did you mean 'radius'? return radious * pi; ^~~~~~~ radius This was super-easy, since we already had decent recovery by looking for names in dependent base classes. llvm-svn: 92341
* improve diagnostics for case when a field type is unknown byChris Lattner2009-12-311-1/+2
| | | | | | | not emitting a follow-on error about 'int', which the user never wrote. PR5924. llvm-svn: 92339
* when making a decl for __builtin_fabsf() make sure toChris Lattner2009-12-301-0/+4
| | | | | | | | attach the appropriate attributes to it. I don't think this manifests as any real change though, we're still not getting the right LLVM IR attributes out of codegen. llvm-svn: 92316
* fix PR5917, L'x' was getting the wrong type in c++ mode. PerChris Lattner2009-12-301-2/+8
| | | | | | C++2.13.2p2: "A wide-character literal has type wchar_t" llvm-svn: 92313
* remove extraneous #includeChris Lattner2009-12-301-1/+0
| | | | llvm-svn: 92310
* Typo correction for type names when they appear in declarations, e.g., givenDouglas Gregor2009-12-305-3/+563
| | | | | | | | | | | | | | | | | | | | | | | | tring str2; we produce the following diagnostic + fix-it: typo.cpp:15:1: error: unknown type name 'tring'; did you mean 'string'? tring str2; ^~~~~ string To make this really useful, we'll need to introduce typo correction in many more places (wherever we do name lookup), and implement declaration-vs-expression heuristics that cope with typos better. However, for now this will handle the simple cases where we already get good "unknown type name" diagnostics. The LookupVisibleDecls functions are intended to be used by code completion as well as typo correction; that refactoring will happen later. llvm-svn: 92308
* Fix typo in commentDouglas Gregor2009-12-301-1/+1
| | | | llvm-svn: 92307
* More fixes to the handling of CVR-comparisons on array types. Adds a method toChandler Carruth2009-12-301-3/+5
| | | | | | | | | | | | QualType to get CVR-qualifiers through array types, and switches the primary comparison methods to use it. This may allow simplifying some of the callers of getUnqualifiedArrayType. Also fix the normalizing of CV-qualification during template deduction to normalize through arrays and allow a more qualified deduced array type. This fixes PR5911. llvm-svn: 92289
* Typedefs can be redeclared. That seems like something we should record inJohn McCall2009-12-302-3/+14
| | | | | | the AST lest we run into some crazy canonicalization bug like PR5874. llvm-svn: 92283
* Fix support for const_cast<>s of array types which actual change theChandler Carruth2009-12-291-2/+3
| | | | | | | | CV-qualifiers. Remove an error expectation from the 'good' set of const-cast test cases. With this patch, the final non-template test case from PR5542 passes. (It's the same as the one already in const-cast.cpp.) llvm-svn: 92257
* Correctly refer to element CVR qualifications when determining if a type isChandler Carruth2009-12-293-59/+34
| | | | | | | | | | more or less cv-qualified than another during implicit conversion and overload resolution ([basic.type.qualifier] p5). Factors the logic out of template deduction and into the ASTContext so it can be shared. This fixes several aspects of PR5542, but not all of them. llvm-svn: 92248
* Get rid of FixedWidthIntType, as suggested by Chris and Eli.Anders Carlsson2009-12-294-20/+5
| | | | llvm-svn: 92246
* Handle using declarations in overloaded and template functions during ADL andChandler Carruth2009-12-292-11/+11
| | | | | | | | | | address resolution. This fixes PR5751. Also, while we're here, remove logic from ADL which mistakenly included the definition namespaces of overloaded and/or templated functions whose name or address is used as an argument. llvm-svn: 92245
OpenPOWER on IntegriCloud