Skip to content
  1. Apr 05, 2007
  2. Apr 04, 2007
  3. Apr 03, 2007
    • Steve Naroff's avatar
      Bug #: · 0f6256d0
      Steve Naroff authored
      Submitted by:
      Reviewed by:
      declare getSizeType() const and fix typo in comment...
      
      llvm-svn: 39376
      0f6256d0
    • Steve Naroff's avatar
      Bug #: · 7840336c
      Steve Naroff authored
      Submitted by:
      Reviewed by:
      Avoid including "clang/AST/Expr.h" in Sema.h just to access
      UnaryOperator::Opcode. While the inclusion wasn't objectionable in terms
      of layering, it is nice to keep the inclusions as modest as possible.
      
      llvm-svn: 39375
      7840336c
    • Steve Naroff's avatar
      Bug #: · 92e30f8c
      Steve Naroff authored
      Submitted by:
      Reviewed by:
      Incorporate code review feedback from Chris...
      - minor restructure of ParseMemberReferenceExpr logic. The last statement
      is now the instantiation of the AST node (which I like a lot and will conform
      to throughout Sema).
      - declare StmtClassNameTable const.
      - reword an error diagnostic.
      - install the correct type for ParseSizeOfAlignOfTypeExpr. Added hook in
      ASTContext. For now, simply return Context.UnsignedLongTy. Added a FIXME
      to revisit (i.e. compute using TargetInfo).
      
      llvm-svn: 39374
      92e30f8c
  4. Apr 02, 2007
    • Steve Naroff's avatar
      Bug #: · ef2ab6a5
      Steve Naroff authored
      Submitted by:
      Reviewed by:
      Add three new classes to Decl.h: BlockVarDecl, FileVarDecl, and ParmVarDecl.
      
      Made the constructor to VarDecl protected, to indicate it is "abstract".
      
      Reorganized the Decl::Kind enum to allow us to add ObjectDecls/TypeDecls with
      minimal breakage.  In the process, realized the isa support for ObjectDecl was already broken (so
      the reorg paid for itself already:-) The range check should also be more efficient...
      
      llvm-svn: 39373
      ef2ab6a5
  5. Apr 01, 2007
    • Steve Naroff's avatar
      Bug #: · fc49d67a
      Steve Naroff authored
      Submitted by:
      Reviewed by:
      - Finished up incomplete type analysis for varibles (in Sema::ParseDeclarator()).
      - Added many spec refs, since this area is confusing (for top level decls
      in particular).
      - Added a FIXME to MergeVarDecl()...it needs to be taught about tentative
      definitions. As a result, we currently issue some bogus diagnostics.
      
      llvm-svn: 39372
      fc49d67a
    • Steve Naroff's avatar
      Bug #: · ca8f7128
      Steve Naroff authored
      Submitted by:
      Reviewed by:
      - ParseMemberReferenceExpr wasn't operating on the canonical type. From
      now on, I will make sure the prologue to each Parse/Check function has
      both the qualified type and the canonical type.
      - More refinements to ParseDeclarator. It was allowing variable declarations
      to incomplete types (e.g. void, struct foo, where foo wasn't defined).
      
      llvm-svn: 39371
      ca8f7128
  6. Mar 31, 2007
    • Steve Naroff's avatar
      Bug #: · 95af013c
      Steve Naroff authored
      Submitted by:
      Reviewed by:
      Incorporate feedback from Chris (on the last check-in).
      - added a shared hook for pre/post ++/-- CheckIncrementDecrementOperand().
      - handle invalid arithmetic on incomplete types (void *, struct foo *, where the
      body isn't in scope). Added a diagnostic for this case.
      - added some comments and C99 annotations.
      - Sema.h now includes Expr.h. I'd prefer not to, however it doesn't break
      any layering.
      
      llvm-svn: 39370
      95af013c
  7. Mar 30, 2007
    • Steve Naroff's avatar
      Bug #: · bc2f0993
      Steve Naroff authored
      Submitted by:
      Reviewed by:
      Implement ++/-- typechecking for pre/post unary expressions. This includes:
      
      - added isLvalue, isModifiableLvalue (on TypeRef, Type, and RecordType).
      - added isRealType, isRealFloatingType, isComplexType.
      - hacked Diag to take a TypeRef (I was sick of writing the 2 line "setup":-)
      In addition, this will likely lead to less bugs...I already had written code
      that was doing a getAsString on "Type" (which is wrong...since it doesn't include
      any qualifiers).
      - Changed UnaryOperator to take a TypeRef...pass it the right stuff.
      - Removed redundant ternary expressions in several predicates.
      - A couple diagnostics.
      
      llvm-svn: 39369
      bc2f0993
  8. Mar 28, 2007
    • Steve Naroff's avatar
      Bug #: · c1aadb17
      Steve Naroff authored
      Submitted by:
      Reviewed by:
      Finish up Sema::ParseArraySubscriptExpr. This involved:
      - adding a couple predicates to Type.h (isObjectType, isDerivedType).
      - added a diagnostic for subscripting non-object types (e.g. void (*)()).
      - pass the correct result type...a minor detail:-)
      - added some spec references to Type.h
      
      llvm-svn: 39368
      c1aadb17
  9. Mar 27, 2007
    • Steve Naroff's avatar
      Bug #: · d9e7bd46
      Steve Naroff authored
      Submitted by:
      Reviewed by:
      Make an error diagnosic a bit more expression (in Sema::GetTypeForDeclarator)
      
      llvm-svn: 39367
      d9e7bd46
    • Steve Naroff's avatar
      Bug #: · bc57d0fe
      Steve Naroff authored
      Submitted by:
      Reviewed by:
      Finish up fixes to Sema::GetTypeForDeclarator(). The typechecking should
      now conform to the standard.
      
      llvm-svn: 39366
      bc57d0fe
    • Steve Naroff's avatar
      Bug #: · 06deba91
      Steve Naroff authored
      Submitted by:
      Reviewed by:
      Fix a couple bugs in Sema::GetTypeForDeclarator(). Need to disallow:
      - void arrayOfFunctions[3]()
      - void arrayOfVoids[3]
      Need to talk to Chris about the return value...
      
      llvm-svn: 39365
      06deba91
    • Steve Naroff's avatar
      Bug #: · cc321429
      Steve Naroff authored
      Submitted by:
      Reviewed by:
      Finish up Sema::ParseMemberReferenceExpr. This involved:
      - added a getMember() function to RecordDecl.
      - added stronger typing for "Members" (from Decl->FieldDecl).
      - added a dignostic for members not found.
      - changed MemberExpr to install the correct TypeRef.
      - In general, simplified and cleaned up the routing.
      
      llvm-svn: 39364
      cc321429
  10. Mar 26, 2007
  11. Mar 23, 2007
    • Steve Naroff's avatar
      Bug #: · f1e53698
      Steve Naroff authored
      Submitted by:
      Reviewed by:
      
      Type Checking...round 2. This checkin "breaks" parsing carbon.h. I imagine
      that this will be true for the next week or so. Nevertheless, this round of
      changes includes the following:
      
      - Hacked various Expr classes to pass the appropriate TypeRef. Still have
      a few more classes to touch.
      - Implement type checking for ParseArraySubscriptExpr and ParseMemberReferenceExpr.
      - Added a debug hook to derive the class name for Stmt/Expr nodes. Currently a
      linear search...could easily optimize if important.
      - Changed the name of TaggedType->TagType. Now we have TagType and TagDecl (which
      are easier to remember).
      - Fixed a bug in StringLiteral conversion I did a couple weeks ago. hadError was
      not initialized (oops).
      - changed Sema::Diag to return true. This streamlines the type checking code
      considerably.
      - Added many diagnositics.
      
      This should be it!
      
      llvm-svn: 39361
      f1e53698
  12. Mar 21, 2007
    • Steve Naroff's avatar
      Bug #: · 26c8ea5f
      Steve Naroff authored
      Submitted by:
      Reviewed by:
      Implement type checking. First round of changes are:
      - Added predicates to Type.
      - Added predicates to BinExpr.
      - Added Check hooks that model the categories for Binary ops.
      - Added TypeRef to Expr. Will lazily eval subclasses...
      - Misc bug fixes/cleanups.
      
      llvm-svn: 39360
      26c8ea5f
  13. Mar 19, 2007
  14. Mar 16, 2007
    • Steve Naroff's avatar
      Bug #: · 97035855
      Steve Naroff authored
      Submitted by:
      Reviewed by:
      Down to 0 warning/errors for Carbon.h. Also made a couple trivial name
      changes...
      
      llvm-svn: 39358
      97035855
    • Steve Naroff's avatar
      Bug #: · 6fbf0dcb
      Steve Naroff authored
      Submitted by:
      Reviewed by:
      carbon.h looking good! Only 1 warning left...no parse errors!
      
      This fixes 3 bugs...
      - A couple tricky bugs with type canonicalization. Nested typedef's  weren't being
      handled properly. For example, the following didn't work:
      
      typdef int __darwin_pid_t;
      typedef __darwin_pid_t pid_t;
      
      int getpgid(pid_t);
      int getpgid(int);
      
      - The storage class wasn't being preserved. As a result, Sema was complaining
      about the  following:
      
      extern char *foo;
      char *foo;
      
      - various built-ins weren't registered...resulting in spurious warnings.
      
      llvm-svn: 39357
      6fbf0dcb
  15. Mar 14, 2007
    • Steve Naroff's avatar
      Bug #: · 3273c228
      Steve Naroff authored
      Submitted by:
      Reviewed by:
      This is a "small" checkin.  #include_next wasn't working properly on
      Leopard. This is because the driver has some hard coded paths that
      don't work on Leopard. The real fix is to derive them, however I don't
      think we need to solve this now. At this point, anyone working on clang
      should be able to use Leopard. This fix removed 11 errors processing
      "carbon.h". The bug that bubbles up to the top is in MergeFunctionDecl().
      As part of digging into this part of Sema, I rearranged some methods
      (and changed the visibility).
      
      llvm-svn: 39356
      3273c228
    • Steve Naroff's avatar
      Bug #: · b7d4924e
      Steve Naroff authored
      Submitted by:
      Reviewed by:
      Added size expression to ArrayType. This was needed to implement
      Type::isIncompleteType(). At the moment, there is no support for
      determining if we have a constant expression (which won't be too
      difficult now that we have support for literal parsing/ast's).
      Nevertheless, the parser will allow "struct foo { int a[b]; }"
      (which is illegal). There is still significant work to fully analyze
      array types. The good news is "carbon.h" goes from 288 bogus errors
      down to 26!
      
      llvm-svn: 39355
      b7d4924e
  16. Mar 13, 2007
    • Steve Naroff's avatar
      Bug #: · 4f88b311
      Steve Naroff authored
      Submitted by:
      Reviewed by:
      Move string literal parsing from Sema=>LiteralSupport. This consolidates
      all the quirky parsing code within the Lexer subsystem (yeah!). This
      simplifies Sema and (more importantly) allows future parsers
      (i.e. subclasses of Action) to benefit from this code.
      
      llvm-svn: 39354
      4f88b311
Loading