|  | Commit message (Collapse) | Author | Age | Files | Lines | 
|---|
| | 
| 
| 
| | llvm-svn: 60993 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | and separates lexical name lookup from qualified name lookup. In
particular:
  * Make DeclContext the central data structure for storing and
    looking up declarations within existing declarations, e.g., members
    of structs/unions/classes, enumerators in C++0x enums, members of
    C++ namespaces, and (later) members of Objective-C
    interfaces/implementations. DeclContext uses a lazily-constructed
    data structure optimized for fast lookup (array for small contexts,
    hash table for larger contexts). 
  * Implement C++ qualified name lookup in terms of lookup into
    DeclContext.
  * Implement C++ unqualified name lookup in terms of
    qualified+unqualified name lookup (since unqualified lookup is not
    purely lexical in C++!)
  * Limit the use of the chains of declarations stored in
    IdentifierInfo to those names declared lexically.
  * Eliminate CXXFieldDecl, collapsing its behavior into
    FieldDecl. (FieldDecl is now a ScopedDecl).
  * Make RecordDecl into a DeclContext and eliminates its
    Members/NumMembers fields (since one can just iterate through the
    DeclContext to get the fields).
llvm-svn: 60878 | 
| | 
| 
| 
| 
| 
| 
| | the synthesis is in an implementation of s subclass of
a super class where the property has been declared.
llvm-svn: 60792 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| | function/array conversion for parameter types.
This fixes <rdar://problem/6424064> checker on xcode: (possible bad AST) can the type of a method parameter really have "isFunctionType() == true"?
and http://llvm.org/bugs/show_bug.cgi?id=2997.
llvm-svn: 60781 | 
| | 
| 
| 
| 
| 
| | warning as it is allowed in gcc and will break projects.
llvm-svn: 60710 | 
| | 
| 
| 
| 
| 
| 
| | must allow the continuation class to extend it to a 'readwrite'
and 'copy/retain'.
llvm-svn: 60709 | 
| | 
| 
| 
| 
| 
| | belongs
llvm-svn: 60708 | 
| | 
| 
| 
| 
| 
| | Bug reported by Chris L.
llvm-svn: 60635 | 
| | 
| 
| 
| 
| 
| 
| | via the category's protocol list1s, with appropriate
diagnsostics and a test case.
llvm-svn: 60634 | 
| | 
| 
| 
| 
| 
| | type mimatches.
llvm-svn: 60630 | 
| | 
| 
| 
| | llvm-svn: 60629 | 
| | 
| 
| 
| 
| 
| | testing declaration of properties in categories.
llvm-svn: 60625 | 
| | 
| 
| 
| 
| 
| 
| | attributes. Example would be, readonly, assign or
assign, copy, etc.
llvm-svn: 60620 | 
| | 
| 
| 
| 
| 
| 
| 
| | property. It also checks for duplicate use of the same ivar
in two different iproperty implementations. It also caught
an error for a test case used in CodeGen :).
llvm-svn: 60610 | 
| | 
| 
| 
| 
| 
| 
| | (instance/class) Method type checking between category and its implementation.
And a test case for all.
llvm-svn: 60598 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | parameters, with some semantic analysis:
  - Template parameters are introduced into template parameter scope
  - Complain about template parameter shadowing (except in Microsoft mode)
Note that we leak template parameter declarations like crazy, a
problem we'll remedy once we actually create proper declarations for
templates. 
Next up: dependent types and value-dependent/type-dependent
expressions.
llvm-svn: 60597 | 
| | 
| 
| 
| 
| 
| 
| | methods in class and its implementation.
This is work in progress.
llvm-svn: 60573 | 
| | 
| 
| 
| 
| 
| | property attribute mis-specification.
llvm-svn: 60562 | 
| | 
| 
| 
| 
| 
| | work in prgress.
llvm-svn: 60430 | 
| | 
| 
| 
| 
| 
| 
| 
| | a property. Previous scheme of seaching in interface's list of methods
would not work because this list is not yet constructed. This is in preparation
for doing semantic check on viability of setter/getter method declarations.
llvm-svn: 60386 | 
| | 
| 
| 
| | llvm-svn: 60115 | 
| | 
| 
| 
| 
| 
| 
| 
| | Implemented anonymous category (also know as continuation class)
used to override main class's property attribute. This is work in 
propgress.
llvm-svn: 60114 | 
| | 
| 
| 
| 
| 
| | is imported from a protocol into the implementation.
llvm-svn: 59988 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | uses of getName() with uses of getDeclName().  This upgrades a bunch of
diags to take DeclNames instead of std::strings.
This also tweaks a couple of diagnostics to be cleaner and changes
CheckInitializerTypes/PerformInitializationByConstructor to pass
around DeclarationNames instead of std::strings.
llvm-svn: 59947 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| | assert if the name is not an identifier.  Update callers to do the right
thing and avoid this method in unsafe cases.  This also fixes an objc
warning that was missing a space, and migrates a couple more to taking
IdentifierInfo and QualTypes instead of std::strings.
llvm-svn: 59936 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | a new NamedDecl::getAsString() method.
Change uses of Selector::getName() to just pass in a Selector 
where possible (e.g. to diagnostics) instead of going through
an std::string.
This also adds new formatters for objcinstance and objcclass
as described in the dox.
llvm-svn: 59933 | 
| | 
| 
| 
| | llvm-svn: 59923 | 
| | 
| 
| 
| | llvm-svn: 59922 | 
| | 
| 
| 
| 
| 
| | "previously defined here" diagnostics all notes.
llvm-svn: 59920 | 
| | 
| 
| 
| 
| 
| 
| | "definitions", not declarations.  Point out the location of the 
original definition.
llvm-svn: 59919 | 
| | 
| 
| 
| 
| 
| 
| 
| | diagnostic.
Also, point out where the previous decl was.  This unxfails two tests.
llvm-svn: 59918 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | with implicit quotes around them.  This has a bunch of follow-on 
effects and requires tweaking to a whole lot of code.  This causes
a regression in two tests (xfailed) by causing it to emit things like:
  Line 10: duplicate interface declaration for category 'MyClass1' ('Category1')
instead of:
  Line 10: duplicate interface declaration for category 'MyClass1(Category1)'
I will fix this in a follow-up commit.
As part of this, I had to start switching stuff to use ->getDeclName() instead
of Decl::getName() for consistency.  This is good, but I was planning to do this
as an independent patch.  There will be several follow-on patches
to clean up some of the mess, but this patch is already too big.
llvm-svn: 59917 | 
| | 
| 
| 
| | llvm-svn: 59713 | 
| | 
| 
| 
| | llvm-svn: 59712 | 
| | 
| 
| 
| | llvm-svn: 59609 | 
| | 
| 
| 
| | llvm-svn: 59589 | 
| | 
| 
| 
| 
| 
| 
| 
| | __builtin_prefetch code to only emit one diagnostic per builtin_prefetch.
While this has nothing to do with the rest of the patch, the code seemed
like overkill when I was updating it.
llvm-svn: 59588 | 
| | 
| 
| 
| | llvm-svn: 59561 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| | interface with protocols.
As soon as we detect duplicate interfaces, discontinue further semantic checks (returning the original interface).
This is now consistent with how we handle protocols (and less error prone in general).
llvm-svn: 59541 | 
| | 
| 
| 
| 
| 
| 
| 
| | representing the names of declarations in the C family of
languages. DeclarationName is used in NamedDecl to store the name of
the declaration (naturally), and ObjCMethodDecl is now a NamedDecl.
llvm-svn: 59441 | 
| | 
| 
| 
| | llvm-svn: 58705 | 
| | 
| 
| 
| | llvm-svn: 57899 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | is over enthusiastic.
Fix <rdar://problem/6265257> warnings for ambiguous message send swamp other warnings.
Reworked Sema::MatchTwoMethodDeclarations() to optionally match based on method size and alignment (the default in GCC). Changed Sema::LookupInstanceMethodInGlobalPool() to use this feature.
Added -Wno-struct-selector-match to driver, however didn't hook it up yet. Added a FIXME that says this.
llvm-svn: 57898 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| | not match type of ivar
and
http://llvm.org/bugs/show_bug.cgi?id=2893
llvm-svn: 57640 | 
| | 
| 
| 
| 
| 
| 
| 
| | scope) fails to handle overloaded selectors properly.
Long standing bug in Sema::ActOnInstanceMessage(). We now warn when messaging an "id" with multiple method signatures in scope. The diags are a little verbose, however they can be streamlined if necessary. 
llvm-svn: 56843 | 
| | 
| 
| 
| 
| 
| 
| 
| | mismatched properties.
Needed to make sure the relaxed type checking only applies to "readonly" properties.
llvm-svn: 56838 | 
| | 
| 
| 
| | llvm-svn: 56821 | 
| | 
| 
| 
| 
| 
| | setter.
llvm-svn: 56785 | 
| | 
| 
| 
| 
| 
| | effectively declare it for methods below.
llvm-svn: 56771 | 
| | 
| 
| 
| | llvm-svn: 56642 |