]> granicus.if.org Git - clang/commitdiff
Make the non-reference check in Expr work always
authorDouglas Gregor <dgregor@apple.com>
Wed, 29 Oct 2008 18:00:54 +0000 (18:00 +0000)
committerDouglas Gregor <dgregor@apple.com>
Wed, 29 Oct 2008 18:00:54 +0000 (18:00 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58388 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/AST/Expr.h

index d6aa5bfc548b3d1bf7e14f046cc9f0e5f6c5d53a..ad8aab7c2ab6cf261e1f4ff1fde22642f36a8df6 100644 (file)
@@ -38,7 +38,10 @@ namespace clang {
 class Expr : public Stmt {
   QualType TR;
 protected:
-  Expr(StmtClass SC, QualType T) : Stmt(SC), TR(T) {
+  Expr(StmtClass SC, QualType T) : Stmt(SC) { setType(T); }
+public:  
+  QualType getType() const { return TR; }
+  void setType(QualType t) { 
     // In C++, the type of an expression is always adjusted so that it
     // will not have reference type an expression will never have
     // reference type (C++ [expr]p6). Use
@@ -46,12 +49,11 @@ protected:
     // type. Additionally, inspect Expr::isLvalue to determine whether
     // an expression that is adjusted in this manner should be
     // considered an lvalue.
-    assert((T.isNull() || !T->isReferenceType()) && 
+    assert((TR.isNull() || !TR->isReferenceType()) && 
            "Expressions can't have reference type");
+
+    TR = t; 
   }
-public:  
-  QualType getType() const { return TR; }
-  void setType(QualType t) { TR = t; }
 
   /// SourceLocation tokens are not useful in isolation - they are low level
   /// value objects created/interpreted by SourceManager. We assume AST